KAPITEL 07
Plugins entwickeln.
Paper, Velocity und Folia erklärt. Plus die Starter-Templates, die dir den ersten eigenen Plugin-Build abnehmen.
Plugins laufen server-seitig und ändern Gameplay-Regeln, ohne dass Spieler:innen etwas installieren müssen. Anders als Mods können sie keine neuen Blöcke oder Items einführen — sie haken sich in vorhandene Mechaniken ein.
Die Server-Software-Landschaft ist historisch fragmentiert, lässt sich aber heute klar ordnen: Paper für Einzelserver, Velocity als Proxy für Netzwerke, Folia für Multithreading bei sehr großen Servern.
Server-Software
§ 7.1
-
Paper
Heutiger Standard
Moderner Fork von Spigot mit besserer Performance und aktiver API-Entwicklung. Basis für nahezu jeden ernsthaften Plugin-Server.
github.com/PaperMC/Paper
-
Velocity
Moderner Proxy
Verbindet mehrere Backend-Server zu einem Netzwerk (Lobby, Survival, Minigames). Schneller und moderner als BungeeCord.
github.com/PaperMC/Velocity
-
Folia
Multithreading
Paper-Fork mit regionalisiertem Multithreading für sehr große Server. Plugin-Kompatibilität eingeschränkt — Plugins müssen Folia-kompatibel sein.
github.com/PaperMC/Folia
-
Spigot
Legacy
Historische Grundlage. Wegen DMCA-Streit 2014 werden Builds nicht öffentlich verteilt. Für Neustarter: Paper nutzen.
—
-
Purpur
Nice-to-have
Paper-Fork mit zusätzlichen Config-Optionen für individuelle Gameplay-Tweaks.
github.com/PurpurMC/Purpur
§ 7.2
Dein erstes Plugin
Die Paper-API macht's knapp: Eine Klasse, die JavaPlugin erweitert, plus eine plugin.yml — mehr braucht das Grundgerüst nicht. Events werden über @EventHandler abonniert, Commands via onCommand oder modernen Brigadier-Command-API.
Das Plugin-Repository ist seit 2024 klar: Hangar (hangar.papermc.io) für moderne Paper-Plugins, mit WebAuthN/TOTP und strenger Moderation.
package example;
import org.bukkit.event.*;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class ExamplePlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
getLogger().info("Plugin aktiv.");
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
event.getPlayer().sendMessage("Willkommen auf dem Server.");
}
}