File Details
HorsePowered 1.20.1-1.4.0
- R
- May 18, 2026
- 302.34 KB
- 21
- 1.20.1
- Forge
File Name
horsepowered-1.20.1-1.4.0.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
Horse Powered 1.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. Carrying saddle shows a tooltip listing the stored mob. Crafted shapelessly from a saddle and a lead.
- Creative Battery: creative-only block for testing energy setups. Holds up to
Integer.MAX_VALUEFE, 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: passive 2x2 multiblock that dries 8 items in a 4x2 grid. Each slot ticks independently with its own progress, supports hopper automation (insert from any side, extract only finished items), and shows per-slot progress in Jade via raycast hit detection. Comes with 6 vanilla recipes: kelp to dried kelp, wet sponge to sponge, rotten flesh to leather, mud to dirt, clay to terracotta, and saplings to dead bush. New JEI and EMI "Drying" categories show recipe time centered under the arrow.
- 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 (graniteAnvilExhaustionplus per-recipehungerCost). Total strikes per recipe aretime × crushingMultiplier. By default the result is dropped on top of the anvil; flipgraniteAnvilDropto 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 Feature
- Optional
hungerCoston chopping and grinding recipes: float field (default0.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. JEI and EMI show a "Hunger" line on the manual category when the value is greater than zero.
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 now: JEI and EMI list recipes from lowest
priorityvalue to highest, sopriority: 1displays abovepriority: 2. - Press fluid amount no longer overflows: the "mB" label is right-justified to the recipe background width so values like
1000 mBno longer run off the right edge in JEI and EMI. - Redundant input count text removed from the Press recipe: the count is already drawn on the slot by JEI/EMI.
- JEI arrows now render: switched from the deprecated hardcoded gui_vanilla.png path to
IGuiHelper#getRecipeArrow(), fixing the missing-arrow visuals on the chopping, grinding, and pressing categories. - EMI arrow no longer flickers: the filling-arrow cycle is in milliseconds (not ticks); the previous
200value flickered ~5 times per second. Now10000ms.
Visual Fixes
- Horse Chopper top no longer renders dark: the filler block above the chopper now propagates skylight and has zero light attenuation, so the crossbeam and handle on top are lit correctly.
Manual Station Display
- Hand Grindstone displays input/output sides based on facing: 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.
Multi-Block Fixes
- Horse Chopper upper half now has a hitbox: 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).
Virtual Workers
- Attached workers are now virtual renders (parity with 1.21.1 / 26.1.x): when a worker is captured by a horse-powered block, the real entity is despawned and its full NBT is stored on the block. A client-side ghost entity is reconstructed from that NBT purely for visualization (no AI, no physics, no health, no collision). The work cycle runs on a step timer (default 25 ticks/step, scaled by the captured mob's MOVEMENT_SPEED attribute) instead of waiting for the entity to physically reach each path point. Breaking the block respawns the original mob from its stored NBT at the block position; releasing via right-click leashes the mob to the player as before.
Bug Fixes
- Worker attach no longer drops the lead instantly:
setWorkerpreviously calledgetClosestTarget, which invoked the side-effectinghasWorkercheck. When the horse was attached from near the edge of the 7-block search radius it failed the < ~6.7 block distance check, dropped a lead, and cleared the worker — making it look like the lead "popped off" on the Generator (where no canWork ticks ever pull the worker in). The worker is now snapped to the closest path point on attach, and the closest-target computation no longer triggers the invalidation drop. - Lead duping fixed: every attach→release→attach cycle was producing a free lead because
BlockHPBase.use()gave the player aLEADitem on attach as a "refund" whilesetWorkerToPlayerre-leashed on release without consuming one. The attach refund has been removed — the leash investment now stays in the worker state across the cycle and is only returned as aLEADitem when the block is broken or the worker dies / wanders off. Affects all four horse-powered blocks (Chopper, Grindstone, Press, Generator). - Generator lead visual: the Generator now has a
BlockEntityRendererthat calls the sharedLeadRenderer, so the rope between the attached worker and the block actually draws (matching the Chopper / Grindstone / Press). - Work Saddle now renders the captured mob: the saddle uses a
horsepowered:carryingitem-property override. When empty, the item uses the regular vanilla saddle 2D sprite. When carrying, the override switches to abuiltin/entity-parented model backed by aBlockEntityWithoutLevelRendererthat draws the vanilla saddle sprite as the base and overlays a scaled 3D preview of the carried mob on top (entity cached by UUID).
Datapack / API
tier,priority, andhungerCostare all optional fields on grinding and chopping recipes. Defaults preserve previous behavior.horsepowered:valid_workerentity-type tag governs both worker attachment and Work Saddle pickup.

