Machine
Descripción general
Machine convierte el diseño de máquinas en configuración. Una entrada Machine Definition describe un tipo de máquina: cuántas ranuras de entrada, salida, combustible y mejora tiene, qué procesa, qué cuesta en combustible y energía, qué aspecto tiene, qué dice su holograma y cuántas copias puede colocar un jugador o una isla. La extensión lee la definición y ejecuta cada copia colocada. Un horno, una trituradora, un generador de adoquín o un triturador de mobs es una entrada, no código.
Las máquinas pertenecen a las islas de BTC Sky. Una máquina solo se puede colocar en la propia isla del jugador, está limitada por topes por jugador y por isla, y su nivel se desbloquea con el árbol de investigación de la isla. La energía y los líquidos se comparten en una dimensión de la isla: los generadores y las celdas forman una reserva, y todas las máquinas enlazadas de esa dimensión toman de ella.
Esta es una extensión privada de la compilación BTC de TypeWriter (BTC Core, Paper o Folia), documentada como referencia. El runtime es compatible con Folia: las ranuras se almacenan en caché en memoria y se guardan de forma asíncrona.
Características
- Una entrada por máquina — ranuras, recetas, combustible, energía, aspecto, holograma, límites y automatización viven en una única Machine Definition.
- 27 tipos de procesamiento — máquinas de recetas (fundición, trituración, aserrado, mezcla, elaboración de pociones…), almacenamiento, logística, máquinas de área, máquinas de energía, spawners, trituradores y más.
- Recetas de múltiples entradas y aleatorias — entradas y salidas adicionales, salidas basadas en probabilidad, entradas y salidas de líquidos, objetos del catálogo y pociones de vanilla.
- Red de energía y depósitos de líquidos compartidos — las celdas, generadores y depósitos forman una reserva por dimensión de isla; una máquina se puede desvincular de la red.
- Niveles y módulos de mejora — niveles permanentes desbloqueados por la investigación de BTC Sky, además de módulos extraíbles (velocidad, rendimiento, fortuna, alcance, filtro, capacidad, combustible líquido) que se acumulan con ellos.
- Protección de la isla y límites — colocación en la propia isla, flag de construcción, topes por jugador, por isla y por dimensión.
- Redstone y tolvas — modo redstone, expulsión, salida de comparador y pulsos de finalización, transferencias con tolvas.
- Hologramas — un texto de estado con barra de progreso sobre cada máquina, totalmente con formato MiniMessage.
- Menú de panel — un menú que lista todas las máquinas de la dimensión con su estado, energía y estado de enlace.
- Persistencia — las máquinas colocadas, los inventarios, la energía y el progreso se guardan en un Machine Data Artifact.
Instalación
- Instala TypeWriter con la compilación BTC (BTC Core en Paper o Folia).
- Instala las extensiones de las que depende Machine: Quest, RPGBundle (RPG Core), BTC Sky, BTCMobs y GuiAndDialogs (la capa de GUI compartida).
- Opcional: instala CraftEngine si una definición usa el aspecto
FURNITUREoCUSTOM_BLOCK, y MiniPlaceholders para usar los placeholders. - Coloca el JAR de Machine en
plugins/Typewriter/extensions/y reinicia el servidor. - La salida de comparador de redstone y los pulsos de finalización solo funcionan cuando BTC Core proporciona emisión de redstone.
Primeros pasos
Crea un horno que funda mineral de hierro en lingotes:
- En el panel web de TypeWriter, abre una página static y añade un Machine Data Artifact. Almacena todas las máquinas colocadas. No cambies después su
artifactId, o se perderán las máquinas guardadas. - En la misma página, añade una Machine Definition. Dale un
namey manténprocessingTypeenSMELTING. - Establece
storageRefcon el artefacto del paso 1. - En
recipes, añade una receta:inputMaterialIRON_ORE,outputMaterialIRON_INGOT,outputAmount1,cookTime200(ticks, es decir, 10 segundos). DejafuelCosten1o más si la máquina debe quemar combustible. - En
fuelTypes, añadeCOALcon unburnTimey unfuelValue. - Establece
spawnItemcon el objeto que los jugadores colocan para crear la máquina. Una definición necesita unspawnItemo unvanillaBlock; de lo contrario se rechaza al publicar. - Opcionalmente, establece
perIslandLimitpara limitar el número de copias por isla. - Publica. Coloca el objeto en tu propia isla: la máquina aparece con su holograma, y un clic derecho abre su menú.
vanillaBlock (por ejemplo BREWING_STAND) hace que la definición se haga cargo de ese bloque de vanilla: al colocarlo se crea la máquina. Las conversiones de vanilla no están sujetas a la advertencia de límite de colocación, porque un tope limitaría también al bloque de vanilla.
Cómo funciona
Una máquina es una definición (la entrada) más instancias (las copias colocadas en el mundo). La definición nunca cambia en tiempo de ejecución; cada instancia conserva su propio inventario, carga de energía y progreso.
El modelo de definición
Cada campo de Machine Definition pertenece a uno de estos grupos:
| Grupo | Campos | Qué controla |
|---|---|---|
| Tipo | processingType, behaviors | Lo que hace la máquina. behaviors es opcional y se deriva del tipo cuando está vacío. |
| Ranuras | inputSlots, outputSlots, hasFuelSlot, upgradeSlots, essenceSlots, filterSlots, shearsSlots, maxPerSlot | La disposición del inventario. El layout de una máquina está limitado a 54 ranuras. |
| Recetas y combustible | recipes, fuelTypes | Lo que entra y lo que sale, cuánto tarda y cuánto cuesta. |
| Energía y líquidos | energyCapacity, energyGenerationPerTick, liquidTankCapacity, liquidFuelName | Contribución a la reserva y gestión de líquidos. |
| Progresión | tiers, allowedUpgrades, upgradeSpecs | Niveles permanentes y módulos extraíbles. |
| Aspecto | spawnItem, visualType, furnitureId, customBlockId, alignWithPlayerYaw, hologram* | Objeto, modelo y holograma. |
| Colocación | machineLimit, perIslandLimit, islandLimitUpgradeKey, dimensionScope, vanillaBlock | Quién puede colocarla, dónde y cuántas. |
| Automatización | hopperInterval, hopperTransferAmount, redstoneMode, ejectWhenPowered, redstoneComparatorOutput, redstonePulseOnComplete, redstonePulseTicks | Tolvas y redstone. |
| Persistencia | storageRef, guiStorageRef | Dónde se guardan las instancias y el contenido de STORAGE. |
Tipos de procesamiento
| Familia | Tipos |
|---|---|
Máquinas de recetas, controladas por recipes | SMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC |
| Producción | GENERATOR (sin entrada: produce las salidas de la receta con el tiempo, coste de energía opcional) |
| Almacenamiento y logística | STORAGE, SORTING (cada ranura de filtro reclama un lado), CONVEYOR (cinta direccional) |
| Máquinas de área | VACUUM (vacuumRange), SHEARING (shearRange, shearInterval, shearsSlots) |
| Energía | ENERGY_CELL, ENERGY_GENERATOR, CHARGING (chargeables, chargeRatePerSecond) |
| Entidades | ASSEMBLER (assemblerMode SPAWN o COLLECT, assemblerEntityType, assemblerMobId, assemblerIngredients, assemblerEnergyCost, assemblerInterval, assemblerRange, spawnerUpgrades), MOB_GRINDING (campos grinder*), EXPERIENCE_TANK (experienceCapacity) |
| Especiales | CONTROL_PANEL (ejecuta panelOpenCommand / panelAltCommand, no se puede recoger), TRANSMUTATION (mueve el encantamiento más alto de un objeto a un libro a cambio de botellas de experiencia) |
SMELTING y AUTO_CRAFTING recurren a las recetas de vanilla cuando no se declara ninguna receta. Todas las demás máquinas de recetas con cero recetas aceptan objetos y quedan inactivas para siempre; la extensión registra una advertencia al publicar.
Energía y líquidos
La energía se almacena en máquinas ENERGY_CELL. La reserva de la dimensión de la isla es la suma de sus celdas enlazadas. Las máquinas ENERGY_GENERATOR la alimentan y los consumidores toman de ella. Una máquina se une a la red de su dimensión en cuanto se coloca; el botón Machine Link (o el panel) la desconecta y la vuelve a conectar. Una celda del Overworld nunca alimenta a una máquina del Nether.
Los depósitos de líquidos funcionan igual: una máquina enlazada llega a todos los depósitos de su dimensión, una desvinculada solo ve el suyo. Una receta consume o produce líquidos con liquidInputName/liquidInputAmount y liquidOutputName/liquidOutputAmount.
Niveles y módulos de mejora
- Un nivel (
tiers) es permanente. Cada nivel nombra el nodo de investigación de BTC Sky (researchNode) que lo desbloquea y establece multiplicadores de velocidad, rendimiento y energía, una probabilidad de fortuna y ranuras adicionales. Lista los niveles en orden ascendente: el más alto desbloqueado se aplica a todas las copias de la máquina en la isla. Un nivel con unresearchNodeen blanco se rechaza. - Un módulo de mejora (
upgradeSpecs) es un objeto que se pone en una ranura de mejora.itemIdes el id de objeto de BTC (recomendado),materiales una alternativa. Sutype(SPEED,YIELD,ENERGY_EFFICIENCY,FORTUNE,RANGE,FILTER,CAPACITY,LIQUID_FUEL) solo cuenta si está listado enallowedUpgrades. - El nivel y los módulos se multiplican entre sí.
Menús
Machine Menu es una GUI construida a partir de layouts de la extensión GUI compartida (layoutPool, mainLayoutId, inventoryRows). Los items del layout cuyo buttonType es un botón de Machine se rellenan con datos en vivo:
| Tipo de botón | Efecto |
|---|---|
MACHINE_OPEN, MACHINE_SMELT, MACHINE_COLLECT, MACHINE_STATUS, MACHINE_FUEL | Acciones estándar de la máquina y visualización de estado. |
MACHINE_LINK | Enlaza la máquina a la red de su dimensión, o la desvincula. |
MACHINE_PICKUP | Elimina la máquina abierta y la devuelve como objeto. |
NAV_BACK, NAV_CLOSE | Volver o cerrar. |
MACHINE_GRID_INFO | Resumen de la dimensión: recuento de máquinas, energía almacenada, capacidad, producida, consumida y balance. |
MACHINE_ENTRY | Una máquina de la dimensión por ranura etiquetada. El clic izquierdo alterna su holograma, el clic derecho alterna su enlace a la red. |
MACHINE_LIST_ARROW | Flecha de desplazamiento de la lista de máquinas, con el contador de páginas. |
Dos entradas más completan el conjunto. Open Machine GUI enlaza una definición con un título y un tamaño de menú, pero su acción no hace nada cuando se activa en el código actual: las máquinas abren su menú con el clic derecho. Machine Position Variable devuelve la posición de la máquina propia del espectador de una definición dada en su dimensión, de modo que una sola entrada de NPC pueda seguir la máquina de cada isla.
Las etiquetas que muestra el panel (estados, enlace, holograma) provienen de Machine Dashboard Wording. El desplazamiento y el comando de apertura provienen de Machine Dashboard Command.
Comandos
| Comando | Descripción |
|---|---|
/typewriter machine give | Lista todas las máquinas registradas. |
/typewriter machine give <machine> | Te da el objeto de una máquina, por id o por parte de su nombre (se ignoran tildes y mayúsculas). |
/typewriter machine liquide | Muestra los líquidos que contiene la máquina que estás mirando (a menos de 6 bloques). |
/typewriter machine liquide <liquid> <millibuckets> | Vierte un líquido en la máquina apuntada. Una herramienta de pruebas: ningún gesto del jugador llena un depósito. |
El árbol /machine se registra bajo el comando de TypeWriter, así que se escribe /typewriter machine … (alias /tw machine …). Todo requiere machine.admin. Las entradas pueden registrar más comandos, como comandos de nivel superior:
| Comando | Descripción |
|---|---|
/<commandName> scroll <delta>, reset | Desplaza la lista del panel, o la rebobina. Nombre por defecto machines. |
/<commandName> dashboard | Abre el menú indicado en dashboardMenuId. |
/<commandName> link <instanceId>, hologram <instanceId> | Cambia el enlace a la red o el holograma de una máquina. Lo usan las ranuras del panel. |
/<commandName> de Machine Test Command | Activa sus triggers, si los criteria coinciden. Nombre por defecto machine-test. |
/<commandName>, clear, bench de Machine Test Platform Command | Construyen una muestra de máquinas donde estás, la eliminan o aprovisionan mundos loadbench_*. Nombre por defecto machine-test-platform. |
Permisos
| Permiso | Concede |
|---|---|
machine.admin | Los comandos /typewriter machine. |
machine.protection.bypass | Colocar, romper e interactuar con máquinas en cualquier lugar, ignorando la propiedad de la isla, el flag de construcción y los límites. |
Placeholders
Etiquetas de MiniPlaceholders de la expansión machine, proporcionadas a través de TypeWriter. <instance> es el id de una máquina colocada, <slot> el índice lógico de ranura (por defecto 0).
| Placeholder | Devuelve |
|---|---|
<machine_input:instance:slot> | true si la ranura de entrada contiene un objeto. |
<machine_input_name:instance:slot> | Nombre del material del objeto de entrada. |
<machine_input_amount:instance:slot> | Cantidad en la ranura de entrada. |
<machine_output:instance:slot> | true si la ranura de salida contiene un objeto. |
<machine_output_name:instance:slot> | Nombre del material del objeto de salida. |
<machine_output_amount:instance:slot> | Cantidad en la ranura de salida. |
<machine_tier:instance> | Nombre del nivel activo. |
<machine_dimension> | Nombre legible de la dimensión en la que está el jugador. |
<machine_grid_count>, <machine_grid_active>, <machine_grid_stalled> | Máquinas en la dimensión, activas y detenidas. |
<machine_energy_stored>, <machine_energy_capacity> | Energía almacenada y capacidad total de la dimensión. |
<machine_energy_produced>, <machine_energy_consumed>, <machine_energy_balance> | Energía por segundo producida, consumida y neta. |
Los placeholders de jugador devuelven un valor vacío sin un jugador (consola).
Los mensajes de los hologramas aceptan %machine%, %tier%, %energy%, %bar%, %percent% y %time_left%.
Entradas
10 entradas, generadas a partir del código fuente de la extensión.
Acciones2
- Machine MenuMachine Menu
- Open Machine GUIOpen Machine GUI
Comandos3
- 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
Artefactos1
- Machine Data ArtifactStores machine runtime state (placed instances, energy, progress) as JSON data
Manifiestos2
- Machine Dashboard ConfigMachine Dashboard Wording
- Machine Protection ConfigMachines : messages de protection
Otras entradas1
- Machine DefinitionMachine Definition
Solución de problemas
La definición se rechaza al publicar. Revisa el registro del servidor: no way to obtain this machine significa que no hay establecido ni spawnItem ni vanillaBlock; tier[n].researchNode is blank significa que un nivel no tiene nodo de investigación; the machine layout needs N slots, maximum is 54 significa demasiadas ranuras.
Una máquina acepta objetos y nunca funciona. Una máquina de recetas (por ejemplo MIXING, GRINDING, BREWING) con una lista recipes vacía no tiene alternativa de vanilla. Solo SMELTING y AUTO_CRAFTING usan recetas de vanilla.
Se rechaza la colocación. Los mensajes provienen de Machine Protection Config: la máquina debe estar en tu propia isla de BTC Sky, necesitas el flag de construcción, y se aplican los límites por jugador, isla y dimensión y dimensionScope. Un CONTROL_PANEL necesita un cristal de estabilización en la dimensión. El staff con machine.protection.bypass se salta todas las comprobaciones.
La máquina dice que no está enlazada o que no tiene energía. Necesita máquinas ENERGY_CELL y ENERGY_GENERATOR en la misma dimensión, y debe estar enlazada (usa el botón de enlace). La reserva nunca cruza dimensiones.
Un módulo de mejora no cambia nada. Su type debe estar en allowedUpgrades, y CAPACITY solo funciona en STORAGE, EXPERIENCE_TANK y ENERGY_CELL. LIQUID_FUEL necesita un liquidFuelName.
Un nivel nunca se aplica. El researchNode debe coincidir con un id de nodo de investigación de BTC Sky, y la isla debe haberlo desbloqueado.
El menú se abre vacío o no se abre. Comprueba mainLayoutId frente a los ids de layoutPool; el registro nombra los ids del conjunto cuando no coincide.
Fallan los aspectos de mueble o bloque personalizado. FURNITURE y CUSTOM_BLOCK necesitan CraftEngine y un furnitureId o customBlockId existente.
Extensiones relacionadas
- BTC Sky — islas, propiedad, investigación y dimensiones en las que se apoyan las máquinas.