Skip to content

Contributing

IzzelAliz edited this page Jun 11, 2021 · 3 revisions

Contributions are welcomed, in any form.

For non developers

You are welcomed to:

  • sumbit bugs/feature requests to GitHub issue tracker
  • submit new translations here

For developers

Prerequisite:

  • Java IDE (IntelliJ IDEA is recommended)
  • Java, Gradle, MinecraftForge, Bukkit understanding
  • Arclight is based on Mixin. You should understand how to write Mixins, and how them work.

Setting up workspace and build:

Clone this project first, and in project folder, run gradlew remapSpigotJar. When it's done, import this project into your IDE and refresh it.

To build Arclight, run gradlew remapSpigotJar idea first and run gradlew build. If you have not built it before, you need to run gradlew build again.

Refer to https://gist.github.com/IzzelAliz/ddac7f3f1a82dd19d28e29b1da33aac1 for setting up a mojmap spigot workspace.

Porject sturcture:

  • arclight-api contains codes that is not related to Minecraft
  • arclight-common contains most of the codes
    • mixins are in io/izzel/arclight/common/mixin package
    • bridge classes bridge the gap between Minecraft and Bukkit, are implemented in mixins
    • other codes including the remapper are in io/izzel/arclight/common/mod package
  • arclight-forge-<version> contains bootstrap code and optimization mixins

Code style:

  • In general, follow Google Java Style.
  • Mixins should follow this implementation policy: mixin method names and bridge class names
  • Shadows should wrap using @formatter:off/on for readability

Tips:

  • You can find bukkit <-> srg mappings in arclight-common/build/arclight_cache/tmp_srg/bukkit_srg.srg once you built the project

Upgrade Minecraft version (reminder)

Steps:

  • Update forge version, mcp mappings version, spigot version in build.gradle
  • Check if arclight-gradle-plugin generate proper bukkit.srg mapping
  • Update version fields in ArclightVersion class, file hash in ForgeInstaller
  • Update upstream patches, both spigot and forge
  • Update resource files, including async-catcher.json, accesstransformer.cfg, bukkit.at, extra_mapping.tsrg(for generating refmap)
  • Upload new library files to arclight.mcxk.net
Clone this wiki locally