Pular para o conteúdo principal

Machine

The Machine Extension turns machine design into pure configuration. One machine_definition entry describes what a machine is — its slots, recipes, energy needs, visuals, holograms, tiers and upgrade slots — and the extension runs it: a transformation machine is a panel entry, zero code.

Features

  • Data-Driven Definitions — One machine_definition entry per machine type. Placement, ticking, menus, persistence and holograms are handled by the engine.
    • 20 Processing Types — A generic recipe processor covers 13 transformation types (smelting, grinding, sawing, mixing, compacting, enriching, recycling, brewing, auto-crafting…), plus Storage, Vacuum, Shearing, Sorting, Charging, Assembler, EnergyCell and EnergyGenerator archetypes.
    • Shared Energy Grid — Energy lives in EnergyCell machines and is pooled per world. Generators fill the pool (fuel or solar); consumers must be linked to the grid before they can draw from it.
    • Tiers & Upgrades — Permanent tiers (T1→T3) and removable upgrade modules (SPEED, YIELD, ENERGY_EFFICIENCY, FORTUNE, RANGE, FILTER) stack multiplicatively. Each definition declares which upgrades it accepts.
    • Progress Holograms — Per-machine hologram with progress bar, idle/active/low-energy/full messages, fully MiniMessage-formatted.
    • Instance Persistence — Placed machines, their inventories, energy charge and progress survive restarts through artifact-backed persistence.

The Data-Driven System

  • DefinitionMachine Definition: the single entry that describes a machine type — slots, recipes, fuel, energy, visuals, holograms, tiers, upgrades, limits.

Processing types

CategoryTypes
Recipe transformationsSMELTING, LIQUID_SMELTING, MULTI_SMELTING, GRINDING, SAWING, MIXING, COMPACTING, ENRICHING, RECYCLING, BREWING, AUTO_CRAFTING, INDUSTRIAL, GENERIC
Storage & logisticsSTORAGE (OmniGUI-backed chest), SORTING (filter slots route items), CONVEYOR (directional belt moving one item type behind → ahead, chaining belt to belt), VOID (deletes filtered items)
ProductionGENERATOR (produces items on an interval with no input — cobble/resource generator, optional energy cost)
Area automationVACUUM (collects drops in a radius), SHEARING (shears nearby sheep)
EnergyENERGY_CELL (stores the pool), ENERGY_GENERATOR (fuel or solar), CHARGING (charges an item via persistent data — the charge travels with the item)
EntitiesASSEMBLER (SPAWN: ingredients + energy → entity; COLLECT: harvests nearby entities' produce)

Energy in the public build

The grid is pooled per world: every machine in the same world shares one energy pool, aggregated over its EnergyCell machines. A consumer only draws when linked to the grid, which keeps powering a machine a deliberate player act. If you run an island/claim plugin, scope the grid tighter by adapting MachineProtectionService.islandIdAt.

Tiers in the public build

Tiers are designed to be gated by a research system. The public build has none, so a tier with a blank researchNode is considered unlocked (highest one wins); tiers naming a research node stay locked. This keeps configs portable with setups that do have research.

Legacy Machines

The action-driven machines from earlier releases still work and now share the same protection gate and persistence:

observação

Chest storage is no longer a dedicated action: use a machine_definition with processingType: STORAGE and a guiStorageRef pointing at an OmniGUI storage entry.

Placeholders

Format: %typewriter_<action_id>:<machine_type>:<stat>%

PlaceholderDescription
%typewriter_<id>:furnace:fuel%Remaining fuel
%typewriter_<id>:furnace:input%Input presence
%typewriter_<id>:smeltery:fuel%Remaining fuel
%typewriter_<id>:smeltery:liquid%Liquid presence

Quick Start

  • 1. Create the persistence artifact — Add a machine_data_artifact entry — every placed machine instance (inventory, energy, progress) is stored in it. → machine_data_artifact
  • 2. Define the machine — Add a machine_definition: pick a processingType, declare slots, recipes and fuel, point storageRef at the artifact, and set a spawnItem so players can place it. → machine_definition
  • 3. Let players use it — Placing the spawnItem creates a live instance: it ticks on its own, renders its hologram, and right-click opens its menu. No further wiring needed.

Commands

This extension does not provide standalone commands. All functionality is accessed through Typewriter entries.

Permissions

PermissionDescription
machine.protection.bypassPlace/break/interact with machines anywhere, ignoring per-player limits.

Per-player placement limits are set on each definition via machineLimit.

Dependencies

ExtensionRequiredUsage
OmniGUI (GuiAndDialogs)RequiredMenu rendering and STORAGE machine backing.
PlaceholderAPIOptionalFor @Placeholder fields.