Zum Hauptinhalt springen

BTCMobs

In Entwicklung: eigene Mobs und NPCs mit Skills, Spawnern, Droptabellen und Quest-Events.

DemnächstEntitäten & Modelle
BenötigtTypeWriter0.9.0-beta-177 (BTC build)QuestRoadNetworkGUIoptionalModelEngineoptionalBetterModeloptionalMiniPlaceholdersoptionalPacketEventsoptional

In Entwicklung. Einträge und Felder können sich vor der ersten Veröffentlichung noch ändern.

In Entwicklung

BTCMobs ist eine Soon-Erweiterung. Sie ist nicht veröffentlicht, hat noch keinen Download und keine Versionsnummer, und Entries oder Felder können sich vor der Veröffentlichung ändern. Diese Seite dokumentiert den aktuellen Entwicklungs-Build zur Referenz. Es ist nicht das alte Plugin „BTC Mob“: Die Mob-Engine steckt jetzt in der Erweiterung selbst, es gibt kein separates Plugin zu installieren.

Überblick​

BTCMobs

Mit BTCMobs baust du benutzerdefinierte Mobs und interaktive NPCs vollständig im TypeWriter-Web-Panel. Ein Mob-Template beschreibt eine Kreatur: ihre Minecraft-Basis-Entity, Level, Leben, Rüstung, Fähigkeiten, Drops, Fraktion, optionales 3D-Modell und optionale Fortpflanzung. Spawner und natürliche Spawns bestimmen, wo und wann Templates in der Welt erscheinen. Fähigkeiten und Drop-Tabellen legen fest, was der Mob tut und was er hinterlässt.

Alles, was die Mobs tun, wird an TypeWriter zurückgegeben. Events werden ausgelöst, wenn ein Mob spawnt, Schaden nimmt, eine Fähigkeit wirkt oder stirbt. Facts und Variablen melden Leben, Level, Anzahl oder Entfernung. Aktionen lassen Mobs spawnen, despawnen oder Fähigkeiten wirken. So können Quests, Dialoge und Cinematics auf einen Kampf reagieren oder einen starten.

Dieselbe Erweiterung bietet außerdem eine NPC-Seite: Ein Mob-Template kann als clientseitiger NPC dargestellt werden, mit Dialoginteraktionen, Quest-Objectives, Kamera-Cinematics (einschließlich an einem Modellknochen befestigter Kameras), Knochensichtbarkeit pro Spieler und Steuerung von ModelEngine- oder BetterModel-Animationen. Die Erweiterung zielt auf den BTC-Build von TypeWriter (Paper/Folia).

Funktionen​

  • Mob-Templates — ein btc_mob_template-Entry pro Kreatur: Entity-Typ, Level, Leben, Angriffsschaden, Rüstung, Fähigkeiten, Drops, Fraktion, Bedrohungstabelle, Modell und Animationen.
  • Spawner — regionsbasierte Spawner mit Spawn-Obergrenze, Spawn-Takt und Aufwärmphase, die von Facts gesteuert werden können, sodass jeder Spieler ein anderes Tempo sehen kann.
  • Ersatz natürlicher Spawns — ersetze Vanilla-Kreatur-Spawns Regel für Regel durch BTC-Mobs, nach Welt, Biom und Wahrscheinlichkeit.
  • Fähigkeiten — eine Fähigkeit ist eine geordnete Liste von TypeWriter-Aktionen oder eine Skriptzeile. Templates hängen Fähigkeiten an Trigger wie Spawn, Angriff, Schaden, Tod oder einen sich wiederholenden Timer.
  • Drop-Tabellen und Items — Vanilla-Materialien, eigene Items, XP und wiederverwendbare Tabellen, mit Chance und Menge, die mit dem Mob-Level skalieren.
  • Quest-Anbindung — Events, Facts, Variablen und ein Fähigkeits-Objective, damit Geschichten auf Mobs und Kämpfe reagieren können.
  • NPCs — Template-basierte clientseitige NPCs mit Dialog, Interaktion, Blickverfolgung und Kameraverhalten.
  • Cinematics — einen Mob spawnen, eine Fähigkeit wirken, einen NPC fokussieren oder während einer TypeWriter-Cinematic auf einem Modellknochen reiten.
  • Persistenz — Fähigkeits-Cooldowns, Zähler, Auren, Bedrohungstabellen und Bossbars überstehen einen Neustart, wenn ein Speicher-Artifact konfiguriert ist.
  • MythicMobs-Import — ein Operator-Befehl wandelt ein MythicMobs-Pack in BTCMobs-Pages um.

