diff --git a/build.gradle b/build.gradle index 247446199..26faaa0c9 100644 --- a/build.gradle +++ b/build.gradle @@ -50,7 +50,7 @@ loom { dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" implementation "net.fabricmc:fabric-loader:${project.loader_version}" - implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" include implementation("dev.xpple:clientarguments:${project.clientarguments_version}") include implementation("dev.xpple:betterconfig-fabric:${project.betterconfig_version}") diff --git a/gradle.properties b/gradle.properties index 022ba4175..6e9711ea8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,8 +7,8 @@ org.gradle.jvmargs=-Xmx2G minecraft_version_dependency=>=26.1 <=26.1.2 minecraft_version_list=26.1,26.1.1,26.1.2 minecraft_version_list_presentable=26.1 - 26.1.2 - loader_version=0.18.4 - loom_version=1.15-SNAPSHOT + loader_version=0.19.2 + loom_version=1.16-SNAPSHOT # Mod Properties mod_version=2.14.2 @@ -17,7 +17,7 @@ org.gradle.jvmargs=-Xmx2G # Dependencies # also check this on https://fabricmc.net/develop/ - fabric_version=0.144.0+26.1 + fabric_api_version=0.150.0+26.1.2 clientarguments_version=1.12.0 betterconfig_version=2.6.0 simplewaypoints_version=1.3.3 diff --git a/src/main/java/net/earthcomputer/clientcommands/command/ListenCommand.java b/src/main/java/net/earthcomputer/clientcommands/command/ListenCommand.java index a9bff06e8..5236561b0 100644 --- a/src/main/java/net/earthcomputer/clientcommands/command/ListenCommand.java +++ b/src/main/java/net/earthcomputer/clientcommands/command/ListenCommand.java @@ -88,7 +88,7 @@ private static int add(FabricClientCommandSource source, Identifier packetType) source.sendFeedback(Component.translatable("commands.clisten.add.success")); if (callback == null) { - callback = (packet, side) -> { + callback = (packet, side) -> source.getClient().schedule(() -> { String packetData; Component packetDataPreview; if (Configs.packetDumpMethod == Configs.PacketDumpMethod.BYTE_BUF) { @@ -125,7 +125,7 @@ private static int add(FabricClientCommandSource source, Identifier packetType) case C2C_OUTBOUND -> source.sendFeedback(Component.translatable("commands.clisten.sentC2CPacket", packetComponent)); case C2C_INBOUND -> source.sendFeedback(Component.translatable("commands.clisten.receivedC2CPacket", packetComponent)); } - }; + }); } return Command.SINGLE_SUCCESS; diff --git a/src/main/java/net/earthcomputer/clientcommands/features/PacketDumper.java b/src/main/java/net/earthcomputer/clientcommands/features/PacketDumper.java index 554aa057b..4488bf388 100644 --- a/src/main/java/net/earthcomputer/clientcommands/features/PacketDumper.java +++ b/src/main/java/net/earthcomputer/clientcommands/features/PacketDumper.java @@ -2,6 +2,7 @@ import com.google.gson.Gson; import com.google.gson.stream.JsonWriter; +import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; import com.mojang.serialization.JsonOps; @@ -41,6 +42,7 @@ import java.nio.channels.FileChannel; import java.nio.channels.ScatteringByteChannel; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.security.PublicKey; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -181,6 +183,25 @@ public void writeOptional(Optional optional, StreamEncoder void writeEither(Either value, StreamEncoder leftWriter, StreamEncoder rightWriter) { + dump("either", () -> { + writer.name("left"); + Optional left = value.left(); + if (left.isPresent()) { + writer.value(true); + writer.name("value"); + dumpValue(left.get(), leftWriter); + } + Optional right = value.right(); + if (right.isPresent()) { + writer.value(false); + writer.name("value"); + dumpValue(right.get(), rightWriter); + } + }); + } + @Override public void writeNullable(@Nullable T value, StreamEncoder valueEncoder) { writeNullable("nullable", value, valueEncoder); @@ -203,6 +224,7 @@ private void writeNullable(String type, @Nullable T value, StreamEncoder writer .name("length").value(array.length) + .name("utf8").value(new String(array, StandardCharsets.UTF_8)) .name("value").value(Base64.getEncoder().encodeToString(array)) ); } @@ -231,6 +253,17 @@ public PacketDumpByteBuf writeLongArray(long[] array) { }); } + @Override + public FriendlyByteBuf writeFixedSizeLongArray(long[] longs) { + return dump("fixedSizeLongArray", () -> { + writer.name("elements").beginArray(); + for (final long element : longs) { + writer.value(element); + } + writer.endArray(); + }); + } + @Override public PacketDumpByteBuf writeBlockPos(BlockPos pos) { return dump("blockPos", () -> writer @@ -392,6 +425,11 @@ public void writeFixedBitSet(BitSet bitSet, int size) { }); } + @Override + public void writeContainerId(int id) { + dumpSimple("containerId", id, JsonWriter::value); + } + @Override public PacketDumpByteBuf skipBytes(int length) { return dump("skipBytes", () -> writer.name("length").value(length)); @@ -537,6 +575,7 @@ public int writeBytes(FileChannel fileChannel, long l, int i) throws IOException private PacketDumpByteBuf dumpBytes(byte[] bytes) { return dump("bytes", () -> writer .name("length").value(bytes.length) + .name("utf8").value(new String(bytes, StandardCharsets.UTF_8)) .name("value").value(Base64.getEncoder().encodeToString(bytes)) ); } diff --git a/src/main/java/net/earthcomputer/clientcommands/mixin/commands/listen/ConnectionMixin.java b/src/main/java/net/earthcomputer/clientcommands/mixin/commands/listen/ConnectionMixin.java index 64a798ce5..0f35855a5 100644 --- a/src/main/java/net/earthcomputer/clientcommands/mixin/commands/listen/ConnectionMixin.java +++ b/src/main/java/net/earthcomputer/clientcommands/mixin/commands/listen/ConnectionMixin.java @@ -19,14 +19,14 @@ public class ConnectionMixin { @Shadow @Final private PacketFlow receiving; @Inject(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/Connection;genericsFtw(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;)V")) - private void onPacketReceive(ChannelHandlerContext context, Packet packet, CallbackInfo ci) { + private void onPacketReceive(ChannelHandlerContext ctx, Packet packet, CallbackInfo ci) { if (this.receiving == PacketFlow.CLIENTBOUND) { ListenCommand.onPacket(packet, ListenCommand.PacketFlow.CLIENTBOUND); } } @Inject(method = "doSendPacket", at = @At("HEAD")) - private void onPacketSend(Packet packet, @Nullable ChannelFutureListener sendListener, boolean flush, CallbackInfo ci) { + private void onPacketSend(Packet packet, @Nullable ChannelFutureListener listener, boolean flush, CallbackInfo ci) { if (this.receiving == PacketFlow.CLIENTBOUND) { ListenCommand.onPacket(packet, ListenCommand.PacketFlow.SERVERBOUND); }