Skip to content

How to Contribute

asanetargoss edited this page May 16, 2021 · 2 revisions

Don't know how to mod

Translations and configuration improvements are always welcome!

Want to code, but don't know how to mod

If you want to contribute code to Changeling, but don't know how to mod, this section is for you. If you already know how to mod, skip to the next section.

Unfortunately, I don't have time to teach other people how to mod, but here's what I would recommend to you and anyone else serious about it:

  • Learn programming
  • Learn Java
  • Learn how to make a basic example mod on the latest Forge version using Eclipse
  • Learn the very basics of git
  • Try to clone/compile Changeling on the changeling-master branch and bug me when you have issues with gradle or with getting stuff to run in your Eclipse workspace.

Learning programming and stuff can take a while, at minimum a few months if you lots of free time, so be prepared for that.

When you're done, read the section below.

Want to code, know how to mod

If you are considering contributing code to Changeling, that's cool! First, let's level on what sort of stuff will get accepted:

  • Any sort of code you submit will be under the MIT license, so if you open a pull request, you must be OK with this.
  • You may be asked for changes to be made to the code before it will be accepted.
  • The code must be "in scope" for the mod. If it's a very small bug fix, it will most likely be accepted, but otherwise consider asking about it on the issue tracker first.

Here's some suggestions on what to work on:

And here is some advice on what NOT to work on:

  • Do not edit the gradle build scripts
  • Do not merge in code from newer versions of Metamorph

Experienced modder stuff

Any sort of code you submit will be under the MIT license, so if you open a pull request, you must be OK with this.

If you want to port Changeling to later Minecraft versions, please discuss so we can coordinate.

Changeling's branch system works like this:

  • master, 1.11 and 1.12 are (possibly out of date) snapshots of the identically named branches from the metamorph repository. They represent Minecraft versions 1.10, 1.11, and 1.12 respectively
  • downstream-master, downstream-1.11, and downstream-1.12 are successive backports of new metamorph code to earlier Minecraft versions while retaining the metamorph name and not adding any new features/fixes. downstream-1.12 is a snapshot of 1.12 at some point, whatever is currently being ported.
  • changeling-master, changeling-1.11, and changeling-1.12 rename the mod and contain all the features/bugfixes not directly related to porting
  • changeling-master pulls from downstream-master. Most features/bugfixes are added/tested in this branch before being ported to later Minecraft versions.
  • changeling-1.11 and changeling-1.12 pull from their respective downstream branch and from the changeling branch of the previous Minecraft version. git merge --ours and a few other git hacks are used to keep the merge process clean and avoid redundant porting. Features/bugfixes specific to later Minecraft versions are added to the branch on the oldest Minecraft version that makes sense.
  • There are similar branches in the DominionLib repository, since mclib/DominionLib are required dependencies for metamorph/Changeling respectively.
  • asanetargoss currently maintains the downstream branches and is responsible for incorporating these branches into the changeling branches