Installation​

BTCMobs ist in Entwicklung und hat keinen öffentlichen Download. Die folgenden Hinweise beschreiben, wie der Entwicklungs-Build verdrahtet ist.

  1. Betreibe den BTC-Build von TypeWriter (BTC Core, Paper oder Folia) mit den Erweiterungen Quest und RoadNetwork, die der Build als Abhängigkeiten deklariert.
  2. Lege die BTCMobs-JAR in plugins/Typewriter/extensions/ ab und starte den Server neu. Sie bringt ihre eigene Mob-Engine mit, daher wird kein separates BTCMobs-Plugin benötigt.
  3. Installiere die optionalen Integrationen, die du möchtest. Die Erweiterung erkennt sie zur Laufzeit: ModelEngine oder BetterModel für 3D-Modelle, MiniPlaceholders, um Platzhalter bereitzustellen, PacketEvents, Vault, DecentHolograms und WorldGuard.
  4. Um das Mob-Katalogmenü zu öffnen, muss die BTC-GUI-Erweiterung installiert sein.
  5. Erstelle im Web-Panel ein Artifact btcmobs_storage und verweise von einem Entry btcmobs_config (siehe unten) darauf, damit der Spielzustand gespeichert wird.

Erste Schritte​

Diese Anleitung erstellt einen Zombie-Boss, lässt ihn in einer Arena spawnen und reagiert auf seinen Tod.

  1. Öffne im TypeWriter-Web-Panel eine Manifest-Page. Füge ein BTCMobs Storage-Artifact hinzu, dann einen BTCMobs Global Configuration-Entry, und setze storage auf dieses Artifact.
  2. Öffne eine statische Page und füge ein Native BTC mob template hinzu. Gib ihm eine id, die du wiederverwendest (zum Beispiel crypt_warden). Setze entityType auf ZOMBIE, display auf den Namen, den Spieler sehen, dann level, maxHealth, attackDamage und armor.
  3. Füge eine Native BTC mob drop table hinzu und liste ihre drops auf, eine Deklaration pro Zeile, zum Beispiel DIAMOND 1 0.25 (Material, Menge, Chance) oder exp 20to40. Verweise in der drops-Liste des Templates über ihre ID auf die Tabelle.
  4. Füge einen Native BTC mob skill hinzu und fülle actions mit den TypeWriter-Aktionen, die er der Reihe nach ausführt. Füge im Template die Fähigkeits-ID zu skills hinzu, zum Beispiel warden_slam~onTimer:100, um sie alle 100 Ticks zu wirken.
  5. Füge einen BTCMobs Spawner hinzu. Setze mobType auf die ID des Templates (nicht auf seinen Anzeigenamen), world, die beiden Ecken corner1 und corner2 einer Region, defaultMaxMobs und defaultCooldown (in Ticks).
  6. Füge ein On BTCMob die-Event mit mobName auf die Template-ID gesetzt hinzu und verknüpfe seine triggers mit einem Dialog, einer Belohnung oder einem Fact-Modifier.
  7. Veröffentliche die Pages, geh in den defaultActivationRange (standardmäßig 24 Blöcke) um die Mitte der Region, und der Mob erscheint. Verwende /tw btcmobs spawners force <id>, um ohne Warten zu testen.
Einen Mob schnell testen

/tw btcmobs spawn <template> <level> <amount> spawnt ein Template neben dir mit dem von dir gewählten Level. Der Befehl schlägt die geladenen Template-IDs vor.

Funktionsweise​

