[x] This issue is not solved in a development build
Describe the bug
In 1.21, the net.minecraft.core.registries.BuiltInRegistries seems to have two registries with type DataComponentType: the DATA_COMPONENT_TYPE (which already existed in 1.20.6) and the ENCHANTMENT_EFFECT_COMPONENT_TYPE.
Unfortunately for me, it seems like the logic in WrappedRegistry returns the latter when doing WrappedRegistry.getRegistry(MinecraftReflection.getMinecraftClass("core.component.DataComponentType")), as evidenced by:
Exception java.lang.IllegalArgumentException: handle cannot be NULL. [in thread "Triton Async Packet Handler"]
at ProtocolLib.jar/com.comphenix.protocol.wrappers.AbstractWrapper.setHandle(AbstractWrapper.java:29) ~[ProtocolLib.jar:?]
at ProtocolLib.jar/com.comphenix.protocol.wrappers.WrappedRegistrable.<init>(WrappedRegistrable.java:45) ~[ProtocolLib.jar:?]
at ProtocolLib.jar/com.comphenix.protocol.wrappers.WrappedRegistrable.fromHandle(WrappedRegistrable.java:53) ~[ProtocolLib.jar:?]
at ProtocolLib.jar/com.comphenix.protocol.wrappers.WrappedRegistrable.fromClassAndKey(WrappedRegistrable.java:70) ~[ProtocolLib.jar:?]
at ProtocolLib.jar/com.comphenix.protocol.wrappers.WrappedRegistrable.fromClassAndKey(WrappedRegistrable.java:78) ~[ProtocolLib.jar:?]
at Triton.jar/com.rexcantor64.triton.wrappers.items.WrappedPatchedDataComponentMap.<clinit>(WrappedPatchedDataComponentMap.java:43) ~[Triton.jar:?]
Expected behavior
I'm not sure how to fix this. Afaik, this is the first time there are two distinct registries with the same class.
I'm going to try to find a workaround for my plugin quickly (and I'll post it here when I do), but I don't think that would be appropriate to include in ProtocolLib.
One idea I have is to use the key of the Registry (i.e., from the net.minecraft.core.registries.Registries class), but I'm not sure if that would work for old(er) Minecraft versions.
Describe the bug In 1.21, the
net.minecraft.core.registries.BuiltInRegistries
seems to have two registries with typeDataComponentType
: theDATA_COMPONENT_TYPE
(which already existed in 1.20.6) and theENCHANTMENT_EFFECT_COMPONENT_TYPE
.Unfortunately for me, it seems like the logic in![image](https://github.com/dmulloy2/ProtocolLib/assets/7467891/b5cbb357-d6ef-471f-bd0c-f63c0ba703dd)
WrappedRegistry
returns the latter when doingWrappedRegistry.getRegistry(MinecraftReflection.getMinecraftClass("core.component.DataComponentType"))
, as evidenced by:To Reproduce Steps to reproduce the behavior:
causes exception
Expected behavior I'm not sure how to fix this. Afaik, this is the first time there are two distinct registries with the same class. I'm going to try to find a workaround for my plugin quickly (and I'll post it here when I do), but I don't think that would be appropriate to include in ProtocolLib. One idea I have is to use the key of the Registry (i.e., from the
net.minecraft.core.registries.Registries
class), but I'm not sure if that would work for old(er) Minecraft versions.Version Info https://pastebin.com/6kKvT0xc