From 5d288164c2ac1facae344f7b491afffb2ef81f8f Mon Sep 17 00:00:00 2001 From: Dawson <30784509+funkemunky@users.noreply.github.com> Date: Fri, 24 Mar 2023 10:48:18 -0400 Subject: [PATCH] Updating stuffs --- .../main/java/dev/brighten/ac/Anticheat.java | 26 +++++++++++++++++++ .../misc/inventory/InventoryClickMove.java | 2 +- .../dev/brighten/ac/data/PlayerRegistry.java | 2 -- .../ac/handler/block/BlockUpdateHandler.java | 22 +++------------- .../ac/packet/wrapper/PacketConverter.java | 3 ++- .../ac/packet/wrapper/impl/Processor_18.java | 7 ++--- 6 files changed, 36 insertions(+), 26 deletions(-) diff --git a/Anticheat/src/main/java/dev/brighten/ac/Anticheat.java b/Anticheat/src/main/java/dev/brighten/ac/Anticheat.java index 73725f4..0e60723 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/Anticheat.java +++ b/Anticheat/src/main/java/dev/brighten/ac/Anticheat.java @@ -5,6 +5,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import dev.brighten.ac.api.AnticheatAPI; import dev.brighten.ac.check.Check; import dev.brighten.ac.check.CheckManager; +import dev.brighten.ac.data.APlayer; import dev.brighten.ac.data.PlayerRegistry; import dev.brighten.ac.depends.LibraryLoader; import dev.brighten.ac.depends.MavenLibrary; @@ -32,7 +33,9 @@ import dev.brighten.loader.LoaderPlugin; import lombok.Getter; import lombok.experimental.PackagePrivate; import org.bukkit.Bukkit; +import org.bukkit.Chunk; import org.bukkit.World; +import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import java.io.File; @@ -166,6 +169,29 @@ public class Anticheat extends LoaderPlugin { logManager = new LoggerManager(); this.actionManager = new ActionManager(); + int chunkDistance = Bukkit.getViewDistance() * 2 + 1; + // Created players on server reload + if(playerRegistry.aplayerMap.size() > 0) { + getLogger().warning("Players are online, resending chunk map to players so anticheat is up to date."); + for (APlayer aplayer : playerRegistry.aplayerMap.values()) { + Player player = aplayer.getBukkitPlayer(); + + getLogger().info("Sending chunks to " + player.getName()); + int chunkX = player.getLocation().getBlockX() >> 4, + chunkZ = player.getLocation().getBlockZ() >> 4; + + for (int x = chunkX - chunkDistance; x <= chunkX + chunkDistance; x++) { + for (int z = chunkZ - chunkDistance; z <= chunkZ + chunkDistance; z++) { + Chunk chunk = player.getWorld().getChunkAt(x, z); + Object mapChunk = packetProcessor.getPacketConverter().createMapChunk(chunk); + + aplayer.sendPacket(mapChunk); + } + } + } + } + + keepaliveProcessor.start(); logManager.init(); diff --git a/Anticheat/src/main/java/dev/brighten/ac/check/impl/misc/inventory/InventoryClickMove.java b/Anticheat/src/main/java/dev/brighten/ac/check/impl/misc/inventory/InventoryClickMove.java index 1cd8678..cea4c50 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/check/impl/misc/inventory/InventoryClickMove.java +++ b/Anticheat/src/main/java/dev/brighten/ac/check/impl/misc/inventory/InventoryClickMove.java @@ -14,7 +14,7 @@ public class InventoryClickMove extends Check { super(player); } - private int lastWindowClick = Integer.MAX_VALUE; + private int lastWindowClick = -2; // Updating the last time the player clicked in a menu for use in the below check for positional movement. WAction windowClick = packet -> lastWindowClick = player.getPlayerTick(); diff --git a/Anticheat/src/main/java/dev/brighten/ac/data/PlayerRegistry.java b/Anticheat/src/main/java/dev/brighten/ac/data/PlayerRegistry.java index cd72c1f..3d28d8f 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/data/PlayerRegistry.java +++ b/Anticheat/src/main/java/dev/brighten/ac/data/PlayerRegistry.java @@ -113,8 +113,6 @@ public class PlayerRegistry { unregister(player.getUniqueId()); } - - synchronized (aplayerMap) { APlayer aplayer = new APlayer(player); aplayerMap.put(player.getUniqueId().hashCode(), aplayer); diff --git a/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java b/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java index fd337e8..e4f15e6 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java +++ b/Anticheat/src/main/java/dev/brighten/ac/handler/block/BlockUpdateHandler.java @@ -21,6 +21,7 @@ import org.bukkit.block.BlockFace; import java.util.Optional; +@SuppressWarnings("unused") @RequiredArgsConstructor public class BlockUpdateHandler { private final Long2ObjectOpenHashMap chunks = new Long2ObjectOpenHashMap<>(1000); @@ -118,25 +119,8 @@ public class BlockUpdateHandler { Optional blockOptional = chunk.getBlockAt(x, y, z); - WrappedBlock block; - - if (blockOptional.isEmpty()) { - Optional bukkitBlock = BlockUtils.getBlockAsync( - new Location(player.getBukkitPlayer().getWorld(), x, y, z)); - - IntVector loc = new IntVector(x, y, z); - if (bukkitBlock.isPresent()) { - Location bloc = bukkitBlock.get().getLocation(); - block = new WrappedBlock(bloc, - bukkitBlock.get().getType(), bukkitBlock.get().getData()); - - } else { - block = new WrappedBlock(loc - .toLocation(player.getBukkitPlayer().getWorld()), Material.AIR, (byte) 0); - } - } else block = blockOptional.get(); - - return block; + return blockOptional.orElseGet(() -> new WrappedBlock(new IntVector(x, y, z) + .toLocation(player.getBukkitPlayer().getWorld()), Material.AIR, (byte) 0)); } /** diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/PacketConverter.java b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/PacketConverter.java index 2f5e4f1..ad8c2fd 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/PacketConverter.java +++ b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/PacketConverter.java @@ -3,6 +3,7 @@ package dev.brighten.ac.packet.wrapper; import dev.brighten.ac.packet.wrapper.in.*; import dev.brighten.ac.packet.wrapper.login.WPacketHandshakingInSetProtocol; import dev.brighten.ac.packet.wrapper.out.*; +import org.bukkit.Chunk; public interface PacketConverter { WPacketPlayInFlying processFlying(Object object); @@ -89,7 +90,7 @@ public interface PacketConverter { WPacketPlayOutMapChunk processMapChunk(Object object); - Object processMapChunk(WPacketPlayOutMapChunk packet); + Object createMapChunk(Chunk chunk); WPacketPlayOutMapChunkBulk processMapChunkBulk(Object packet); diff --git a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java index 3fdd8fb..ca6cdd6 100644 --- a/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java +++ b/Anticheat/src/main/java/dev/brighten/ac/packet/wrapper/impl/Processor_18.java @@ -19,7 +19,9 @@ import lombok.SneakyThrows; import lombok.val; import me.hydro.emulator.util.mcp.MathHelper; import net.minecraft.server.v1_8_R3.*; +import org.bukkit.Chunk; import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_8_R3.CraftChunk; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; import org.bukkit.entity.EntityType; @@ -766,9 +768,8 @@ public class Processor_18 implements PacketConverter { } @Override - public Object processMapChunk(WPacketPlayOutMapChunk packet) { - PacketPlayOutMapChunk vanilla = new PacketPlayOutMapChunk(); - return null; + public Object createMapChunk(Chunk chunk) { + return new PacketPlayOutMapChunk(((CraftChunk)chunk).getHandle(), true, 20); } @Override