|
@@ -0,0 +1,49 @@
|
|
|
+---
|
|
|
+title: Minecraft (Bukkit)
|
|
|
+breadcrumbs:
|
|
|
+- title: Configuration
|
|
|
+- title: Game Servers
|
|
|
+---
|
|
|
+{% include header.md %}
|
|
|
+
|
|
|
+This page is intended for the Bukkit server software or any of its derivatives, like SpigotMC, PaperMC and Tuinity.
|
|
|
+
|
|
|
+## Server Variants
|
|
|
+
|
|
|
+- [Bukkit](https://bukkit.org/):
|
|
|
+ - An open-source modification of the vanilla Minecraft server with a rich plugin API, increased configurability and other improvements.
|
|
|
+ - Acquired by Mojang as part of hiring parts of the Bukkit team. Although, Mojang did not attempt to control the project.
|
|
|
+ - Discontinued in 2014 due to project retirement and a following DMCA takedown from one of its biggest contributors ([unofficial explanation](https://www.spigotmc.org/wiki/unofficial-explanation-about-the-dmca/)). Due to the DMCA takedown, all pre-built images were removed and similar active projects had to find a way to provide the modified images without redistributing the vanilla Minecraft server.
|
|
|
+ - The API (and project) is called "Bukkit", while the implementation and modified vanilla server (`net.minecraft.server` or native Minecraft server (NMS)) is called "CraftBukkit".
|
|
|
+- [SpigotMC](https://www.spigotmc.org/):
|
|
|
+ - A fork of Bukkit with enhancements.
|
|
|
+- [PaperMC](https://papermc.io/):
|
|
|
+ - A fork of SpigotMC with enhancements.
|
|
|
+- [Tuinity](https://github.com/Spottedleaf/Tuinity):
|
|
|
+ - A fork of PaperMC (or EmpireCraft (EMC)) with enhancements.
|
|
|
+ - Attempts to merge enhancements back into PaperMC, but with some resistance due to personal disagreements.
|
|
|
+
|
|
|
+## Resource Requirements
|
|
|
+
|
|
|
+### Memory Usage
|
|
|
+
|
|
|
+- Allocate 1-10 GB per server, with 1G for tiny servers with few players and 10G+ for large servers with many players and worlds.
|
|
|
+- The usage scales with the number of worlds, players and plugins, as well as how scattered throughout the world(s) the players are.
|
|
|
+- Memory allocation for Minecraft or more about GC pressure than running completely out of memory, so deciding how much is enough can be hard.
|
|
|
+- Memory usage is set using the `Xmx` parameter, which specified how much memory the JVM is allowed to use (excluding internal usage). The server is expected to use all of it, which does *not* mean that the server is out of memory. `Xms`, the initial memory allocation, should be the same as `Xmx` to avoid unused memory.
|
|
|
+- Leave some of the available memory unused when setting `Xmx`, as the JVM internals, OS etc. requires memory too.
|
|
|
+- See [Tuning the JVM – G1GC Garbage Collector Flags for Minecraft (Aikar)](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/).
|
|
|
+
|
|
|
+## Configuration
|
|
|
+
|
|
|
+### JVM Tuning
|
|
|
+
|
|
|
+From [Tuning the JVM – G1GC Garbage Collector Flags for Minecraft (Aikar)](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/) (updated Apr 25 2020 3:30PM EST):
|
|
|
+
|
|
|
+```text
|
|
|
+-Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
|
|
|
+```
|
|
|
+
|
|
|
+`-Xmx` and `-Xms` should be equal and set to an appropriate size. Remember to leave memory for JVM internals, the OS and other progrems.
|
|
|
+
|
|
|
+{% include footer.md %}
|