71 lines
3.8 KiB
Markdown
71 lines
3.8 KiB
Markdown
# ReplayMod
|
|
A Minecraft mod to record game sessions and replay them afterwards from any perspective.
|
|
|
|
## Building
|
|
Make sure your sub-projects are up-to-date: `git submodule update --init --recursive`
|
|
|
|
For each branch you visit the first time, running `./gradlew setupDecompWorkspace` is necessary.
|
|
This will also be necessary if the `replaymod_at.cfg` file has been changed (getting errors about code that is trying
|
|
to access private fields is a good indication that this has happened).
|
|
|
|
### No IDE
|
|
You can build the mod by running `./gradlew :build`. You can then find the final jar files in `build/libs/`.
|
|
|
|
### IntelliJ
|
|
For the initial setup run `./gradlew idea genIntellijRuns`.
|
|
You also need to enable the Mixin annotation processor:
|
|
1. Go to File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
|
|
2. Tick "Enable annotation processing"
|
|
3. Add a new entry to the "Annotation Processor options"
|
|
4. Set the name to "reobfSrgFile" and the value to "$path/build/mcp-srg.srg" where you replace $path with the full
|
|
path to the folder containing the gradlew file
|
|
|
|
Whenever you switch to another branch, you can either just run `./gradlew idea` or instead run
|
|
`./gradlew copySrg` and then refresh the gradle project from within IntelliJ.
|
|
|
|
### Eclipse
|
|
|
|
## Development
|
|
### Branches
|
|
New features are developed on the `1.8` branch and merged upwards for release. Larger features are developed on their
|
|
own branch that is based on `1.8` and then merged back once it's finished.
|
|
|
|
Features or bug fixes that apply only to a specific Minecraft version are fixed on the branch corresponding to that
|
|
version and reverted when merging upwards.
|
|
|
|
Both subprojects follow a similar branching model.
|
|
|
|
The user documentation (`docs` folder) is only committed to on the current development branch. Any changes committed on
|
|
a branch for a more recent Minecraft version are not kept up to date on the website and should only be
|
|
of importance once support for the previous Minecraft version is dropped.
|
|
|
|
The `master` branch is solely to be used for the `version.json` file that contains a list of all versions
|
|
used by the clients to check for updates of this mod.
|
|
|
|
### Versioning
|
|
The ReplayMod uses the versioning scheme outlined [here](http://mcforge.readthedocs.io/en/latest/conventions/versioning/)
|
|
with three changes:
|
|
- No `MAJORAPI`, the ReplayMod does not provide any external API
|
|
- "Updating to a new Minecraft version" should not increment `MAJORMOD`, we maintain one version of the ReplayMod
|
|
for each version of Minecraft and all these versions share the same feature set (and most bugs). We therefore try to
|
|
keep the version name the same for all of them (with the exception of `MCVERSION` of course). This also means that the
|
|
"Multiple Minecraft Version" section does not apply.
|
|
- For pre-releases the shorter `-bX` is used instead of `-betaX`
|
|
|
|
When a new version is (pre-)release, a new annotated tag should be added with the name of the version and the
|
|
`versions.json` file in the `master` branch should be updated. To simplify this process the gradle task `doRelease` can
|
|
be used: `./gradlew -PreleaseVersion=1.8-2.0.0-rc1 doRelease`. It will create the tag and update the version.json
|
|
accordingly.
|
|
|
|
Care should be taken that the updated `version.json` is not pushed before a jar file is available on the
|
|
download page (or Jenkins) as it will inform the users of the update.
|
|
|
|
### Bugs
|
|
Bugs in the mod are tracked via [Bugzilla](https://bugs.replaymod.com/).
|
|
GitHub should only be used for issues that are generally not likely to affect any end users.
|
|
|
|
Bug numbers in commits such as `(fixes #42)` refer to Bugzilla unless noted otherwise.
|
|
|
|
## License
|
|
The ReplayMod is provided under the terms of the GNU General Public License Version 3 or (at your option) any later version.
|
|
See `LICENSE.md` for the full license text. |