Ein Template ist nur eine Beschreibung. Ein lebender Mob entsteht, wenn ein Spawner, ein natürlicher Spawn, eine Spawn a mob-Aktion oder der Befehl spawn einen anfordert. Von da an führt der Mob die an seine Trigger gehängten Fähigkeiten aus und würfelt seine Drop-Deklarationen, wenn er stirbt. Jeder Schritt löst außerdem ein TypeWriter-Event aus, wodurch Quests und Dialoge dem Kampf folgen.

Fähigkeiten und Trigger​

Einträge in der skills-Liste eines Templates werden als skillId oder skillId~trigger geschrieben. Die ID ist die ID (oder der Name) eines btc_mob_skill-Entries. Der Trigger gibt an, wann der Mob sie ausführt: onSpawn, onAttack, onDamaged, onDeath, onKill, onDespawn, onInteract, onTeleport, onExplode, onRanged, onProjectile oder onTimer:<ticks> für eine sich wiederholende Fähigkeit (onTimer:5s wird ebenfalls akzeptiert, in Sekunden). Eine Fähigkeit ohne Trigger läuft bei jedem Trigger, den der Mob auslöst, füge also immer einen hinzu. conditions filtern jede Fähigkeitszeile, und targeters wählen die Ziele, die sie gemeinsam haben.

Drop-Deklarationen​

Jede Zeile einer Drop-Tabelle oder einer drops-Liste eines Templates ist eine der folgenden:

  • ein Vanilla-Material mit optionaler Menge und Chance, zum Beispiel BONE 2 0.5;
  • die ID oder der Name eines btc_mob_item-Entries, mit optionaler Menge und Chance;
  • exp 10 oder exp 10to20 für Erfahrung;
  • btc:<item_id> [amount or range] [chance] [+n/m] für ein Item aus dem BTC-Katalog. Ohne das Token +n/m wächst die Menge mit dem Mob-Level, von x1 auf Level 1 bis x6 auf Level 100;
  • die ID einer anderen Drop-Tabelle, die an Ort und Stelle expandiert wird.

Unbekannte Deklarationen werden als Warnungen protokolliert und übersprungen.

NPCs​

Ein NPC ist ein Template, das Spielern als clientseitige Entity angezeigt wird. Eine BtcMob NPC definition nennt das Template in mobType und legt den Anzeigenamen, seinen Versatz und fest, ob er tickt. Eine BtcMob NPC instance platziert ihn mit spawnLocation, einer optionalen activity, einer group und zusätzlichen data. NPC-Data-Entries ändern das Aussehen des Modells: Knochensichtbarkeit pro Spieler, Attachments, die einen Knochen gegen einen aus einem anderen Modell austauschen, ModelEngine-Stances für Tag und Nacht und Gehgeschwindigkeit.

Befehle​

Alle Befehle liegen unter /tw btcmobs. Die kurzen Aliase /tw btc und /tw btcmobsadmin führen denselben Baum aus. Jeder Knoten hat eine Berechtigung der Form btcmobs.command.<node> (siehe unten).

BefehlBeschreibung
/tw btcmobs mobs [list]Listet die geladenen Mob-Templates auf.
/tw btcmobs mobs listactiveListet die aktuell lebenden Mobs auf.
/tw btcmobs spawn <template> [level] [amount]Spawnt ein Template neben dir (Menge 1 bis 64). summon und mobs spawn sind gleichwertig.
/tw btcmobs mobs kill <template> [radius]Tötet Mobs eines Templates in deiner Umgebung (Standardradius 48).
/tw btcmobs mobs killall [radius]Tötet jeden BTC-Mob in deiner Umgebung (Standardradius 48).
/tw btcmobs mobs infoZeigt Informationen zu dem Mob, den du ansiehst.
/tw btcmobs skills [list]Listet die geladenen Fähigkeiten auf.
/tw btcmobs cast <skill>Wirkt eine Fähigkeit von dir aus (skills cast, test cast und profile cast sind gleichwertig).
/tw btcmobs spawners [list]Listet die Spawner-Entries auf.
/tw btcmobs spawners info <id>Zeigt einen Spawner.
/tw btcmobs spawners force <id> [amount]Erzwingt einen Spawn und ignoriert Bedingungen und Obergrenzen.
/tw btcmobs spawners reloadLädt die nativen Entries neu.
/tw btcmobs reloadLädt die nativen Entries neu.
/tw btcmobs menuÖffnet das Mob-Katalogmenü (die ersten 45 Templates, alphabetisch).
/tw btcmobs items list und get <item> [amount]Ein Item des Katalogs auflisten oder nehmen.
/tw btcmobs items give <player> <item> [amount]Gibt einem Spieler ein Katalog-Item.
/tw btcmobs signal <uuid> <signal>Sendet ein Signal an einen aktiven Mob.
/tw btcmobs test mechanic, condition, targeter <line>Führt eine Skriptzeile als Test aus.
/tw btcmobs test on <uuid or nearest> <line>Führt eine Skriptzeile an einem bestimmten aktiven Mob aus.
/tw btcmobs import mythic [path]Wandelt ein MythicMobs-Pack in BTCMobs-Pages um (Standardordner import/BtcMob im TypeWriter-Datenordner). migrate mythic ist gleichwertig.
/tw btcmobs audit, coverage, registrydump, variables, placeholdersDiagnosen zu geladenen Templates, Fähigkeiten, Spawnern und Registern.
/tw btcmobs debug, version, modeldiagLaufzeitdiagnosen, Version und BetterModel-Zustand von Mobs in der Nähe.

