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 738f383f0..a46a19850 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 @@ -187,9 +187,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes Object bundle = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets); this.immediatePacketConsumer.accept(channel, bundle, sendListener); }; - // set up mod channel - this.plugin.javaPlugin().getServer().getMessenger().registerIncomingPluginChannel(this.plugin.javaPlugin(), MOD_CHANNEL, this); - this.plugin.javaPlugin().getServer().getMessenger().registerOutgoingPluginChannel(this.plugin.javaPlugin(), MOD_CHANNEL); // Inject server channel try { Object server = FastNMS.INSTANCE.method$MinecraftServer$getServer(); @@ -1612,7 +1609,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes } else { return; } - if (clientPayload == null || !clientPayload.channel().equals(NetworkManager.MOD_CHANNEL_KEY)) return; + if (clientPayload == null) return; PayloadHelper.handleReceiver(clientPayload, user); } } @@ -3756,7 +3753,6 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes if (VersionHelper.isOrAbove1_20_2()) return; FriendlyByteBuf byteBuf = event.getBuffer(); Key key = byteBuf.readKey(); - if (!key.equals(NetworkManager.MOD_CHANNEL_KEY)) return; PayloadHelper.handleReceiver(new UnknownPayload(key, byteBuf.readBytes(byteBuf.readableBytes())), user); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java index 9aa374f8d..08e49166a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/payload/PayloadHelper.java @@ -8,9 +8,9 @@ import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientC import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.VisualBlockStatePacket; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.logger.Debugger; +import net.momirealms.craftengine.core.plugin.network.PayloadChannelKeys; import net.momirealms.craftengine.core.plugin.network.ModPacket; import net.momirealms.craftengine.core.plugin.network.NetWorkUser; -import net.momirealms.craftengine.core.plugin.network.NetworkManager; import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.WritableRegistry; @@ -18,6 +18,7 @@ import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.ResourceKey; public class PayloadHelper { + public static final byte[] JADE_RESPONSE = new byte[]{0, 0, 0, 0}; public static void registerDataTypes() { registerDataType(ClientCustomBlockPacket.TYPE, ClientCustomBlockPacket.CODEC); @@ -40,22 +41,14 @@ public class PayloadHelper { FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer()); buf.writeByte(BuiltInRegistries.MOD_PACKET.getId(codec)); codec.encode(buf, data); - user.sendCustomPayload(NetworkManager.MOD_CHANNEL_KEY, buf.array()); + user.sendCustomPayload(PayloadChannelKeys.CRAFTENGINE_CHANNEL, buf.array()); } public static void handleReceiver(Payload payload, NetWorkUser user) { try { - FriendlyByteBuf buf = payload.toBuffer(); - byte type = buf.readByte(); - @SuppressWarnings("unchecked") - NetworkCodec codec = (NetworkCodec) BuiltInRegistries.MOD_PACKET.getValue(type); - if (codec == null) { - Debugger.COMMON.debug(() -> "Unknown data type received: " + type); - return; + if (payload.channel().equals(PayloadChannelKeys.CRAFTENGINE_CHANNEL)) { + handleCraftEngineModReceiver(payload, user); } - - ModPacket networkData = codec.decode(buf); - networkData.handle(user); } catch (Throwable e) { // 乱发包我给你踹了 user.kick(Component.translatable( @@ -65,4 +58,18 @@ public class PayloadHelper { Debugger.COMMON.warn(() -> "Failed to handle payload", e); } } + + private static void handleCraftEngineModReceiver(Payload payload, NetWorkUser user) { + FriendlyByteBuf buf = payload.toBuffer(); + byte type = buf.readByte(); + @SuppressWarnings("unchecked") + NetworkCodec codec = (NetworkCodec) BuiltInRegistries.MOD_PACKET.getValue(type); + if (codec == null) { + Debugger.COMMON.debug(() -> "Unknown data type received: " + type); + return; + } + + ModPacket networkData = codec.decode(buf); + networkData.handle(user); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java index 2db50e789..ac544c44d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/NetworkManager.java @@ -3,16 +3,11 @@ package net.momirealms.craftengine.core.plugin.network; import io.netty.channel.Channel; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.Manageable; -import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.NotNull; import java.util.List; public interface NetworkManager extends Manageable { - String MOD_CHANNEL = "craftengine:payload"; - String VIA_CHANNEL = "vv:proxy_details"; - Key MOD_CHANNEL_KEY = Key.of(MOD_CHANNEL); - Key VIA_CHANNEL_KEY = Key.of(VIA_CHANNEL); void setUser(Channel channel, NetWorkUser user); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/network/PayloadChannelKeys.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/PayloadChannelKeys.java new file mode 100644 index 000000000..9ffca844c --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/network/PayloadChannelKeys.java @@ -0,0 +1,7 @@ +package net.momirealms.craftengine.core.plugin.network; + +import net.momirealms.craftengine.core.util.Key; + +public final class PayloadChannelKeys { + public static final Key CRAFTENGINE_CHANNEL = Key.of("craftengine:payload"); // 进出 +}