File Details
AutomatedTools-1.5.35.jar
- R
- May 13, 2026
- 2.25 MB
- 0
- Early Access
File Name
AutomatedTools-1.5.35.jar
Supported Versions
- Early Access
## 1.5.33 — 2026-05-12
### Fixed
- **Items resting on a slab on top of a hopper are no longer sucked
through.** If any block sits directly above a hopper (slab,
trapdoor, or full block), the item-vacuum is sealed off — items on
that block stay there. Previously fertilized eggs and other items
could vanish through a slab into the hopper below.
## 1.5.32 — 2026-05-12
### Fixed
- **Vertical slabs and other partial blocks now hold back fluid
correctly.** Previously only horizontal half-slabs were recognized.
Quarter, three-quarter, seven-eighth, flat, and vertically-placed
variants are now all treated as fluid blockers — water and lava
cannot fill the empty side of these blocks.
- **Plants no longer break ocean water.** Seaweed, grass, and similar
plants share a half-block collision shape but should never dam
fluid. They are now explicitly excluded from the fluid-blocker
list.
## 1.5.31 — 2026-05-12
### Changed
- **Animals can now stand on hoppers.** Hopper hitbox changed from
the small chest shape to a full block, so chickens, pigs, and other
livestock walk on top of hoppers normally.
- **Hopper item-pickup widened.** The vacuum sphere above the hopper
was enlarged so dropped items (especially eggs that bounce) are
caught reliably even when they don't land dead-centre on the
hopper's top face.
## 1.5.30 — 2026-05-12
### Fixed
- **Fluid no longer leaks between fluid-blocker sweeps.** The trapdoor
and slab fluid-blocker now runs every server tick (~50 ms) and
immediately after the vanilla fluid system, instead of every 0.4 s.
This closes the flicker window where flowing water/lava could
escape past a closed trapdoor or slab between sweeps.
## 1.5.29 — 2026-05-12
### Added
- **Half-blocks now hold back fluid above them**, just like a closed
trapdoor. Place a slab between a water source and the floor below
and the floor stays dry.
## 1.5.28 — 2026-05-12
### Fixed
- **Closed trapdoors now actually block water and lava.** The
fluid-blocker query was looking at the wrong entity type and never
matched any chunk, so the rule from earlier versions did nothing in
practice. Trapdoors now correctly dam fluid on every face.
## 1.5.13 – 1.5.27 — 2026-05-11 → 2026-05-12
### Changed
- Incremental iteration on the dispenser, pipe transfer, hopper
pickup, and trapdoor/fluid systems. Bug fixes and balance tweaks
superseded by the entries above; install **1.5.33 or newer** to get
every fix from this range.
## 1.5.12 — 2026-05-11
### Added
- **Hopper spout now visually aims at the connected container.**
When the hopper detects an adjacent chest / workbench / furnace,
it swaps to one of three pre-rotated visual variants so the spout
points at that container:
- Chest below → `Automated_Tools_Hopper` (spout DOWN, default)
- Chest above → `Automated_Tools_Hopper_Up` (spout UP)
- Chest on a side → `Automated_Tools_Hopper_Side` rotated N / E / S / W
- The base hopper model is now **spout-down** out of the box, matching
what players expect when stacking a hopper on top of a chest.
- Visual-swap is conservative: it only fires while the hopper is
empty, so there is zero risk of inventory loss across the engine
block-state swap.
### Implementation notes
- New BlockyModel files: `Hopper.blockymodel` (rotated -90° around X
from the original DMC source), `Hopper_Up.blockymodel` (+90°), and
`Hopper_Side.blockymodel` (the original "north-pointing" geometry,
used with `VariantRotation: NESW` for sideways facings).
- New item JSONs: `Automated_Tools_Hopper_Up`, `Automated_Tools_Hopper_Side`
(no recipe, hidden category — only spawned by the runtime swap).
- Plugin uses `WorldChunk.setState(..., holder)` so the existing
block-component holder (and therefore `ItemContainer`) is preserved
across the variant swap.
- Helper `tools/rotate_hopper_models.py` re-generates all three model
files from the source if you need to tweak the geometry.
## 1.5.11 — 2026-05-11
### Added
- **Hopper now feeds into a chest from any face — front, back, side,
top, or bottom.** Previously plain hoppers only pushed downward (so
you had to put the hopper on top of the chest). Now if the down
face has no container, the hopper scans the other five faces and
pushes into the first real container it finds. PULL automatically
comes from the opposite face. So you can sit a hopper next to a
chest, behind a workbench, beside a furnace, etc., and it will
feed in.
- The input/output pairing rule (1.5.9) was updated to use the same
adaptive direction. Examples that now work:
- Hopper on the back of a Salvager Workbench (input) + pipe on the
bottom (output).
- Hopper on the side of a chest (input) + pipe on the opposite side
(output).
- Hopper above a chest (input, classic) + pipe on the bottom
(output) — unchanged.
## 1.5.10 — 2026-05-11
### Changed
- Hopper visual now uses the BlockyModel, texture and spout geometry
from the `ForgeDMC-Blocks` mod's hopper. Replaced
`Common/Blocks/Hoppers/Hopper.blockymodel`,
`Common/Blocks/Hoppers/Hopper_Texture.png`, and the generated icon
`Icons/ItemsGenerated/Automated_Tools_Hopper.png` (and its
`Common/Icons/...` duplicate). Function/behavior unchanged — only
the visual model + texture + icon are swapped. Previous assets
preserved as `Hopper.blockymodel.pre_blocksmod` / `*.bak` files in
the source tree.
## 1.5.9 — 2026-05-11
### Added
- **Pipes can now drain processing benches and chests when paired with
an input hopper.** Attach a hopper to any face of a workbench /
furnace / cooking station / chest so the hopper's front points into
it (this is the INPUT). Then attach a pipe to any *other* face — the
pipe automatically becomes the OUTPUT and pulls items out of that
container into the pipe network. Works on all six faces (top,
bottom, north, south, east, west).
- Salvager Workbench example: hopper feeding raw scrap into the back,
pipe at the bottom feeding salvaged parts away into a sorting
network. Also lets you auto-extract smelted bars from furnaces and
cooked food from cooking stations.
- Single-attachment behavior is unchanged: a chest with only a hopper
on top still just receives items; nothing is auto-pulled until you
attach a pipe (or another mover) to a different face.
### Implementation notes
- Detection rule: a facing-less pipe checks each non-pipe container
neighbor and asks "does any other face of this container have a
hopper whose front points back at it?" If yes, the pipe is allowed
to pull from it. Only hopper-with-explicit-facing counts as an
input marker; adjacent pipes do not (would create ambiguous
bidirectional pulls).
## 1.5.8 — 2026-05-11
### Performance
- **Massive pipe-network CPU reduction.** Three changes in
`PipeTransferSystem`:
1. Empty facing-less pipe blocks now early-out before doing any
work. Previously every pipe ran up to **18 full BFS traversals**
of the connected network *every 0.4s* (3 push passes × 6
directions), even if it had nothing to push.
2. `PIPE_TRACE_LIMIT` lowered from `Integer.MAX_VALUE` → `512`,
putting a hard ceiling on a single BFS visit count.
3. Removed the `nonPipeNeighbors` diagnostic list that was being
allocated and string-formatted on every failed BFS — its only
consumer was the silenced `BFS-EXHAUSTED` log line.
## 1.5.7 — 2026-05-11
### Fixed
- **Eliminated severe in-game lag caused by per-tick log spam.** The
`PipeTransferSystem` BFS diagnostic was writing dozens of `INFO`
lines per pipe network every tick (BFS-EXHAUSTED, nonPipe-adj,
PUSH/PULL, etc.) — disk I/O on the server log was tanking
framerate. Logger level is now set to `WARNING` in a static
initializer, silencing all routine pipe diagnostics. Set back to
`Level.INFO` if you need to debug pipe routing.
## 1.5.6 — 2026-05-11
### Changed
- **Hopper height stretched further (Y × 10/9).** Container is now
~10 voxels tall and the model tops out at y≈40, giving it the
vertical presence of a normal block in-world. Width is unchanged.
## 1.5.5 — 2026-05-11
### Changed
- **Hopper stretched vertically to fill the full block height (32).**
Width (XZ) is unchanged from 1.5.3. Y position, Y offset, and Y size
of every funnel part scaled by 32/17 so the top container now caps
exactly at y=32 while the spout still sits on the floor.
## 1.5.4 — 2026-05-11
### Changed
- **Hopper recolored to match the pipe slate-blue tone.** Sampled the
average color of `LargePipe_Texture.png` (89,94,99) vs the original
hopper texture (63,63,65), and applied a constant +26R/+31G/+34B
shift to the hopper's block texture and the three generated icons.
Original textures preserved as `*.png.bak`.
## 1.5.3 — 2026-05-11
### Changed
- **Hopper scaled uniformly to 50%** of the 1.1.0 size. All XYZ
dimensions, offsets, and Y positions of every funnel part halved.
The silhouette and proportions are identical to 1.5.2 — it just
occupies half the block height/width.
## 1.5.2 — 2026-05-11
### Reverted
- Reverted the 1.5.1 top-container resize. Hopper geometry is back to
the original 1.1.0 model exactly as restored in 1.5.0.
## 1.5.1 — 2026-05-11
### Changed
- **Hopper top container widened to 32×32** (full block width). All
other parts (`upper_base`, `middle`, `chute_upper`, `chute_lower`,
`spout`) keep their original 1.1.0 sizes and Y positions, so the
funnel taper and overall scale are unchanged — only the topmost
ring is now flush with the block boundary.
## 1.5.0 — 2026-05-11
### Changed
- **Restored original 1.1.0 hopper model and textures.** The funnel
geometry experiments in 1.4.7–1.4.9 are reverted in favor of the
proven 1.1.0 hopper. All 8 hopper-related assets (blockymodel,
block texture, item icons, server item JSON) are sourced from the
preserved `AutomatedTools-1.1.0.jar` backup.
## 1.4.9 — 2026-05-11
### Changed
- **Hopper top now reads as a full 1×1 block-sized cap.** The previous
rim was 32×32 but only 4 voxels tall, so it looked like a thin lip.
The container ring is now a proper 32×32×8 slab spanning the upper
third of the block (Y 24..32). The funnel taper (26→22→16→12→8) and
the square nozzle below it are unchanged in shape.
## 1.4.8 — 2026-05-11
### Changed
- **Hopper redesigned as a stepped funnel** (Minecraft-style): wide
flat rim filling the full block width on top, three inward-stepping
rings forming the funnel walls, and a square nozzle pillar poking
out the bottom center. Per-ring X/Z sizes:
- rim 32×32, top step 28×28, mid step 22×22, lower step 16×16,
neck 12×12, nozzle 8×8.
- heights: rim 4, top 4, mid 6, lower 4, neck 4, nozzle 10.
Total Y range 0..32 (nozzle 0..10 sits at the bottom of the block,
rest stacks up to fill the full block).
## 1.4.7 — 2026-05-11
### Fixed
- **Critical: Hopper rendering as a plain block.** Versions 1.4.2–1.4.6
shipped `Hopper.blockymodel` with a UTF-8 BOM at the start of the
file (introduced by PowerShell's `Set-Content -Encoding UTF8` during
the geometry-edit passes). Hytale's blockymodel parser failed
silently on the BOM and fell back to the default cube shape, so the
hopper visually appeared as a solid block regardless of which
geometry version was deployed. The file is now written as bare UTF-8
(no BOM) and the original tapered funnel renders correctly again.
## 1.4.6 — 2026-05-11
### Reverted
- Reverted all hopper-model geometry changes from 1.4.2, 1.4.4 and
1.4.5 (Y-shift, X/Z resize, spout bend). Hopper.blockymodel is now
byte-identical to the original: container 24×10×24, upper_base
28×4×28, middle 22×8×22, chute_upper 16×8×16, chute_lower 12×4×12,
spout 8×2×8, all centered on (0, 0..30, 0). Pipe-network behavior
(1.4.0 ProcessingBench integration, 1.4.1 fuel-aware push) and 1.3.0
recipes are unaffected.
## 1.4.5 — 2026-05-11
### Changed
- **Hopper spout now bends toward its connection point.** Each of the
four orientation variants (sw / nw / ne / se) shifts the spout
6 voxels and the lower chute 3 voxels in the variant's world-front
direction:
- `sw` (0° rotation): bends toward -Z
- `nw` (-90° Y): bends toward -X
- `ne` (180° Y): bends toward +Z
- `se` (+90° Y): bends toward +X
Result: the spout visibly leans toward the block the hopper outputs
into. Upper container/rim geometry is unchanged so the funnel still
reads as a normal hopper from above. **If the bend points away from
the connection in-game, signs only need flipping in one place** —
the per-variant direction table in `Hopper.blockymodel`.
## 1.4.4 — 2026-05-11
### Changed
- **Hopper resized so the top rim fills a full 1×1 block (32×32),
tapering down to the funnel spout.** Heights and Y-positions are
unchanged — pure X/Z scaling per node, so the funnel silhouette is
preserved and the spout still hangs slightly below the block. New
X/Z sizes per ring: rim 32, container 28, middle 26, chute upper 18,
chute lower 14, spout 10.
## 1.4.3 — 2026-05-11
### Reverted
- Reverted the 1.4.2 hopper-model Y-shift. The simple +2 translation
fixed the "sunken" look but changed the funnel's visual relationship
with the block below it. Hopper geometry is back to the original
-2..30 Y range pending a proper resize that preserves the funnel
silhouette.
## 1.4.2 — 2026-05-11
### Changed
- **Hopper model now occupies a normal 1×1×1 block volume.** The mesh's
spout previously poked 2 voxels below the block boundary (Y range
-2..30), which made the hopper look half-sunken when placed on top of
another block and could clip into the floor. All nodes have been
shifted up by +2 (new Y range 0..32) so the model fits exactly inside
one block. No node sizes, widths, depths, textures, or functionality
changed — purely a translation, the hopper looks identical.
## 1.4.1 — 2026-05-11
### Added
- **Fuel-aware push for processing benches.** When pushing into a Furnace,
Salvage Bench, or any other `ProcessingBenchBlock`, the hopper/pipe
network now tries the bench's **fuel** slot first. The fuel slot's own
validator (`canAddItemStack`) accepts only genuine fuel items (coal,
wood, etc.); everything else falls through to the input slot.
- The fuel push bypasses the local `TransferRules` furnace filter (which
restricts the input slot to ore/log) so coal can actually reach the fuel
slot. Slot-level validation still gates acceptance, so non-fuel items
cannot accidentally end up there.
- `NeighborInfo` extended with a `fuelContainer` field; non-bench blocks
leave it `null` and behavior is unchanged.
## 1.4.0 — 2026-05-10
### Added
- **Processing-bench integration with the pipe network.** Furnaces, Salvage
Benches, and any other block that uses Hytale's `ProcessingBenchBlock`
component (cooking stations, tannery, lumbermill, etc.) are now valid
endpoints on a hopper/pipe network.
- **Push (hopper or pipe → bench):** items routed into a processing bench
are deposited into its **input** container — exactly the slot the bench
smelts/processes from.
- **Pull (hopper → bench):** items extracted from a processing bench are
pulled out of its **output** container — finished products only, raw
inputs and fuel are left untouched.
- Works through arbitrarily long pipe networks via the existing BFS
pipe-trace, so a chain of pipes can feed iron ore into a furnace from
one side and ship smelted bars to a chest from another.
- Implementation: `lookupContainerAt` now detects `ProcessingBenchBlock`
in addition to `ItemContainerBlock`. `NeighborInfo` carries separate
`pushContainer` (input) and `pullContainer` (output) refs; for vanilla
single-container blocks (chests, dispensers, etc.) both fields point at
the same container, so behavior is unchanged for non-bench blocks.
## 1.3.0 — 2026-05-10
### Added
- **Crafting recipes for all four mod items.** Items can now be crafted at
the standard vanilla benches instead of only being available via creative.
- `Automated_Tools_Hopper` — **Furniture Bench** (`Furniture_Storage`):
5× `Ingredient_Bar_Iron` + 2× `Wood_Trunk` → 1 hopper. `TimeSeconds: 3`.
- `Automated_Tools_Large_Pipe` — **Workbench** (`Workbench_Crafting`):
3× `Ingredient_Bar_Iron` → 4 pipes. `TimeSeconds: 2`.
- `Automated_Tools_Large_Pipe_Corner` — **Workbench**
(`Workbench_Crafting`): 4× `Ingredient_Bar_Iron` → 2 corners.
`TimeSeconds: 2`.
- `Automated_Tools_Large_Pipe_Mouthpiece` — **Workbench**
(`Workbench_Crafting`): 4× `Ingredient_Bar_Iron` → 2 mouthpieces.
`TimeSeconds: 2`.
### Fixed
- Hopper recipe previously referenced a non-existent `chest` ItemId — the
recipe was effectively uncraftable. Replaced with a valid resource-type
ingredient (`Wood_Trunk`).
- All pipe-family items were missing `BenchRequirement` and so didn't
surface at any crafting station; now properly registered to the
Workbench under the `Workbench_Crafting` category.
---
## 1.2.0 — 2026-05-10
### Added
- **Hopper item-entity vacuum.** Plain hoppers now suck up dropped item
entities lying within ~1.5 blocks of the block directly above them.
Walk up to a hopper, drop items from your inventory, and the hopper
collects them and feeds them into the connected pipe network.
- Pickup sphere is centred 1.0 block above the hopper top, radius 1.5,
so items dropped on the hopper itself or on any of the 8 neighbour
block tops are absorbed.
- Respects Hytale's built-in pickup-delay so a player can't immediately
re-grab an item they just dropped.
- Partial absorbs (hopper fills before the stack is exhausted) leave
the leftover stack on the ground.
- Pipes do **not** vacuum — they remain pure conduits. Only blocks
identified as plain hoppers via `isPlainHopper` participate.
- Throttled diagnostic log line:
`[ATPipes] @(x,y,z) VACUUM hits=N absorbed=A partial=P skipped=S`.
### Internal
- New helper `PipeTransferSystem.tryPickupItemEntities(World, gx, gy, gz, dest)`
using `EntityModule.getItemSpatialResourceType()` →
`SpatialResource.getSpatialStructure().collect(centre, radius, hits)` and
`ItemComponent.addToItemContainer(store, ref, dest)` for absorption.
- All Hytale API calls in the new path are wrapped in defensive try/catch
so a single bad entity ref cannot crash the tick loop.
---
## 1.1.0 — 2026-05-10
### Added
- **Transparent-pipe BFS routing.** Hoppers pushing into a pipe network
perform a breadth-first search through chained
`Automated_Tools_Large_Pipe`, `Automated_Tools_Large_Pipe_Corner`, and
`Automated_Tools_Large_Pipe_Mouthpiece` segments to find the first
reachable container (chest, hopper, etc.) and deposit there directly.
- Diagnostic logging for routing decisions, including
`BFS-EXHAUSTED from src @(x,y,z) entry @(x,y,z)=<pipeId> pipesVisited=N budgetLeft=M`
to debug dead-end networks.
- `PUSH <DIR> -> neighbor @(x,y,z) id=<blockId> container=ok|null`
per-tick traces for each hopper face.
### Fixed
- Item leak when a hopper pushed into a mouthpiece whose downstream pipe
led nowhere — items are now retained in the source until a valid sink
is reachable.
- Routing across mouthpieces of different orientations now correctly
resumes BFS in the downstream pipe direction instead of stopping at
the first non-container neighbour.
---
## 1.0.0 — initial release
### Added
- Custom `Automated_Tools_Hopper` block (5-slot container, configurable
front face DOWN/EAST/WEST/NORTH/SOUTH/UP plus opposite back face).
- Per-tick neighbour-to-neighbour transfer:
- Pull one item per tick from the back-side container.
- Push one item per tick into the front-side container.
- Pipe block family: `Automated_Tools_Large_Pipe`,
`Automated_Tools_Large_Pipe_Corner`,
`Automated_Tools_Large_Pipe_Mouthpiece`.
- Bundled asset pack (icons, models, recipes) registered as
`ForgeDMC:AutomatedTools`.
- `AutomatedToolsBundlePlugin` single-`Main` entrypoint wrapping both
the asset/hopper plugin and the pipe transfer system.