Use RegistryOps in the correct places (#10843)

This commit is contained in:
Jake Potrebic 2024-06-02 15:19:17 -07:00
parent 97ed3762cf
commit 5db39ab195

View File

@ -1594,7 +1594,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ +
+ @Override + @Override
+ public @NotNull BinaryTagHolder asBinaryTag() { + public @NotNull BinaryTagHolder asBinaryTag() {
+ return BinaryTagHolder.encode(this.codec.encodeStart(NbtOps.INSTANCE, this.value).getOrThrow(IllegalArgumentException::new), NBT_CODEC); + return BinaryTagHolder.encode(this.codec.encodeStart(CraftRegistry.getMinecraftRegistry().createSerializationContext(NbtOps.INSTANCE), this.value).getOrThrow(IllegalArgumentException::new), NBT_CODEC);
+ } + }
+ } + }
+ +
@ -1622,7 +1622,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ // Style + // Style
+ +
+ public static net.minecraft.network.chat.Style asVanilla(final Style style) { + public static net.minecraft.network.chat.Style asVanilla(final Style style) {
+ final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry()); + final RegistryOps<Object> ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE);
+ final Object encoded = AdventureCodecs.STYLE_MAP_CODEC.codec() + final Object encoded = AdventureCodecs.STYLE_MAP_CODEC.codec()
+ .encodeStart(ops, style).getOrThrow(IllegalStateException::new); + .encodeStart(ops, style).getOrThrow(IllegalStateException::new);
+ +
@ -1631,7 +1631,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ } + }
+ +
+ public static Style asAdventure(final net.minecraft.network.chat.Style style) { + public static Style asAdventure(final net.minecraft.network.chat.Style style) {
+ final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry()); + final RegistryOps<Object> ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE);
+ final Object encoded = net.minecraft.network.chat.Style.Serializer.CODEC + final Object encoded = net.minecraft.network.chat.Style.Serializer.CODEC
+ .encodeStart(ops, style).getOrThrow(IllegalStateException::new); + .encodeStart(ops, style).getOrThrow(IllegalStateException::new);
+ +
@ -1661,7 +1661,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ if (input instanceof AdventureComponent) { + if (input instanceof AdventureComponent) {
+ return ((AdventureComponent) input).adventure; + return ((AdventureComponent) input).adventure;
+ } + }
+ final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry()); + final RegistryOps<Object> ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE);
+ final Object obj = ComponentSerialization.CODEC.encodeStart(ops, input) + final Object obj = ComponentSerialization.CODEC.encodeStart(ops, input)
+ .getOrThrow(s -> new RuntimeException("Failed to encode Minecraft Component: " + input + "; " + s)); + .getOrThrow(s -> new RuntimeException("Failed to encode Minecraft Component: " + input + "; " + s));
+ final Pair<Component, Object> converted = AdventureCodecs.COMPONENT_CODEC.decode(ops, obj) + final Pair<Component, Object> converted = AdventureCodecs.COMPONENT_CODEC.decode(ops, obj)
@ -1671,7 +1671,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ +
+ @Override + @Override
+ public net.minecraft.network.chat.Component serialize(final Component component) { + public net.minecraft.network.chat.Component serialize(final Component component) {
+ final RegistryOps<Object> ops = RegistryOps.create(JavaOps.INSTANCE, CraftRegistry.getMinecraftRegistry()); + final RegistryOps<Object> ops = CraftRegistry.getMinecraftRegistry().createSerializationContext(JavaOps.INSTANCE);
+ final Object obj = AdventureCodecs.COMPONENT_CODEC.encodeStart(ops, component) + final Object obj = AdventureCodecs.COMPONENT_CODEC.encodeStart(ops, component)
+ .getOrThrow(s -> new RuntimeException("Failed to encode adventure Component: " + component + "; " + s)); + .getOrThrow(s -> new RuntimeException("Failed to encode adventure Component: " + component + "; " + s));
+ final Pair<net.minecraft.network.chat.Component, Object> converted = ComponentSerialization.CODEC.decode(ops, obj) + final Pair<net.minecraft.network.chat.Component, Object> converted = ComponentSerialization.CODEC.decode(ops, obj)
@ -1837,6 +1837,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ +
+import com.google.gson.JsonElement; +import com.google.gson.JsonElement;
+import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.CommandSyntaxException;
+import com.mojang.serialization.DynamicOps;
+import com.mojang.serialization.JsonOps; +import com.mojang.serialization.JsonOps;
+import io.papermc.paper.adventure.PaperAdventure; +import io.papermc.paper.adventure.PaperAdventure;
+import java.util.List; +import java.util.List;
@ -1849,6 +1850,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.NbtOps;
+import net.minecraft.nbt.Tag; +import net.minecraft.nbt.Tag;
+import net.minecraft.resources.RegistryOps;
+import org.bukkit.craftbukkit.CraftRegistry;
+import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.checker.nullness.qual.Nullable;
+import org.checkerframework.framework.qual.DefaultQualifier; +import org.checkerframework.framework.qual.DefaultQualifier;
@ -1865,6 +1868,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ return ID; + return ID;
+ } + }
+ +
+ private static <T> RegistryOps<T> createOps(final DynamicOps<T> delegate) {
+ return CraftRegistry.getMinecraftRegistry().createSerializationContext(delegate);
+ }
+
+ @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes"})
+ @Override + @Override
+ public Iterable<DataComponentValueConverterRegistry.Conversion<?, ?>> conversions() { + public Iterable<DataComponentValueConverterRegistry.Conversion<?, ?>> conversions() {
@ -1872,7 +1879,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ DataComponentValueConverterRegistry.Conversion.convert( + DataComponentValueConverterRegistry.Conversion.convert(
+ PaperAdventure.DataComponentValueImpl.class, + PaperAdventure.DataComponentValueImpl.class,
+ GsonDataComponentValue.class, + GsonDataComponentValue.class,
+ (key, dataComponentValue) -> gsonDataComponentValue((JsonElement) dataComponentValue.codec().encodeStart(JsonOps.INSTANCE, dataComponentValue.value()).getOrThrow()) + (key, dataComponentValue) -> gsonDataComponentValue((JsonElement) dataComponentValue.codec().encodeStart(createOps(JsonOps.INSTANCE), dataComponentValue.value()).getOrThrow())
+ ), + ),
+ DataComponentValueConverterRegistry.Conversion.convert( + DataComponentValueConverterRegistry.Conversion.convert(
+ GsonDataComponentValue.class, + GsonDataComponentValue.class,
@ -1882,13 +1889,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ if (type == null) { + if (type == null) {
+ throw new IllegalArgumentException("Unknown data component type: " + key); + throw new IllegalArgumentException("Unknown data component type: " + key);
+ } + }
+ return new PaperAdventure.DataComponentValueImpl(type.codecOrThrow(), type.codecOrThrow().parse(JsonOps.INSTANCE, dataComponentValue.element()).getOrThrow(IllegalArgumentException::new)); + return new PaperAdventure.DataComponentValueImpl(type.codecOrThrow(), type.codecOrThrow().parse(createOps(JsonOps.INSTANCE), dataComponentValue.element()).getOrThrow(IllegalArgumentException::new));
+ } + }
+ ), + ),
+ DataComponentValueConverterRegistry.Conversion.convert( + DataComponentValueConverterRegistry.Conversion.convert(
+ PaperAdventure.DataComponentValueImpl.class, + PaperAdventure.DataComponentValueImpl.class,
+ DataComponentValue.TagSerializable.class, + DataComponentValue.TagSerializable.class,
+ (key, dataComponentValue) -> BinaryTagHolder.encode((Tag) dataComponentValue.codec().encodeStart(NbtOps.INSTANCE, dataComponentValue.value()).getOrThrow(), PaperAdventure.NBT_CODEC) + (key, dataComponentValue) -> BinaryTagHolder.encode((Tag) dataComponentValue.codec().encodeStart(createOps(NbtOps.INSTANCE), dataComponentValue.value()).getOrThrow(), PaperAdventure.NBT_CODEC)
+ ), + ),
+ DataComponentValueConverterRegistry.Conversion.convert( + DataComponentValueConverterRegistry.Conversion.convert(
+ DataComponentValue.TagSerializable.class, + DataComponentValue.TagSerializable.class,
@ -1899,7 +1906,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ throw new IllegalArgumentException("Unknown data component type: " + key); + throw new IllegalArgumentException("Unknown data component type: " + key);
+ } + }
+ try { + try {
+ return new PaperAdventure.DataComponentValueImpl(type.codecOrThrow(), type.codecOrThrow().parse(NbtOps.INSTANCE, tagSerializable.asBinaryTag().get(PaperAdventure.NBT_CODEC)).getOrThrow(IllegalArgumentException::new)); + return new PaperAdventure.DataComponentValueImpl(type.codecOrThrow(), type.codecOrThrow().parse(createOps(NbtOps.INSTANCE), tagSerializable.asBinaryTag().get(PaperAdventure.NBT_CODEC)).getOrThrow(IllegalArgumentException::new));
+ } catch (final CommandSyntaxException e) { + } catch (final CommandSyntaxException e) {
+ throw new IllegalArgumentException(e); + throw new IllegalArgumentException(e);
+ } + }
@ -5923,7 +5930,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ JavaOps.INSTANCE, + JavaOps.INSTANCE,
+ JsonOps.INSTANCE + JsonOps.INSTANCE
+ ) + )
+ .map(ops -> RegistryOps.create(ops, AbstractTestingBase.REGISTRY_CUSTOM)) + .map(ops -> AbstractTestingBase.REGISTRY_CUSTOM.createSerializationContext(ops))
+ .toList(); + .toList();
+ } + }
+ +