Machine
Vue d'ensemble
Machine transforme la conception de machines en configuration. Une entrée Machine Definition décrit un type de machine : combien d'emplacements d'entrée, de sortie, de combustible et d'amélioration elle possède, ce qu'elle traite, ce qu'elle coûte en combustible et en énergie, son apparence, ce que dit son hologramme et combien d'exemplaires un joueur ou une île peut placer. L'extension lit la définition et fait fonctionner chaque exemplaire placé. Un fourneau, un broyeur, un générateur de cobblestone ou un broyeur de mobs est une entrée, pas du code.
Les machines appartiennent aux îles BTC Sky. Une machine ne peut être placée que sur l'île du joueur, est bornée par des limites par joueur et par île, et son palier est débloqué par l'arbre de recherche de l'île. L'énergie et les liquides sont partagés à l'échelle d'une dimension de l'île : les générateurs et les cellules forment une réserve, et chaque machine reliée de cette dimension y puise.
C'est une extension privée de la version BTC de TypeWriter (BTC Core, Paper ou Folia), documentée à titre de référence. L'exécution est compatible Folia : les emplacements sont mis en cache en mémoire et enregistrés de manière asynchrone.
Fonctionnalités
- Une entrée par machine — emplacements, recettes, combustible, énergie, visuels, hologramme, limites et automatisation se trouvent dans une seule Machine Definition.
- 27 types de traitement — machines à recettes (fonte, broyage, sciage, mélange, brassage…), stockage, logistique, machines de zone, machines d'énergie, spawners, broyeurs et plus encore.
- Recettes à entrées multiples et aléatoires — entrées et sorties supplémentaires, sorties basées sur des probabilités, entrées et sorties de liquides, objets du catalogue et potions vanilla.
- Réseau d'énergie et réservoirs de liquides partagés — cellules, générateurs et réservoirs sont mis en commun par dimension d'île ; une machine peut être détachée du réseau.
- Paliers et modules d'amélioration — paliers permanents débloqués par la recherche BTC Sky, plus des modules amovibles (vitesse, rendement, fortune, portée, filtre, capacité, combustible liquide) qui se cumulent avec eux.
- Protection d'île et limites — placement sur sa propre île, flag de construction, plafonds par joueur, par île et par dimension.
- Redstone et entonnoirs — mode redstone, éjection, sortie de comparateur et impulsions de fin, transferts par entonnoir.
- Hologrammes — un texte d'état avec barre de progression au-dessus de chaque machine, entièrement formaté en MiniMessage.
- Menu de tableau de bord — un menu qui liste chaque machine de la dimension avec son état, son énergie et l'état de son lien.
- Persistance — les machines placées, leurs inventaires, leur énergie et leur progression sont enregistrés dans un Machine Data Artifact.
Installation
- Installez TypeWriter avec la version BTC (BTC Core sur Paper ou Folia).
- Installez les extensions dont Machine dépend : Quest, RPGBundle (RPG Core), BTC Sky, BTCMobs et GuiAndDialogs (la couche GUI partagée).
- Facultatif : installez CraftEngine si une définition utilise le visuel
FURNITUREouCUSTOM_BLOCK, et MiniPlaceholders pour utiliser les placeholders. - Placez le JAR de Machine dans
plugins/Typewriter/extensions/et redémarrez le serveur. - La sortie de comparateur de redstone et les impulsions de fin ne fonctionnent que si BTC Core fournit l'émission de redstone.
Premiers pas
Créez un fourneau qui fait fondre du minerai de fer en lingots :
- Dans le panel web TypeWriter, ouvrez une page static et ajoutez un Machine Data Artifact. Il stocke chaque machine placée. Ne modifiez pas son
artifactIdpar la suite, sinon les machines enregistrées sont perdues. - Sur la même page, ajoutez une Machine Definition. Donnez-lui un
name, gardezprocessingTypesurSMELTING. - Définissez
storageRefsur l'artefact de l'étape 1. - Dans
recipes, ajoutez une recette :inputMaterialIRON_ORE,outputMaterialIRON_INGOT,outputAmount1,cookTime200(ticks, soit 10 secondes). LaissezfuelCostà1ou plus si la machine doit brûler du combustible. - Dans
fuelTypes, ajoutezCOALavec unburnTimeet unfuelValue. - Définissez
spawnItemsur l'objet que les joueurs placent pour créer la machine. Une définition a besoin d'unspawnItemou d'unvanillaBlock, sinon elle est rejetée à la publication. - Facultatif : définissez
perIslandLimitpour plafonner le nombre d'exemplaires par île. - Publiez. Placez l'objet sur votre île : la machine apparaît avec son hologramme, et un clic droit ouvre son menu.
vanillaBlock (par exemple BREWING_STAND) fait prendre en charge ce bloc vanilla par la définition : le placer crée la machine à la place. Les conversions de blocs vanilla ne sont pas concernées par l'avertissement de limite de placement, car un plafond plafonnerait aussi le bloc vanilla.
Fonctionnement
Une machine est une définition (l'entrée) plus des instances (les exemplaires placés dans le monde). La définition ne change jamais à l'exécution ; chaque instance garde son propre inventaire, sa charge d'énergie et sa progression.
Le modèle de définition
Chaque champ de Machine Definition appartient à l'un de ces groupes :
| Groupe | Champs | Ce qu'il contrôle |
|---|---|---|
| Type | processingType, behaviors | Ce que fait la machine. behaviors est facultatif et déduit du type lorsqu'il est vide. |
| Emplacements | inputSlots, outputSlots, hasFuelSlot, upgradeSlots, essenceSlots, filterSlots, shearsSlots, maxPerSlot | La disposition de l'inventaire. La disposition d'une machine est limitée à 54 emplacements. |
| Recettes et combustible | recipes, fuelTypes | Ce qui entre et ce qui sort, le temps nécessaire et ce que cela coûte. |
| Énergie et liquides | energyCapacity, energyGenerationPerTick, liquidTankCapacity, liquidFuelName | Contribution à la réserve et gestion des liquides. |
| Progression | tiers, allowedUpgrades, upgradeSpecs | Paliers permanents et modules amovibles. |
| Apparence | spawnItem, visualType, furnitureId, customBlockId, alignWithPlayerYaw, hologram* | Objet, modèle et hologramme. |
| Placement | machineLimit, perIslandLimit, islandLimitUpgradeKey, dimensionScope, vanillaBlock | Qui peut la placer, où et en combien d'exemplaires. |
| Automatisation | hopperInterval, hopperTransferAmount, redstoneMode, ejectWhenPowered, redstoneComparatorOutput, redstonePulseOnComplete, redstonePulseTicks | Entonnoirs et redstone. |
| Persistance | storageRef, guiStorageRef | Où les instances et le contenu STORAGE sont enregistrés. |
Types de traitement
| Famille | Types |
|---|---|
Machines à recettes, pilotées par recipes | SMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC |
| Production | GENERATOR (aucune entrée : produit les sorties de la recette au fil du temps, coût d'énergie facultatif) |
| Stockage et logistique | STORAGE, SORTING (chaque emplacement de filtre réclame une face), CONVEYOR (tapis directionnel) |
| Machines de zone | VACUUM (vacuumRange), SHEARING (shearRange, shearInterval, shearsSlots) |
| Énergie | ENERGY_CELL, ENERGY_GENERATOR, CHARGING (chargeables, chargeRatePerSecond) |
| Entités | ASSEMBLER (assemblerMode SPAWN ou COLLECT, assemblerEntityType, assemblerMobId, assemblerIngredients, assemblerEnergyCost, assemblerInterval, assemblerRange, spawnerUpgrades), MOB_GRINDING (champs grinder*), EXPERIENCE_TANK (experienceCapacity) |
| Spécial | CONTROL_PANEL (exécute panelOpenCommand / panelAltCommand, ne peut pas être ramassé), TRANSMUTATION (déplace l'enchantement le plus élevé d'un objet vers un livre contre des fioles d'expérience) |
SMELTING et AUTO_CRAFTING se rabattent sur les recettes vanilla lorsqu'aucune recette n'est déclarée. Toutes les autres machines à recettes sans aucune recette acceptent des objets et restent inactives indéfiniment ; l'extension journalise un avertissement à la publication.
Énergie et liquides
L'énergie est stockée dans les machines ENERGY_CELL. La réserve de la dimension d'île est la somme de ses cellules reliées. Les machines ENERGY_GENERATOR l'alimentent, et les consommateurs y puisent. Une machine rejoint le réseau de sa dimension dès qu'elle est placée ; le bouton Machine Link (ou le tableau de bord) l'en retire puis l'y remet. Une cellule de l'Overworld n'alimente jamais une machine du Nether.
Les réservoirs de liquides fonctionnent de la même manière : une machine reliée atteint chaque réservoir de sa dimension, une machine détachée ne voit que le sien. Une recette consomme ou produit des liquides avec liquidInputName/liquidInputAmount et liquidOutputName/liquidOutputAmount.
Paliers et modules d'amélioration
- Un palier (
tiers) est permanent. Chaque palier nomme le nœud de recherche BTC Sky (researchNode) qui le débloque et définit des multiplicateurs de vitesse, de rendement et d'énergie, une chance de fortune et des emplacements supplémentaires. Listez les paliers par ordre croissant : le plus élevé débloqué s'applique à chaque exemplaire de la machine sur l'île. Un palier avec unresearchNodevide est rejeté. - Un module d'amélioration (
upgradeSpecs) est un objet placé dans un emplacement d'amélioration.itemIdest l'identifiant d'objet BTC (recommandé),materialest une solution de repli. Sontype(SPEED,YIELD,ENERGY_EFFICIENCY,FORTUNE,RANGE,FILTER,CAPACITY,LIQUID_FUEL) ne compte que s'il est listé dansallowedUpgrades. - Le palier et les modules se multiplient entre eux.
Menus
Machine Menu est une GUI construite à partir des dispositions de l'extension GUI partagée (layoutPool, mainLayoutId, inventoryRows). Les objets de la disposition dont le buttonType est un bouton Machine sont remplis avec des données en direct :
| Type de bouton | Effet |
|---|---|
MACHINE_OPEN, MACHINE_SMELT, MACHINE_COLLECT, MACHINE_STATUS, MACHINE_FUEL | Actions standard de la machine et affichage de l'état. |
MACHINE_LINK | Relie la machine au réseau de sa dimension, ou l'en détache. |
MACHINE_PICKUP | Retire la machine ouverte et la rend sous forme d'objet. |
NAV_BACK, NAV_CLOSE | Retour ou fermeture. |
MACHINE_GRID_INFO | Résumé de la dimension : nombre de machines, énergie stockée, capacité, produite, consommée et bilan. |
MACHINE_ENTRY | Une machine de la dimension par emplacement marqué. Un clic gauche bascule son hologramme, un clic droit bascule son lien au réseau. |
MACHINE_LIST_ARROW | Flèche de défilement de la liste des machines, avec le compteur de pages. |
Deux autres entrées complètent l'ensemble. Open Machine GUI relie une définition à un titre et une taille de menu, mais son action ne fait rien lorsqu'elle est déclenchée dans le code actuel : les machines ouvrent leur menu au clic droit. Machine Position Variable renvoie la position de la propre machine du spectateur pour une définition donnée dans sa dimension : une seule entrée de PNJ peut donc suivre la machine de chaque île.
Les libellés affichés par le tableau de bord (états, lien, hologramme) proviennent de Machine Dashboard Wording. Le défilement et la commande d'ouverture proviennent de Machine Dashboard Command.
Commandes
| Commande | Description |
|---|---|
/typewriter machine give | Liste chaque machine enregistrée. |
/typewriter machine give <machine> | Vous donne l'objet d'une machine, par identifiant ou par partie de son nom (les accents et la casse sont ignorés). |
/typewriter machine liquide | Affiche les liquides contenus dans la machine que vous regardez (à moins de 6 blocs). |
/typewriter machine liquide <liquid> <millibuckets> | Verse un liquide dans la machine ciblée. Un outil de test : aucun geste de joueur ne remplit un réservoir. |
L'arbre /machine est enregistré sous la commande TypeWriter : il se saisit donc /typewriter machine … (alias /tw machine …). Il nécessite entièrement machine.admin. Les entrées peuvent enregistrer d'autres commandes, en tant que commandes de premier niveau :
| Commande | Description |
|---|---|
/<commandName> scroll <delta>, reset | Fait défiler la liste du tableau de bord, ou la rembobine. Nom par défaut machines. |
/<commandName> dashboard | Ouvre le menu nommé dans dashboardMenuId. |
/<commandName> link <instanceId>, hologram <instanceId> | Bascule le lien au réseau ou l'hologramme d'une machine. Utilisé par les emplacements du tableau de bord. |
/<commandName> de Machine Test Command | Déclenche ses triggers, si les criteria correspondent. Nom par défaut machine-test. |
/<commandName>, clear, bench de Machine Test Platform Command | Construisent une vitrine de machines là où vous vous trouvez, la suppriment, ou provisionnent des mondes loadbench_*. Nom par défaut machine-test-platform. |
Permissions
| Permission | Autorise |
|---|---|
machine.admin | Les commandes /typewriter machine. |
machine.protection.bypass | Placer, casser et interagir avec les machines n'importe où, en ignorant la propriété de l'île, le flag de construction et les limites. |
Placeholders
Balises MiniPlaceholders de l'extension machine, fournies via TypeWriter. <instance> est l'identifiant d'une machine placée, <slot> l'index logique de l'emplacement (0 par défaut).
| Placeholder | Renvoie |
|---|---|
<machine_input:instance:slot> | true si l'emplacement d'entrée contient un objet. |
<machine_input_name:instance:slot> | Nom du matériau de l'objet d'entrée. |
<machine_input_amount:instance:slot> | Quantité dans l'emplacement d'entrée. |
<machine_output:instance:slot> | true si l'emplacement de sortie contient un objet. |
<machine_output_name:instance:slot> | Nom du matériau de l'objet de sortie. |
<machine_output_amount:instance:slot> | Quantité dans l'emplacement de sortie. |
<machine_tier:instance> | Nom du palier actif. |
<machine_dimension> | Nom lisible de la dimension dans laquelle se trouve le joueur. |
<machine_grid_count>, <machine_grid_active>, <machine_grid_stalled> | Machines dans la dimension, actives, et bloquées. |
<machine_energy_stored>, <machine_energy_capacity> | Énergie stockée et capacité totale de la dimension. |
<machine_energy_produced>, <machine_energy_consumed>, <machine_energy_balance> | Énergie par seconde produite, consommée et nette. |
Les placeholders de joueur renvoient une valeur vide sans joueur (console).
Les messages d'hologramme acceptent %machine%, %tier%, %energy%, %bar%, %percent% et %time_left%.
Entrées
10 entrées, générées depuis la source de l'extension.
Actions2
- Machine MenuMachine Menu
- Open Machine GUIOpen Machine GUI
Commandes3
- Machine Dashboard CommandMachine dashboard commands
- Machine Test CommandRegister a Machine test command
- Machine Test Platform CommandProvision the Machine BTC test platform
Variables1
- Machine Position VariablePosition of the viewer's machine of a given definition
Artefacts1
- Machine Data ArtifactStores machine runtime state (placed instances, energy, progress) as JSON data
Manifestes2
- Machine Dashboard ConfigMachine Dashboard Wording
- Machine Protection ConfigMachines : messages de protection
Autres entrées1
- Machine DefinitionMachine Definition
Dépannage
La définition est rejetée à la publication. Consultez le journal du serveur : no way to obtain this machine signifie que ni spawnItem ni vanillaBlock n'est défini ; tier[n].researchNode is blank signifie qu'un palier n'a pas de nœud de recherche ; the machine layout needs N slots, maximum is 54 signifie qu'il y a trop d'emplacements.
Une machine accepte des objets et ne fonctionne jamais. Une machine à recettes (par exemple MIXING, GRINDING, BREWING) avec une liste recipes vide n'a pas de repli vanilla. Seuls SMELTING et AUTO_CRAFTING utilisent les recettes vanilla.
Le placement est refusé. Les messages proviennent de Machine Protection Config : la machine doit se trouver sur votre propre île BTC Sky, vous avez besoin du flag de construction, et les limites par joueur, par île et par dimension ainsi que dimensionScope s'appliquent. Un CONTROL_PANEL a besoin d'un cristal de stabilisation dans la dimension. Le staff avec machine.protection.bypass ignore toutes les vérifications.
La machine indique qu'elle n'est pas reliée ou n'a pas d'énergie. Elle a besoin de machines ENERGY_CELL et ENERGY_GENERATOR dans la même dimension, et elle doit être reliée (utilisez le bouton de lien). La réserve ne traverse jamais les dimensions.
Un module d'amélioration ne change rien. Son type doit figurer dans allowedUpgrades, et CAPACITY ne fonctionne que sur STORAGE, EXPERIENCE_TANK et ENERGY_CELL. LIQUID_FUEL nécessite un liquidFuelName.
Un palier n'est jamais appliqué. Le researchNode doit correspondre à un identifiant de nœud de recherche de BTC Sky, et l'île doit l'avoir débloqué.
Le menu s'ouvre vide ou ne s'ouvre pas. Vérifiez mainLayoutId par rapport aux identifiants de layoutPool ; le journal nomme les identifiants du pool lorsqu'ils ne correspondent pas.
Les visuels de meuble ou de bloc personnalisé échouent. FURNITURE et CUSTOM_BLOCK nécessitent CraftEngine et un furnitureId ou customBlockId existant.
Extensions associées
- BTC Sky — îles, propriété, recherche et dimensions dont dépendent les machines.