Releases: Zaldaryon/Synergy
Release list
v1.1.24
Fixes hostile mobs rendering at stale positions after burst packet loss. ACKs are now exact per-datagram: when a snapshot generation splits across multiple UDP datagrams, receiving one datagram no longer acknowledges entities in a lost sibling. Entity baselines promote only when the exact datagram carrying that entity is acknowledged.
v1.1.23
v1.1.22
Fix dropped items spinning forever after landing. Exclude EntityItem from delta position encoding, distance-based send frequency throttling, and collision fast-path. Integer quantization in delta encoding introduced sub-pixel Y offsets that broke client-side collision detection. Includes v2 ack-based delta protocol for all other entity types. Automated integration test harness for packet-loss testing.
v1.1.21: full-rate AI for feeding, survival, and social tasks
The AI brain throttle now keeps full-rate AI for tasks whose urgency does not depend on how far away a player is:
- Animals that still need to eat to breed are never throttled, so feeding, breeding, and domestication generation progress are not delayed.
- Land animals escaping water and aquatic creatures stranded on land react immediately.
- Owned pets answer their owner and herd animals stay together at any distance.
Diagnostics: the aithrottle dump now reports feedBypass and safetyBypass counts.
v1.1.20
Load-adaptive activation range and AI throttle.
- Activation range shrinks proportionally to tick duration when server exceeds 200ms/tick (floor: 16 blocks)
- AI brain throttle scales DEAR divisor down under server pressure
- Post-save cooldown halves activation range for 3 ticks after autosave
- Servers under heavy load recover in 2-3 ticks instead of staying overloaded for minutes
Config: AdaptiveRangeEnabled (true), AdaptiveRangeMinBlocks (16), AdaptiveRangeThresholdMs (200)
v1.1.19
Fixed crafting output desync. The InventoryDirtyScan optimization was skipping dirty slot sync for the crafting grid because vanilla's FindMatchingRecipe() writes to dirtySlots directly without calling MarkSlotDirty(). Players could see the craft output appear briefly then vanish, making items uncraftable until another inventory event triggered the sync.
Added postfix patches on FindMatchingRecipe and ConsumeIngredients to properly signal dirty state.
v1.1.18
Fix invisible entities (dropped items, FallingTree) for remote clients when delta encoding is active.
- Client no longer treats relative deltas without a baseline as absolute positions
- Server forces periodic absolute resync for all entities via slot-based stagger
- Entity baselines pruned on despawn to prevent unbounded memory growth
Closes #1.
v1.1.17
Fix VSVillage compatibility: entities from the vsvillage mod are now excluded from activation range sleeping, AI brain throttle, and repulsion throttle. Their custom pathfinding and AI tasks require full ticking to function.
Also includes translations for 11 missing i18n keys across all 30 languages.
v1.1.16
Fixed block tick pooling NullReferenceException that occurred under high time speed or heavy block tick load. Pool reset now guards against overwriting in-flight entries awaiting main thread consumption. Added FluidBlockPos pool for correct fluid block dispatch.
v1.1.15 - Block tick pooling NRE fix
Fix NullReferenceException spam in BlockSoil.OnServerGameTick when Block Tick Pooling is active.
The pooled BlockPos was being passed by reference into BlockPosWithExtraObject, creating a race condition where the position could be overwritten before the main thread consumed it. Additionally, the Activator.CreateInstance path for constructing the wrapper object was fragile with private nested types.
Changes:
- Cache ConstructorInfo at init instead of using Activator.CreateInstance
- Copy position for extra-carrying ticks instead of referencing the pool
- Skip patch entirely if the internal wrapper type can't be resolved
Reported on servers with TerrainSlabs + TerraPrety (more soil blocks = more frequent extra-carrying ticks = higher chance of hitting the race).