Tulpencraft gebruikt Java 25 als standaard Java-runtime voor de Minecraft-infrastructuur.
De huidige Minecraft-serveromgeving draait op Minecraft 26.2 met onder andere Paper en Velocity. Voor Minecraft 26.1 en nieuwer is Java 25 vereist; Paper vermeldt Java 25 eveneens als aanbevolen runtime voor deze versies.
De huidige standaard is:
| Onderdeel | Versie |
|---|---|
| Java | 25 |
| Java-type | OpenJDK / JDK |
| Minecraft | 26.2 |
| Paper | 26.2 |
| Velocity | 4.x / Java 25 |
| Operating System | Rocky Linux 10 |
Java 25 is daarmee onderdeel van de Tulpencraft-softwarebaseline.
Bij een wijziging van de Minecraft-versie wordt altijd gecontroleerd of de vereiste Java-versie verandert.
Minecraft is vanaf versie 26.1 overgestapt naar een Java 25-runtime. Paper volgt deze vereiste en geeft voor Minecraft 26.1 en nieuwer Java 25 als aanbevolen versie.
Voor Tulpencraft betekent dit dat Java 25 bewust als vaste runtime wordt gebruikt in plaats van verschillende Java-versies per server te onderhouden.
Dit vereenvoudigt:
Voor Tulpencraft wordt een volledige JDK gebruikt.
Paper adviseert bij installatie expliciet om geen headless Java-variant te gebruiken, omdat deze benodigde afhankelijkheden kan missen.
De voorkeur is daarom:
Java 25 JDK
en niet:
Java 25 headless
Rocky Linux is gebaseerd op het RPM/DNF-ecosysteem.
Paper documenteert voor RPM-gebaseerde distributies onder andere de installatie van Amazon Corretto 25 via DNF.
Voor Tulpencraft kan Java 25 bijvoorbeeld via een geschikte OpenJDK-distributie worden geïnstalleerd.
Na installatie moet altijd worden gecontroleerd welke Java-versie daadwerkelijk actief is.
java -version
Een correcte installatie moet Java 25 tonen.
Bijvoorbeeld:
openjdk version "25" OpenJDK Runtime Environment OpenJDK 64-Bit Server VM
De actieve Java-versie:
java -version
Java-binary:
which java
Het gebruikte alternatief:
alternatives --display java
Op Rocky Linux kan daarnaast worden bekeken welke Java-installaties beschikbaar zijn:
sudo alternatives --config java
Hiermee kan worden gecontroleerd welke Java-runtime als standaard is ingesteld.
De Java-runtime is direct gekoppeld aan de Minecraft-serverversie.
Voor de huidige Tulpencraft-stack:
Minecraft 26.2
│
▼
Paper 26.2
│
▼
Java 25
Minecraft 26.2 vereist Java 25 of nieuwer.
Daarom wordt Java 25 als onderdeel van de serverbaseline gedocumenteerd en niet als een willekeurige systeemdependency beschouwd.
Ook de Velocity-proxy maakt gebruik van Java.
De proxy draait daarom op dezelfde Java-major-version als de rest van de moderne Tulpencraft-stack wanneer de gebruikte Velocity-versie dat ondersteunt.
Dit voorkomt dat op één server meerdere Java-runtimes noodzakelijk zijn.
De actuele Java-versie van de proxy kan worden gecontroleerd met:
java -version
De Java-runtime wordt gedeeld door de processen die op dezelfde Linux-server draaien.
Bijvoorbeeld:
mc-proxy001 │ ├── Velocity │ ├── Lobby / Paper │ └── overige Java-processen
Iedere Minecraft-server krijgt zijn eigen Java-proces en geheugenlimieten.
De Java-runtime zelf wordt centraal als systeemcomponent beheerd.
Java-geheugen wordt per Minecraft-proces ingesteld.
Voorbeeld:
java -Xms2G -Xmx4G -jar paper.jar --nogui
Hierbij betekent:
| Parameter | Betekenis |
|---|---|
-Xms2G | Initiële Java heap |
-Xmx4G | Maximale Java heap |
-jar | Start een JAR-bestand |
--nogui | Geen grafische serverinterface |
De exacte waarden zijn afhankelijk van de functie en belasting van de server.
Een lobby krijgt bijvoorbeeld doorgaans aanzienlijk minder geheugen dan een grote Survival-server.
Java 25 beschikt over moderne garbage collectors die geschikt zijn voor server workloads.
De garbage collector wordt niet zonder reden aangepast.
Het uitgangspunt is:
Eerst meten, daarna tunen.
Minecraft-performance wordt beoordeeld op onder andere:
Java-flags worden alleen aangepast wanneer daar een aantoonbare reden voor is.
Tulpencraft gebruikt geen grote verzameling willekeurig gekopieerde JVM-flags.
Configuraties zoals:
-Xms -Xmx
worden afgestemd op de beschikbare resources.
Aanvullende JVM-opties worden alleen toegepast wanneer:
Dit voorkomt dat verouderde optimalisaties uit oudere Minecraft-versies worden overgenomen.
Java wordt net als andere systeemsoftware onderhouden.
Een Java-update wordt niet automatisch als onschuldig beschouwd.
Voor een update wordt gecontroleerd:
Daarna wordt de server gecontroleerd en opnieuw gestart.
Na een Java-update:
java -version
Daarna kan gecontroleerd worden of Minecraft correct start:
sudo systemctl status minecraft-lobby
of voor een andere server:
sudo systemctl status <minecraft-service>
Logs:
sudo journalctl -u <minecraft-service> -n 100 --no-pager
Minecraft-servers worden als systemd-services uitgevoerd.
Een voorbeeld:
[Service] User=minecraft WorkingDirectory=/srv/minecraft/lobby ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar paper.jar --nogui Restart=on-failure
Hierdoor wordt het Minecraft-proces beheerd door systemd in plaats van door een handmatig gestart shellproces.
Voordelen hiervan zijn onder andere:
journalctl;De daadwerkelijke Tulpencraft systemd-configuratie kan per server verschillen.
Minecraft wordt niet als root uitgevoerd.
De Java-processen draaien onder de betreffende servicegebruiker.
Bijvoorbeeld:
ps aux | grep java
Daarbij moet zichtbaar zijn dat het Minecraft-proces onder de juiste gebruiker draait.
Dit past binnen de algemene Tulpencraft-hardeningbaseline.
Bij een nieuwe Minecraft-server wordt minimaal gecontroleerd:
headless variant gebruiktjava -version gecontroleerdDe Java-versie wordt gekoppeld aan de Minecraft-serverversie.
| Minecraft | Java |
|---|---|
| 1.20–1.21.11 | Java 21 |
| 26.1+ | Java 25 |
| Tulpencraft 26.2 | Java 25 |
Deze tabel is een beheerreferentie en wordt aangepast wanneer Minecraft of de gebruikte serversoftware nieuwe Java-eisen introduceert. Paper publiceert hiervoor de actuele versie-eisen in de officiële documentatie.
Tulpencraft Java baseline
Voor de huidige Minecraft 26.2-infrastructuur is Java 25 de standaard runtime. Afwijkingen hiervan moeten technisch worden gemotiveerd en gedocumenteerd.