Zum Hauptinhalt springen

Machine

Datengesteuerte Maschinen für BTC-Sky-Inseln: Rezepte, Energienetz, Stufen, Upgrade-Module und Hologramme.

Privatv0.1.1Wirtschaft & Crafting
BenötigtTypeWriter0.9.0-beta-177 (BTC build)Quest extensionRPG Bundle (RPG Core)BTC SkyBTCMobsGUI extension (GuiAndDialogs)CraftEngineoptionalMiniPlaceholdersoptional

Für das BornToCraft-Netzwerk entwickelt. Diese Erweiterung ist zu Referenzzwecken dokumentiert und wird nicht verteilt.

Ü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​

  1. Installiere TypeWriter mit dem BTC-Build (BTC Core auf Paper oder Folia).
  2. Installiere die Erweiterungen, von denen Machine abhängt: Quest, RPGBundle (RPG Core), BTC Sky, BTCMobs und GuiAndDialogs (die gemeinsame GUI-Schicht).
  3. Optional: Installiere CraftEngine, wenn eine Definition die Optik FURNITURE oder CUSTOM_BLOCK verwendet, und MiniPlaceholders, um die Platzhalter zu nutzen.
  4. Lege die Machine-JAR in plugins/Typewriter/extensions/ ab und starte den Server neu.
  5. 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:

  1. Öffne im TypeWriter-Web-Panel eine Static-Seite und füge ein Machine Data Artifact hinzu. Es speichert jede platzierte Maschine. Ändere seine artifactId danach nicht mehr, sonst gehen die gespeicherten Maschinen verloren.
  2. Füge auf derselben Seite eine Machine Definition hinzu. Gib ihr einen name und lass processingType auf SMELTING.
  3. Setze storageRef auf das Artifact aus Schritt 1.
  4. Füge in recipes ein Rezept hinzu: inputMaterial IRON_ORE, outputMaterial IRON_INGOT, outputAmount 1, cookTime 200 (Ticks, also 10 Sekunden). Lass fuelCost bei 1 oder mehr, wenn die Maschine Brennstoff verbrennen muss.
  5. Füge in fuelTypes COAL mit einer burnTime und einem fuelValue hinzu.
  6. Setze spawnItem auf das Item, das Spieler platzieren, um die Maschine zu erstellen. Eine Definition benötigt ein spawnItem oder einen vanillaBlock, andernfalls wird sie bei der Veröffentlichung abgelehnt.
  7. Optional: Setze perIslandLimit, um die Anzahl der Kopien pro Insel zu begrenzen.
  8. Veröffentliche. Platziere das Item auf deiner eigenen Insel: Die Maschine erscheint mit ihrem Hologramm, und ein Rechtsklick öffnet ihr Menü.
Einen Vanilla-Block umwandeln

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:

GruppeFelderWas es steuert
TypprocessingType, behaviorsWas die Maschine tut. behaviors ist optional und wird bei leerem Wert aus dem Typ abgeleitet.
SlotsinputSlots, outputSlots, hasFuelSlot, upgradeSlots, essenceSlots, filterSlots, shearsSlots, maxPerSlotDas Inventarlayout. Ein Maschinenlayout ist auf 54 Slots begrenzt.
Rezepte und Brennstoffrecipes, fuelTypesWas hineingeht und was herauskommt, wie lange es dauert und was es kostet.
Energie und FlüssigkeitenenergyCapacity, energyGenerationPerTick, liquidTankCapacity, liquidFuelNameBeitrag zum Pool und Umgang mit Flüssigkeiten.
Progressiontiers, allowedUpgrades, upgradeSpecsDauerhafte Stufen und entfernbare Module.
AussehenspawnItem, visualType, furnitureId, customBlockId, alignWithPlayerYaw, hologram*Item, Modell und Hologramm.
PlatzierungmachineLimit, perIslandLimit, islandLimitUpgradeKey, dimensionScope, vanillaBlockWer sie platzieren darf, wo und wie viele.
AutomatisierunghopperInterval, hopperTransferAmount, redstoneMode, ejectWhenPowered, redstoneComparatorOutput, redstonePulseOnComplete, redstonePulseTicksTrichter und Redstone.
PersistenzstorageRef, guiStorageRefWo Instanzen und STORAGE-Inhalte gespeichert werden.

Verarbeitungstypen​

FamilieTypen
Rezeptmaschinen, gesteuert durch recipesSMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC
ProduktionGENERATOR (keine Eingabe: erzeugt die Rezeptausgaben über die Zeit, optionale Energiekosten)
Lagerung und LogistikSTORAGE, SORTING (jeder Filter-Slot beansprucht eine Seite), CONVEYOR (gerichtetes Förderband)
FlächenmaschinenVACUUM (vacuumRange), SHEARING (shearRange, shearInterval, shearsSlots)
EnergieENERGY_CELL, ENERGY_GENERATOR, CHARGING (chargeables, chargeRatePerSecond)
EntitiesASSEMBLER (assemblerMode SPAWN oder COLLECT, assemblerEntityType, assemblerMobId, assemblerIngredients, assemblerEnergyCost, assemblerInterval, assemblerRange, spawnerUpgrades), MOB_GRINDING (grinder*-Felder), EXPERIENCE_TANK (experienceCapacity)
SpezialCONTROL_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 leerem researchNode wird abgelehnt.
  • Ein Upgrade-Modul (upgradeSpecs) ist ein Item, das in einen Upgrade-Slot gelegt wird. itemId ist die BTC-Item-ID (empfohlen), material ist ein Fallback. Sein type (SPEED, YIELD, ENERGY_EFFICIENCY, FORTUNE, RANGE, FILTER, CAPACITY, LIQUID_FUEL) zählt nur, wenn er in allowedUpgrades aufgefü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-TypWirkung
MACHINE_OPEN, MACHINE_SMELT, MACHINE_COLLECT, MACHINE_STATUS, MACHINE_FUELStandard-Maschinenaktionen und Statusanzeige.
MACHINE_LINKVerbindet die Maschine mit dem Netz ihrer Dimension oder trennt sie.
MACHINE_PICKUPEntfernt die geöffnete Maschine und gibt sie als Item zurück.
NAV_BACK, NAV_CLOSEZurückgehen oder schließen.
MACHINE_GRID_INFOZusammenfassung der Dimension: Maschinenanzahl, gespeicherte Energie, Kapazität, erzeugt, verbraucht und Bilanz.
MACHINE_ENTRYEine Maschine der Dimension pro markiertem Slot. Linksklick schaltet ihr Hologramm um, Rechtsklick ihre Netzverbindung.
MACHINE_LIST_ARROWScroll-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​

BefehlBeschreibung
/typewriter machine giveListet 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 liquideZeigt 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:

BefehlBeschreibung
/<commandName> scroll <delta>, resetScrollt 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 CommandLöst seine triggers aus, wenn die criteria passen. Standardname machine-test.
/<commandName>, clear, bench von Machine Test Platform CommandBaut dort, wo du stehst, eine Vorführung von Maschinen, entfernt sie oder richtet loadbench_*-Welten ein. Standardname machine-test-platform.

Berechtigungen​

BerechtigungErlaubt
machine.adminDie /typewriter machine-Befehle.
machine.protection.bypassMaschinen ü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).

PlatzhalterLiefert
<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
Befehle3
Variablen1
Artefakte1
Manifeste2
Weitere Einträge1

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.