promotional bannermobile promotional banner

Horse Powered

Hand-cranked and animal-powered machinery focusing on early game grinding, chopping, pressing, drying, and crushing. Leash horses, donkeys, or llamas to automate the line or generate Forge Energy. Data-driven recipes with full JEI, EMI, and Jade support.

File Details

horsepowered 2.4.0

  • R
  • May 18, 2026
  • 406.01 KB
  • 10
  • 1.21.1
  • NeoForge

File Name

horsepowered-2.4.0.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:horse-powered-1408330:8111116"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Horse Powered 2.4.0

New Content

  • Horse Powered Generator: new horse-powered machine that converts worker labor directly into Forge Energy. Generates 80 FE/tick while a worker walks, buffers up to 100,000 FE, and pushes power to any adjacent FE consumer. Requires a redstone signal to run, so it can be toggled by a lever inside the working ring.
  • Work Saddle: right-click any valid worker (horse, donkey, mule, llama, trader llama) to capture it into the saddle, then right-click any block to release it elsewhere. The captured mob is rendered as an overlay on the item, monster-spawner style. Crafted from a saddle and a lead.
  • Creative Battery: creative-only block for testing energy setups. Holds up to Integer.MAX_VALUE FE, accepts and outputs power at the same rate, and pushes stored energy to adjacent FE consumers every tick. Bedrock-grade hardness and no loot table; only obtainable in creative.
  • Drying Rack: a passive 2x2 multiblock wooden rack that dries 8 items at once. Each of the 8 slots ticks independently. Right-click with an input item to place it on a slot, right-click with an empty hand on a filled slot to take it back. Once a slot finishes its recipe, the item is replaced with the output and stays there until removed. Hoppers and pipes can insert into any slot from any side (only items with a drying recipe are accepted) and extract from any slot, but only finished outputs can be pulled out; partial dries are protected. Crafted with three sticks on top, three sticks on bottom, and a plank on each side of an empty center.
  • Granite Anvil: stone-tier crushing station for rock-cycle conversions. Place a granite anvil (granite over polished_deepslate, 3+3 pattern) and right-click a valid input with any stone-tier-or-better pickaxe to crush. Each successful strike consumes pickaxe durability (toggle via shouldDamageGraniteAnvilPickaxe) and applies food exhaustion (graniteAnvilExhaustion plus per-recipe hungerCost). Total strikes per recipe are time × crushingMultiplier. By default the result is dropped on top of the anvil; flip graniteAnvilDrop to false to keep the output in an internal slot instead. Ships with 10 recipes: stone, deepslate, basalt, blackstone, tuff, cobblestone, cobbled_deepslate, gravel, sandstone (4 sand), red_sandstone (4 red_sand). New JEI and EMI "Crushing" categories show the strike count and (when set) hunger per recipe. Jade shows input/output items and remaining strikes when looking at the block.

New Recipe Features

  • Optional hungerCost on chopping and grinding recipes: float field (default 0.0). On manual stations it is added to the player's food exhaustion every chop or turn, on top of the existing config baseline. Has no effect on horse-powered stations. Recipe viewers display a "Hunger" line on the manual category when the value is greater than zero.
  • New horsepowered:drying recipe type: item in, item out, plus a time (in ticks). Modpack makers can add their own at data/<ns>/recipe/drying/*.json.

Built-in Drying Recipes

The Drying Rack is passive (no worker), so default times are an order of magnitude longer than the active machines.

  • minecraft:kelp to minecraft:dried_kelp (1000t / 50s)
  • minecraft:wet_sponge to minecraft:sponge (2000t / 100s)
  • minecraft:rotten_flesh to minecraft:leather (1000t / 50s)
  • minecraft:mud to minecraft:dirt (1000t / 50s)
  • minecraft:clay to minecraft:terracotta (4000t / 200s)
  • #minecraft:saplings to minecraft:dead_bush (1500t / 75s)

Recipe Viewer Improvements

  • Manual Chopping now displays the actual chop count (time × choppingMultiplier) in JEI and EMI instead of the raw recipe time.
  • Manual Grinding now displays the number of turns required (⌈time / pointsPerRotation⌉) instead of raw time.
  • Sort priority is ascending again (issue #7): JEI and EMI list recipes from lowest priority value to highest, so priority: 1 displays above priority: 2.
  • Press fluid amount no longer overflows (issue #6): the "mB" label is right-justified to the recipe background width so values like 1000 mB no longer run off the right edge in JEI and EMI.
  • Redundant input count text removed from the Press recipe (issue #6): the count is already drawn on the slot by JEI/EMI, so the duplicate "xN" label was removed.
  • EMI arrow no longer flickers: the filling-arrow cycle is in milliseconds (not ticks); the previous 200 value flickered ~5 times per second. Now 10000 ms, matching JEI's 200-tick arrow.
  • Drying category added to JEI and EMI with the rack as its workstation. Shows input, output, and total drying time in seconds.

Visual Fixes

  • Horse Chopper blade orientation is now correct in all four placement directions. The blade follows the chopper's facing and lies along the top support beam instead of being rotated 90° off-axis.
  • Horse Chopper top no longer renders dark (issue with the v2.x port): the filler block above the chopper now propagates skylight and has zero light attenuation, so the crossbeam and handle on top are lit correctly.
  • Generator block model no longer jitters: the energy storage was triggering a client-side block update every tick when generating or pushing power, which caused the block model to re-mesh continuously. Energy changes now mark the chunk dirty for save without forcing a client resync.
  • Worker walk animation no longer restarts every tick: the cached client-side render entity was being rebuilt on every position sync. It is now preserved across syncs as long as the worker identity (entity type) doesn't change.
  • Creative Battery no longer X-rays through the floor: the block now has noOcclusion so adjacent faces are not culled, fixing the visible-through-the-bottom rendering.

Manual Station Display

  • Hand Grindstone displays input/output sides based on facing (issue #8): output renders on the player's right and input renders on the player's left (in addition to the spinning input on top), so the pickup zones always line up with the visible items regardless of how the block was placed. The fixed-position display only matched in one of four placement directions before.

Multi-Block Fixes

  • Horse Chopper upper half now has a hitbox (issue #9): adjacent blocks (hoppers, scaffolding, etc.) can be placed against the upper block again. Vanilla hoppers placed on any side of the upper half feed into the chopper through the existing filler container delegation.
  • Working-area validation: horse-powered blocks now also require a sturdy floor under the walking ring, so workers can't float over missing blocks. Levers placed inside the ring are allowed, so the area can host wall levers for redstone toggles (used by the Generator's on/off control).

Jade Per-Slot Progress

Look at any of the 8 slots on a Drying Rack and Jade shows that specific slot's recipe progress and remaining time. Works on all 4 quadrants of the multiblock: the cursor's hit position is mapped to the slot under it, and the main block entity's progress for that slot is synced for the tooltip.

Datapack / API

  • tier, priority, and hungerCost are all optional fields on grinding and chopping recipes. Defaults preserve previous behavior.
  • horsepowered:valid_worker entity-type tag governs both worker attachment and Work Saddle pickup.
  • horsepowered:drying recipe type with ingredient, result, time fields. Item-in, item-out, server-side timer-driven.