Corpse
Überblick
Stirbt ein Spieler, übernimmt Corpse seine Drops: das gesamte Inventar (Hotbar, Rüstung, Zweithand) und die Erfahrung werden in eine Leiche verschoben, die dort liegt, wo er gefallen ist. Die Vanilla-Drops werden entfernt. Die Leiche bleibt bestehen, bis jemand sie plündert oder sie abläuft, und überlebt einen Neustart.
Die Leiche ist eine Packet-Entity, die für jeden Spieler in der Nähe separat dargestellt wird. Sie kann ein einfaches Spielermodell in Sterbepose sein, das Skin und Rüstung des Opfers trägt, oder ein beliebiges Modell eines unterstützten Backends. Zwei Manifest-Entries steuern alles: Corpse Global Settings für serverweite Regeln und Corpse Model Definition für das Aussehen der Leiche.
Funktionen
- Vollständige Loot-Erfassung — Inventar, Rüstung, Zweithand und Erfahrung gehen in die Leiche; Vanilla-Drops und -Erfahrung werden entfernt.
- Drei Loot-Modi — ein Loot-Menü mit Seiten, direkte Übertragung ins Inventar des Plünderers oder alles auf den Boden fallen lassen.
- Loot-Schutz — Plündern nur durch den Besitzer oder ein Schutzfenster, nach dem jeder plündern darf.
- Ablaufzeit — Leichen verschwinden nach einer konfigurierbaren Zeit oder nie.
- Persistenz — Leichen überleben Neustarts, in MySQL, wenn verfügbar, andernfalls in einer lokalen Datei.
- Mehrere Erscheinungsbilder — Definitionen werden nach Welt und Priorität gewählt; Modelle aus EntityExtension, ModelEngine, BetterModel, BTC Mob NPC oder MythicMobs NPC.
- Einfacher Spieler als Fallback — Skin, Rüstung, Leuchten und eine Pose (liegend, gefallen, sterbend oder stehend), wenn kein Modell gesetzt ist.
- Quest-Anbindung — Events bei Entstehung, Plündern und Ablauf, Facts, ein Bergungsziel und ein Waypoint, der den Weg zurück zeigt.
- Welt-Filter — Leichen nur in bestimmten Welten hinterlassen (zum Beispiel in den Dungeons), mit
allowedWorldsundexcludedWorlds. - Jeder Text ist konfigurierbar — Nachrichten, Menübeschriftungen und -materialien, das Wegpunkt-Format mit seinen Pfeilen und die Befehlsantworten sind Felder.
- Staff-Befehl — Leichen des gesamten Servers auflisten und entfernen.
- Folia-tauglich — Weltänderungen laufen in der Region, der die Leiche gehört.
Installation
- Installiere die TypeWriter-Erweiterungen Basic, Quest und Entity über den Tab Extensions des Web-Panels (siehe die TypeWriter-Dokumentation).
- Installiere die GUI-Erweiterung: Das Loot-Menü baut darauf auf.
- Optional: Installiere das Modell-Backend deiner Wahl für das Aussehen der Leiche (ModelEngine, BetterModel, MythicMobs NPC oder BTC Mob NPC).
- Optional: Installiere die MySQL-Erweiterung, um Leichen in einer Datenbank zu speichern. Ohne sie werden Leichen in
plugins/Typewriter/corpse/corpses.jsongespeichert. - Lege die Corpse-JAR in
plugins/Typewriter/extensions/ab und starte den Server neu.
Beim Start protokolliert die Konsole, welche Modell-Backends gefunden wurden. Wird keines gefunden, enthalten Leichen weiterhin Loot und werden als einfacher Spieler dargestellt.
Erste Schritte
So richtest du Leichen ein, die fünf Minuten bestehen, eine Minute lang für den Besitzer geschützt sind und einen Weg zurück anzeigen:
- Öffne im TypeWriter-Web-Panel eine Manifest-Seite und füge einen Corpse Global Settings-Entry hinzu. Ohne ihn gelten die eingebauten Standardwerte (300 Sekunden, Loot-Menü, jeder darf plündern).
- Setze
durationauf300,onlyOwnerCanLootauf aus undownerProtectionSecondsauf60. - Wähle
lootMode:GUIöffnet das Loot-Menü per Rechtsklick,DIRECTverschiebt alles ins Inventar des Plünderers,DROPlässt alles auf den Boden fallen. Wer beim Klicken schleicht, verwendet einen anderen Modus (sneakSwapsLootMode). - Füge eine Corpse Model Definition hinzu. Lass
definitionRefleer für das einfache Spielermodell oder wähle eine Entity-Definition für ein Modell. Setze bei Bedarfpose,rotationModeund die Hitboxinteraction*. - Füge einen Corpse Waypoint-Audience-Entry hinzu, um Entfernung und einen Pfeil zur Leiche in der Actionbar anzuzeigen. Er verschwindet, sobald die Leiche weg ist.
- Um die Bergung zu einem Quest-Schritt zu machen, füge ein Corpse Recovery Objective hinzu und verknüpfe es mit einer Quest.
- Veröffentliche (Publish), stirb einmal in einer Testwelt und klicke die Leiche mit Rechtsklick an.
Corpse übernimmt nur, was der Tod fallen gelassen hätte. Ist die Spielregel keepInventory aktiv, behält der Spieler seine Items und es entsteht keine Leiche: Der Tod bleibt Vanilla. Items, die andere Plugins für den Spieler behalten (Fluch des Verschwindens, Soulbound-Items), werden nicht in die Leiche dupliziert.
Auf bestimmte Welten beschränken
Standardmäßig hinterlässt jede Welt eine Leiche. Zwei Listen in den Corpse Global Settings legen fest, wo:
allowedWorlds: die Welten, in denen ein Tod eine Leiche hinterlässt. Leer bedeutet jede Welt.excludedWorlds: die Welten, in denen ein Tod nie eine Leiche hinterlässt. Sie gewinnt immer gegenüberallowedWorlds.
Für Leichen nur in den Dungeons und sonst nirgends:
allowedWorlds:
- dungeon_*
Regeln für beide Listen:
- Ein Eintrag pro Welt.
*steht für beliebig viele Zeichen und?für genau eins:dungeon_*deckt jede Welt ab, die ein Dungeon für einen Run erzeugt,dgbuildist eine einzelne benannte Welt. - Jeder Eintrag wird ohne Beachtung der Groß-/Kleinschreibung mit dem Weltnamen (Ordnername) und dem Dimensionsschlüssel verglichen, zum Beispiel
minecraft:the_nether. - Außerhalb der erlaubten Welten (oder in einer ausgeschlossenen) bleibt der Tod Vanilla: normale Drops und normale Erfahrung, keine Leiche.
- Das entscheidet nur, ob eine Leiche existiert. Das Aussehen wählt weiterhin die Liste
worldsder Corpse Model Definition, die dieselben Einträge akzeptiert.
Was der Spieler in einer abgelehnten Welt sieht. filteredWorldDeath legt es fest. Es hat keine Wirkung, wenn beide Listen leer sind.
VANILLA_DEATH_SCREEN(Standard): ein gewöhnlicher Minecraft-Tod. Die am Boden liegende Leiche und der Todesbildschirm werden vom Minecraft-Client gezeichnet, nicht von Corpse, und Corpse kann sie nicht entfernen.INSTANT_RESPAWN: Der Spieler respawnt im nächsten Tick, ohne Todesbildschirm. Items und Erfahrung fallen in beiden Fällen wie in Vanilla auf den Boden.
Für Leichen nur in den Dungeons und sofortigen Respawn überall sonst:
allowedWorlds:
- dungeon_*
filteredWorldDeath: INSTANT_RESPAWN
Ein Tod hinterlässt keine Leiche und bleibt Vanilla, wenn:
- die Welt nicht erlaubt oder ausgeschlossen ist;
keepInventoryaktiv ist;- ein anderes Plugin den Tod abgebrochen hat (Totem oder Wiederbelebungs-Plugin): Der Spieler ist nicht tot;
- nichts zu übernehmen ist: weder Item noch Erfahrung.
So funktioniert es
Welche Definition verwendet wird, wird beim Tod entschieden: Unter den Corpse-Model-Definition-Entries, deren Liste worlds die Welt des Todes enthält (eine leere Liste bedeutet jede Welt), gewinnt der mit der höchsten priority. Ohne jede Definition wird eine Standarddefinition verwendet. Ihre Lebensdauer stammt aus overrideDuration, wenn der Wert über 0 liegt, andernfalls aus der globalen duration. Die Besitzerschutz-Regel wird beim Erstellen der Leiche festgelegt.
Nur ein Rechtsklick auf die Leiche plündert sie. Das Plündern leert die Leiche, und die Leiche wird entfernt. Eine Leiche, die niemand plündert, läuft ab, und ihre Items gehen verloren.
Menüs
Im Loot-Modus GUI öffnet ein Rechtsklick auf die Leiche ein Menü mit 54 Slots, das mit der GUI-Erweiterung aufgebaut ist.
- Die ersten fünf Reihen (45 Slots) enthalten die Items der Leiche. Klicke auf ein Item, um es in dein Inventar zu nehmen (passt es nicht hinein, fällt es dir vor die Füße); die Leiche wird nach jedem entnommenen Item gespeichert. Wird das letzte Item entnommen, ist die Leiche leer, die Erfahrung wird ausgezahlt und
on_corpse_lootwird ausgelöst. - In der unteren Reihe befinden sich die Buttons: vorherige Seite (links), nächste Seite, ein Button, der alles nimmt, und Schließen (rechts). Die Blätter-Buttons erscheinen nur, wenn es mehrere Seiten gibt.
- Die Truhe „Alles nehmen“ zeigt die in der Leiche gespeicherte Erfahrung (und die aktuelle Seite) in ihrer Lore und übergibt dem Plünderer alles, Erfahrung eingeschlossen.
- Der Titel und alle Beschriftungen lassen sich in den Corpse Global Settings ändern (
guiTitle,guiLootAllLabel,guiCloseLabel,guiPreviousPageLabel,guiNextPageLabel,guiExperienceLabel,guiPageLabel).
Ist das Inventar des Plünderers im Modus DIRECT voll, wird der Überschuss an der Leiche fallen gelassen und inventoryFullMessage angezeigt. Fallen gelassene Items können für den Plünderer reserviert werden (reserveDroppedItems, reserveDroppedItemsSeconds).
Konfiguration
Leichen werden außerhalb des Web-Panels gespeichert:
| Speicher | Wann | Ort |
|---|---|---|
| MySQL | die MySQL-Erweiterung stellt eine Datenquelle bereit | Tabelle corpse_corpses, wird automatisch angelegt |
| Lokale Datei | keine Datenquelle oder MySQL konnte nicht initialisiert werden | plugins/Typewriter/corpse/corpses.json |
Leichen, deren Ablaufzeit verstrich, während der Server aus war, werden beim Start gelöscht, ohne dass on_corpse_expire ausgelöst wird. Nach einem Neustart wird eine Leiche mit dem Namen und den Einstellungen angezeigt, die konstante Werte sind: Namen und Optionen, die von Platzhaltern abhängen, fallen auf ihre Standardwerte zurück. Eine wiederhergestellte Leiche behält Pose, Leuchten, Namen und Animation, aber nicht Skin und Rüstung des Besitzers: Sie zeigt das einfache Modell. Eine unlesbare Speicherdatei wird beiseitegelegt (.unreadable-<time>), statt überschrieben zu werden.
Befehle
Der Befehl ist ein Corpse Admin Command-Entry, den du im Web-Panel erstellst. Name und Berechtigung sind Felder des Entrys; die Standardwerte stehen unten.
| Befehl | Beschreibung |
|---|---|
/corpses list | Listet jede Leiche des Servers, in welcher Welt auch immer, mit Besitzer, Position, Welt, Item-Anzahl und Erfahrung auf. |
/corpses clear | Entfernt jede Leiche des Servers, nicht nur die deiner Welt. Löst on_corpse_expire nicht aus. |
Beide Befehle gelten für den ganzen Server, nicht pro Welt. Ihre Antworten und die Kopfzeile der Liste sind bearbeitbare Felder des Entries.
Berechtigungen
| Berechtigung | Erlaubt |
|---|---|
typewriter.corpse.admin | /corpses list und /corpses clear (Standardwert des Felds permission des Entrys). |
Entries
11 Einträge, aus dem Quellcode der Erweiterung generiert.
Ereignisse3
- On Corpse ExpireWhen a corpse expires unlooted
- On Corpse LootWhen a corpse is looted
- On Corpse SpawnWhen a corpse spawns
Ziele1
- Corpse Recovery ObjectiveRecover your corpse
Fakten2
- Corpse CountHow many corpses the player has
- Has CorpseWhether the player has a corpse waiting
Zielgruppen2
- Corpse Owner AudiencePlayers who have a corpse waiting
- Corpse WaypointPoints players back to their corpse
Befehle1
- Corpse Admin CommandAdmin command for corpses
Manifeste2
- Corpse DefinitionCorpse Model Definition
- Corpse SettingsCorpse Global Settings
Fehlerbehebung
Beim Rechtsklick auf die Leiche passiert nichts. Die Leiche ist über eine unsichtbare Hitbox anklickbar, interactionWidth mal interactionHeight Blöcke, standardmäßig 1.0. Mache sie bei einem großen Modell größer. Aktiviere debugInteractions in den Corpse Global Settings, um jeden Klick in der Konsole zu protokollieren, und schalte es danach wieder aus. Prüfe außerdem onlyOwnerCanLoot und ownerProtectionSeconds: Andere Spieler erhalten die cannotLootMessage.
Die Leiche ist ein einfacher Spieler, nicht mein Modell. definitionRef ist leer oder konnte nicht aufgelöst werden (die Konsole zeigt Failed to resolve entity definition). Stelle sicher, dass die Backend-Erweiterung installiert ist: Das Startprotokoll listet die erkannten Backends auf.
Das Loot-Menü öffnet sich nicht. Das Menü benötigt die GUI-Erweiterung. Prüfe außerdem lootMode und dass du nicht schleichst: Bei aktivem sneakSwapsLootMode wird beim Schleichen der andere Modus verwendet.
Nach einem Tod gibt es keine Leiche. Prüfe der Reihe nach: Die Welt ist durch allowedWorlds erlaubt und nicht in excludedWorlds (Vergleich mit Ordnernamen und Dimensionsschlüssel); die Spielregel keepInventory ist in dieser Welt aus; kein anderes Plugin hat den Tod abgebrochen; der Spieler hatte mindestens ein Item oder etwas Erfahrung.
Ein Klick aus der Ferne bewirkt nichts. Ein Klick zählt nur innerhalb von interactionReach Blöcken um die Leiche (standardmäßig 6, 0 = keine Grenze). Wiederholte Klicks innerhalb von interactionCooldownMillis werden als eine Geste ignoriert.
Die Leiche ist nach einem Neustart weg. Suche in der Konsole nach Restored n corpse(s) from storage. Ist die Leiche abgelaufen, während der Server aus war, wird sie gelöscht. Schlägt die MySQL-Initialisierung fehl, greift Corpse mit einer Warnung im Log auf die lokale Datei zurück.
Platzhalter im Namen funktionieren nicht. Verwende {player} für den Namen des Besitzers in displayName. In respawnMessage verwendest du <x>, <y>, <z> und <world>; in guiTitle <player>. Platzhalter in den übrigen Texten werden vor MiniMessage eingesetzt, und der Name eines Spielers wird maskiert, sodass er nie zu einem klickbaren Tag wird.
Verwandte Erweiterungen
- GUI — stellt das Loot-Menü bereit.
- BetterModel und MythicMobs NPC — Modell-Backends für die Leiche.
- MySQL — Datenbankspeicherung für Leichen.