53 lines
2.8 KiB
Markdown
53 lines
2.8 KiB
Markdown
<!--
|
|
SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe>
|
|
|
|
SPDX-License-Identifier: CC0-1.0
|
|
-->
|
|
# Contributing to Firmament
|
|
|
|
Contributions are tentatively welcomed. The structure of the mod is probably not really transparent to newcomers, but if
|
|
you are interested, feel free to tackle any [issues](https://github.com/nea89o/Firmament/issues/) or create your own
|
|
features.
|
|
|
|
## Community
|
|
|
|
If you need any help contributing feel free to join the [discord]. This is where you can raise more casual issues. Note
|
|
that using the discord is not mandatory for contributing. If you don't want to join the discord, feel free to ask
|
|
questions in issues or to otherwise contact me.
|
|
|
|
## State of Firmament
|
|
|
|
Many of the foundations of Firmament are not yet fix. If you find things confusing or think some of the fundamental
|
|
building blocks of Firmament should be changed, feel free to raise an issue. More than likely there is no deeper reason
|
|
for something confusing, aside from this being a bit of a sloppy project.
|
|
|
|
## Development workflow
|
|
|
|
Firmament is a fabric mod so the development workflow is quite similar to any other fabric mod. To build you will need a
|
|
Java capable IDE (strongly recommend IntelliJ here), as well as Java 21. To contribute back to Firmament you will need
|
|
to create a [fork](https://github.com/nea89o/Firmament/fork). This is your own copy of Firmament which you can change.
|
|
You can load that fork using IntelliJs "New" -> "Project from version control" import option. You might need to
|
|
authenticate your GitHub account to IntelliJ during this process or at a later point in time.
|
|
|
|
### JBR
|
|
|
|
By default, Firmament tries to launch with hotswapping enabled in the devenv. This will fail if your JVM does not
|
|
support hotswapping. In that case you can either remove the hotswapping arguments, or you can use [JBR](jbr). You can
|
|
manually select JBR in your run configuration, after it has been generated by gradle.
|
|
|
|
```
|
|
-XX:+AllowEnhancedClassRedefinition -XX:HotswapAgent=external -javaagent:SOMEPATH
|
|
```
|
|
|
|
### Features
|
|
|
|
Typically, for each new set of features you will create a branch and then create a pull request back to the main
|
|
Firmament repo. Note that Firmament makes use of commit names to generate a changelog. As such the first line of each
|
|
commit should be something that can be interpreted by an end user. If you want to make an internal change you can use
|
|
the `[no changelog]` tag inside your commit message body to hide a commit from the changelog. Try to make one commit for
|
|
each feature. Don't worry if you have any problems with your git history, your pull request will history will be
|
|
rewritten to be fixed (but it would help me if you can keep your commit history clean).
|
|
|
|
[discord]: https://discord.gg/64pFP94AWA
|
|
[jbr]: https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-21.0.5b631.16
|