From 0ee5e1346726bdc187bb6026b9824cf3f3bd2174 Mon Sep 17 00:00:00 2001 From: Score_Under Date: Wed, 25 Feb 2026 16:34:59 +0000 Subject: [PATCH 1/2] Ensure SyncEntireContainer is not sent before client has started loading in --- .../impl/AccessoriesCapabilityImpl.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java b/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java index 600b89f44..7c5d52986 100644 --- a/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java +++ b/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java @@ -26,6 +26,8 @@ import io.wispforest.endec.util.MapCarrier; import io.wispforest.owo.serialization.RegistriesAttribute; import it.unimi.dsi.fastutil.Pair; +import net.minecraft.core.RegistryAccess; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; @@ -96,11 +98,17 @@ public void reset(boolean loadedFromTag) { if (!(this.entity instanceof ServerPlayer serverPlayer) || serverPlayer.connection == null) return; - var carrier = NbtMapCarrier.of(); + RegistryAccess registryAccess = this.entity.level().registryAccess(); - holder.write(carrier, SerializationContext.attributes(RegistriesAttribute.of(this.entity.level().registryAccess()))); + // Defer update packet until end of tick because client may still be connecting at this point + MinecraftServer server = serverPlayer.server; + server.schedule(server.wrapRunnable(() -> { + var carrier = NbtMapCarrier.of(); - AccessoriesNetworking.sendToTrackingAndSelf(serverPlayer, new SyncEntireContainer(serverPlayer.getId(), carrier)); + holder.write(carrier, SerializationContext.attributes(RegistriesAttribute.of(registryAccess))); + + AccessoriesNetworking.sendToTrackingAndSelf(serverPlayer, new SyncEntireContainer(serverPlayer.getId(), carrier)); + })); } private boolean updateContainersLock = false; From 2a09ed90af59fcca28f4028b999cbff5219918ce Mon Sep 17 00:00:00 2001 From: Score_Under Date: Wed, 25 Feb 2026 23:28:56 +0000 Subject: [PATCH 2/2] style: use "var" for variable decls --- .../accessories/impl/AccessoriesCapabilityImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java b/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java index 7c5d52986..5349d3767 100644 --- a/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java +++ b/common/src/main/java/io/wispforest/accessories/impl/AccessoriesCapabilityImpl.java @@ -98,10 +98,10 @@ public void reset(boolean loadedFromTag) { if (!(this.entity instanceof ServerPlayer serverPlayer) || serverPlayer.connection == null) return; - RegistryAccess registryAccess = this.entity.level().registryAccess(); + var registryAccess = this.entity.level().registryAccess(); // Defer update packet until end of tick because client may still be connecting at this point - MinecraftServer server = serverPlayer.server; + var server = serverPlayer.server; server.schedule(server.wrapRunnable(() -> { var carrier = NbtMapCarrier.of();