9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-22 08:29:21 +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;
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.ClientBlockStateSizePacket;
import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.ClientCustomBlockPacket;
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.ModPacket;
import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
import net.momirealms.craftengine.core.plugin.network.NetworkManager;
@@ -42,16 +44,25 @@ public class PayloadHelper {
}
public static void handleReceiver(Payload payload, NetWorkUser user) {
FriendlyByteBuf buf = payload.toBuffer();
byte type = buf.readByte();
@SuppressWarnings("unchecked")
NetworkCodec<FriendlyByteBuf, ModPacket> codec = (NetworkCodec<FriendlyByteBuf, ModPacket>) BuiltInRegistries.MOD_PACKET.getValue(type);
if (codec == null) {
CraftEngine.instance().logger().warn("Unknown data type received: " + type);
return;
}
try {
FriendlyByteBuf buf = payload.toBuffer();
byte type = buf.readByte();
@SuppressWarnings("unchecked")
NetworkCodec<FriendlyByteBuf, ModPacket> codec = (NetworkCodec<FriendlyByteBuf, ModPacket>) 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);
ModPacket networkData = codec.decode(buf);
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);
}
}
}