mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-22 16:39:28 +00:00
预防客户端乱发包
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user