Berechtigungen​

BerechtigungGewährt
btcmobs.command.mainDie Wurzel /tw btcmobs und ihre Hilfe. Standardmäßig an alle vergeben.
btcmobs.command.versionversion und v. Standardmäßig an alle vergeben.
btcmobs.command.mobs, .mobs.spawn, .mobs.kill, .mobs.killall, .mobs.info, .mobs.listactive, .mobs.statsDie Befehle mobs und spawn.
btcmobs.command.skills, .skills.castFähigkeiten auflisten und wirken.
btcmobs.command.spawners, .spawners.list, .spawners.info, .spawners.force, .spawners.reloadDie Befehle spawners.
btcmobs.command.items, .items.list, .items.get, .items.giveDie Befehle items.
btcmobs.command.menu, .menu.openDas Katalogmenü.
btcmobs.command.import, .migrate, .migrate.mythic, btcmobs.importDer MythicMobs-Import.
btcmobs.command.test, .test.mechanic, .test.condition, .test.targeter, .test.castDie Befehle test.
btcmobs.command.audit, .variables, .debug, .modeldiag, .signal, .reload, .profileDie passenden Diagnosebefehle.
btcmobs.command.admin, btcmobs.adminAdministrative Wurzel (/tw btcmobsadmin).
btcmobs.command.*, btcmobs.*Alle oben genannten.

Alle Berechtigungen außer btcmobs.command.main und btcmobs.command.version sind standardmäßig nur für Operatoren. Der Befehl modeldiag prüft btcmobs.command.modeldiag, das die Erweiterung registriert (standardmäßig für Operatoren).

Platzhalter​

Platzhalter werden nur an MiniPlaceholders veröffentlicht; PlaceholderAPI wird dafür nicht verwendet. Die Syntax lautet <name:argument:argument>.

PlatzhalterGibt zurück
<btcmobs_caster> und <btcmobs_caster:field>Die Template-ID oder ein Feld des an den Spieler gebundenen Mobs: name, type, level, hp, maxhp, percent, uuid.
<btcmobs_looking> und <btcmobs_looking:field>Dieselben Felder für den BTC-Mob, den der Spieler ansieht (bis zur Blickreichweite), leer, wenn es keinen gibt.
<btcmobs_var:name>Den Wert einer globalen BTCMobs-Variable.
<btcmobsdamage_top:BOSS:POSITION:field>Den Spieler auf einem Rang einer Boss-Schadensrangliste. Felder: name, damage, raw_damage, percent, uuid.
<btcmobsdamage_self:BOSS:field>Die eigene Platzierung des betrachtenden Spielers. Felder: damage, raw_damage, percent, position.
<btcmobsdamage_participants:BOSS>, _total, _max_health, _last_updateSummen einer Boss-Schadensrangliste.

Entries​

57 Einträge, aus dem Quellcode der Erweiterung generiert.

