9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-22 16:39:28 +00:00

预防客户端乱发包

This commit is contained in:
jhqwqmc
2025-10-27 06:35:22 +08:00
parent 2e74b1e982
commit e961231daa

View File

@@ -1,11 +1,13 @@
package net.momirealms.craftengine.bukkit.plugin.network.payload; package net.momirealms.craftengine.bukkit.plugin.network.payload;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import net.kyori.adventure.text.Component;
import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.CancelBlockUpdatePacket; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.CancelBlockUpdatePacket;
import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientBlockStateSizePacket; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientBlockStateSizePacket;
import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientCustomBlockPacket; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientCustomBlockPacket;
import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.VisualBlockStatePacket; import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.VisualBlockStatePacket;
import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.logger.Debugger;
import net.momirealms.craftengine.core.plugin.network.ModPacket; import net.momirealms.craftengine.core.plugin.network.ModPacket;
import net.momirealms.craftengine.core.plugin.network.NetWorkUser; import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
import net.momirealms.craftengine.core.plugin.network.NetworkManager; import net.momirealms.craftengine.core.plugin.network.NetworkManager;
@@ -42,16 +44,25 @@ public class PayloadHelper {
} }
public static void handleReceiver(Payload payload, NetWorkUser user) { public static void handleReceiver(Payload payload, NetWorkUser user) {
FriendlyByteBuf buf = payload.toBuffer(); try {
byte type = buf.readByte(); FriendlyByteBuf buf = payload.toBuffer();
@SuppressWarnings("unchecked") byte type = buf.readByte();
NetworkCodec<FriendlyByteBuf, ModPacket> codec = (NetworkCodec<FriendlyByteBuf, ModPacket>) BuiltInRegistries.MOD_PACKET.getValue(type); @SuppressWarnings("unchecked")
if (codec == null) { NetworkCodec<FriendlyByteBuf, ModPacket> codec = (NetworkCodec<FriendlyByteBuf, ModPacket>) BuiltInRegistries.MOD_PACKET.getValue(type);
CraftEngine.instance().logger().warn("Unknown data type received: " + type); if (codec == null) {
return; Debugger.COMMON.debug(() -> "Unknown data type received: " + type);
} return;
}
ModPacket networkData = codec.decode(buf); ModPacket networkData = codec.decode(buf);
networkData.handle(user); networkData.handle(user);
} catch (Throwable e) {
// 乱发包我给你踹了
user.kick(Component.translatable(
"disconnect.craftengine.invalid_payload",
"Connection terminated due to transmission of invalid payload. \n Please ensure that the client mod and server plugin are the latest version."
));
Debugger.COMMON.warn(() -> "Failed to handle payload", e);
}
} }
} }