Wiki

Guides and documentation for running and building LunarArc.

Contributions are welcomed, in any form.

For non-developers

You are welcome to:

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-common contains most of the codes.
    • The mixins are in io/lunararcdevs/lunararc/common/mixin package.
    • 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/mod package.
  • The lunararc-forge lunararc-neoforge lunararc-fabric and lunararc-quilt contains platform-specific codes, its structure is similar to the lunararc-common.
  • The bootstrap bundles subprojects to a server jar.
  • The installer will install mod loaders automatically at run time.
  • The buildSrc is used for remapping the papermc jar in the developing environment.
  • The i18n-config contains 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/on for 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).