Machine
Überblick
Machine macht aus dem Maschinenentwurf reine Konfiguration. Ein Machine Definition-Entry beschreibt eine Art von Maschine: wie viele Eingabe-, Ausgabe-, Brennstoff- und Upgrade-Slots sie hat, was sie verarbeitet, was sie an Brennstoff und Energie kostet, wie sie aussieht, was ihr Hologramm sagt und wie viele Kopien ein Spieler oder eine Insel platzieren darf. Die Erweiterung liest die Definition und betreibt jede platzierte Kopie. Ein Ofen, eine Mühle, ein Cobblestone-Generator oder ein Mob-Grinder ist ein Entry, kein Code.
Maschinen gehören zu BTC Sky-Inseln. Eine Maschine kann nur auf der eigenen Insel des Spielers platziert werden, ist durch Limits pro Spieler und pro Insel begrenzt, und ihre Stufe wird durch den Forschungsbaum der Insel freigeschaltet. Energie und Flüssigkeiten werden über eine Dimension der Insel geteilt: Generatoren und Zellen bilden einen Pool, und jede verbundene Maschine dieser Dimension bezieht daraus.
Dies ist eine private Erweiterung des BTC-Builds von TypeWriter (BTC Core, Paper oder Folia), als Referenz dokumentiert. Die Laufzeit ist Folia-sicher: Slots werden im Speicher zwischengespeichert und asynchron gespeichert.
Funktionen
- Ein Entry pro Maschine — Slots, Rezepte, Brennstoff, Energie, Optik, Hologramm, Limits und Automatisierung liegen in einer einzigen Machine Definition.
- 27 Verarbeitungstypen — Rezeptmaschinen (Schmelzen, Mahlen, Sägen, Mischen, Brauen …), Lagerung, Logistik, Flächenmaschinen, Energiemaschinen, Spawner, Grinder und mehr.
- Mehrfacheingabe und zufällige Rezepte — zusätzliche Eingaben und Ausgaben, zufallsbasierte Ausgaben, Flüssigkeitsein- und -ausgaben, Katalog-Items und Vanilla-Tränke.
- Gemeinsames Energienetz und Flüssigkeitstanks — Zellen, Generatoren und Tanks bilden pro Inseldimension einen Pool; eine Maschine kann vom Netz getrennt werden.
- Stufen und Upgrade-Module — dauerhafte Stufen, durch BTC-Sky-Forschung freigeschaltet, plus entfernbare Module (Geschwindigkeit, Ertrag, Glück, Reichweite, Filter, Kapazität, Flüssigbrennstoff), die sich mit ihnen addieren.
- Inselschutz und Limits — Platzierung auf der eigenen Insel, Build-Flag, Obergrenzen pro Spieler, pro Insel und pro Dimension.
- Redstone und Trichter — Redstone-Modus, Auswurf, Komparator-Ausgabe und Abschlussimpulse, Trichter-Transfers.
- Hologramme — ein Statustext mit Fortschrittsbalken über jeder Maschine, vollständig in MiniMessage formatiert.
- Dashboard-Menü — ein Menü, das jede Maschine der Dimension mit ihrem Zustand, ihrer Energie und ihrem Verbindungsstatus auflistet.
- Persistenz — platzierte Maschinen, Inventare, Energie und Fortschritt werden in einem Machine Data Artifact gespeichert.
Installation
- Installiere TypeWriter mit dem BTC-Build (BTC Core auf Paper oder Folia).
- Installiere die Erweiterungen, von denen Machine abhängt: Quest, RPGBundle (RPG Core), BTC Sky, BTCMobs und GuiAndDialogs (die gemeinsame GUI-Schicht).
- Optional: Installiere CraftEngine, wenn eine Definition die Optik
FURNITUREoderCUSTOM_BLOCKverwendet, und MiniPlaceholders, um die Platzhalter zu nutzen. - Lege die Machine-JAR in
plugins/Typewriter/extensions/ab und starte den Server neu. - Redstone-Komparator-Ausgabe und Abschlussimpulse funktionieren nur, wenn BTC Core Redstone-Emission bereitstellt.
Erste Schritte
So erstellst du einen Ofen, der Eisenerz zu Barren schmilzt:
- Öffne im TypeWriter-Web-Panel eine Static-Seite und füge ein Machine Data Artifact hinzu. Es speichert jede platzierte Maschine. Ändere seine
artifactIddanach nicht mehr, sonst gehen die gespeicherten Maschinen verloren. - Füge auf derselben Seite eine Machine Definition hinzu. Gib ihr einen
nameund lassprocessingTypeaufSMELTING. - Setze
storageRefauf das Artifact aus Schritt 1. - Füge in
recipesein Rezept hinzu:inputMaterialIRON_ORE,outputMaterialIRON_INGOT,outputAmount1,cookTime200(Ticks, also 10 Sekunden). LassfuelCostbei1oder mehr, wenn die Maschine Brennstoff verbrennen muss. - Füge in
fuelTypesCOALmit einerburnTimeund einemfuelValuehinzu. - Setze
spawnItemauf das Item, das Spieler platzieren, um die Maschine zu erstellen. Eine Definition benötigt einspawnItemoder einenvanillaBlock, andernfalls wird sie bei der Veröffentlichung abgelehnt. - Optional: Setze
perIslandLimit, um die Anzahl der Kopien pro Insel zu begrenzen. - Veröffentliche. Platziere das Item auf deiner eigenen Insel: Die Maschine erscheint mit ihrem Hologramm, und ein Rechtsklick öffnet ihr Menü.
vanillaBlock (zum Beispiel BREWING_STAND) lässt die Definition diesen Vanilla-Block übernehmen: Beim Platzieren entsteht stattdessen die Maschine. Vanilla-Umwandlungen unterliegen nicht der Warnung zum Platzierungslimit, denn eine Obergrenze würde auch den Vanilla-Block begrenzen.
So funktioniert es
Eine Maschine besteht aus einer Definition (dem Entry) plus Instanzen (den in der Welt platzierten Kopien). Die Definition ändert sich zur Laufzeit nie; jede Instanz behält ihr eigenes Inventar, ihre Energieladung und ihren Fortschritt.
Das Definitionsmodell
Jedes Feld von Machine Definition gehört zu einer dieser Gruppen:
| Gruppe | Felder | Was es steuert |
|---|---|---|
| Typ | processingType, behaviors | Was die Maschine tut. behaviors ist optional und wird bei leerem Wert aus dem Typ abgeleitet. |
| Slots | inputSlots, outputSlots, hasFuelSlot, upgradeSlots, essenceSlots, filterSlots, shearsSlots, maxPerSlot | Das Inventarlayout. Ein Maschinenlayout ist auf 54 Slots begrenzt. |
| Rezepte und Brennstoff | recipes, fuelTypes | Was hineingeht und was herauskommt, wie lange es dauert und was es kostet. |
| Energie und Flüssigkeiten | energyCapacity, energyGenerationPerTick, liquidTankCapacity, liquidFuelName | Beitrag zum Pool und Umgang mit Flüssigkeiten. |
| Progression | tiers, allowedUpgrades, upgradeSpecs | Dauerhafte Stufen und entfernbare Module. |
| Aussehen | spawnItem, visualType, furnitureId, customBlockId, alignWithPlayerYaw, hologram* | Item, Modell und Hologramm. |
| Platzierung | machineLimit, perIslandLimit, islandLimitUpgradeKey, dimensionScope, vanillaBlock | Wer sie platzieren darf, wo und wie viele. |
| Automatisierung | hopperInterval, hopperTransferAmount, redstoneMode, ejectWhenPowered, redstoneComparatorOutput, redstonePulseOnComplete, redstonePulseTicks | Trichter und Redstone. |
| Persistenz | storageRef, guiStorageRef | Wo Instanzen und STORAGE-Inhalte gespeichert werden. |
Verarbeitungstypen
| Familie | Typen |
|---|---|
Rezeptmaschinen, gesteuert durch recipes | SMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC |
| Produktion | GENERATOR (keine Eingabe: erzeugt die Rezeptausgaben über die Zeit, optionale Energiekosten) |
| Lagerung und Logistik | STORAGE, SORTING (jeder Filter-Slot beansprucht eine Seite), CONVEYOR (gerichtetes Förderband) |
| Flächenmaschinen | VACUUM (vacuumRange), SHEARING (shearRange, shearInterval, shearsSlots) |
| Energie | ENERGY_CELL, ENERGY_GENERATOR, CHARGING (chargeables, chargeRatePerSecond) |
| Entities | ASSEMBLER (assemblerMode SPAWN oder COLLECT, assemblerEntityType, assemblerMobId, assemblerIngredients, assemblerEnergyCost, assemblerInterval, assemblerRange, spawnerUpgrades), MOB_GRINDING (grinder*-Felder), EXPERIENCE_TANK (experienceCapacity) |
| Spezial | CONTROL_PANEL (führt panelOpenCommand / panelAltCommand aus, kann nicht aufgehoben werden), TRANSMUTATION (überträgt die höchste Verzauberung eines Items auf ein Buch gegen Erfahrungsfläschchen) |
SMELTING und AUTO_CRAFTING fallen auf Vanilla-Rezepte zurück, wenn kein Rezept deklariert ist. Alle anderen Rezeptmaschinen ohne Rezepte nehmen Items an und bleiben für immer untätig; die Erweiterung protokolliert bei der Veröffentlichung eine Warnung.
Energie und Flüssigkeiten
Energie wird in ENERGY_CELL-Maschinen gespeichert. Der Pool der Inseldimension ist die Summe ihrer verbundenen Zellen. ENERGY_GENERATOR-Maschinen speisen ihn, und Verbraucher beziehen daraus. Eine Maschine tritt dem Netz ihrer Dimension bei, sobald sie platziert ist; der Button Machine Link (oder das Dashboard) nimmt sie heraus und wieder hinein. Eine Zelle in der Overworld speist nie eine Maschine im Nether.
Flüssigkeitstanks funktionieren genauso: Eine verbundene Maschine erreicht jeden Tank ihrer Dimension, eine nicht verbundene sieht nur ihre eigenen. Ein Rezept verbraucht oder erzeugt Flüssigkeiten mit liquidInputName/liquidInputAmount und liquidOutputName/liquidOutputAmount.
Stufen und Upgrade-Module
- Eine Stufe (
tiers) ist dauerhaft. Jede Stufe nennt den BTC-Sky-Forschungsknoten (researchNode), der sie freischaltet, und legt Multiplikatoren für Geschwindigkeit, Ertrag und Energie, eine Glückschance und zusätzliche Slots fest. Liste die Stufen in aufsteigender Reihenfolge auf: Die höchste freigeschaltete gilt für jede Kopie der Maschine auf der Insel. Eine Stufe mit leeremresearchNodewird abgelehnt. - Ein Upgrade-Modul (
upgradeSpecs) ist ein Item, das in einen Upgrade-Slot gelegt wird.itemIdist die BTC-Item-ID (empfohlen),materialist ein Fallback. Seintype(SPEED,YIELD,ENERGY_EFFICIENCY,FORTUNE,RANGE,FILTER,CAPACITY,LIQUID_FUEL) zählt nur, wenn er inallowedUpgradesaufgeführt ist. - Stufe und Module werden miteinander multipliziert.
Menüs
Machine Menu ist eine GUI, gebaut aus Layouts der gemeinsamen GUI-Erweiterung (layoutPool, mainLayoutId, inventoryRows). Items des Layouts, deren buttonType ein Machine-Button ist, werden mit Live-Daten gefüllt:
| Button-Typ | Wirkung |
|---|---|
MACHINE_OPEN, MACHINE_SMELT, MACHINE_COLLECT, MACHINE_STATUS, MACHINE_FUEL | Standard-Maschinenaktionen und Statusanzeige. |
MACHINE_LINK | Verbindet die Maschine mit dem Netz ihrer Dimension oder trennt sie. |
MACHINE_PICKUP | Entfernt die geöffnete Maschine und gibt sie als Item zurück. |
NAV_BACK, NAV_CLOSE | Zurückgehen oder schließen. |
MACHINE_GRID_INFO | Zusammenfassung der Dimension: Maschinenanzahl, gespeicherte Energie, Kapazität, erzeugt, verbraucht und Bilanz. |
MACHINE_ENTRY | Eine Maschine der Dimension pro markiertem Slot. Linksklick schaltet ihr Hologramm um, Rechtsklick ihre Netzverbindung. |
MACHINE_LIST_ARROW | Scroll-Pfeil der Maschinenliste, mit dem Seitenzähler. |
Zwei weitere Entries vervollständigen den Satz. Open Machine GUI verknüpft eine Definition mit einem Menütitel und einer Größe, aber seine Action bewirkt im aktuellen Code beim Auslösen nichts: Maschinen öffnen ihr Menü per Rechtsklick. Machine Position Variable liefert die Position der eigenen Maschine des Betrachters einer bestimmten Definition in seiner Dimension, sodass ein einziger NPC-Entry der Maschine jeder Insel folgen kann.
Die vom Dashboard angezeigten Beschriftungen (Zustände, Verbindung, Hologramm) stammen aus Machine Dashboard Wording. Das Scrollen und der Öffnen-Befehl stammen aus Machine Dashboard Command.
Befehle
| Befehl | Beschreibung |
|---|---|
/typewriter machine give | Listet jede registrierte Maschine auf. |
/typewriter machine give <machine> | Gibt dir das Item einer Maschine, über ID oder einen Teil ihres Namens (Akzente und Groß-/Kleinschreibung werden ignoriert). |
/typewriter machine liquide | Zeigt die Flüssigkeiten der Maschine, die du ansiehst (innerhalb von 6 Blöcken). |
/typewriter machine liquide <liquid> <millibuckets> | Gießt eine Flüssigkeit in die anvisierte Maschine. Ein Testwerkzeug: Keine Spielergeste füllt einen Tank. |
Der Baum /machine ist unter dem TypeWriter-Befehl registriert und wird daher als /typewriter machine … eingegeben (Alias /tw machine …). Er erfordert insgesamt machine.admin. Entries können weitere Befehle als Befehle der obersten Ebene registrieren:
| Befehl | Beschreibung |
|---|---|
/<commandName> scroll <delta>, reset | Scrollt die Dashboard-Liste oder spult sie zurück. Standardname machines. |
/<commandName> dashboard | Öffnet das in dashboardMenuId genannte Menü. |
/<commandName> link <instanceId>, hologram <instanceId> | Schaltet die Netzverbindung oder das Hologramm einer Maschine um. Wird von den Dashboard-Slots verwendet. |
/<commandName> von Machine Test Command | Löst seine triggers aus, wenn die criteria passen. Standardname machine-test. |
/<commandName>, clear, bench von Machine Test Platform Command | Baut dort, wo du stehst, eine Vorführung von Maschinen, entfernt sie oder richtet loadbench_*-Welten ein. Standardname machine-test-platform. |
Berechtigungen
| Berechtigung | Erlaubt |
|---|---|
machine.admin | Die /typewriter machine-Befehle. |
machine.protection.bypass | Maschinen überall platzieren, abbauen und bedienen, ohne Inselbesitz, Build-Flag und Limits zu beachten. |
Platzhalter
MiniPlaceholders-Tags der Expansion machine, über TypeWriter bereitgestellt. <instance> ist die ID einer platzierten Maschine, <slot> der logische Slot-Index (Standard 0).
| Platzhalter | Liefert |
|---|---|
<machine_input:instance:slot> | true, wenn der Eingabe-Slot ein Item enthält. |
<machine_input_name:instance:slot> | Materialname des Eingabe-Items. |
<machine_input_amount:instance:slot> | Menge im Eingabe-Slot. |
<machine_output:instance:slot> | true, wenn der Ausgabe-Slot ein Item enthält. |
<machine_output_name:instance:slot> | Materialname des Ausgabe-Items. |
<machine_output_amount:instance:slot> | Menge im Ausgabe-Slot. |
<machine_tier:instance> | Name der aktiven Stufe. |
<machine_dimension> | Lesbarer Name der Dimension, in der der Spieler steht. |
<machine_grid_count>, <machine_grid_active>, <machine_grid_stalled> | Maschinen in der Dimension, aktive und stehengebliebene. |
<machine_energy_stored>, <machine_energy_capacity> | Gespeicherte Energie und Gesamtkapazität der Dimension. |
<machine_energy_produced>, <machine_energy_consumed>, <machine_energy_balance> | Pro Sekunde erzeugte, verbrauchte und Netto-Energie. |
Die Spielerplatzhalter liefern ohne Spieler (Konsole) einen leeren Wert.
Hologramm-Nachrichten akzeptieren %machine%, %tier%, %energy%, %bar%, %percent% und %time_left%.
Entries
10 Einträge, aus dem Quellcode der Erweiterung generiert.
Aktionen2
- Machine MenuMachine Menu
- Open Machine GUIOpen Machine GUI
Befehle3
- Machine Dashboard CommandMachine dashboard commands
- Machine Test CommandRegister a Machine test command
- Machine Test Platform CommandProvision the Machine BTC test platform
Variablen1
- Machine Position VariablePosition of the viewer's machine of a given definition
Artefakte1
- Machine Data ArtifactStores machine runtime state (placed instances, energy, progress) as JSON data
Manifeste2
- Machine Dashboard ConfigMachine Dashboard Wording
- Machine Protection ConfigMachines : messages de protection
Weitere Einträge1
- Machine DefinitionMachine Definition
Fehlerbehebung
Die Definition wird bei der Veröffentlichung abgelehnt. Prüfe das Server-Log: no way to obtain this machine bedeutet, dass weder spawnItem noch vanillaBlock gesetzt ist; tier[n].researchNode is blank bedeutet, dass eine Stufe keinen Forschungsknoten hat; the machine layout needs N slots, maximum is 54 bedeutet zu viele Slots.
Eine Maschine nimmt Items an und arbeitet nie. Eine Rezeptmaschine (zum Beispiel MIXING, GRINDING, BREWING) mit leerer recipes-Liste hat keinen Vanilla-Fallback. Nur SMELTING und AUTO_CRAFTING verwenden Vanilla-Rezepte.
Die Platzierung wird abgelehnt. Die Nachrichten stammen aus Machine Protection Config: Die Maschine muss auf deiner eigenen BTC-Sky-Insel stehen, du benötigst das Build-Flag, und die Limits für Spieler, Insel und Dimension sowie dimensionScope gelten. Ein CONTROL_PANEL benötigt einen Stabilisierungskristall in der Dimension. Staff mit machine.protection.bypass überspringt alle Prüfungen.
Die Maschine meldet, sie sei nicht verbunden oder habe keine Energie. Sie benötigt ENERGY_CELL- und ENERGY_GENERATOR-Maschinen in derselben Dimension und muss verbunden sein (verwende den Link-Button). Der Pool überschreitet nie Dimensionsgrenzen.
Ein Upgrade-Modul ändert nichts. Sein type muss in allowedUpgrades stehen, und CAPACITY funktioniert nur bei STORAGE, EXPERIENCE_TANK und ENERGY_CELL. LIQUID_FUEL benötigt einen liquidFuelName.
Eine Stufe wird nie angewendet. Der researchNode muss zu einer Forschungsknoten-ID von BTC Sky passen, und die Insel muss ihn freigeschaltet haben.
Das Menü öffnet sich leer oder gar nicht. Prüfe mainLayoutId gegen die IDs im layoutPool; das Log nennt die Pool-IDs, wenn sie nicht passen.
Möbel- oder Custom-Block-Optik schlägt fehl. FURNITURE und CUSTOM_BLOCK benötigen CraftEngine und eine existierende furnitureId oder customBlockId.
Verwandte Erweiterungen
- BTC Sky — Inseln, Besitz, Forschung und Dimensionen, auf die Maschinen angewiesen sind.