Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neoforged/serverstarterjar
Jar executables that can directly start a NeoForge server
https://github.com/neoforged/serverstarterjar
forge minecraft neoforge server
Last synced: 24 days ago
JSON representation
Jar executables that can directly start a NeoForge server
- Host: GitHub
- URL: https://github.com/neoforged/serverstarterjar
- Owner: neoforged
- License: lgpl-2.1
- Created: 2024-06-30T21:08:49.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-07-22T08:24:56.000Z (4 months ago)
- Last Synced: 2024-10-13T12:24:10.594Z (25 days ago)
- Topics: forge, minecraft, neoforge, server
- Language: Java
- Homepage:
- Size: 96.7 KB
- Stars: 4
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ServerStarterJar
ServerStarterJar is a same-process wrapper around the Forge (1.17+) and NeoForge server run scripts.This project brings back the `server.jar` file in old versions, that can be used when a server host does not support custom launch scripts (such as the `run.sh` file).
## Installation
To use the starter, simply download the `server.jar` file of [the latest release](https://github.com/NeoForged/serverstarterjar/releases/latest/download/server.jar)
and place it in the folder the `run.sh`/`run.bat` scripts are located (you may need to run the NeoForge installer first with the `--install-server` argument; check the [installer section](#running-the-installer) for more information).
Afterwards, you may run the jar as an executable (i.e. `java -jar server.jar`).> [!IMPORTANT]
> Any JVM arguments (such as `-Xmx`) placed in the `user_jvm_args.txt` file will *not* be picked up by default. You'll need to run `java @user_jvm_args.txt -jar server.jar`.## Compatible Versions
This starter is compatible with all [MinecraftForge](https://minecraftforge.net) versions since 1.17, and with all [NeoForge](https://neoforged.net) versions.## Running the installer
If the starter cannot find the run scripts, it will attempt to run an installer.
It will first try to run the first file ending with `-installer.jar` from the folder.You may specify an installer to download instead using the `--installer` option (i.e. `java -jar server.jar --installer 21.0.46-beta`).
The installer specified can either be a link to an installer (i.e. `https://maven.neoforged.net/releases/net/neoforged/neoforge/21.0.46-beta/neoforge-21.0.46-beta-installer.jar`)
or a **NeoForge version** to download the installer for (i.e. `21.0.46-beta`).> [!NOTE]
The installer will only be run if the starter cannot find the run scripts. You may force it to run if the installer version and the installed version differ using `--installer-force`.## How it works
Below you will find the steps the start goes through to launch a modular NeoForge environment:
1. search the folder the starter was invoked in for the `run.sh` (*nix) / `run.bat` (Windows) file
2. find the `java` invocation in the run script
3. extract and parse any argument file references (`@[...]`)
4. if a `-jar` argument is found:
- put it on the system classpath alongside all entries specified in the `Class-Path` manifest entry
- update the `java.class.path` system property with the new entries
5. otherwise
- parse the module path (`-p`) argument, and load the jars on a new module layer, which will replace the boot layer
- parse the `--add-exports`/`--add-opens` arguments and replicate them using Java instrumentation module redefinition
- ignore the `--add-modules` arguments as they're irrelevant since the module path is fully loaded as the boot layer
6. set the system properties (`-D=`) specified by the args file
7. consider the `Main-Class` attribute of the jar / the first remaining argument the main class, load it, and retrieve its `main(String[])` method
8. append any arguments specified to the starter executable to the remaining arguments 9
9. launch Minecraft with the remaining arguments