StaticLogistics

Adds the ability to link any two container blocks to transfer items, liquids, or energy between them wirelessly.

File Details

staticlogistics-1.0.2.jar

  • R
  • May 31, 2026
  • 635.81 KB
  • 0
  • 1.21.1
  • NeoForge

File Name

staticlogistics-1.0.2.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:staticlogistics-1555698:8173915"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Features

  • Unified Node Configurator: Face configuration and container upgrades are now in a single screen — no more switching between two UIs. Filter slots, channel colors, strategy buttons, and upgrade slots all in one place.
  • Upgrade Stat Tooltips: Hovering upgrade slots now shows calculated stats (speed, range, cross-dimension, stack multiplier) right in the tooltip, with base values for comparison.
  • Customizable Blueprint Copy: Blueprint now copies only faces belonging to your selected group.

Performance

  • Lock-free context pool: TransferContext pool switched from ArrayDeque + ReentrantLock to ConcurrentLinkedDeque, eliminating ~300 lock acquisitions per tick.
  • Boxing-free cooldown cleanup: CooldownManager full-clean and removeAllForSourceKey now use primitive iterators instead of removeIf() lambdas, eliminating per-entry Long boxing.
  • Per-dimension cooldown counters: Cooldown full-clean no longer scans all dimensions at once. Each dimension tracks its own counter, distributing cleanup work across ticks.
  • Ticker compute() removal: ConcurrentHashMap.compute() in the hot ticker loop replaced with get() + put(), avoiding per-tick hash-bin locking.

Architecture

  • Energy hardcoding eliminated: TransferType now has requiresCooldown and requiresValidLinks behavioral flags. Energy is registered with (false, false) — no more type.capability() == EnergyStorage.BLOCK checks in the ticker.
  • LinkManager split: 610-line monolith split into FaceConfigHandler (147 lines, face config lifecycle) and LinkManager (195 lines, coordination layer). Public API unchanged.

Fixes

  • Fluid filter pass-through: AbstractLogisticsFilter.testFluid() default changed from false to true. Previously, configuring an item-only filter would reject all fluids. Now fluids pass through unless explicitly filtered.
  • Phantom empty groups: Removed premature addKnownGroup() call from syncSettings(). Groups now only appear in the GUI list when confirmed by server sync, not on every mode switch interaction.
  • Blueprint Wireframe: The selection box during blueprint copy now shows the exact region you selected.
  • Cascade Link Cleanup: Removing a face now properly cleans up all connected links — zombie nodes with no links but visible wireframes are gone.
  • Blueprint Paste Stability: Fixed face configs occasionally not being applied to all faces during paste.
  • Concurrent Config Crash: Fixed a rare crash when the server tried to save face configs while they were being modified.

UI Improvements

  • Filter Config Button: The button to open filter settings now appears below the filter slot instead of beside it.
  • New Group Widget: Simplified the "+" new group area — the confirm zone is now the rightmost part of the input bar.
  • Cycle Button Tooltips: Hovering strategy/extraction mode buttons now shows both the label and the current value.
  • Tooltip Layering: All tooltips now render on top of other UI elements.

Additions

  • /sl list command: Lists all active logistics groups with member node positions, faces, and roles.
  • Player head rendering: Group panel now shows real player skins instead of default heads. Owner GameProfile (with skin textures) is stored in FaceConfig NBT, synced to clients, and refreshed on player login for skin updates.
  • @Nullable annotations: Added 10+ annotations across 6 files for methods returning null (getActiveUpgradeType, posFromString, handleClick, getHoveredType, etc.).
  • Link Config Setters: Channel, strategy, and other setters now skip unnecessary processing when the value hasn't changed.
  • Face Config Group Query: Group ID queries are now snapshot-based, preventing thread conflicts during network sync.

Documentation

  • README rewrite: Both English and Chinese READMEs completely rewritten with accurate upgrade types (7x5 tiers), strategies (5 distribution + 2 extraction), commands (11 total), and config sections matching the actual SLConfig.java defaults.