Minecraft Server Hopper & Container optimieren: Hoppers als TPS-Killer stoppen
# Minecraft Server Hopper & Container optimieren: Hoppers als TPS-Killer stoppen
Wenn du jemals einen stark ausgelasteten Minecraft-Server profiliert hast und dich gefragt hast, warum die TPS einbricht, ohne dass eine offensichtliche Ursache erkennbar ist, sind Hoppers häufig der Schuldige. Ein einzelner Hopper prüft standardmäßig alle 8 Game-Ticks, ob Items zu bewegen sind — und eine Basis mit ein paar Hundert Hoppers in einer automatisierten Farm kann leicht 10–20 % des gesamten Tick-Budgets deines Servers verbrauchen. Dieser Guide erklärt genau, was unter der Haube passiert, und wie du es behebst.
Warum Hoppers so teuer sind
Jeder Hopper auf dem Server führt während der Tile-Entity-Phase des Tick-Loops Logik aus. Das umfasst:
- Prüfen des Inventars darüber auf Items zum Einziehen
- Scannen von Item-Entities im Sammelbereich (1×1×1 Block über dem Hopper)
- Pushen von Items in den Container darunter oder in Blickrichtung
- Cooldown-Tracking zur Drosselung der Transfergeschwindigkeit
Das Problem potenziert sich, wenn Spieler große Sortiersysteme, Storage-Arrays oder Item-Farmen bauen. Ein mittelgroßer Survival-Server hat möglicherweise 5.000–20.000 Hoppers gleichzeitig über alle Spielerbasen hinweg geladen. Mit Standardeinstellungen tickt jeder alle 8 Game-Ticks — das sind 2,5-mal pro Sekunde pro Hopper. Multipliziere das mit 10.000 Hoppers, und du schaust auf 25.000 Hopper-Tick-Operationen pro Sekunde, alle auf dem Main-Thread.
Deshalb taucht Hopper-Lag selten als einzelner massiver Spike auf — es ist ein langsamer, schleichender Verbrauch, der deine TPS dauerhaft unter 20 hält.
Wichtige Konfigurationseinstellungen
bukkit.yml — Hopper Tick-Rate
Die wirkungsvollste Einstellung befindet sich in bukkit.yml:
ticks-per:
hopper-transfer: 8
hopper-check: 1
hopper-transfersteuert, wie viele Ticks zwischen jedem Item-Transfer-Versuch liegen. Der Standard ist8. Erhöhe dies auf16oder sogar24, um den Hopper-Overhead deutlich zu reduzieren — Items bewegen sich nur etwas langsamer.hopper-checksteuert, wie oft Hoppers nach nahegelegenen Item-Entities auf dem Boden suchen. Erhöhe auf8oder16, um die Entity-Scan-Kosten erheblich zu senken. Die meisten Spieler werden nicht bemerken, dass Items einen Bruchteil einer Sekunde länger brauchen.
Empfohlene Werte für ausgelastete Server:
ticks-per:
hopper-transfer: 16
hopper-check: 8
paper-world.yml — Hopper-spezifische Optimierungen
Paper fügt in paper-world.yml mehrere Hopper-Optimierungen hinzu:
hopper:
cooldown-when-full: true
disable-move-event: false
ignore-occluding-blocks: true
cooldown-when-full— Beitruegeht ein Hopper, der versucht Items in einen vollen Container zu pushen, in einen Cooldown statt jeden Tick neu zu versuchen. Das ist ein enormer Gewinn für volle Storage-Arrays und sollte immer aktiviert sein.disable-move-event—truedeaktiviert dasInventoryMoveItemEventfür Hoppers. Das bricht Plugins, die auf Hopper-Bewegungen hören (z.B. Shop- oder Log-Plugins), aber wenn du keine verwendest, kann es die Hopper-CPU-Last um 30–50 % senken.ignore-occluding-blocks— Erlaubt Hoppers, Items durch bestimmte Blöcke zu sammeln, was aufwendige Farm-Designs reduziert.
spigot.yml — Hopper und Container
world-settings:
default:
hopper-amount: 1
hopper-can-load-chunks: false
hopper-can-load-chunks— Behalte dies auffalse. Beitruekönnen Hoppers Chunks forcieren zu laden, was ein ernstes Performanceproblem ist.hopper-amount— Steuert Items pro Hopper-Operation. Erhöhen auf3oder8bedeutet weniger Operationen für denselben Durchsatz und reduziert die Tick-Zeit.
Purpur und Pufferfish Extras
Bei Purpur prüfe purpur.yml auf:
world-settings:
default:
hopper:
cooldown-when-full: true
ignore-occluding-blocks: true
Pufferfish enthält asynchrone Hopper-Optimierungen, die bestimmtes Container-Scanning vom Main-Thread auslagern. Bei hoher Spielerzahl ist Pufferfish einen Test wert.
Praktische Strategien zur Reduzierung der Hopper-Anzahl
Konfiguration allein reicht nicht, wenn Spieler unverantwortliche Farmen bauen. Überlege diese server-seitigen Ansätze:
1. Pro-Spieler oder Pro-Chunk Hopper-Limits
Plugins wie ClearLag, HopperLimiter oder eigene Paper-Plugins können die Hopperanzahl pro Chunk oder Spieler begrenzen. Ein vernünftiges Limit für Survival-Server sind 64 Hoppers pro Chunk.
2. Spieler aufklären
Viele Spieler wissen nicht, dass Hopper-Pipelines teuer sind. Ermuntere zur Nutzung von:
- Dropper-Ketten (günstiger als Hoppers für Massentransport)
- Kompakteren Sortierern mit weniger Hoppers durch clevere Filter-Designs
3. WorldGuard Region-Flags
Nutze WorldGuard, um das Platzieren von Hoppers in bestimmten Zonen einzuschränken — besonders in der Nähe von Spawn oder in öffentlichen Bereichen.
Hopper-Lag diagnostizieren
Nutze spark, um Hopper-bedingten Lag zu identifizieren:
/spark profiler --thread *
Suche nach HopperBlockEntity oder TileEntityHopper in der Profiler-Ausgabe. Verbraucht es mehr als 5 % der Tick-Zeit, brauchen deine Hopper-Einstellungen Aufmerksamkeit.
Tools wie [PulseNode](https://pulsenode.tech) können diese Muster automatisch aufdecken — sie verfolgen TPS-Trends über Zeit und warnen, wenn der Tile-Entity-Overhead zu steigen beginnt, damit du das Problem erkennst, bevor Spieler Lag bemerken.
Empfohlene Konfigurationsübersicht
| Datei | Einstellung | Standard | Empfohlen |
|-------|------------|---------|----------|
| bukkit.yml | hopper-transfer | 8 | 16 |
| bukkit.yml | hopper-check | 1 | 8 |
| paper-world.yml | cooldown-when-full | true | true |
| paper-world.yml | disable-move-event | false | true* |
| spigot.yml | hopper-amount | 1 | 3–8 |
| spigot.yml | hopper-can-load-chunks | false | false |
*Nur wenn keine Plugins auf InventoryMoveItemEvent angewiesen sind
Fazit
Hoppers sind täuschend teuer, weil ihre Kosten verteilt und unsichtbar sind — bis du tief profilierst. Die Kombination aus erhöhten Transfer-Tick-Intervallen, aktivierten Full-Container-Cooldowns, deaktivierten unnötigen Inventory-Move-Events und vernünftigen Hopper-Limits kann 5–15 % deines gesamten Server-Tick-Budgets zurückgewinnen — ohne spürbare Gameplay-Auswirkungen für die meisten Spieler.
Beginne mit bukkit.yml und paper-world.yml, profiliere mit spark vor und nach den Änderungen, und optimiere schrittweise weiter.
---
Willst du wissen, wenn Hopper-Lag aufzubauen beginnt, bevor er das Spielerlebnis ruiniert? [PulseNode](https://pulsenode.tech) überwacht TPS, Arbeitsspeicher und Performance-Trends deines Servers in Echtzeit — damit du schleichenden Tile-Entity-Overhead sofort erkennst, nicht erst wenn sich Spieler beschweren.