Contributions are welcomed, in any form.
For non-developers
You are welcome to:
- Submit bugs or something not working to the GitHub issues page.
- Submit new translations here.
For developers
Prerequisite
- A Java IDE that supports Gradle (IntelliJ IDEA is recommended).
- Understanding of Java, Gradle, Minecraft, ModLoaders(Forge/NeoForge/Fabric/QuiltMC), and Paper/Bukkit.
- LunarArc is based on SpongeMixin. Understanding how to write Mixins and how they work is important.
Setting up the workspace
Clone this project and import it into a Java IDE.
Project structure
- The
lunararc-commoncontains most of the codes.- The mixins are in
io/lunararcdevs/lunararc/common/mixinpackage. - The bridges provide the interface among our mixins and platforms, they are implemented in mixins.
- The other codes including the remapper are in the
io/lunararcdevs/lunararc/common/modpackage.
- The mixins are in
- The
lunararc-forgelunararc-neoforgelunararc-fabricandlunararc-quiltcontains platform-specific codes, its structure is similar to thelunararc-common. - The
bootstrapbundles subprojects to a server jar. - The
installerwill install mod loaders automatically at run time. - The
buildSrcis used for remapping the papermc jar in the developing environment. - The
i18n-configcontains multi-language translations of lunararc.
Code style
- In general, follow Google Java Style.
- Mixins should follow this implementation policy: mixin method names and bridge class names
- Shadows should be wrapped using
@formatter:off/onfor readability
Reminder to upgrade the Minecraft version
Following steps:
- Update Minecraft and mod-loader versions in
build.gradle. - Update Paper/Bukkit and core project dependencies in
gradle/libs.versions.toml. - Check the upstream commits, all from PaperMC, MinecraftForge, NeoForged, FabricMC and QuiltMC.
- Update resource files, including
async-catcher.json,lunararc.accesswidener(don’t forget to remove the duplicate entries in AW).