From 2e1d4a82d0d95fc1374db983f382d65bc5f5486d Mon Sep 17 00:00:00 2001 From: AViewFromTheTop <87103914+AViewFromTheTop@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:11:53 -0500 Subject: [PATCH 1/3] WW DEBUG Revert "apple log" This reverts commit e3ba09c109a92f2cde401c0fbea8648b628c5452. Possible Fix apple log Update RemapStateImpl.java Revert "WW DEBUG" This reverts commit 3f2ffa9272163c6640218b2fa72d36165b4b4bda. From 68e42bac16f62292554dfd81e0ae646156f88bcf Mon Sep 17 00:00:00 2001 From: AViewFromTheTop <87103914+AViewFromTheTop@users.noreply.github.com> Date: Tue, 28 Jan 2025 20:53:02 -0500 Subject: [PATCH 2/3] Fix Client Registry Remapping Only Remapping One Registry --- .../impl/client/registry/sync/ClientRegistrySyncHandler.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java index 3a172cd2fe..46894f67f0 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java @@ -105,10 +105,9 @@ public static void apply(RegistryPacketHandler.SyncedPacketData data) throws Rem if (registry instanceof RemappableRegistry remappableRegistry) { remappableRegistry.remap(entry.getValue(), RemappableRegistry.RemapMode.REMOTE); - return; + } else { + throw new RemapException("Registry " + registryId + " is not remappable"); } - - throw new RemapException("Registry " + registryId + " is not remappable"); } } From d394e91657f9a9eff9773499b02f0318ba566e26 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 29 Jan 2025 09:01:52 +0000 Subject: [PATCH 3/3] Add unit test --- .../sync/ClientRegistrySyncHandler.java | 6 +- .../test/registry/sync/RegistryRemapTest.java | 67 +++++++++++++++++++ 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java index 46894f67f0..d821a8dee5 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/impl/client/registry/sync/ClientRegistrySyncHandler.java @@ -103,11 +103,11 @@ public static void apply(RegistryPacketHandler.SyncedPacketData data) throws Rem } } - if (registry instanceof RemappableRegistry remappableRegistry) { - remappableRegistry.remap(entry.getValue(), RemappableRegistry.RemapMode.REMOTE); - } else { + if (!(registry instanceof RemappableRegistry remappableRegistry)) { throw new RemapException("Registry " + registryId + " is not remappable"); } + + remappableRegistry.remap(entry.getValue(), RemappableRegistry.RemapMode.REMOTE); } } diff --git a/fabric-registry-sync-v0/src/test/java/net/fabricmc/fabric/test/registry/sync/RegistryRemapTest.java b/fabric-registry-sync-v0/src/test/java/net/fabricmc/fabric/test/registry/sync/RegistryRemapTest.java index 0e5180d401..62511051e1 100644 --- a/fabric-registry-sync-v0/src/test/java/net/fabricmc/fabric/test/registry/sync/RegistryRemapTest.java +++ b/fabric-registry-sync-v0/src/test/java/net/fabricmc/fabric/test/registry/sync/RegistryRemapTest.java @@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.UUID; @@ -53,6 +54,7 @@ import net.fabricmc.fabric.impl.registry.sync.RemapException; import net.fabricmc.fabric.impl.registry.sync.RemappableRegistry; import net.fabricmc.fabric.impl.registry.sync.packet.DirectRegistryPacketHandler; +import net.fabricmc.fabric.impl.registry.sync.packet.RegistryPacketHandler; public class RegistryRemapTest { private RegistryKey> testRegistryKey; @@ -248,6 +250,71 @@ void missingRemoteEntries() throws RemapException { assertEquals(2, testRegistry.getRawId("two")); } + @Test + void remapRegistryFromPacketData() throws RemapException { + RemappableRegistry remappableRegistry = (RemappableRegistry) testRegistry; + + assertEquals(0, testRegistry.getRawId("zero")); + assertEquals(1, testRegistry.getRawId("one")); + assertEquals(2, testRegistry.getRawId("two")); + + ClientRegistrySyncHandler.apply(new RegistryPacketHandler.SyncedPacketData( + Map.of( + testRegistryKey.getValue(), asFastMap(Map.of( + id("zero"), 2, + id("one"), 1, + id("two"), 0 + )) + ), + Map.of() + )); + + assertEquals(2, testRegistry.getRawId("zero")); + assertEquals(1, testRegistry.getRawId("one")); + assertEquals(0, testRegistry.getRawId("two")); + + remappableRegistry.unmap(); + + assertEquals(0, testRegistry.getRawId("zero")); + assertEquals(1, testRegistry.getRawId("one")); + assertEquals(2, testRegistry.getRawId("two")); + } + + @Test + void remapRegistryFromPacketDataIgnoreOptional() throws RemapException { + RemappableRegistry remappableRegistry = (RemappableRegistry) testRegistry; + + assertEquals(0, testRegistry.getRawId("zero")); + assertEquals(1, testRegistry.getRawId("one")); + assertEquals(2, testRegistry.getRawId("two")); + + ClientRegistrySyncHandler.apply(new RegistryPacketHandler.SyncedPacketData( + Map.of( + testRegistryKey.getValue(), asFastMap(Map.of( + id("zero"), 2, + id("one"), 1, + id("two"), 0 + )), + Identifier.of("test", "optional"), asFastMap(Map.of( + id("test"), 0 + )) + ), + Map.of( + Identifier.of("test", "optional"), EnumSet.of(RegistryAttribute.OPTIONAL) + ) + )); + + assertEquals(2, testRegistry.getRawId("zero")); + assertEquals(1, testRegistry.getRawId("one")); + assertEquals(0, testRegistry.getRawId("two")); + + remappableRegistry.unmap(); + + assertEquals(0, testRegistry.getRawId("zero")); + assertEquals(1, testRegistry.getRawId("one")); + assertEquals(2, testRegistry.getRawId("two")); + } + private static List receivePayloads(List payloads) throws RemapException { var results = new ArrayList();