Aktionen7
Ereignisse9
Ziele2
Fakten9
Cinematics5
Entitäten2
Entitätsdaten4
Interaktionsgrenzen3
Variablen8
Artefakte1
Manifeste1
Definitionen6

Fehlerbehebung​

Der Spawner bewirkt nichts, und das Log meldet „references unknown mob template“. mobType muss die ID eines btc_mob_template sein, nicht der im Editor angezeigte Name. Kopiere die ID aus dem Template-Entry. Dieselbe Regel gilt für btc_natural_spawn, die Spawn- und Despawn-Aktionen und NPC-Definitionen.

Der Spawner erreicht nie seine Obergrenze oder bleibt bei 1 stehen. Eine Region, deren zwei Ecken derselbe Punkt sind, begrenzt defaultMaxMobs auf 1. Die Obergrenze zählt Mobs, die diesem Spawner gehören, egal wo sie sich befinden. Der Spawner arbeitet nur, solange sich ein Spieler im defaultActivationRange um die Mitte einer Region befindet.

Ein Spawner tut für manche Spieler nichts. Für jeden Spieler in der Nähe der Region prüft der Spawner die Welt, dann conditionLines, dann criteria; alle müssen bestanden werden, bevor Region, Cooldown und Spawn betrachtet werden. Ein Spieler, der criteria nicht erfüllt, wird übersprungen (eine Diagnosezeile „criteria did not match“ wird einmal pro Spieler protokolliert). criteria entfernt nie einen Mob, der bereits erschienen ist. Die ...Fact-Felder (maxMobsFact, mobsPerSpawnFact und die anderen) überschreiben weiterhin die numerischen Standardwerte.

Der Ersatz natürlicher Spawns wird nie ausgelöst. Der Entry ersetzt nur Spawns, die der Server ohnehin erzeugt (natürlich, Chunk-Generierung oder Standard). Stehen die spawn-limits der Welt in paper-world-defaults.yml auf 0, spawnen Vanilla-Kreaturen nie, und nichts wird ersetzt. Die erste passende Regel gewinnt, und maxNearby auf 0 bedeutet keine Obergrenze, nicht null Mobs.

Ein Mob spielt Angriffs- oder Todesanimationen in Endlosschleife ab oder läuft nicht. modelAnimations spielt beim Anbringen eines Modells nur Idle-Animationen in einer Schleife ab; dort eingetragene Angriffs- und Todesnamen werden ignoriert. Einmalige Animationen werden im modelLifecycle des Templates festgelegt (Spawn, Angriff, Treffer, Tod) und zum passenden Zeitpunkt abgespielt; eine Todesanimation läuft bis zum Ende, bevor das Modell verschwindet. Ein im Modell fehlender Name wird einmal pro Template protokolliert, und dieser Zeitpunkt bleibt stumm. Laufanimationen werden von Mobs noch nicht gesteuert, nur auf der NPC-Seite.

Eine Fähigkeit oder ein Drop fehlt stillschweigend. Prüfe das Server-Log: Unbekannte Drop-Deklarationen, unbekannte Items und ungültige Chancen werden als Warnungen protokolliert und übersprungen. Ein skills-Eintrag, dessen ID zu keinem btc_mob_skill-Entry passt, wird protokolliert, wenn der Mob wirkt.

On BTCMob despawn wird nicht ausgelöst. Das Event wird ausgelöst, wenn ein verfolgter Mob die Welt verlässt, ohne zu sterben (natürliches Despawnen, Entfernung durch ein Plugin, Herausfallen aus der Welt) und sich ein Spieler innerhalb von radius befindet. Es wird nicht ausgelöst, wenn der Mob stirbt (nutze On BTCMob die), wenn nur sein Chunk entladen wird (der Mob wird beim Neuladen wieder übernommen) oder wenn du ihn mit der Aktion Despawn oder /tw btcmobs mobs kill entfernst. Ein leerer mobName passt auf jeden Mob; dasselbe gilt für die Events spawn, die, damage und interact.

Verwandte Erweiterungen​

  • BetterModel — BetterModel ist eines der beiden Modell-Backends (modelProvider), die BTCMobs für Mob- und NPC-Modelle ansteuern kann.