Skip to main content
General Mechanics provides a suite of machines for processing elements, crafting items, and managing industrial workflows. All machines run on FE (Forge Energy) and are registered as block entities that extend BaseEnergyCrafter.

Machine Frames

Machine frames are structural blocks made from engineering plastics. They are used as components in machine crafting recipes and potentially as walls in multiblock structures. There are eleven plastic types, each also available in all 16 dye colors:
Frame BlockAbbreviationFormula
Polyethylene Machine FramePEC₂H₄
Polypropylene Machine FramePPC₃H₆
Polystyrene Machine FramePSC₈H₈
Polyvinyl Chloride Machine FramePVCC₂H₃Cl
Polyethylene Terephthalate Machine FramePETC₁₀H₈O₄
Acrylonitrile Butadiene Styrene Machine FrameABSC₈H₈·C₄H₆·C₃H₃N
Polycarbonate Machine FramePCC₁₆H₁₄O₃
Nylon Machine FramePAC₆H₁₁NO
Polyurethane Machine FramePUC₃H₈N₂O
Polytetrafluoroethylene Machine FramePTFEC₂F₄
Polyetheretherketone Machine FramePEEKC₁₉H₁₂O₃
Frames are registered as MachineFrameBlock(PlasticType) instances in CoreBlocks. Colored variants are registered automatically for each dye color via CoreBlocks.plasticTypeBlock().

Matter Fabricator

The Matter Fabricator (MatterFabricatorBlock) is a crafting machine that processes items through FabricationRecipe.

Block Properties

  • Extends BaseEntityBlock<MatterFabricatorBlockEntity>
  • Block state includes BlockStateProperties.POWERED — toggles to true while actively crafting
  • Emits light level 15 when powered
  • Plays furnace crackle sounds during operation
  • Right-clicking opens the MatterFabricatorMenu GUI

Block Entity: MatterFabricatorBlockEntity

public MatterFabricatorBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState blockState) {
    super(type, pos, blockState,
        Attribute.Builder.of(Keys.MAX_POWER, 100_000),  // 100,000 FE capacity
        Attribute.Builder.of(Keys.MAX_DRAIN, 256)       // 256 FE/t max receive
    );
}
PropertyValue
Energy capacity100,000 FE
Max receive rate256 FE/t
Energy per crafting tick8 FE
Inventory slots4 (slots 0–2 input, slot 3 output)
Recipe typeFabricationRecipe (CoreRecipes.FABRICATION_RECIPE_TYPE)

Crafting Behavior

Each game tick the machine:
  1. Checks whether inputs are present, a matching FabricationRecipe exists, and at least 8 FE is stored.
  2. Extracts 8 FE and increments crafting progress.
  3. When progress reaches the recipe’s required duration, consumes one item from each ingredient slot and inserts the result into slot 3.
  4. Sets POWERED = false when idle.

Industrial Heating Element

The Industrial Heating Element (HeatingElementBlock) is a powered heat source used in industrial processes.
  • Block state property: HEATING (BooleanProperty) — true when actively heating
  • When HEATING is true:
    • Damages living entities that walk inside it (campfire damage source, 1.0 HP per tick)
    • Emits smoke particles above the block
    • Creates an upward bubble column if placed beneath water
    • Plays furnace crackle sounds
  • Responds to redstone signals via canConnectRedstone
  • Faces a direction on placement (FACING property)
  • Collision shape is slightly inset: box(1, 0, 1, 15, 15, 15)

Energy Requirements

All machines that extend BaseEnergyCrafter follow the same energy contract:
// Check before each crafting tick
boolean hasEnoughEnergy(int required) {
    return this.getEnergyStorage().getEnergyStored() >= required;
}

// FE consumed per tick while crafting
int getEnergyAmount();
Machines will not start or continue crafting if getEnergyStorage().getEnergyStored() < getEnergyAmount(). Progress resets to zero if power is lost mid-craft.

Machine States

BaseEnergyCrafter.getMachineState() returns one of:
StateCondition
ACTIVECrafting is in progress
INACTIVEPowered but no valid recipe or redstone blocked
ERRORNot enabled, output full, or energy storage is empty

Recipe Types

Recipe TypeMachineRegistry Key
FabricationRecipeMatter FabricatorCoreRecipes.FABRICATION_RECIPE_TYPE
Additional recipe types for fluid mixing and other processing machines are defined in CoreRecipes.

Build docs developers (and LLMs) love