From 1b9986f31d3bcb7cd29b093356b86949d4be35fa Mon Sep 17 00:00:00 2001 From: xGinko Date: Wed, 7 Aug 2024 16:36:42 +0200 Subject: [PATCH] improvements for packet modules --- .../aef/modules/packets/InventoryLag.java | 2 +- .../modules/packets/PurpurBeehiveCrash.java | 9 +++------ .../aef/modules/packets/TabCompleteCrash.java | 5 ++--- .../aef/modules/packets/WindowClickCrash.java | 18 ++++++++++-------- .../aef/modules/packets/LecternCrash.java | 8 +++----- .../{patches => packets}/MapCursorLag.java | 3 +-- .../aef/modules/packets/NoComExploit.java | 9 +++++---- .../modules/packets/PurpurBeehiveCrash.java | 8 +++----- .../aef/modules/packets/TabCompleteCrash.java | 5 ++--- .../aef/modules/packets/WindowClickCrash.java | 18 ++++++++++-------- 10 files changed, 40 insertions(+), 45 deletions(-) rename AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/{patches => packets}/MapCursorLag.java (96%) diff --git a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/InventoryLag.java b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/InventoryLag.java index a7439844..e1e2bd18 100644 --- a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/InventoryLag.java +++ b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/InventoryLag.java @@ -107,7 +107,7 @@ public void disable() { @Override public void onPacketSend(PacketSendEvent event) { - if (event.isCancelled() || !measuredPacketTypes.contains(event.getPacketType())) return; + if (event.isCancelled() || !measuredPacketTypes.contains(event.getPacketType()) || event.getUser() == null) return; PlayerData data = playerDataCache.get(event.getUser().getUUID(), PlayerData::new); diff --git a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java index 7e9cf17d..4f6967ee 100755 --- a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java +++ b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java @@ -7,7 +7,7 @@ import com.google.common.io.ByteStreams; import me.xginko.aef.utils.PlatformUtil; import org.bukkit.Location; -import org.bukkit.entity.Player; +import org.bukkit.entity.Entity; import org.bukkit.util.NumberConversions; public class PurpurBeehiveCrash extends PacketModule { @@ -45,16 +45,13 @@ public boolean shouldEnable() { @Override public void onPacketReceive(PacketReceiveEvent event) { - if (event.isCancelled()) return; + if (event.isCancelled() || event.getPlayer() == null) return; if (event.getPacketType() != PacketType.Play.Client.PLUGIN_MESSAGE) return; WrapperPlayClientPluginMessage packet = new WrapperPlayClientPluginMessage(event); if (!packet.getChannelName().equalsIgnoreCase(beehive_c2s_channel)) return; - Player player = (Player) event.getPlayer(); - if (player == null) return; - - if (distanceSquared(ByteStreams.newDataInput(packet.getData()).readLong(), player.getLocation()) > maxDistanceSquared) { + if (distanceSquared(ByteStreams.newDataInput(packet.getData()).readLong(), ((Entity) event.getPlayer()).getLocation()) > maxDistanceSquared) { event.setCancelled(true); onCancel(log, kick, event.getUser()); } diff --git a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java index b787b860..399e7773 100755 --- a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java +++ b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java @@ -4,7 +4,7 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientTabComplete; -import org.bukkit.entity.Player; +import org.bukkit.permissions.ServerOperator; public class TabCompleteCrash extends PacketModule { @@ -49,8 +49,7 @@ public void onPacketReceive(PacketReceiveEvent event) { } } - final Player player = (Player) event.getPlayer(); - if (player != null && player.isOp()) return; + if (event.getPlayer() == null || ((ServerOperator) event.getPlayer()).isOp()) return; for (String sequence : ABUSABLE_SEQUENCES) { if (text.indexOf(sequence) != -1) { diff --git a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java index a4229fcc..e33595b7 100755 --- a/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java +++ b/AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java @@ -4,7 +4,7 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientClickWindow; -import org.bukkit.entity.Player; +import org.bukkit.entity.HumanEntity; public class WindowClickCrash extends PacketModule { @@ -29,9 +29,9 @@ public boolean shouldEnable() { public void onPacketReceive(PacketReceiveEvent event) { if (event.isCancelled()) return; if (event.getPacketType() != PacketType.Play.Client.CLICK_WINDOW) return; - final WrapperPlayClientClickWindow packet = new WrapperPlayClientClickWindow(event); + WrapperPlayClientClickWindow packet = new WrapperPlayClientClickWindow(event); - final int button = packet.getButton(); + int button = packet.getButton(); if (button < 0 || button > 10 && button != 40 && button != 99) { event.setCancelled(true); @@ -39,12 +39,14 @@ public void onPacketReceive(PacketReceiveEvent event) { return; } - final int slot = packet.getSlot(); + int slot = packet.getSlot(); - final Player player = (Player) event.getPlayer(); - if (player != null && slot >= player.getOpenInventory().countSlots()) { - event.setCancelled(true); - onCancel(log, kick, event.getUser()); + if (event.getPlayer() != null) { + if (((HumanEntity) event.getPlayer()).getOpenInventory().countSlots() < slot) { + event.setCancelled(true); + onCancel(log, kick, event.getUser()); + return; + } } if (slot != -999 && slot != -1) { diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/LecternCrash.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/LecternCrash.java index 5c6db424..5cc6d6b0 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/LecternCrash.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/LecternCrash.java @@ -4,7 +4,7 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientClickWindow; -import org.bukkit.entity.Player; +import org.bukkit.entity.HumanEntity; import org.bukkit.event.inventory.InventoryType; public class LecternCrash extends PacketModule { @@ -29,13 +29,11 @@ public boolean shouldEnable() { @Override public void onPacketReceive(PacketReceiveEvent event) { - if (event.isCancelled()) return; + if (event.isCancelled() || event.getPlayer() == null) return; if (event.getPacketType() != PacketType.Play.Client.CLICK_WINDOW) return; if (new WrapperPlayClientClickWindow(event).getWindowClickType() != WrapperPlayClientClickWindow.WindowClickType.QUICK_MOVE) return; - final Player player = (Player) event.getPlayer(); - if (player == null) return; - if (player.getOpenInventory().getType() == LECTERN) { + if (((HumanEntity) event.getPlayer()).getOpenInventory().getType() == LECTERN) { event.setCancelled(true); onCancel(log, kick, event.getUser()); } diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/patches/MapCursorLag.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/MapCursorLag.java similarity index 96% rename from AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/patches/MapCursorLag.java rename to AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/MapCursorLag.java index 896b1c03..9be90524 100644 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/patches/MapCursorLag.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/MapCursorLag.java @@ -1,4 +1,4 @@ -package me.xginko.aef.modules.patches; +package me.xginko.aef.modules.packets; import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.event.PacketListenerPriority; @@ -6,7 +6,6 @@ import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity; -import me.xginko.aef.modules.packets.PacketModule; import me.xginko.aef.utils.EntityUtil; import org.bukkit.entity.Entity; import org.bukkit.entity.ItemFrame; diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/NoComExploit.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/NoComExploit.java index af8a0c29..6ec63286 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/NoComExploit.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/NoComExploit.java @@ -11,7 +11,7 @@ import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientUpdateJigsawBlock; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientUpdateSign; import org.bukkit.Location; -import org.bukkit.entity.Player; +import org.bukkit.entity.Entity; import org.bukkit.util.NumberConversions; public class NoComExploit extends PacketModule { @@ -65,10 +65,11 @@ public void onPacketReceive(PacketReceiveEvent event) { return; // PacketTypes like PlayerDigging are also used for dropping and swapping items. This prevents false positives. } - final Player player = (Player) event.getPlayer(); - if (player == null) return; + if (event.getPlayer() == null) { + return; + } - if (distanceSquared(blockPos, player.getLocation()) > maxDistanceSquared) { + if (distanceSquared(blockPos, ((Entity) event.getPlayer()).getLocation()) > maxDistanceSquared) { event.setCancelled(true); onCancel(log, kick, event.getUser()); } diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java index 5097ca0a..bb1394e8 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/PurpurBeehiveCrash.java @@ -7,7 +7,7 @@ import com.google.common.io.ByteStreams; import me.xginko.aef.utils.PlatformUtil; import org.bukkit.Location; -import org.bukkit.entity.Player; +import org.bukkit.entity.Entity; import org.bukkit.util.NumberConversions; public class PurpurBeehiveCrash extends PacketModule { @@ -48,14 +48,12 @@ public boolean shouldEnable() { public void onPacketReceive(PacketReceiveEvent event) { if (event.isCancelled()) return; if (event.getPacketType() != PacketType.Play.Client.PLUGIN_MESSAGE) return; + if (event.getPlayer() == null) return; WrapperPlayClientPluginMessage packet = new WrapperPlayClientPluginMessage(event); if (!packet.getChannelName().equalsIgnoreCase(beehive_c2s_channel)) return; - Player player = (Player) event.getPlayer(); - if (player == null) return; - - if (distanceSquared(ByteStreams.newDataInput(packet.getData()).readLong(), player.getLocation()) > maxDistanceSquared) { + if (distanceSquared(ByteStreams.newDataInput(packet.getData()).readLong(), ((Entity) event.getPlayer()).getLocation()) > maxDistanceSquared) { event.setCancelled(true); onCancel(log, kick, event.getUser()); } diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java index 9ee3c0d8..e6227dd2 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/TabCompleteCrash.java @@ -4,7 +4,7 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientTabComplete; -import org.bukkit.entity.Player; +import org.bukkit.permissions.ServerOperator; public class TabCompleteCrash extends PacketModule { @@ -49,8 +49,7 @@ public void onPacketReceive(PacketReceiveEvent event) { } } - final Player player = (Player) event.getPlayer(); - if (player != null && player.isOp()) return; + if (event.getPlayer() == null || ((ServerOperator) event.getPlayer()).isOp()) return; for (String sequence : ABUSABLE_SEQUENCES) { if (text.indexOf(sequence) != -1) { diff --git a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java index 6b8718a6..90b2429b 100755 --- a/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java +++ b/AnarchyExploitFixesLegacy/src/main/java/me/xginko/aef/modules/packets/WindowClickCrash.java @@ -4,7 +4,7 @@ import com.github.retrooper.packetevents.event.PacketReceiveEvent; import com.github.retrooper.packetevents.protocol.packettype.PacketType; import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientClickWindow; -import org.bukkit.entity.Player; +import org.bukkit.entity.HumanEntity; public class WindowClickCrash extends PacketModule { @@ -29,9 +29,9 @@ public boolean shouldEnable() { public void onPacketReceive(PacketReceiveEvent event) { if (event.isCancelled()) return; if (event.getPacketType() != PacketType.Play.Client.CLICK_WINDOW) return; - final WrapperPlayClientClickWindow packet = new WrapperPlayClientClickWindow(event); + WrapperPlayClientClickWindow packet = new WrapperPlayClientClickWindow(event); - final int button = packet.getButton(); + int button = packet.getButton(); if (button < 0 || button > 10 && button != 40 && button != 99) { event.setCancelled(true); @@ -39,12 +39,14 @@ public void onPacketReceive(PacketReceiveEvent event) { return; } - final int slot = packet.getSlot(); + int slot = packet.getSlot(); - final Player player = (Player) event.getPlayer(); - if (player != null && slot >= player.getOpenInventory().countSlots()) { - event.setCancelled(true); - onCancel(log, kick, event.getUser()); + if (event.getPlayer() != null) { + if (((HumanEntity) event.getPlayer()).getOpenInventory().countSlots() < slot) { + event.setCancelled(true); + onCancel(log, kick, event.getUser()); + return; + } } if (slot != -999 && slot != -1) {