diff --git a/build-logic/src/main/java/qsl/internal/Versions.java b/build-logic/src/main/java/qsl/internal/Versions.java index 7e9ce1a0e0..128878a27e 100644 --- a/build-logic/src/main/java/qsl/internal/Versions.java +++ b/build-logic/src/main/java/qsl/internal/Versions.java @@ -29,17 +29,17 @@ public final class Versions { /** * The target Minecraft version. */ - public static final MinecraftVersion MINECRAFT_VERSION = new MinecraftVersion("1.21.5"); + public static final MinecraftVersion MINECRAFT_VERSION = new MinecraftVersion("1.21.6"); /** * The Minecraft versions this version of QSL is compatible with. */ - public static final List COMPATIBLE_VERSIONS = versions("1.21.5"); + public static final List COMPATIBLE_VERSIONS = versions("1.21.6"); /** * The target Quilt Mappings build. */ - public static final int MAPPINGS_BUILD = 7; + public static final int MAPPINGS_BUILD = 6; /** * The version of Quilt Loader to use. diff --git a/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/ColorfulBlockEntity.java b/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/ColorfulBlockEntity.java index 1e34359a58..e9631194ff 100644 --- a/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/ColorfulBlockEntity.java +++ b/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/ColorfulBlockEntity.java @@ -28,6 +28,8 @@ import net.minecraft.registry.HolderLookup; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; +import net.minecraft.world.storage.DataReader; +import net.minecraft.world.storage.DataWriter; import org.quiltmc.qsl.block.entity.api.QuiltBlockEntity; @@ -55,11 +57,11 @@ public int getColor() { /* Serialization */ @Override - public void readNbtImpl(NbtCompound nbt, HolderLookup.Provider lookupProvider) { - super.readNbtImpl(nbt, lookupProvider); + public void readNbtImpl(DataReader reader) { + super.readNbtImpl(reader); try { - this.color = Integer.parseInt(nbt.getString("color").orElseThrow(), 16); + this.color = Integer.parseInt(reader.readString("color").orElseThrow(), 16); } catch (NumberFormatException e) { this.color = 0; } @@ -80,14 +82,14 @@ public void refreshRendering() { } @Override - public void writeNbt(NbtCompound nbt, HolderLookup.Provider lookupProvider) { - super.writeNbt(nbt, lookupProvider); - nbt.putString("color", Integer.toHexString(this.color)); + public void writeNbt(DataWriter writer) { + super.writeNbt(writer); + writer.writeString("color", Integer.toHexString(this.color)); } @Override public NbtCompound toSyncedNbt(HolderLookup.Provider lookupProvider) { - return this.toNbt(lookupProvider); + return this.method_38244(lookupProvider); } @Override diff --git a/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/client/BlockEntityTypeTestClient.java b/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/client/BlockEntityTypeTestClient.java index 1f8a31c681..094c79a5d4 100644 --- a/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/client/BlockEntityTypeTestClient.java +++ b/library/block/block_entity/src/testmod/java/org/quiltmc/qsl/block/entity/test/client/BlockEntityTypeTestClient.java @@ -18,7 +18,7 @@ import net.minecraft.block.Block; import net.minecraft.client.color.block.BlockColorProvider; -import net.minecraft.client.render.RenderLayer; +import net.minecraft.unmapped.C_nihubpux; import org.quiltmc.loader.api.ModContainer; import org.quiltmc.loader.api.minecraft.ClientOnly; @@ -42,6 +42,6 @@ public class BlockEntityTypeTestClient implements ClientModInitializer { @Override public void onInitializeClient(ModContainer mod) { - BlockRenderLayerMap.put(RenderLayer.getCutout(), BlockEntityTypeTest.ANGY_BLOCKS.toArray(Block[]::new)); + BlockRenderLayerMap.put(C_nihubpux.CUTOUT, BlockEntityTypeTest.ANGY_BLOCKS.toArray(Block[]::new)); } } diff --git a/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/api/client/BlockRenderLayerMap.java b/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/api/client/BlockRenderLayerMap.java index 78b45fa3fb..4c6d4a431f 100644 --- a/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/api/client/BlockRenderLayerMap.java +++ b/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/api/client/BlockRenderLayerMap.java @@ -19,6 +19,7 @@ import net.minecraft.block.Block; import net.minecraft.client.render.RenderLayer; import net.minecraft.fluid.Fluid; +import net.minecraft.unmapped.C_nihubpux; import org.quiltmc.loader.api.minecraft.ClientOnly; import org.quiltmc.qsl.block.extensions.impl.client.BlockRenderLayerMapImpl; @@ -36,7 +37,7 @@ private BlockRenderLayerMap() {} * @param layer new render layer * @param blocks target blocks */ - public static void put(RenderLayer layer, Block... blocks) { + public static void put(C_nihubpux layer, Block... blocks) { for (var block : blocks) { BlockRenderLayerMapImpl.put(block, layer); } @@ -48,7 +49,7 @@ public static void put(RenderLayer layer, Block... blocks) { * @param layer new render layer * @param fluids target fluids */ - public static void put(RenderLayer layer, Fluid... fluids) { + public static void put(C_nihubpux layer, Fluid... fluids) { for (var fluid : fluids) { BlockRenderLayerMapImpl.put(fluid, layer); } diff --git a/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/impl/client/BlockRenderLayerMapImpl.java b/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/impl/client/BlockRenderLayerMapImpl.java index 388004ff5e..ab979c08d7 100644 --- a/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/impl/client/BlockRenderLayerMapImpl.java +++ b/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/impl/client/BlockRenderLayerMapImpl.java @@ -19,27 +19,28 @@ import java.util.Map; import java.util.function.BiConsumer; -import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap; import org.jetbrains.annotations.ApiStatus; +import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap; import net.minecraft.block.Block; -import net.minecraft.client.render.RenderLayer; import net.minecraft.fluid.Fluid; +import net.minecraft.unmapped.C_nihubpux; import org.quiltmc.loader.api.minecraft.ClientOnly; @ApiStatus.Internal @ClientOnly public final class BlockRenderLayerMapImpl { - private BlockRenderLayerMapImpl() {} + private BlockRenderLayerMapImpl() { + } - private static Map blockMap = new Reference2ReferenceOpenHashMap<>(); - private static Map fluidMap = new Reference2ReferenceOpenHashMap<>(); + private static Map blockMap = new Reference2ReferenceOpenHashMap<>(); + private static Map fluidMap = new Reference2ReferenceOpenHashMap<>(); - private static BiConsumer blockHandler = blockMap::put; - private static BiConsumer fluidHandler = fluidMap::put; + private static BiConsumer blockHandler = blockMap::put; + private static BiConsumer fluidHandler = fluidMap::put; - public static void initialize(BiConsumer blockHandlerIn, BiConsumer fluidHandlerIn) { + public static void initialize(BiConsumer blockHandlerIn, BiConsumer fluidHandlerIn) { // Add pre-existing render layer assignments. if (blockMap != null) { blockMap.forEach(blockHandlerIn); @@ -58,11 +59,11 @@ public static void initialize(BiConsumer blockHandlerIn, BiC fluidMap = null; } - public static void put(Block block, RenderLayer layer) { + public static void put(Block block, C_nihubpux layer) { blockHandler.accept(block, layer); } - public static void put(Fluid fluid, RenderLayer layer) { + public static void put(Fluid fluid, C_nihubpux layer) { fluidHandler.accept(fluid, layer); } } diff --git a/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/mixin/client/RenderLayersMixin.java b/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/mixin/client/RenderLayersMixin.java index e45f237a72..6137500b07 100644 --- a/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/mixin/client/RenderLayersMixin.java +++ b/library/block/block_extensions/src/main/java/org/quiltmc/qsl/block/extensions/mixin/client/RenderLayersMixin.java @@ -18,12 +18,12 @@ import java.util.Map; +import net.minecraft.unmapped.C_nihubpux; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import net.minecraft.block.Block; -import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayers; import net.minecraft.fluid.Fluid; @@ -35,12 +35,12 @@ public abstract class RenderLayersMixin { @Shadow @Final - private static Map BLOCKS; + private static Map BLOCKS; @Shadow @Final - private static Map FLUIDS; + private static Map field_60921; static { - BlockRenderLayerMapImpl.initialize(BLOCKS::put, FLUIDS::put); + BlockRenderLayerMapImpl.initialize(BLOCKS::put, field_60921::put); } } diff --git a/library/block/block_extensions/src/testmod/java/org/quiltmc/qsl/block/extensions/test/ClientInitializer.java b/library/block/block_extensions/src/testmod/java/org/quiltmc/qsl/block/extensions/test/ClientInitializer.java index 4b0bf37229..f8208ce63e 100644 --- a/library/block/block_extensions/src/testmod/java/org/quiltmc/qsl/block/extensions/test/ClientInitializer.java +++ b/library/block/block_extensions/src/testmod/java/org/quiltmc/qsl/block/extensions/test/ClientInitializer.java @@ -16,7 +16,7 @@ package org.quiltmc.qsl.block.extensions.test; -import net.minecraft.client.render.RenderLayer; +import net.minecraft.unmapped.C_nihubpux; import org.quiltmc.loader.api.ModContainer; import org.quiltmc.loader.api.minecraft.ClientOnly; @@ -27,7 +27,7 @@ public final class ClientInitializer implements ClientModInitializer { @Override public void onInitializeClient(ModContainer mod) { - BlockRenderLayerMap.put(RenderLayer.getTranslucent(), Initializer.BLOCK); - BlockRenderLayerMap.put(RenderLayer.getCutout(), Initializer.BLOCK2); + BlockRenderLayerMap.put(C_nihubpux.TRANSLUCENT, Initializer.BLOCK); + BlockRenderLayerMap.put(C_nihubpux.CUTOUT, Initializer.BLOCK2); } } diff --git a/library/core/lifecycle_events/src/testmod/java/org/quiltmc/qsl/lifecycle/test/event/ServerLifecycleTests.java b/library/core/lifecycle_events/src/testmod/java/org/quiltmc/qsl/lifecycle/test/event/ServerLifecycleTests.java index d0598d9c34..6594ee70ff 100644 --- a/library/core/lifecycle_events/src/testmod/java/org/quiltmc/qsl/lifecycle/test/event/ServerLifecycleTests.java +++ b/library/core/lifecycle_events/src/testmod/java/org/quiltmc/qsl/lifecycle/test/event/ServerLifecycleTests.java @@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory; import net.minecraft.server.MinecraftServer; +import net.minecraft.test.TestManager; import org.quiltmc.loader.api.ModContainer; import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; @@ -44,6 +45,9 @@ public void onInitialize(ModContainer mod) { ServerWorldLoadEvents.UNLOAD.register((server, world) -> { LOGGER.info("Unloaded world " + world.getRegistryKey().getValue().toString()); }); + + // method_71664 is startTicking + TestManager.INSTANCE.method_71664(); } @Override diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/LoginPacketSender.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/LoginPacketSender.java index 082472c619..7440913e9d 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/LoginPacketSender.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/LoginPacketSender.java @@ -19,10 +19,10 @@ import java.util.Objects; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.PacketByteBuf; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.login.payload.CustomQueryPayload; @@ -67,7 +67,7 @@ default void sendPacket(Identifier channel, PacketByteBuf buf) { * @param buf the content of the packet * @param listener an optional listener containing callbacks to execute after the packet is sent, may be {@code null} */ - default void sendPacket(Identifier channel, PacketByteBuf buf, @Nullable PacketSendListener listener) { + default void sendPacket(Identifier channel, PacketByteBuf buf, @Nullable ChannelFutureListener listener) { Objects.requireNonNull(channel, "Channel cannot be null"); Objects.requireNonNull(buf, "Payload cannot be null"); diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSendListeners.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSendListeners.java index ac58950784..27adf122ee 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSendListeners.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSendListeners.java @@ -16,11 +16,11 @@ package org.quiltmc.qsl.networking.api; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nullable; import net.minecraft.network.PacketSendListener; -import net.minecraft.network.packet.Packet; /** * Utilities for working with {@link PacketSendListener}s. @@ -34,12 +34,11 @@ public final class PacketSendListeners { * @param runnable the runnable to run on success */ @Contract(value = "null -> null; !null -> new", pure = true) - public static PacketSendListener ifSuccess(Runnable runnable) { + public static ChannelFutureListener ifSuccess(Runnable runnable) { if (runnable == null) return null; - return new PacketSendListener() { - @Override - public void onSuccess() { + return (channelFuture) -> { + if (channelFuture.isSuccess()) { runnable.run(); } }; @@ -53,7 +52,7 @@ public void onSuccess() { * @return the combined packet send listeners, may be {@code null} if both the first and second packet send listeners are {@code null} */ @Contract(value = "_, null -> param1; null, _ -> param2; !null, !null -> new", pure = true) - public static PacketSendListener union(@Nullable PacketSendListener first, @Nullable PacketSendListener second) { + public static ChannelFutureListener union(@Nullable ChannelFutureListener first, @Nullable ChannelFutureListener second) { if (first == null && second == null) { return null; } else if (second == null) { @@ -62,24 +61,9 @@ public static PacketSendListener union(@Nullable PacketSendListener first, @Null return second; } - return new PacketSendListener() { - @Override - public void onSuccess() { - first.onSuccess(); - second.onSuccess(); - } - - @Override - public @Nullable Packet getFailurePacket() { - var firstPacket = first.getFailurePacket(); - var secondPacket = second.getFailurePacket(); - - if (firstPacket == null) { - return secondPacket; - } - - return firstPacket; - } + return (channelFuture) -> { + first.operationComplete(channelFuture); + second.operationComplete(channelFuture); }; } diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSender.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSender.java index d8f1d2a59c..9b8b5a62d4 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSender.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PacketSender.java @@ -18,9 +18,9 @@ import java.util.Objects; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.Nullable; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.packet.Packet; /** @@ -49,7 +49,7 @@ public interface PacketSender { * @param packet the packet * @param listener an optional listener containing callbacks to execute after the packet is sent, may be {@code null} */ - void sendPacket(Packet packet, @Nullable PacketSendListener listener); + void sendPacket(Packet packet, @Nullable ChannelFutureListener listener); /** * Sends a packet to a channel. diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PlayerLookup.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PlayerLookup.java index 52f98ac84c..dff1a77ffa 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PlayerLookup.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/PlayerLookup.java @@ -175,7 +175,7 @@ public static Collection around(ServerWorld world, Vec3d pos return world(world) .stream() - .filter((p) -> p.squaredDistanceTo(pos) <= radiusSq) + .filter((p) -> p.getSquaredDistanceTo(pos) <= radiusSq) .collect(Collectors.toList()); } @@ -194,7 +194,7 @@ public static Collection around(ServerWorld world, Vec3i pos return world(world) .stream() - .filter((p) -> p.squaredDistanceTo(pos.getX(), pos.getY(), pos.getZ()) <= radiusSq) + .filter((p) -> p.getSquaredDistanceTo(pos.getX(), pos.getY(), pos.getZ()) <= radiusSq) .collect(Collectors.toList()); } diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/client/ClientLoginNetworking.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/client/ClientLoginNetworking.java index 98a10131ea..6da78f6119 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/client/ClientLoginNetworking.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/client/ClientLoginNetworking.java @@ -21,13 +21,13 @@ import java.util.function.Consumer; import java.util.stream.Collectors; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.Nullable; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientLoginNetworkHandler; import net.minecraft.network.ClientConnection; import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.listener.PacketListener; import net.minecraft.network.packet.payload.CustomPayload; import net.minecraft.util.Identifier; @@ -171,7 +171,7 @@ public interface QueryRequestReceiver { */ CompletableFuture receive( MinecraftClient client, ClientLoginNetworkHandler handler, PacketByteBuf buf, - Consumer listenerAdder + Consumer listenerAdder ); } } diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/server/ServerPlayNetworking.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/server/ServerPlayNetworking.java index c716a5a8f5..ddc8c17797 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/server/ServerPlayNetworking.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/api/server/ServerPlayNetworking.java @@ -290,7 +290,7 @@ public static void send(Collection players, CustomPayload pa public static MinecraftServer getServer(ServerPlayNetworkHandler handler) { Objects.requireNonNull(handler, "Network handler cannot be null"); - return handler.player.server; + return handler.player.getServer(); } private ServerPlayNetworking() { diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/AbstractChanneledNetworkAddon.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/AbstractChanneledNetworkAddon.java index 97afe4af14..dbd809ef08 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/AbstractChanneledNetworkAddon.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/AbstractChanneledNetworkAddon.java @@ -25,12 +25,12 @@ import java.util.Objects; import java.util.Set; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import net.minecraft.network.ClientConnection; import net.minecraft.network.NetworkPhase; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.payload.CustomPayload; @@ -141,7 +141,7 @@ public void sendPacket(Packet packet) { } @Override - public void sendPacket(Packet packet, PacketSendListener callback) { + public void sendPacket(Packet packet, ChannelFutureListener callback) { Objects.requireNonNull(packet, "Packet cannot be null"); this.connection.send(packet, callback); @@ -174,7 +174,8 @@ public void onCommonVersionPacket(int negotiatedVersion) { @Override public void onCommonRegisterPacket(CommonRegisterPayload payload) { if (payload.version() != this.getNegotiatedVersion()) { - throw new IllegalStateException("Negotiated common packet version: %d but received packet with version: %d".formatted(this.commonVersion, payload.version())); + throw new IllegalStateException( + "Negotiated common packet version: %d but received packet with version: %d".formatted(this.commonVersion, payload.version())); } String currentPhase = this.getPhase(); diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/client/ClientLoginNetworkAddon.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/client/ClientLoginNetworkAddon.java index 2e20052c00..1b3cd4d115 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/client/ClientLoginNetworkAddon.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/client/ClientLoginNetworkAddon.java @@ -20,13 +20,13 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientLoginNetworkHandler; import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.packet.c2s.login.LoginQueryResponseC2SPacket; import net.minecraft.network.packet.payload.CustomPayload; import net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket; @@ -82,13 +82,13 @@ private boolean handlePacket(int queryId, CustomPayload.Id channelName, Packe } PacketByteBuf buf = PacketByteBufs.slice(originalBuf); - var futureListeners = new ArrayList(); + var futureListeners = new ArrayList(); try { CompletableFuture future = handler.receive(this.client, this.handler, buf, futureListeners::add); future.thenAccept(result -> { var response = new LoginQueryResponseC2SPacket(queryId, new PacketByteBufLoginQueryResponsePayload(result)); - PacketSendListener listener = null; + ChannelFutureListener listener = null; for (var each : futureListeners) { listener = PacketSendListeners.union(listener, each); diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerLoginNetworkAddon.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerLoginNetworkAddon.java index f80f2f6060..e45bdda1dc 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerLoginNetworkAddon.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerLoginNetworkAddon.java @@ -26,6 +26,7 @@ import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicReference; +import io.netty.channel.ChannelFutureListener; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -189,7 +190,7 @@ public void sendPacket(Packet packet) { } @Override - public void sendPacket(Packet packet, PacketSendListener listener) { + public void sendPacket(Packet packet, ChannelFutureListener listener) { Objects.requireNonNull(packet, "Packet cannot be null"); this.connection.send(packet, listener); diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerPlayNetworkAddon.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerPlayNetworkAddon.java index f752bd638f..b490d43234 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerPlayNetworkAddon.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/impl/server/ServerPlayNetworkAddon.java @@ -82,7 +82,7 @@ protected void receive(ServerPlayNetworking.CustomChan @Override protected void schedule(Runnable task) { - this.handler.player.server.execute(task); + this.handler.player.getServer().execute(task); } @Override diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/ClientConnectionMixin.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/ClientConnectionMixin.java index bbda341528..d033949418 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/ClientConnectionMixin.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/ClientConnectionMixin.java @@ -22,19 +22,21 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.network.ClientConnection; import net.minecraft.network.NetworkPhase; import net.minecraft.network.NetworkSide; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.listener.PacketListener; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.payload.CustomPayload; @@ -50,9 +52,6 @@ abstract class ClientConnectionMixin implements ChannelInfoHolder { @Shadow private PacketListener packetListener; - @Shadow - public abstract void send(Packet packet, PacketSendListener listener); - @Shadow public abstract void disconnect(Text disconnectReason); @@ -65,17 +64,17 @@ private void initAddedFields(NetworkSide side, CallbackInfo ci) { } // Must be fully qualified due to mixin not working in production without it - @Redirect( + @WrapOperation( method = "exceptionCaught", at = @At( value = "INVOKE", - target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketSendListener;)V" + target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;Lio/netty/channel/ChannelFutureListener;)V" ) ) - private void resendOnExceptionCaught(ClientConnection self, Packet packet, PacketSendListener listener, - ChannelHandlerContext channelHandlerContext, Throwable throwable) { + private void resendOnExceptionCaught(ClientConnection instance, Packet packet, ChannelFutureListener listener, Operation original, @Local(argsOnly = true) Throwable throwable) { if (this.packetListener instanceof DisconnectPacketSource dcSource) { - this.send( + original.call( + instance, dcSource.createDisconnectPacket( Text.translatable("disconnect.genericReason", "Internal Exception: " + throwable) ), @@ -88,7 +87,7 @@ private void resendOnExceptionCaught(ClientConnection self, Packet packet, Pa } @Inject(method = "sendImmediately", at = @At(value = "FIELD", target = "Lnet/minecraft/network/ClientConnection;packetsSentCounter:I")) - private void checkPacket(Packet packet, PacketSendListener listener, boolean flush, CallbackInfo ci) { + private void checkPacket(Packet packet, ChannelFutureListener listener, boolean flush, CallbackInfo ci) { if (this.packetListener instanceof PacketCallbackListener callbackListener) { callbackListener.sent(packet); } diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/client/ClientLoginNetworkHandlerMixin.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/client/ClientLoginNetworkHandlerMixin.java index 51b97508db..a3cdbfd4ed 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/client/ClientLoginNetworkHandlerMixin.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/client/ClientLoginNetworkHandlerMixin.java @@ -69,8 +69,7 @@ private void invokeLoginDisconnectEvent(DisconnectionDetails details, CallbackIn this.addon.handleDisconnect(); } - // old method qm name: onLoginSuccess - @Inject(method = "method_12588", at = @At("HEAD")) + @Inject(method = "onLoginFinished", at = @At("HEAD")) private void handlePlayTransition(CallbackInfo ci) { this.addon.handlePlayTransition(); } diff --git a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/server/ServerLoginNetworkHandlerMixin.java b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/server/ServerLoginNetworkHandlerMixin.java index 90b666d215..63358faa63 100644 --- a/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/server/ServerLoginNetworkHandlerMixin.java +++ b/library/core/networking/src/main/java/org/quiltmc/qsl/networking/mixin/server/ServerLoginNetworkHandlerMixin.java @@ -42,7 +42,7 @@ @Mixin(ServerLoginNetworkHandler.class) abstract class ServerLoginNetworkHandlerMixin implements NetworkHandlerExtensions, DisconnectPacketSource, PacketCallbackListener { @Shadow - protected abstract void method_52419(GameProfile gameProfile); + protected abstract void verify(GameProfile gameProfile); @Unique private ServerLoginNetworkAddon addon; @@ -52,11 +52,11 @@ private void initAddon(CallbackInfo ci) { this.addon = new ServerLoginNetworkAddon((ServerLoginNetworkHandler) (Object) this); } - @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerLoginNetworkHandler;method_52419(Lcom/mojang/authlib/GameProfile;)V")) + @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerLoginNetworkHandler;verify(Lcom/mojang/authlib/GameProfile;)V")) private void handlePlayerJoin(ServerLoginNetworkHandler handler, GameProfile profile) { // Do not accept the player, thereby moving into play stage until all login futures being waited on are completed if (this.addon.queryTick()) { - this.method_52419(profile); + this.verify(profile); } } @@ -68,7 +68,7 @@ private void handleCustomPayloadReceivedAsync(LoginQueryResponseC2SPacket packet } } - @Redirect(method = "method_52419", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getNetworkCompressionThreshold()I", ordinal = 0)) + @Redirect(method = "verify", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getNetworkCompressionThreshold()I", ordinal = 0)) private int removeLateCompressionPacketSending(MinecraftServer server) { return -1; } @@ -78,7 +78,7 @@ private void handleDisconnection(DisconnectionDetails details, CallbackInfo ci) this.addon.handleDisconnect(); } - @Inject(method = "method_52420", at = @At("HEAD")) + @Inject(method = "finishLogin", at = @At("HEAD")) private void handlePlayTransitionNormal(GameProfile profile, CallbackInfo ci) { this.addon.handlePlayTransition(); } diff --git a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/RegistryConfig.java b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/RegistryConfig.java index 40fd00a507..b38926d41e 100644 --- a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/RegistryConfig.java +++ b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/RegistryConfig.java @@ -46,13 +46,13 @@ public static class RegistrySync extends Section { public final TrackedValue modpack_protocol_name = this.value("My Quilt Modpack"); @Comment("Message displayed for players joining with clients incompatible with Registry Sync. Supports strings and Minecraft's JSON text format.") - public final TrackedValue missing_registry_sync_message = this.value(Text.SerializationUtil.toJson(Text.translatableWithFallback("qsl.registry_sync.unsupported_client", """ + public final TrackedValue missing_registry_sync_message = this.value(TextSerializationUtil.toJson(Text.translatableWithFallback("qsl.registry_sync.unsupported_client", """ Unsupported (vanilla?) client! This server requires a modded client to join! """), DynamicRegistryManager.EMPTY)); @Comment("Top part of the message displayed for players joining with incompatible clients. Supports strings and Minecraft's JSON text format.") - public final TrackedValue mismatched_entries_top_message = this.value(Text.SerializationUtil.toJson(Text.translatableWithFallback("qsl.registry_sync.failed_sync", """ + public final TrackedValue mismatched_entries_top_message = this.value(TextSerializationUtil.toJson(Text.translatableWithFallback("qsl.registry_sync.failed_sync", """ Failed to synchronize client with the server! This can happen when client's and server's mods don't match. """), DynamicRegistryManager.EMPTY)); diff --git a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/TextSerializationUtil.java b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/TextSerializationUtil.java new file mode 100644 index 0000000000..0f277ca148 --- /dev/null +++ b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/TextSerializationUtil.java @@ -0,0 +1,43 @@ +/* + * Copyright 2025 The Quilt Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.quiltmc.qsl.registry.impl; + +import com.google.gson.JsonParser; +import com.mojang.serialization.JsonOps; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.RegistryOps; +import net.minecraft.text.Text; +import net.minecraft.text.TextCodecs; +import net.minecraft.util.JsonHelper; + +public class TextSerializationUtil { + public static String toJson(Text text, DynamicRegistryManager registryManager) { + var ops = RegistryOps.create(JsonOps.INSTANCE, registryManager); + var encodeResult = TextCodecs.CODEC.encodeStart(ops, text); + + return JsonHelper.toSortedString(encodeResult.getOrThrow(message -> new RuntimeException("expected text to be encodeable"))); + } + + public static Text fromJson(String json, DynamicRegistryManager registryManager) { + var element = JsonParser.parseString(json); + + var ops = RegistryOps.create(JsonOps.INSTANCE, registryManager); + var encodeResult = TextCodecs.CODEC.decode(ops, element); + + return encodeResult.getOrThrow(message -> new RuntimeException("expected text to be decodeable")).getFirst(); + } +} diff --git a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/ServerPackets.java b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/ServerPackets.java index c90f1d9e62..457634de98 100644 --- a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/ServerPackets.java +++ b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/ServerPackets.java @@ -34,6 +34,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import org.quiltmc.qsl.registry.impl.TextSerializationUtil; import org.quiltmc.qsl.registry.impl.sync.mod_protocol.ModProtocolDef; import org.quiltmc.qsl.registry.impl.sync.registry.RegistryFlag; import org.quiltmc.qsl.registry.impl.sync.registry.SynchronizedRegistry; @@ -339,14 +340,14 @@ public record ErrorStyle(Text errorHeader, Text errorFooter, boolean showError) public static final PacketCodec CODEC = CustomPayload.create(ErrorStyle::write, ErrorStyle::new); public ErrorStyle(PacketByteBuf buf) { - this(Text.SerializationUtil.fromLenientJson(buf.readString(PacketByteBuf.MAX_TEXT_LENGTH), DynamicRegistryManager.EMPTY), - Text.SerializationUtil.fromLenientJson(buf.readString(PacketByteBuf.MAX_TEXT_LENGTH), DynamicRegistryManager.EMPTY), + this(TextSerializationUtil.fromJson(buf.readString(PacketByteBuf.MAX_TEXT_LENGTH), DynamicRegistryManager.EMPTY), + TextSerializationUtil.fromJson(buf.readString(PacketByteBuf.MAX_TEXT_LENGTH), DynamicRegistryManager.EMPTY), buf.readBoolean()); } private void write(PacketByteBuf buf) { - buf.writeString(Text.SerializationUtil.toJson(this.errorHeader, DynamicRegistryManager.EMPTY)); - buf.writeString(Text.SerializationUtil.toJson(this.errorFooter, DynamicRegistryManager.EMPTY)); + buf.writeString(TextSerializationUtil.toJson(this.errorHeader, DynamicRegistryManager.EMPTY)); + buf.writeString(TextSerializationUtil.toJson(this.errorFooter, DynamicRegistryManager.EMPTY)); buf.writeBoolean(this.showError); } diff --git a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/QuiltSyncTask.java b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/QuiltSyncTask.java index 4ba646fa17..b4ca8a75c4 100644 --- a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/QuiltSyncTask.java +++ b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/QuiltSyncTask.java @@ -87,7 +87,7 @@ public void handleUnknownEntry(ClientPackets.UnknownEntry unknownEntry) { public void handleEnd(ClientPackets.End end) { if (this.syncVersion == ProtocolVersions.NO_PROTOCOL && ServerRegistrySync.requiresSync()) { - this.packetHandler.method_52396(ServerRegistrySync.noRegistrySyncMessage); + this.packetHandler.disconnect(ServerRegistrySync.noRegistrySyncMessage); } else { ((ServerConfigurationTaskManager) this.packetHandler).finishTask(TYPE); } diff --git a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/ServerRegistrySync.java b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/ServerRegistrySync.java index 628f9ad394..7a6d75cd07 100644 --- a/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/ServerRegistrySync.java +++ b/library/core/registry/src/main/java/org/quiltmc/qsl/registry/impl/sync/server/ServerRegistrySync.java @@ -54,6 +54,7 @@ import org.quiltmc.qsl.networking.api.server.ServerConfigurationTaskManager; import org.quiltmc.qsl.registry.api.sync.RegistrySynchronization; import org.quiltmc.qsl.registry.impl.RegistryConfig; +import org.quiltmc.qsl.registry.impl.TextSerializationUtil; import org.quiltmc.qsl.registry.impl.sync.ClientPackets; import org.quiltmc.qsl.registry.impl.sync.ProtocolVersions; import org.quiltmc.qsl.registry.impl.sync.ServerPackets; @@ -169,7 +170,7 @@ private static Text text(String string) { Text text = null; try { - text = Text.SerializationUtil.fromJson(string, DynamicRegistryManager.EMPTY); + text = TextSerializationUtil.fromJson(string, DynamicRegistryManager.EMPTY); } catch (Exception e) { } return text != null ? text : Text.literal(string); diff --git a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/ModPackUtil.java b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/ModPackUtil.java index c79be8b8fe..88a0eef514 100644 --- a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/ModPackUtil.java +++ b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/ModPackUtil.java @@ -56,7 +56,7 @@ public static String getPackMeta(@Nullable String description, ResourceType type return String.format(""" {"pack":{"pack_format":%d,"description":"%s"}} """, - SharedConstants.getGameVersion().getResourceVersion(type), description); + SharedConstants.getGameVersion().getPackVersion(type), description); } public static @Nullable ResourceIoSupplier openDefault(ModMetadata info, ResourceType type, String filename) { diff --git a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/QuiltBuiltinPackProfile.java b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/QuiltBuiltinPackProfile.java index 720087c2cd..9b8407d873 100644 --- a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/QuiltBuiltinPackProfile.java +++ b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/QuiltBuiltinPackProfile.java @@ -41,7 +41,7 @@ public final class QuiltBuiltinPackProfile extends PackProfile { private final ResourcePack pack; static @Nullable QuiltBuiltinPackProfile of(ModNioPack pack) { - int version = SharedConstants.getGameVersion().getResourceVersion(pack.type); + int version = SharedConstants.getGameVersion().getPackVersion(pack.type); Metadata info = loadMetadata(pack.getLocationInfo(), QuiltPackProfile.wrapToFactory(pack), version); if (info == null) { @@ -58,9 +58,9 @@ private QuiltBuiltinPackProfile(ModNioPack pack, Metadata info) { QuiltPackProfile.wrapToFactory(pack), info, new PackPosition( - true, - PackProfile.InsertionPosition.TOP, - false + true, + PackProfile.InsertionPosition.TOP, + false ) ); this.pack = pack; diff --git a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/client/PackScreenTooltips.java b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/client/PackScreenTooltips.java index 2968e7e849..1aedb98402 100644 --- a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/client/PackScreenTooltips.java +++ b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/impl/client/PackScreenTooltips.java @@ -34,14 +34,14 @@ public void afterRender(Screen screen, GuiGraphics graphics, int mouseX, int mou PackEntryListWidget.PackEntry availableEntry = ((PackScreenAccessor) packScreen).getAvailablePackList().getHoveredEntry(); if (availableEntry != null) { if (((ResourcePackEntryAccessor) availableEntry).getPack().getSource() instanceof QuiltBuiltinPackProfile.BuiltinPackSource source) { - graphics.drawTooltip(((QuiltScreen) packScreen).getTextRenderer(), source.getTooltip(), mouseX, mouseY); + graphics.deferDrawingTooltip(((QuiltScreen) packScreen).getTextRenderer(), source.getTooltip(), mouseX, mouseY); } } PackEntryListWidget.PackEntry selectedEntry = ((PackScreenAccessor) packScreen).getSelectedPackList().getHoveredEntry(); if (selectedEntry != null) { if (((ResourcePackEntryAccessor) selectedEntry).getPack().getSource() instanceof QuiltBuiltinPackProfile.BuiltinPackSource source) { - graphics.drawTooltip(((QuiltScreen) packScreen).getTextRenderer(), source.getTooltip(), mouseX, mouseY); + graphics.deferDrawingTooltip(((QuiltScreen) packScreen).getTextRenderer(), source.getTooltip(), mouseX, mouseY); } } } diff --git a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/mixin/client/KeyedClientResourceReloaderMixin.java b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/mixin/client/KeyedClientResourceReloaderMixin.java index 92db46c0d2..e84c91f9b9 100644 --- a/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/mixin/client/KeyedClientResourceReloaderMixin.java +++ b/library/core/resource_loader/src/main/java/org/quiltmc/qsl/resource/loader/mixin/client/KeyedClientResourceReloaderMixin.java @@ -43,7 +43,6 @@ import net.minecraft.client.sound.SoundManager; import net.minecraft.client.texture.PaintingManager; import net.minecraft.client.texture.SpriteAtlasHolder; -import net.minecraft.client.texture.StatusEffectSpriteManager; import net.minecraft.client.texture.TextureManager; import net.minecraft.util.Identifier; @@ -58,7 +57,7 @@ EntityModelLoader.class, EntityRenderDispatcher.class, GrassColormapResourceSupplier.class, FoliageColormapResourceSupplier.class, FontManager.class, LanguageManager.class, ItemRenderer.class, ParticleManager.class, PaintingManager.class, - StatusEffectSpriteManager.class, SoundManager.class, SplashTextResourceSupplier.class, TextureManager.class, + SoundManager.class, SplashTextResourceSupplier.class, TextureManager.class, SpriteAtlasHolder.class, C_fpwiwmrb.class, /* private */ GameRenderer.class, WorldRenderer.class, VideoWarningManager.class, PeriodicNotificationManager.class, @@ -86,8 +85,6 @@ public abstract class KeyedClientResourceReloaderMixin implements IdentifiableRe this.quilt$id = ResourceReloaderKeys.Client.ENTITY_RENDERERS; } else if (self instanceof C_fpwiwmrb) { this.quilt$id = ResourceReloaderKeys.Client.SHADERS; - } else if (self instanceof StatusEffectSpriteManager) { - this.quilt$id = ResourceReloaderKeys.Client.STATUS_EFFECTS; } else if (self instanceof SoundManager) { this.quilt$id = ResourceReloaderKeys.Client.SOUNDS; } else if (self instanceof SplashTextResourceSupplier) { diff --git a/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/VirtualResourcePackTestMod.java b/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/VirtualResourcePackTestMod.java index 2adf048b42..1102fcf96f 100644 --- a/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/VirtualResourcePackTestMod.java +++ b/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/VirtualResourcePackTestMod.java @@ -79,16 +79,15 @@ private void providePacks(Consumer profileAdder, ResourceType type) pack.putText("pack.mcmeta", String.format(""" {"pack":{"pack_format":%d,"description":"Provided pack activation test."}} - """, SharedConstants.getGameVersion().getResourceVersion(type))); - + """, SharedConstants.getGameVersion().getPackVersion(type))); pack.putText(ResourceType.CLIENT_RESOURCES, Identifier.ofDefault("models/block/dandelion.json"), """ { "parent": "minecraft:block/cube_all", "textures": { "all": "minecraft:block/dandelion" } - } - """); + }"""); + pack.putText(ResourceType.SERVER_DATA, Identifier.ofDefault("loot_table/blocks/dandelion.json"), """ { "type": "minecraft:block", @@ -116,9 +115,9 @@ private void providePacks(Consumer profileAdder, ResourceType type) QuiltPackProfile.wrapToFactory(pack), type, new PackPosition( - false, - PackProfile.InsertionPosition.TOP, - false + false, + PackProfile.InsertionPosition.TOP, + false ))); } diff --git a/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/client/ResourcePackProfileProviderTestMod.java b/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/client/ResourcePackProfileProviderTestMod.java index 6cb0ac6493..7888f0197c 100644 --- a/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/client/ResourcePackProfileProviderTestMod.java +++ b/library/core/resource_loader/src/testmod/java/org/quiltmc/qsl/resource/loader/test/client/ResourcePackProfileProviderTestMod.java @@ -51,9 +51,9 @@ public void onInitializeClient(ModContainer mod) { QuiltPackProfile.wrapToFactory(pack), ResourceType.CLIENT_RESOURCES, new PackPosition( - true, - PackProfile.InsertionPosition.TOP, - true + true, + PackProfile.InsertionPosition.TOP, + true ))); }); } @@ -66,7 +66,7 @@ static class TestPack extends InMemoryPack { this.putText("pack.mcmeta", String.format(""" {"pack":{"pack_format":%d,"description":"Just testing."}} """, - SharedConstants.getGameVersion().getResourceVersion(ResourceType.CLIENT_RESOURCES))); + SharedConstants.getGameVersion().getPackVersion(ResourceType.CLIENT_RESOURCES))); this.putImage("pack.png", this::createRandomImage); this.putImage(DIRT_IDENTIFIER, this::createRandomImage); } @@ -91,10 +91,10 @@ private NativeImage createRandomImage() { @Override public PackLocationInfo getLocationInfo() { return new PackLocationInfo( - PACK_NAME, - this.getDisplayName(), - PackSource.PACK_SOURCE_BUILTIN, - Optional.empty() + PACK_NAME, + this.getDisplayName(), + PackSource.PACK_SOURCE_BUILTIN, + Optional.empty() ); } diff --git a/library/core/testing/src/main/java/org/quiltmc/qsl/testing/impl/game/command/QuiltTestCommand.java b/library/core/testing/src/main/java/org/quiltmc/qsl/testing/impl/game/command/QuiltTestCommand.java index 4a1651d0a8..3bbfa9a363 100644 --- a/library/core/testing/src/main/java/org/quiltmc/qsl/testing/impl/game/command/QuiltTestCommand.java +++ b/library/core/testing/src/main/java/org/quiltmc/qsl/testing/impl/game/command/QuiltTestCommand.java @@ -22,8 +22,8 @@ import org.jetbrains.annotations.ApiStatus; +import net.minecraft.data.CachedWriter; import net.minecraft.block.entity.StructureBlockBlockEntity; -import net.minecraft.data.DataWriter; import net.minecraft.data.dev.NbtProvider; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.world.ServerWorld; @@ -40,7 +40,7 @@ public final class QuiltTestCommand { public static int executeExport(ServerCommandSource source) { BlockPos currentPos = BlockPos.fromPosition(source.getPosition()); ServerWorld world = source.getWorld(); - BlockPos nearestStructureBlockPos = StructureTestUtil.method_22255(currentPos, 15, world).orElse(null); + BlockPos nearestStructureBlockPos = StructureTestUtil.inStructureBoundsOrEmpty(currentPos, 15, world).orElse(null); if (nearestStructureBlockPos == null) { source.sendError(Text.literal("Couldn't find any structure block within 15 blocks radius.")); @@ -58,7 +58,7 @@ public static int executeExport(ServerCommandSource source, String structure) { Path structurePath = source.getWorld().getStructureTemplateManager() .exportStructure(structureId, ".nbt"); Path exportedPath = NbtProvider.convertNbtToSnbt( - DataWriter.UNCACHED, structurePath, structure.replace(':', '/'), directoryPath + CachedWriter.UNCACHED, structurePath, structure.replace(':', '/'), directoryPath ); if (exportedPath == null) { diff --git a/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/EntityMixin.java b/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/EntityMixin.java index ea8a7c5b2f..59fdd376e5 100644 --- a/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/EntityMixin.java +++ b/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/EntityMixin.java @@ -36,10 +36,10 @@ abstract class EntityMixin { private World world; @ModifyReturnValue(method = "teleportAcrossDimensions", at = @At("RETURN")) - private @Nullable Entity quilt$invokeAfterWorldChange(Entity newEntity, ServerWorld world, TeleportTarget target) { + private @Nullable Entity quilt$invokeAfterWorldChange(Entity newEntity, ServerWorld from, ServerWorld to, TeleportTarget target) { if (newEntity != null) { EntityWorldChangeEvents.AFTER_ENTITY_WORLD_CHANGE.invoker() - .afterWorldChange((Entity) (Object) this, newEntity, ((ServerWorld) this.world), target.newWorld()); + .afterWorldChange((Entity) (Object) this, newEntity, from, to); } return newEntity; diff --git a/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/ServerPlayerEntityMixin.java b/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/ServerPlayerEntityMixin.java index fbe8b11ef4..a768865457 100644 --- a/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/ServerPlayerEntityMixin.java +++ b/library/entity/entity_events/src/main/java/org/quiltmc/qsl/entity/event/mixin/ServerPlayerEntityMixin.java @@ -26,7 +26,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.quiltmc.qsl.entity.event.api.EntityWorldChangeEvents; @@ -34,8 +33,8 @@ @Mixin(ServerPlayerEntity.class) abstract class ServerPlayerEntityMixin extends PlayerEntity { - private ServerPlayerEntityMixin(World world, BlockPos blockPos, float f, GameProfile gameProfile) { - super(world, blockPos, f, gameProfile); + private ServerPlayerEntityMixin(World world, GameProfile gameProfile) { + super(world, gameProfile); } /** diff --git a/library/entity/entity_extensions/src/main/resources/quilt_entity_extensions.accesswidener b/library/entity/entity_extensions/src/main/resources/quilt_entity_extensions.accesswidener index 7362b5cfdf..6c9bce2c07 100644 --- a/library/entity/entity_extensions/src/main/resources/quilt_entity_extensions.accesswidener +++ b/library/entity/entity_extensions/src/main/resources/quilt_entity_extensions.accesswidener @@ -5,7 +5,7 @@ transitive-accessible field net/minecraft/entity/attribute/DefaultAttributeRe transitive-accessible method net/minecraft/entity/SpawnRestriction register (Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/SpawnLocation;Lnet/minecraft/world/Heightmap$Type;Lnet/minecraft/entity/SpawnRestriction$SpawnPredicate;)V # Villager TAWs -transitive-accessible field net/minecraft/village/VillagerType BIOME_TO_TYPE Ljava/util/Map; +transitive-accessible field net/minecraft/village/VillagerType BY_BIOME Ljava/util/Map; transitive-accessible class net/minecraft/village/TradeOffers$BuyForOneEmeraldFactory transitive-accessible class net/minecraft/village/TradeOffers$EnchantBookFactory transitive-accessible class net/minecraft/village/TradeOffers$ProcessItemFactory diff --git a/library/entity/entity_extensions/src/testmod/java/org/quiltmc/qsl/entity/test/mixin/networking/CreeperEntityRendererMixin.java b/library/entity/entity_extensions/src/testmod/java/org/quiltmc/qsl/entity/test/mixin/networking/CreeperEntityRendererMixin.java index 0565fda8d7..ed847bb5ce 100644 --- a/library/entity/entity_extensions/src/testmod/java/org/quiltmc/qsl/entity/test/mixin/networking/CreeperEntityRendererMixin.java +++ b/library/entity/entity_extensions/src/testmod/java/org/quiltmc/qsl/entity/test/mixin/networking/CreeperEntityRendererMixin.java @@ -56,8 +56,7 @@ public void render(CreeperRenderState state, MatrixStack matrices, VertexConsume matrices.push(); matrices.translate(0, 2, 0); matrices.scale(0.25f, 0.25f, 0.25f); - // method_22907 is rotate - matrices.method_22907(Axis.Y_POSITIVE.rotation(rotation)); + matrices.rotate(Axis.Y_POSITIVE.rotation(rotation)); MinecraftClient.getInstance().getItemRenderer().renderItem( stack, ModelTransformationMode.NONE, light, OverlayTexture.DEFAULT_UV, matrices, vertexConsumers, null, 0 diff --git a/library/entity/multipart/src/main/java/org/quiltmc/qsl/entity/multipart/api/AbstractEntityPart.java b/library/entity/multipart/src/main/java/org/quiltmc/qsl/entity/multipart/api/AbstractEntityPart.java index 4e2ce28161..404876c574 100644 --- a/library/entity/multipart/src/main/java/org/quiltmc/qsl/entity/multipart/api/AbstractEntityPart.java +++ b/library/entity/multipart/src/main/java/org/quiltmc/qsl/entity/multipart/api/AbstractEntityPart.java @@ -22,12 +22,13 @@ import net.minecraft.entity.boss.dragon.EnderDragonPart; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.data.DataTracker; -import net.minecraft.nbt.NbtCompound; import net.minecraft.network.listener.ClientPlayPacketListener; import net.minecraft.network.packet.Packet; import net.minecraft.server.network.EntityTrackerEntry; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Vec3d; +import net.minecraft.world.storage.DataReader; +import net.minecraft.world.storage.DataWriter; /** * A partial implementation of an {@link EntityPart} with the most common methods implemented. @@ -60,11 +61,11 @@ protected void initDataTracker(DataTracker.Builder builder) { } @Override - protected void readCustomDataFromNbt(NbtCompound nbt) { + protected void readCustomData(DataReader nbt) { } @Override - protected void writeCustomDataToNbt(NbtCompound nbt) { + protected void writeCustomData(DataWriter nbt) { } @Override diff --git a/library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java b/library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java index cc63ffc8c4..c97f013f0b 100644 --- a/library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java +++ b/library/gui/screen/src/testmod/java/org/quiltmc/qsl/screen/test/client/ScreenTests.java @@ -22,13 +22,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.minecraft.client.render.RenderLayer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.TitleScreen; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.gui.widget.button.ButtonWidget; +import net.minecraft.client.render.RenderPipelines; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -65,8 +65,8 @@ public void afterInit(Screen screen, MinecraftClient client, boolean firstInit) @Override public void afterRender(Screen screen, GuiGraphics graphics, int mouseX, int mouseY, float tickDelta) { if (screen == this.actualScreen) { - graphics.drawGuiTexture( - RenderLayer::getGuiTextured, ARMOR_FULL_ICON, + graphics.drawSprite( + RenderPipelines.GUI_TEXTURED, ARMOR_FULL_ICON, (screen.width / 2) - 124, (screen.height / 4) + 96, 20, 20 ); diff --git a/library/item/item_content_registry/src/main/java/org/quiltmc/qsl/item/content/registry/mixin/AbstractFurnaceBlockEntityMixin.java b/library/item/item_content_registry/src/main/java/org/quiltmc/qsl/item/content/registry/mixin/AbstractFurnaceBlockEntityMixin.java index 729ded4e48..5835068457 100644 --- a/library/item/item_content_registry/src/main/java/org/quiltmc/qsl/item/content/registry/mixin/AbstractFurnaceBlockEntityMixin.java +++ b/library/item/item_content_registry/src/main/java/org/quiltmc/qsl/item/content/registry/mixin/AbstractFurnaceBlockEntityMixin.java @@ -23,11 +23,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.block.entity.AbstractFurnaceBlockEntity; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.HolderLookup; +import net.minecraft.world.storage.DataReader; +import net.minecraft.world.storage.DataWriter; @Mixin(AbstractFurnaceBlockEntity.class) -abstract class AbstractFurnaceBlockEntityMixin { +public abstract class AbstractFurnaceBlockEntityMixin { @Shadow int burnTime; @@ -35,12 +35,12 @@ abstract class AbstractFurnaceBlockEntityMixin { // Should not cause any desyncs as BE sync packets are now NBT. @Inject(method = "readNbtImpl", at = @At("TAIL")) - private void readBurnTimeAsInt(NbtCompound nbt, HolderLookup.Provider lookupProvider, CallbackInfo info) { - this.burnTime = nbt.getInt("lit_time_remaining").orElseThrow(); + private void readBurnTimeAsInt(DataReader reader, CallbackInfo ci) { + this.burnTime = reader.readInt("lit_time_remaining").orElseThrow(); } @Inject(method = "writeNbt", at = @At("TAIL")) - private void writeBurnTimeAsInt(NbtCompound nbt, HolderLookup.Provider lookupProvider, CallbackInfo info) { - nbt.putInt("lit_time_remaining", this.burnTime); + private void writeBurnTimeAsInt(DataWriter writer, CallbackInfo ci) { + writer.writeInt("lit_time_remaining", this.burnTime); } } diff --git a/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/ArmorKnockbackTest.java b/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/ArmorKnockbackTest.java index 2b076d18fe..b998a834a7 100644 --- a/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/ArmorKnockbackTest.java +++ b/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/ArmorKnockbackTest.java @@ -64,7 +64,7 @@ public class ArmorKnockbackTest implements ModInitializer { private static final Item KNOCKBACK_RESISTANCE_CHESTPLATE = new Item( new Item.Settings().rarity(Rarity.RARE) .key(KNOCKBACK_RESISTANCE_CHESTPLATE_KEY) - .method_66332(KNOCKBACK_RESISTANCE_ARMOR, ArmorType.CHESTPLATE) + .armor(KNOCKBACK_RESISTANCE_ARMOR, ArmorType.CHESTPLATE) ) { @Override public void appendTooltip(ItemStack stack, TooltipContext context, C_idvlscju c_idvlscju, Consumer consumer, TooltipConfig config) { diff --git a/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/TransitiveAccessWidenerTest.java b/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/TransitiveAccessWidenerTest.java index fd463b798c..a58bb5ba2e 100644 --- a/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/TransitiveAccessWidenerTest.java +++ b/library/item/item_extensions/src/testmod/java/org/quiltmc/qsl/item/extensions/test/TransitiveAccessWidenerTest.java @@ -19,10 +19,10 @@ import static org.quiltmc.qsl.item.extensions.test.ItemExtensionTestUtil.createItemKey; import net.minecraft.item.Item; +import net.minecraft.item.ToolMaterial; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; -import net.minecraft.unmapped.C_bemqmqey; import net.minecraft.util.Rarity; import org.quiltmc.loader.api.ModContainer; @@ -35,8 +35,8 @@ public class TransitiveAccessWidenerTest implements ModInitializer { new Item.Settings() .key(MODDED_MINING_TOOL_KEY) .maxCount(1) - .method_66330( - C_bemqmqey.INCORRECT_FOR_DIAMOND_TOOL, + .pickaxe( + ToolMaterial.DIAMOND, 1.0F, -2.8F ) diff --git a/library/item/item_setting/src/testmod/java/org/quiltmc/qsl/item/test/CustomDamageTest.java b/library/item/item_setting/src/testmod/java/org/quiltmc/qsl/item/test/CustomDamageTest.java index a50d329772..4f8d5a06a4 100644 --- a/library/item/item_setting/src/testmod/java/org/quiltmc/qsl/item/test/CustomDamageTest.java +++ b/library/item/item_setting/src/testmod/java/org/quiltmc/qsl/item/test/CustomDamageTest.java @@ -22,11 +22,11 @@ import net.minecraft.component.DataComponentType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.ToolMaterial; import net.minecraft.network.codec.PacketCodecs; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.text.Text; -import net.minecraft.unmapped.C_bemqmqey; import net.minecraft.util.dynamic.Codecs; import org.quiltmc.loader.api.ModContainer; @@ -48,9 +48,7 @@ public class CustomDamageTest implements ModInitializer { public void onInitialize(ModContainer mod) { Item.Settings weirdPickSettings = new Item.Settings(); weirdPickSettings - // method_66330 is pickaxe - // C_bemqmqey.INCORRECT_FOR_GOLD_TOOL is ToolMaterial.GOLD - .method_66330(C_bemqmqey.INCORRECT_FOR_GOLD_TOOL, 1.0F, -2.8F); + .pickaxe(ToolMaterial.GOLD, 1.0F, -2.8F); registerItem("weird_pickaxe", WeirdPick::new, weirdPickSettings); } diff --git a/library/management/chat/src/main/java/org/quiltmc/qsl/chat/mixin/ServerPlayerEntityMixin.java b/library/management/chat/src/main/java/org/quiltmc/qsl/chat/mixin/ServerPlayerEntityMixin.java index c8e7c42a63..ce7b9e7970 100644 --- a/library/management/chat/src/main/java/org/quiltmc/qsl/chat/mixin/ServerPlayerEntityMixin.java +++ b/library/management/chat/src/main/java/org/quiltmc/qsl/chat/mixin/ServerPlayerEntityMixin.java @@ -16,13 +16,15 @@ package org.quiltmc.qsl.chat.mixin; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import io.netty.channel.ChannelFutureListener; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import net.minecraft.network.PacketSendListener; import net.minecraft.network.packet.Packet; import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayerEntity; @@ -33,6 +35,7 @@ @Mixin(ServerPlayerEntity.class) public class ServerPlayerEntityMixin { + @Unique private SystemS2CMessage quilt$sendSystemMessage$storedSystemMessage; @Inject(method = "sendSystemMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD")) @@ -42,17 +45,17 @@ public class ServerPlayerEntityMixin { this.quilt$sendSystemMessage$storedSystemMessage = (SystemS2CMessage) QuiltChatEvents.MODIFY.invokeOrElse(message, message); } - @Redirect( + @WrapOperation( method = "sendSystemMessage(Lnet/minecraft/text/Text;Z)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/server/network/ServerPlayNetworkHandler;send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketSendListener;)V" + target = "Lnet/minecraft/server/network/ServerPlayNetworkHandler;send(Lnet/minecraft/network/packet/Packet;Lio/netty/channel/ChannelFutureListener;)V" ) ) - public void quilt$cancelAndBeforeAndAfterOutboundSystemMessage(ServerPlayNetworkHandler instance, Packet packet, PacketSendListener listener) { + public void quilt$cancelAndBeforeAndAfterOutboundSystemMessage(ServerPlayNetworkHandler instance, Packet packet, ChannelFutureListener listener, Operation original) { if (QuiltChatEvents.CANCEL.invoke(this.quilt$sendSystemMessage$storedSystemMessage) != Boolean.TRUE) { QuiltChatEvents.BEFORE_PROCESS.invoke(this.quilt$sendSystemMessage$storedSystemMessage); - instance.send(this.quilt$sendSystemMessage$storedSystemMessage.serialized(), listener); + original.call(instance, packet, listener); QuiltChatEvents.AFTER_PROCESS.invoke(this.quilt$sendSystemMessage$storedSystemMessage); } else { QuiltChatEvents.CANCELLED.invoke(this.quilt$sendSystemMessage$storedSystemMessage); diff --git a/library/management/client_command/src/main/java/org/quiltmc/qsl/command/impl/client/ClientCommandInternals.java b/library/management/client_command/src/main/java/org/quiltmc/qsl/command/impl/client/ClientCommandInternals.java index 2193d93ba6..8c6161a0ab 100644 --- a/library/management/client_command/src/main/java/org/quiltmc/qsl/command/impl/client/ClientCommandInternals.java +++ b/library/management/client_command/src/main/java/org/quiltmc/qsl/command/impl/client/ClientCommandInternals.java @@ -102,8 +102,8 @@ public static boolean executeCommand(String message, boolean ignorePrefix) { try { // Only run client commands if there are no matching server-side commands. String command = ignorePrefix ? message : message.substring(1); - CommandDispatcher serverDispatcher = client.getNetworkHandler().getCommandDispatcher(); - ParseResults serverResults = serverDispatcher.parse(command, commandSource); + CommandDispatcher serverDispatcher = client.getNetworkHandler().getCommandDispatcher(); + ParseResults serverResults = serverDispatcher.parse(command, commandSource); if (serverResults.getReader().canRead() || isCommandInvalidOrDummy(serverResults)) { currentDispatcher.execute(command, commandSource); diff --git a/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientCommandSourceMixin.java b/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientCommandSourceMixin.java index 6885ab3b0b..56d674b645 100644 --- a/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientCommandSourceMixin.java +++ b/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientCommandSourceMixin.java @@ -46,7 +46,7 @@ abstract class ClientCommandSourceMixin implements QuiltClientCommandSource { @Override public void sendFeedback(Text message) { this.client.inGameHud.getChatHud().addMessage(message); - this.client.getChatNarratorManager().narrate(message); + this.client.getChatNarratorManager().method_37015(message); } @Override diff --git a/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientPlayNetworkHandlerMixin.java b/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientPlayNetworkHandlerMixin.java index 59037744d2..e28dfcb4fe 100644 --- a/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientPlayNetworkHandlerMixin.java +++ b/library/management/client_command/src/main/java/org/quiltmc/qsl/command/mixin/client/ClientPlayNetworkHandlerMixin.java @@ -82,13 +82,6 @@ private void onOnCommandTree(CommandTreeUpdateS2CPacket packet, CallbackInfo inf ); } - @Inject(method = "sendCommand", at = @At("HEAD"), cancellable = true) - private void onSendCommand(String command, CallbackInfoReturnable cir) { - if (ClientCommandInternals.executeCommand(command, true)) { - cir.setReturnValue(true); - } - } - @Inject(method = "sendChatCommand", at = @At("HEAD"), cancellable = true) private void onSendCommand(String command, CallbackInfo ci) { if (ClientCommandInternals.executeCommand(command, true)) { diff --git a/library/management/command/src/main/java/org/quiltmc/qsl/command/mixin/CommandManagerMixin.java b/library/management/command/src/main/java/org/quiltmc/qsl/command/mixin/CommandManagerMixin.java index 51a177f1ad..ec500d6b1f 100644 --- a/library/management/command/src/main/java/org/quiltmc/qsl/command/mixin/CommandManagerMixin.java +++ b/library/management/command/src/main/java/org/quiltmc/qsl/command/mixin/CommandManagerMixin.java @@ -66,33 +66,34 @@ void addQuiltCommands(CommandManager.RegistrationEnvironment environment, Comman CommandRegistrationCallback.EVENT.invoker().registerCommands(this.dispatcher, context, environment); } - // region Copyright 2016, 2017, 2018, 2019, 2020 zml and Colonel contributors. - // Licensed under the Apache 2.0 License; see this file's header for additional information. - @SuppressWarnings({"rawtypes", "unchecked"}) // argument type generics - @Inject(method = "makeTreeForSource", locals = LocalCapture.CAPTURE_FAILHARD, - at = @At(value = "INVOKE", target = "com.mojang.brigadier.builder.RequiredArgumentBuilder.getSuggestionsProvider()Lcom/mojang/brigadier/suggestion/SuggestionProvider;", remap = false, ordinal = 0)) - public void replaceArgumentType(CommandNode tree, CommandNode result, - ServerCommandSource source, Map, CommandNode> nodes, - CallbackInfo ci, - Iterator it, CommandNode current, ArgumentBuilder unused, - RequiredArgumentBuilder builder) throws CommandSyntaxException { - ServerArgumentType, ArgumentTypeInfo.Template>> type - = ServerArgumentTypes.byClass((Class) builder.getType().getClass()); - Set knownExtraCommands = ServerArgumentTypes.getKnownArgumentTypes(source.getPlayer()); // throws an exception, we can ignore bc this is always a player - // If we have a replacement and the arg type isn't known to the client, change the argument type - // This is super un-typesafe, but as long as the returned CommandNode is only used for serialization we are fine. - // Repeat as long as a type is replaceable -- that way you can have a hierarchy of argument types. - while (type != null && knownExtraCommands != null && !knownExtraCommands.contains(type.id())) { - ((RequiredArgumentBuilderAccessor) builder).setType(type.fallbackProvider().createVanillaFallback(builder.getType())); - - if (type.fallbackSuggestions() != null) { - builder.suggests((SuggestionProvider) type.fallbackSuggestions()); - } - - type = ServerArgumentTypes.byClass((Class) builder.getType().getClass()); - } - } - // endregion + // FIXME: This might be unnecessary now, but either way, the mixin doesn't work anymore as this function has been changed. +// // region Copyright 2016, 2017, 2018, 2019, 20z20 zml and Colonel contributors. +// // Licensed under the Apache 2.0 License; see this file's header for additional information. +// @SuppressWarnings({"rawtypes", "unchecked"}) // argument type generics +// @Inject(method = "makeTreeForSource", locals = LocalCapture.CAPTURE_FAILHARD, +// at = @At(value = "INVOKE", target = "com.mojang.brigadier.builder.RequiredArgumentBuilder.getSuggestionsProvider()Lcom/mojang/brigadier/suggestion/SuggestionProvider;", remap = false, ordinal = 0)) +// public void replaceArgumentType(CommandNode tree, CommandNode result, +// ServerCommandSource source, Map, CommandNode> nodes, +// CallbackInfo ci, +// Iterator it, CommandNode current, ArgumentBuilder unused, +// RequiredArgumentBuilder builder) throws CommandSyntaxException { +// ServerArgumentType, ArgumentTypeInfo.Template>> type +// = ServerArgumentTypes.byClass((Class) builder.getType().getClass()); +// Set knownExtraCommands = ServerArgumentTypes.getKnownArgumentTypes(source.getPlayer()); // throws an exception, we can ignore bc this is always a player +// // If we have a replacement and the arg type isn't known to the client, change the argument type +// // This is super un-typesafe, but as long as the returned CommandNode is only used for serialization we are fine. +// // Repeat as long as a type is replaceable -- that way you can have a hierarchy of argument types. +// while (type != null && knownExtraCommands != null && !knownExtraCommands.contains(type.id())) { +// ((RequiredArgumentBuilderAccessor) builder).setType(type.fallbackProvider().createVanillaFallback(builder.getType())); +// +// if (type.fallbackSuggestions() != null) { +// builder.suggests((SuggestionProvider) type.fallbackSuggestions()); +// } +// +// type = ServerArgumentTypes.byClass((Class) builder.getType().getClass()); +// } +// } +// // endregion @Mixin(CommandManager.RegistrationEnvironment.class) public abstract static class RegistrationEnvironmentMixin implements QuiltCommandRegistrationEnvironment { diff --git a/library/rendering/entity_rendering/src/main/java/org/quiltmc/qsl/rendering/entity/mixin/client/ArmorFeatureRendererMixin.java b/library/rendering/entity_rendering/src/main/java/org/quiltmc/qsl/rendering/entity/mixin/client/ArmorFeatureRendererMixin.java index 1aca184d0f..adf569576b 100644 --- a/library/rendering/entity_rendering/src/main/java/org/quiltmc/qsl/rendering/entity/mixin/client/ArmorFeatureRendererMixin.java +++ b/library/rendering/entity_rendering/src/main/java/org/quiltmc/qsl/rendering/entity/mixin/client/ArmorFeatureRendererMixin.java @@ -19,10 +19,10 @@ import static org.quiltmc.qsl.rendering.entity.impl.client.ArmorRenderingRegistryImpl.LOGGER; -import org.jetbrains.annotations.Nullable; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -59,9 +59,10 @@ abstract class ArmorFeatureRendererMixin< > extends FeatureRenderer { @Shadow @Final - private EquipmentRenderer equipmentRenderer; + private EquipmentRenderer field_54183; - @Unique private S quilt$capturedState; + @Unique + private S quilt$capturedState; private ArmorFeatureRendererMixin(FeatureRendererContext context) { super(context); @@ -125,8 +126,8 @@ private void captureState( Operation original, MatrixStack matrices2, VertexConsumerProvider vertexConsumers2, ItemStack stack2, EquipmentSlot armorSlot ) { - EquipmentRendererExtensions extendedEquipmentRenderer = - (EquipmentRendererExtensions) this.equipmentRenderer; + final EquipmentRendererExtensions extendedEquipmentRenderer = + (EquipmentRendererExtensions) this.field_54183; try { extendedEquipmentRenderer.quilt$setArmorRenderLayerContext(new ArmorRenderLayerContext( diff --git a/library/rendering/entity_rendering/src/testmod/java/org/quiltmc/qsl/rendering/entity/test/EntityRenderingTestmod.java b/library/rendering/entity_rendering/src/testmod/java/org/quiltmc/qsl/rendering/entity/test/EntityRenderingTestmod.java index 4cdf767665..956fcf48fd 100644 --- a/library/rendering/entity_rendering/src/testmod/java/org/quiltmc/qsl/rendering/entity/test/EntityRenderingTestmod.java +++ b/library/rendering/entity_rendering/src/testmod/java/org/quiltmc/qsl/rendering/entity/test/EntityRenderingTestmod.java @@ -79,7 +79,7 @@ private static RegistryKey createItemKey(String path) { private static Item.Settings createQuiltArmorSettings(RegistryKey key, ArmorType type) { // method_66332 is armor - return new Item.Settings().key(key).method_66332(QUILT_ARMOR_MATERIAL, type); + return new Item.Settings().key(key).armor(QUILT_ARMOR_MATERIAL, type); } @Override diff --git a/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/impl/QuiltDimensionsImpl.java b/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/impl/QuiltDimensionsImpl.java index bcb8931cd6..13b50219e5 100644 --- a/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/impl/QuiltDimensionsImpl.java +++ b/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/impl/QuiltDimensionsImpl.java @@ -42,7 +42,7 @@ public static E teleport(Entity entity, TeleportTarget target if (entity instanceof ServerPlayerEntity serverPlayerEntity) { serverPlayerEntity.networkHandler.requestTeleport(target.position().x, target.position().y, target.position().z, target.yaw(), entity.getPitch()); } else { - entity.setPosAndAngles(target.position().x, target.position().y, target.position().z, target.yaw(), entity.getPitch()); + entity.updatePositionAndAngles(target.position().x, target.position().y, target.position().z, target.yaw(), entity.getPitch()); } entity.setVelocity(target.deltaMovement()); diff --git a/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/mixin/WorldSaveStorageBugfixMixin.java b/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/mixin/WorldSaveStorageBugfixMixin.java index d63d775023..d833ca08be 100644 --- a/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/mixin/WorldSaveStorageBugfixMixin.java +++ b/library/worldgen/dimension/src/main/java/org/quiltmc/qsl/worldgen/dimension/mixin/WorldSaveStorageBugfixMixin.java @@ -85,8 +85,7 @@ private static void onReadGeneratorProperties( for (RegistryKey dimId : BASE_DIMENSIONS) { String strId = dimId.getValue().toString(); - // method_10545 is containsKey - if (dimensions.method_10545(strId)) { + if (dimensions.containsKey(strId)) { newDimensions.put(strId, dimensions.getCompound(strId).orElseThrow()); } }