Extractioncraft Loot-System
Extractioncraft hat ein mehrschichtiges Loot-System, das auf drei Konzepten aufbaut: Inhaltspakete referenzieren Loot-Tabellen, Loot-Tabellen referenzieren Loot-Pools, und Loot-Pools definieren die tatsächlichen Items, die droppen können.
Übersicht
Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)
Loot-Tabellen
Loot-Tabellen-Konfigurationen befinden sich im Ordner loot_tables/. Jede Datei definiert eine Liste von Loot-Pool-Einträgen, wobei jeder Eintrag eine unabhängige Chance hat, ein Item zu erzeugen.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
isEnabled | Boolean | true | Wird zwar in die Datei geschrieben, aber nicht erzwungen: Loot-Tabellen werden registriert und sind nutzbar, unabhängig davon, ob dieser Wert true ist. Um eine Tabelle außer Betrieb zu nehmen, entferne sie aus chestLootTables / barrelLootTables des Inhaltspakets und leere ihre spawnPools. |
spawnPools | String-Liste | [] | BetterStructures-Spawn-Pool-Namen. Wenn ein EliteMob, der einem passenden Spawn-Pool zugeordnet ist, getötet wird, wird diese Loot-Tabelle für seine Drops verwendet. Der Vergleich ignoriert Groß-/Kleinschreibung sowie ein angehängtes .yml, sodass sowohl kobold_miner_pool als auch Kobold_Miner_Pool.yml passen. |
lootTable | Objektliste | [] | Jeder Eintrag referenziert einen Loot-Pool-Dateinamen und eine chance (0.0 bis 1.0) |
Loot-Tabellen-Eintragsformat
lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2
Jeder Eintrag wird unabhängig gewürfelt. Eine chance von 0.5 bedeutet eine 50%-ige Wahrscheinlichkeit, dass dieser Pool einen Drop erzeugt.
Loot-Pools
Loot-Pool-Konfigurationen befinden sich im Ordner loot_pools/. Jeder Pool definiert eine Menge möglicher Items. Wenn ein Pool gewürfelt wird, wird ein Item basierend auf gewichteter Wahrscheinlichkeit ausgewählt.
| Schlüssel | Typ | Standard | Beschreibung |
|---|---|---|---|
isEnabled | Boolean | true | Wird zwar in die Datei geschrieben, aber nicht erzwungen: Loot-Pools werden registriert und sind nutzbar, unabhängig davon, ob dieser Wert true ist. Um einen Pool außer Betrieb zu nehmen, entferne seinen Eintrag aus den Loot-Tabellen, die auf ihn verweisen. |
eliteMobsLoot | Objektliste | [] | EliteMobs-Custom-Items, die droppen können |
vanillaLoot | Objektliste | [] | Vanilla-Minecraft-Items, die droppen können |
EliteMobs-Loot-Eintrag
eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5
Der filename referenziert eine EliteMobs-Custom-Item-Konfiguration. Das weight bestimmt die relative Drop-Wahrscheinlichkeit unter allen Einträgen im Pool.
Vanilla-Loot-Eintrag
vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0
Das material ist ein Bukkit Material-Enum-Name. Das weight funktioniert genauso wie bei Elite-Loot-Einträgen. Alle Elite- und Vanilla-Einträge in einem Pool konkurrieren in einer einzigen gewichteten Auswahl, ein Pool erzeugt pro Wurf also höchstens ein Item. Vanilla-Items droppen immer als einzelnes Item. Ein unbekanntes material wird beim Start mit einer Warnung übersprungen, und ein eliteMobsLoot-Dateiname, zu dem es kein EliteMobs-Custom-Item gibt, erzeugt beim Drop eine Warnung im Log und nichts weiter.
Gewichte dürfen als Dezimalzahlen (0.5), ganze Zahlen (2) oder als Zeichenketten in Anführungszeichen ("1.5") geschrieben werden; alle drei Varianten lassen sich parsen. Ein fehlendes oder nicht-numerisches weight wird als 0 behandelt und erzeugt eine Warnung.
Container-Loot (Truhen und Fässer)
Während eines Matches werden Truhen und Fässer beim Start des Matches von BetterStructures gespawnt. Wenn ein Spieler eine Truhe oder ein Fass mit Rechtsklick anklickt:
- Der Vanilla-Behälter öffnet sich nie — die Interaktion wird abgebrochen und durch den Loot-Ablauf von Extractioncraft ersetzt.
- Der Spieler muss 3 Sekunden lang völlig stillstehen. Ein Countdown wird als Untertitel angezeigt.
- Jede Bewegung bricht die Interaktion ab ("Don't move while opening a container!"). Ein Spieler kann immer nur einen Behälter gleichzeitig öffnen.
- Bei Erfolg wird eine Loot-Tabelle aus der
chestLootTables- oderbarrelLootTables-Liste des Inhaltspakets ausgewählt (gewichtete Auswahl). - Die Einträge der ausgewählten Loot-Tabelle werden jeweils unabhängig gewürfelt, und resultierende Items droppen am Standort des Behälters.
- Der Behälter wird nach dem Looten zerstört (durch Luft ersetzt), jeder Behälter kann also nur einmal geplündert werden.
Behälter zeigen alle 10 Ticks Portal-Partikel an, solange sie in einem Match aktiv sind, um sie für Spieler sichtbar zu machen.
Behälter-Drops übergeben EliteMobs ein festes Level von 10, unabhängig davon, welches Inhaltspaket das Match verwendet. Der von den Kobold-Mines-Paketen angegebene Levelbereich stammt von den Mobs auf der Karte, nicht vom Truhen- und Fass-Loot.
Mob-Kill-Loot
Wenn ein EliteMob während eines Matches stirbt, liest das Plugin die Custom-Data betterstructures:spawnpool des Mobs aus. Mobs ohne diese Daten (also alles, was nicht vom BetterStructures-Modulgenerator gespawnt wurde) erzeugen nie Extractioncraft-Loot.
Jede Loot-Tabelle, deren spawnPools-Liste zum Spawn-Pool des Mobs passt, erzeugt Drops am Todesort — das ist keine gewichtete Auswahl. Denselben Spawn-Pool in drei Loot-Tabellen aufzuführen ergibt also drei unabhängige Wurfserien. Das Level des Mobs wird an EliteMobs für levelgerechte Item-Generierung weitergegeben.
Das Mob-Level selbst wird von BetterStructures bei der Kartengenerierung festgelegt: Bosse näher an der Kartenmitte spawnen nahe dem Maximallevel ihres Spawn-Pools, Bosse weiter außen nahe dem Minimum. Die zur Mitte hin schrumpfende Weltgrenze drängt die Spieler daher in immer schwierigeres — und lohnenderes — Gebiet.
Item-Verhalten beim Verlassen
- Jedem Spieler, der ein Match verlässt — erfolgreich oder nicht —, wird zuerst das Inventar seelengebunden (über die EliteMobs-Soulbind-Verzauberung), sodass alles, womit er herausgeht, an ihn gebunden ist.
- Spieler, die sich erfolgreich extrahieren, behalten alle Items.
- Spieler, die die Extraktion nicht schaffen, verlieren alle Inventar-Items, wenn
deleteItemsOnFailToExtractin derconfig.ymlauftruesteht (Standard). Das gilt für das Verlassen per/exc leave, für Verbindungsabbrüche und für tödlichen Schaden. - Solange das Match noch wartet oder herunterzählt, wird nichts gelöscht; die Regel greift erst, wenn das Match läuft.