Skip to content

IF Registry Sync Fix

Fixes Immersive Furniture losing custom furniture designs when a server has more than 128 of them. Players were missing furniture because whole batches of the furniture list never reached their client.

What it does

  • When a player joins, Immersive Furniture sends the server's furniture registry to them in batches. It reuses one map for every batch and clears it right after queueing the send. The network layer encodes the message later, so by then the map is empty or holds the next batch. On a registry of 128 or more entries, whole batches are lost.
  • This mod sends each batch with its own copy of the map, so every batch arrives intact.
  • Nothing else changes.

Server-side only. Clients install nothing. Requires Immersive Furniture 0.2.2+1.21.1 exactly.

How players use it

Players do not interact with this mod. All server furniture designs show up for them.

Staff guide

There are no commands. If players report missing or invisible custom furniture after joining, check that this mod is loaded.

Configuration

None.

Data and storage

None.

Troubleshooting

Symptom Cause Fix
Some custom furniture is missing for players Mod not loaded, or the server has a different Immersive Furniture version Check the boot line below and the Immersive Furniture version
Server will not boot after an Immersive Furniture update The mod requires 0.2.2+1.21.1 and its mixin must match twice Check whether the upstream bug is fixed. If not, update the mixin and the version range

Boot line:

Immersive Furniture registry sync fix loaded; each registry batch is sent as its own copy

Maintainer notes

  • One mixin: ServerFurnitureRegistryMixin redirects both Network.sendToPlayer calls in ServerFurnitureRegistry.syncWithPlayer (require = 2) and wraps a FurnitureRegistryMessage in a new HashMap copy before sending.
  • displayTest="IGNORE_SERVER_VERSION" and side="SERVER" dependencies keep clients from needing it.
  • Running on build only for now.

Building

gradle build

This repo has no Gradle wrapper. Use a local Gradle, or run another mod's wrapper with -p <this folder>. Output: build/libs/ifregistrysyncfix-<version>.jar.

Full command, permission and config tables: Reference.