From 6acfa7cf2bc1cf8274536e23a9b54c1480c72ef5 Mon Sep 17 00:00:00 2001 From: Moulberry Date: Wed, 6 Sep 2023 12:01:07 +0800 Subject: [PATCH] Fix payload handling --- .../moulberry/axiom/packet/AxiomBigPayloadHandler.java | 10 +++++----- .../axiom/packet/SetBlockBufferPacketListener.java | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/moulberry/axiom/packet/AxiomBigPayloadHandler.java b/src/main/java/com/moulberry/axiom/packet/AxiomBigPayloadHandler.java index 10e83e2..eb64174 100644 --- a/src/main/java/com/moulberry/axiom/packet/AxiomBigPayloadHandler.java +++ b/src/main/java/com/moulberry/axiom/packet/AxiomBigPayloadHandler.java @@ -26,8 +26,8 @@ public class AxiomBigPayloadHandler extends ByteToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - int readerIndex = in.readerIndex(); try { + int readerIndex = in.readerIndex(); int i = in.readableBytes(); if (i != 0) { FriendlyByteBuf buf = new FriendlyByteBuf(in); @@ -38,15 +38,15 @@ public class AxiomBigPayloadHandler extends ByteToMessageDecoder { if (identifier.equals(SET_BUFFER)) { ServerPlayer player = connection.getPlayer(); if (player != null && player.getBukkitEntity().hasPermission("axiom.*")) { - listener.onReceive(player, buf); - in.readerIndex(in.writerIndex()); - return; + if (listener.onReceive(player, buf)) { + return; + } } } } } - } catch (Exception e) { in.readerIndex(readerIndex); + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/moulberry/axiom/packet/SetBlockBufferPacketListener.java b/src/main/java/com/moulberry/axiom/packet/SetBlockBufferPacketListener.java index 75efc5b..5a0d2be 100644 --- a/src/main/java/com/moulberry/axiom/packet/SetBlockBufferPacketListener.java +++ b/src/main/java/com/moulberry/axiom/packet/SetBlockBufferPacketListener.java @@ -66,9 +66,9 @@ public class SetBlockBufferPacketListener { } } - public void onReceive(ServerPlayer player, FriendlyByteBuf friendlyByteBuf) { + public boolean onReceive(ServerPlayer player, FriendlyByteBuf friendlyByteBuf) { MinecraftServer server = player.getServer(); - if (server == null) return; + if (server == null) return false; ResourceKey worldKey = friendlyByteBuf.readResourceKey(Registries.DIMENSION); friendlyByteBuf.readUUID(); // Discard, we don't need to associate buffers @@ -88,6 +88,8 @@ public class SetBlockBufferPacketListener { } else { throw new RuntimeException("Unknown buffer type: " + type); } + + return true; } private void applyBlockBuffer(ServerPlayer player, MinecraftServer server, BlockBuffer buffer, ResourceKey worldKey) {