Zum Hauptinhalt springen

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

  • 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.

src/main/java/example/ExamplePlugin.java
JAVA
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.");
  }
}