Whispering Currents v1.1.0.14
Curse Maven Snippet
What's new
Changelog
1.1.0.14
Fixed
- pathIndex off-by-one (
FlyingItemData.java): pathIndex started at 0, targeting the item's own source position. For 2-node paths, this caused instant teleport on the next tick. Changed topathIndex = 1. - Last-node position snap removed (
advanceFlight): item now flies the final approach instead of teleporting. - Food priority removed (
serveNextFurnace): ores and food treated equally — first smeltable item in any chest goes in. Fuel no longer blocks input dispatch. trySendInputcleaned up: removed deadfoodOnlyparameter.
Added
- Flight mode config (
ModConfig.java):flightModeoption with four modes —TELEPORT,DIRECT_LINEAR,MAGNET,PATHFINDING(default). Full descriptions in config comments.
Changed
spawnFlight: only computes A*/ceiling path inPATHFINDINGmode. Other modes use a direct 2-node path.tick/syncClients: skipped entirely inTELEPORTmode (age-only wait, then deposit).advanceFlight: handles null/empty path with direct lerp from source to target.
1.1.0.13
Fixed
- Waypoints bypassing LOS and ceiling-routing: stale waypoints in
WaypointSavedData(placed byPathWhistleItem) caused every flight to routesource → waypoint → targetvia plain A*, ignoring LOS fast-path and ceiling-routing. All items converged on the same fixed coordinate. Removed!waypoints.isEmpty()early return.
1.1.0.12
Fixed
hasLineOfSight3Dblock pass-through: two math errors caused items to clip through walls:steps = ceil(distance)→steps = ceil(max(|dx|,|dy|,|dz|))— guaranteed at least one sample per block on the longest axis.(int) Math.round(...)→BlockPos.containing(...)— floors correctly instead of rounding past block boundaries.
1.1.0.11
Added
- Direct 3D line-of-sight fast-path in
findPath: before ceiling-rise or A*, checks if the direct 3D line from source to target is clear. When clear, items fly directly in a single diagonal segment. hasLineOfSight3D(Vec3, Vec3, Level)— DDA raycast in 3D at 1-block resolution.hasLineOfSight(BlockPos, BlockPos, Level)— 2D ceiling-level LOS for A* skip infindCeilingPath.
Changed
findPathnow attempts direct 3D LOS before ceiling-rise + A* fallback.
1.1.0.10
Changed
- Client-side spring smooth — replaced linear lerp with spring-damper follower.
- Client-side parametric drift — Lissajous-style sine offset at 60fps instead of server-side every 3 ticks.
- Reduced particles —
random.nextInt(20)→frame % 20 == 0(1 particle/sec/flight max).
Removed
applyDriftfrom server sync,prevPositionfromFlightBuffer, unusedShapesimport.
1.1.0.9
Changed
- Sequential furnace dispatch: one furnace per 20 ticks (1s), round-robin via
furnaceIndex. Fuel → food → other smeltable. No burst spawning. SCAN_INTERVAL: 40 → 20 ticks.- Removed
lastDispatchTickper-target cooldown (replaced by sequential dispatch).
Added
furnaceIndexfield inLinkAttachmentBlockEntitywith NBT persistence.
1.1.0.8
Removed
addChaos()fromFlyingItemPathfinder— was offsetting path nodes by ±1.5 blocks, causing whip/snap oscillation.
Changed
- Last path segment (ceiling descent) is now instant — item teleports into machine on arrival.
1.1.0.7
Added
lastDispatchTickper-target cooldown (100 ticks max 1 dispatch per target).countActiveFlightsTo(BlockPos, int slot)— slot-aware tracking.
Fixed
- Furnace starvation: tracked fuel/input independently per slot instead of a global cap.
- Fuel hoarding: max 2 coal waiting in fuel slot (was
getMaxStackSize()). - Non-fuel in wrong slots:
depositItemreturns early on slot mismatch. - Input priority: two-pass dispatch — smeltable food first, then other items.
1.1.0.6
Fixed
chestToFurnaceInput/chestToFurnaceFuelusedreturninstead ofbreak— skipped all other furnaces after serving the first.
Performance
- Container scan halved:
getContainerPositionsInRange()computed once per tick, passed to both refuel and routing. - A* iterations: 2000 → 400.
- Sync interval: 1 → 3 ticks.
1.1.0.5
Added
countActiveFlightsTo(BlockPos)— counts in-flight items heading to a target.- Max 4 simultaneous inbound flights per furnace (input + fuel combined).
Fixed
- Items cycling between unsorted chests — only move to labeled chests.
- FlightBuffer atomic reference swap — stops render flicker from racing.
1.1.0.4
Fixed
- Items cycling between unsorted chests — only move to labeled chests.
- FlightBuffer atomic reference swap — stops render flicker from racing.
1.1.0.3
Changed
- Flight path: rises to ceiling → A* across → drops to destination.
- Arch-aware collision: only full cubes block items (open doors, slabs, stairs passable).
- Each flight gets a unique slightly-offset path (chaos).
- Sinusoidal drift — items weave subtly during flight.
- Smooth glide interpolation — 60fps lerp between server ticks.
1.1.0.2
Fixed
- Startup fuel starvation — refuel before fuel check.
hasActiveFlightusing wrong position comparison.findBestChestnow prefers sign-labeled chests first.- Block model changed to full cube, blockstate no longer references removed FACING property.
Added
- Fuel-warning log message when out of coal.
1.1.0.1
Added
- Link Attachment is now a standalone logistics node (full block, no wall-facing).
- Auto-senses all containers within range (configurable 4–16 blocks).
- Furnace I/O — takes output to chests, feeds input/fuel from chests.
- Chest sorting by sign labels (Wood, Stone, Ore, Metal, Food, Misc).
- Auto-writes blank signs with matching category.
- Fuel system — consumes coal/charcoal from nearby chests.
Changed
- LinkNeedle is now an info/config tool (right-click = info, shift-right-click = cycle range).
Removed
- Old manual linking/target system.
1.0.4.6
Changed
ConcurrentHashMapfor thread safety.canAttackBlockreturns false to prevent creative breakage.- Debug info in "No output target stored" message.
1.0.4.5
Removed
- Entire GUI, menu, and packet code.
- Frequency, mode, filter system.
- Old two-click LinkNeedle pairing (
LinkSavedData/OutputLinkSavedData).
Added
- LinkNeedle wand — right-click container sets output, right-click attachment links.
- LinkAttachment stores direct
BlockPostarget — no freq/mode/filter. - Recipe: redstone + stone pressure plate.
Changed
ServerTickHandleruses direct source→target item pushing.
1.0.4.4
Changed
- New GUI with ◄/► arrow frequency selector.
- Freq at top, mode/filter below, slots at bottom.
- Placement now faces toward container.
Fixed
- Filter buttons no longer overflow GUI bounds.
- Slot positions aligned with background blit.
1.0.4.3
Fixed
- GUI crash (
renderBginfinite recursion withrenderBackground). - Placement direction.
1.0.4.2
Fixed
- Placement direction 180° off (restored player-facing).
1.0.4.1
Fixed
- GUI crash on menu open (null buffer).
- Hitbox 180° off from model.
- Block placement direction inverted.
- Missing texture warnings (wrong namespace).
Added
- Item model for inventory/hand icon.
1.0.4.0
Added
- Link Attachment block with GUI (frequency, mode, filter).
- Auto-pairing by frequency, whitelist/blacklist filtering.
- Attachment processing in scanner (every 40 ticks).
- Coexists with LinkNeedle direct links.
1.0.3.3
Added
- Output links: furnace → chest for smelted items.
- Output link processing in scanner.
- Bidirectional unlink: sneak-click either endpoint.
Changed
- LinkNeedle flow: clicking a furnace first marks it for output linking.
depositItemhandles both furnace deposits (slot 0/1) and chest deposits.
1.0.3.2
Fixed
- Flight tick was locked behind 40-tick scan interval — items now tick every game tick.
- Multiple items could fly simultaneously for the same link —
hasActiveFlight()guard added. - Particle frequency reduced:
nextInt(3)→nextInt(20)(~5%/tick). - Sync interval: 2 → 1 tick.
1.0.3.1
Fixed
- Crash:
aStar()returnedList.of()(immutable) — caller triedadd(), causingUnsupportedOperationExceptionwhen A* failed.
Changed
- LinkNeedle: normal click = link, sneak + click = unlink.
1.0.3
Fixed
- LinkNeedle double-processing on client+server in single player — client consumed pending chest before server could use it. All
pendingChestsoperations guarded withlevel.isClientSide.
1.0.2
Fixed
@EventBusSubscribermissingmodid— furnace scanner never registered, no items ever flew.- Added debug logging and
LOGfield to main mod class.
1.0.1
Changed
- Entity-based flight removed — deleted
FlyingItemEntity,ModEntities, entity renderer. - New data-driven flight —
FlyingItemManagerticks flight state server-side, no entities. - Furnace scanner —
ServerTickHandlerchecks linked furnaces every 40 ticks. - Persistent links —
LinkSavedData,WaypointSavedDataper dimension. - Client sync —
FlyingItemPacketcustom payload. - Client renderer —
ClientFlyingItemRendererviaRenderLevelStageEvent. - Link Needle — redesigned to two-click workflow (chest → furnace).
Fixed
getBurnTime,SavedData,@EventBusSubscriberAPIs for NeoForge 1.21.1.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

