From 7a3c4fb61fe94cdee2fabf04336bd68ca5425987 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Sun, 23 Mar 2025 07:53:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor(network):=20=E6=B8=85=E7=90=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/network/BukkitNetworkManager.java | 3 - .../plugin/network/PacketConsumers.java | 72 ------------------- .../craftengine/bukkit/util/Reflections.java | 64 ----------------- 3 files changed, 139 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index e47b3715b..8bb11eb90 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -125,11 +125,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener { registerNMSPacketConsumer(PacketConsumers.MOVE_ENTITY, Reflections.clazz$ClientboundMoveEntityPacket$Pos); registerNMSPacketConsumer(PacketConsumers.PICK_ITEM_FROM_ENTITY, Reflections.clazz$ServerboundPickItemFromEntityPacket); registerNMSPacketConsumer(PacketConsumers.SOUND, Reflections.clazz$ClientboundSoundPacket); - // registerNMSPacketConsumer(PacketConsumers.CHAT, Reflections.clazz$ServerboundChatPacket); registerNMSPacketConsumer(PacketConsumers.RENAME_ITEM, Reflections.clazz$ServerboundRenameItemPacket); registerNMSPacketConsumer(PacketConsumers.SIGN_UPDATE, Reflections.clazz$ServerboundSignUpdatePacket); - // registerNMSPacketConsumer(PacketConsumers.COMMAND_SIGNED, Reflections.clazz$ServerboundChatCommandSignedPacket); - // registerNMSPacketConsumer(PacketConsumers.COMMAND, Reflections.clazz$ServerboundChatCommandPacket); registerByteBufPacketConsumer(PacketConsumers.SECTION_BLOCK_UPDATE, this.packetIds.clientboundSectionBlocksUpdatePacket()); registerByteBufPacketConsumer(PacketConsumers.BLOCK_UPDATE, this.packetIds.clientboundBlockUpdatePacket()); registerByteBufPacketConsumer(PacketConsumers.LEVEL_PARTICLE, this.packetIds.clientboundLevelParticlesPacket()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 73e940c4c..0ac89fa5a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -663,34 +663,6 @@ public class PacketConsumers { } }; - // we handle it on packet level to prevent it from being captured by plugins (most are chat plugins) - public static final TriConsumer CHAT = (user, event, packet) -> { - try { - String message = (String) Reflections.field$ServerboundChatPacket$message.get(packet); - if (message != null && !message.isEmpty()) { - ImageManager manager = CraftEngine.instance().imageManager(); - if (!manager.isDefaultFontInUse()) return; - runIfContainsIllegalCharacter(message, manager, (s) -> { - event.setCancelled(true); - try { - Object newPacket = Reflections.constructor$ServerboundChatPacket.newInstance( - s, - Reflections.field$ServerboundChatPacket$timeStamp.get(packet), - Reflections.field$ServerboundChatPacket$salt.get(packet), - Reflections.field$ServerboundChatPacket$signature.get(packet), - Reflections.field$ServerboundChatPacket$lastSeenMessages.get(packet) - ); - user.receivePacket(newPacket); - } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to create replaced chat packet", e); - } - }); - } - } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to handle ServerboundChatPacket", e); - } - }; - // we handle it on packet level to prevent it from being captured by plugins public static final TriConsumer RENAME_ITEM = (user, event, packet) -> { try { @@ -732,50 +704,6 @@ public class PacketConsumers { } }; - public static final TriConsumer COMMAND_SIGNED = (user, event, packet) -> { - try { - String command = (String) Reflections.field$ServerboundChatCommandSignedPacket$command.get(packet); - ImageManager manager = CraftEngine.instance().imageManager(); - if (!manager.isDefaultFontInUse()) return; - runIfContainsIllegalCharacter(command, manager, (s) -> { - event.setCancelled(true); - try { - Object newPacket = Reflections.constructor$ServerboundChatCommandSignedPacket.newInstance( - s, - Reflections.field$ServerboundChatCommandSignedPacket$timeStamp.get(packet), - Reflections.field$ServerboundChatCommandSignedPacket$salt.get(packet), - Reflections.field$ServerboundChatCommandSignedPacket$argumentSignatures.get(packet), - Reflections.field$ServerboundChatCommandSignedPacket$lastSeenMessages.get(packet) - ); - user.receivePacket(newPacket); - } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to create replaced chat command signed packet", e); - } - }); - } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to handle ServerboundChatCommandSignedPacket", e); - } - }; - - public static final TriConsumer COMMAND = (user, event, packet) -> { - try { - String command = (String) Reflections.field$SServerboundChatCommandPacket$command.get(packet); - ImageManager manager = CraftEngine.instance().imageManager(); - if (!manager.isDefaultFontInUse()) return; - runIfContainsIllegalCharacter(command, manager, (s) -> { - event.setCancelled(true); - try { - Object newPacket = Reflections.constructor$ServerboundChatCommandPacket.newInstance(s); - user.receivePacket(newPacket); - } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to create replaced chat command packet", e); - } - }); - } catch (Exception e) { - CraftEngine.instance().logger().warn("Failed to handle ServerboundChatCommandPacket", e); - } - }; - private static void runIfContainsIllegalCharacter(String string, ImageManager manager, Consumer callback) { //noinspection DuplicatedCode char[] chars = string.toCharArray(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index a859275ad..60566bdc6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -5204,70 +5204,6 @@ public class Reflections { ) ); - public static final Class clazz$ArgumentSignatures = requireNonNull( - ReflectionUtils.getClazz( - BukkitReflectionUtils.assembleMCClass("commands.arguments.ArgumentSignatures") - ) - ); - - public static final Class clazz$ServerboundChatCommandSignedPacket = requireNonNull( - ReflectionUtils.getClazz( - BukkitReflectionUtils.assembleMCClass("network.protocol.game.ServerboundChatCommandSignedPacket"), - BukkitReflectionUtils.assembleMCClass("network.protocol.game.ServerboundChatCommandPacket") - ) - ); - - public static final Field field$ServerboundChatCommandSignedPacket$command = requireNonNull( - ReflectionUtils.getDeclaredField( - clazz$ServerboundChatCommandSignedPacket, String.class, 0 - ) - ); - - public static final Field field$ServerboundChatCommandSignedPacket$timeStamp = requireNonNull( - ReflectionUtils.getDeclaredField( - clazz$ServerboundChatCommandSignedPacket, Instant.class, 0 - ) - ); - - public static final Field field$ServerboundChatCommandSignedPacket$salt = requireNonNull( - ReflectionUtils.getDeclaredField( - clazz$ServerboundChatCommandSignedPacket, long.class, 0 - ) - ); - - public static final Field field$ServerboundChatCommandSignedPacket$argumentSignatures = requireNonNull( - ReflectionUtils.getDeclaredField( - clazz$ServerboundChatCommandSignedPacket, clazz$ArgumentSignatures, 0 - ) - ); - - public static final Field field$ServerboundChatCommandSignedPacket$lastSeenMessages = requireNonNull( - ReflectionUtils.getDeclaredField( - clazz$ServerboundChatCommandSignedPacket, clazz$LastSeenMessages$Update, 0 - ) - ); - - public static final Constructor constructor$ServerboundChatCommandSignedPacket = requireNonNull( - ReflectionUtils.getConstructor( - clazz$ServerboundChatCommandSignedPacket, String.class, Instant.class, long.class, clazz$ArgumentSignatures, clazz$LastSeenMessages$Update - ) - ); - - // 1.20.5+ - public static final Class clazz$ServerboundChatCommandPacket = VersionHelper.isVersionNewerThan1_20_5() - ? ReflectionUtils.getClazz(BukkitReflectionUtils.assembleMCClass("network.protocol.game.ServerboundChatCommandPacket")) - : null; - - // 1.20.5+ - public static final Field field$SServerboundChatCommandPacket$command = Optional.ofNullable(clazz$ServerboundChatCommandPacket) - .map(it -> ReflectionUtils.getDeclaredField(it, String.class, 0)) - .orElse(null); - - // 1.20.5+ - public static final Constructor constructor$ServerboundChatCommandPacket = Optional.ofNullable(clazz$ServerboundChatCommandPacket) - .map(it -> ReflectionUtils.getConstructor(it, String.class)) - .orElse(null); - @SuppressWarnings("UnstableApiUsage") public static final Field field$AsyncChatDecorateEvent$originalMessage = requireNonNull( ReflectionUtils.getDeclaredField(AsyncChatDecorateEvent.class, "originalMessage")