Saltar al contenido principal

Machine

Máquinas basadas en datos para las islas de BTC Sky: recetas, red de energía, niveles, módulos de mejora y hologramas.

Privadasv0.1.1Economía y crafteo
RequiereTypeWriter0.9.0-beta-177 (BTC build)Quest extensionRPG Bundle (RPG Core)BTC SkyBTCMobsGUI extension (GuiAndDialogs)CraftEngineopcionalMiniPlaceholdersopcional

Creada para la red BornToCraft. Esta extensión está documentada como referencia y no se distribuye.

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​

  1. Instala TypeWriter con la compilación BTC (BTC Core en Paper o Folia).
  2. Instala las extensiones de las que depende Machine: Quest, RPGBundle (RPG Core), BTC Sky, BTCMobs y GuiAndDialogs (la capa de GUI compartida).
  3. Opcional: instala CraftEngine si una definición usa el aspecto FURNITURE o CUSTOM_BLOCK, y MiniPlaceholders para usar los placeholders.
  4. Coloca el JAR de Machine en plugins/Typewriter/extensions/ y reinicia el servidor.
  5. 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:

  1. 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.
  2. En la misma página, añade una Machine Definition. Dale un name y mantén processingType en SMELTING.
  3. Establece storageRef con el artefacto del paso 1.
  4. En recipes, añade una receta: inputMaterial IRON_ORE, outputMaterial IRON_INGOT, outputAmount 1, cookTime 200 (ticks, es decir, 10 segundos). Deja fuelCost en 1 o más si la máquina debe quemar combustible.
  5. En fuelTypes, añade COAL con un burnTime y un fuelValue.
  6. Establece spawnItem con el objeto que los jugadores colocan para crear la máquina. Una definición necesita un spawnItem o un vanillaBlock; de lo contrario se rechaza al publicar.
  7. Opcionalmente, establece perIslandLimit para limitar el número de copias por isla.
  8. Publica. Coloca el objeto en tu propia isla: la máquina aparece con su holograma, y un clic derecho abre su menú.
Convertir un bloque de vanilla

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:

GrupoCamposQué controla
TipoprocessingType, behaviorsLo que hace la máquina. behaviors es opcional y se deriva del tipo cuando está vacío.
RanurasinputSlots, outputSlots, hasFuelSlot, upgradeSlots, essenceSlots, filterSlots, shearsSlots, maxPerSlotLa disposición del inventario. El layout de una máquina está limitado a 54 ranuras.
Recetas y combustiblerecipes, fuelTypesLo que entra y lo que sale, cuánto tarda y cuánto cuesta.
Energía y líquidosenergyCapacity, energyGenerationPerTick, liquidTankCapacity, liquidFuelNameContribución a la reserva y gestión de líquidos.
Progresióntiers, allowedUpgrades, upgradeSpecsNiveles permanentes y módulos extraíbles.
AspectospawnItem, visualType, furnitureId, customBlockId, alignWithPlayerYaw, hologram*Objeto, modelo y holograma.
ColocaciónmachineLimit, perIslandLimit, islandLimitUpgradeKey, dimensionScope, vanillaBlockQuién puede colocarla, dónde y cuántas.
AutomatizaciónhopperInterval, hopperTransferAmount, redstoneMode, ejectWhenPowered, redstoneComparatorOutput, redstonePulseOnComplete, redstonePulseTicksTolvas y redstone.
PersistenciastorageRef, guiStorageRefDónde se guardan las instancias y el contenido de STORAGE.

Tipos de procesamiento​

FamiliaTipos
Máquinas de recetas, controladas por recipesSMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC
ProducciónGENERATOR (sin entrada: produce las salidas de la receta con el tiempo, coste de energía opcional)
Almacenamiento y logísticaSTORAGE, SORTING (cada ranura de filtro reclama un lado), CONVEYOR (cinta direccional)
Máquinas de áreaVACUUM (vacuumRange), SHEARING (shearRange, shearInterval, shearsSlots)
EnergíaENERGY_CELL, ENERGY_GENERATOR, CHARGING (chargeables, chargeRatePerSecond)
EntidadesASSEMBLER (assemblerMode SPAWN o COLLECT, assemblerEntityType, assemblerMobId, assemblerIngredients, assemblerEnergyCost, assemblerInterval, assemblerRange, spawnerUpgrades), MOB_GRINDING (campos grinder*), EXPERIENCE_TANK (experienceCapacity)
EspecialesCONTROL_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 un researchNode en blanco se rechaza.
  • Un módulo de mejora (upgradeSpecs) es un objeto que se pone en una ranura de mejora. itemId es el id de objeto de BTC (recomendado), material es una alternativa. Su type (SPEED, YIELD, ENERGY_EFFICIENCY, FORTUNE, RANGE, FILTER, CAPACITY, LIQUID_FUEL) solo cuenta si está listado en allowedUpgrades.
  • 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ónEfecto
MACHINE_OPEN, MACHINE_SMELT, MACHINE_COLLECT, MACHINE_STATUS, MACHINE_FUELAcciones estándar de la máquina y visualización de estado.
MACHINE_LINKEnlaza la máquina a la red de su dimensión, o la desvincula.
MACHINE_PICKUPElimina la máquina abierta y la devuelve como objeto.
NAV_BACK, NAV_CLOSEVolver o cerrar.
MACHINE_GRID_INFOResumen de la dimensión: recuento de máquinas, energía almacenada, capacidad, producida, consumida y balance.
MACHINE_ENTRYUna 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_ARROWFlecha 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​

ComandoDescripción
/typewriter machine giveLista 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 liquideMuestra 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:

ComandoDescripción
/<commandName> scroll <delta>, resetDesplaza la lista del panel, o la rebobina. Nombre por defecto machines.
/<commandName> dashboardAbre 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 CommandActiva sus triggers, si los criteria coinciden. Nombre por defecto machine-test.
/<commandName>, clear, bench de Machine Test Platform CommandConstruyen una muestra de máquinas donde estás, la eliminan o aprovisionan mundos loadbench_*. Nombre por defecto machine-test-platform.

Permisos​

PermisoConcede
machine.adminLos comandos /typewriter machine.
machine.protection.bypassColocar, 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).

PlaceholderDevuelve
<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
Comandos3
Variables1
Artefactos1
Manifiestos2
Otras entradas1

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.