3
0
Mirror von https://github.com/Moulberry/AxiomPaperPlugin.git synchronisiert 2024-09-29 07:50:05 +02:00

Fix payload handling

Dieser Commit ist enthalten in:
Moulberry 2023-09-06 12:01:07 +08:00
Ursprung 40493b997e
Commit 6acfa7cf2b
2 geänderte Dateien mit 9 neuen und 7 gelöschten Zeilen

Datei anzeigen

@ -26,8 +26,8 @@ public class AxiomBigPayloadHandler extends ByteToMessageDecoder {
@Override @Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
int readerIndex = in.readerIndex();
try { try {
int readerIndex = in.readerIndex();
int i = in.readableBytes(); int i = in.readableBytes();
if (i != 0) { if (i != 0) {
FriendlyByteBuf buf = new FriendlyByteBuf(in); FriendlyByteBuf buf = new FriendlyByteBuf(in);
@ -38,15 +38,15 @@ public class AxiomBigPayloadHandler extends ByteToMessageDecoder {
if (identifier.equals(SET_BUFFER)) { if (identifier.equals(SET_BUFFER)) {
ServerPlayer player = connection.getPlayer(); ServerPlayer player = connection.getPlayer();
if (player != null && player.getBukkitEntity().hasPermission("axiom.*")) { if (player != null && player.getBukkitEntity().hasPermission("axiom.*")) {
listener.onReceive(player, buf); if (listener.onReceive(player, buf)) {
in.readerIndex(in.writerIndex());
return; return;
} }
} }
} }
} }
} catch (Exception e) { }
in.readerIndex(readerIndex); in.readerIndex(readerIndex);
} catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

Datei anzeigen

@ -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(); MinecraftServer server = player.getServer();
if (server == null) return; if (server == null) return false;
ResourceKey<Level> worldKey = friendlyByteBuf.readResourceKey(Registries.DIMENSION); ResourceKey<Level> worldKey = friendlyByteBuf.readResourceKey(Registries.DIMENSION);
friendlyByteBuf.readUUID(); // Discard, we don't need to associate buffers friendlyByteBuf.readUUID(); // Discard, we don't need to associate buffers
@ -88,6 +88,8 @@ public class SetBlockBufferPacketListener {
} else { } else {
throw new RuntimeException("Unknown buffer type: " + type); throw new RuntimeException("Unknown buffer type: " + type);
} }
return true;
} }
private void applyBlockBuffer(ServerPlayer player, MinecraftServer server, BlockBuffer buffer, ResourceKey<Level> worldKey) { private void applyBlockBuffer(ServerPlayer player, MinecraftServer server, BlockBuffer buffer, ResourceKey<Level> worldKey) {