From f9b02f7efed0dec672de7fa2a17a9c3b057a7ddf Mon Sep 17 00:00:00 2001 From: WetABQ Date: Sat, 30 Jun 2018 02:30:37 +0800 Subject: [PATCH] Fix bugs --- .../dreamcity/AntiCheat/Cheat/combat/AntiAutoAim.java | 10 +++++++--- .../java/top/dreamcity/AntiCheat/Cheat/combat/NPC.java | 1 + .../AntiCheat/Event/Listener/EventListener.java | 10 +++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/AntiAutoAim.java b/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/AntiAutoAim.java index 95a251a..7dc58dd 100644 --- a/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/AntiAutoAim.java +++ b/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/AntiAutoAim.java @@ -73,14 +73,18 @@ private void addDummy() { player.dataPacket(pk3); player.dataPacket(pk4);*/ byte[] skin = image(AntiCheatAPI.getInstance().getMasterConfig().getSkinPath()); - NPC npc = new NPC(new Position(player.getX(), player.getY() + 3, player.getZ(), player.getLevel()), skin, player); - npc.setNameTag("AntiCheat"); + NPC npc = new NPC(new Position(player.getX(), player.getY() - 2, player.getZ(), player.getLevel()), skin, player); + npc.setNameTag("'"); npc.setScale(0.0001F); this.npc = npc; } public void move(Player player) { - npc.teleport(new Location(player.x, player.y, player.z, player.yaw, player.pitch)); + npc.teleport(new Location(player.x, player.y - 2, player.z, player.yaw, player.pitch)); + } + + public NPC getNpc() { + return npc; } private static byte[] image(String path) { diff --git a/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/NPC.java b/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/NPC.java index 9c7f9dc..e11d573 100644 --- a/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/NPC.java +++ b/src/main/java/top/dreamcity/AntiCheat/Cheat/combat/NPC.java @@ -25,6 +25,7 @@ public class NPC extends EntityHuman { public NPC(Position pos, byte[] skin, Player player) { super(pos.getLevel().getChunk((int) pos.getX() >> 4, (int) pos.getZ() >> 4), getEntityNBT(pos, skin)); + this.setDataFlag(Entity.DATA_FLAGS, Entity.DATA_FLAG_INVISIBLE, false); this.setDataFlag(Entity.DATA_FLAGS, Entity.DATA_FLAG_ALWAYS_SHOW_NAMETAG, false); this.setDataFlag(Entity.DATA_FLAGS, Entity.DATA_FLAG_CAN_SHOW_NAMETAG, false); this.setHealth(999); diff --git a/src/main/java/top/dreamcity/AntiCheat/Event/Listener/EventListener.java b/src/main/java/top/dreamcity/AntiCheat/Event/Listener/EventListener.java index a04147a..01184a6 100644 --- a/src/main/java/top/dreamcity/AntiCheat/Event/Listener/EventListener.java +++ b/src/main/java/top/dreamcity/AntiCheat/Event/Listener/EventListener.java @@ -11,6 +11,7 @@ import cn.nukkit.event.player.PlayerChatEvent; import cn.nukkit.event.player.PlayerJoinEvent; import cn.nukkit.event.player.PlayerMoveEvent; +import cn.nukkit.event.player.PlayerQuitEvent; import cn.nukkit.event.server.DataPacketReceiveEvent; import cn.nukkit.level.Position; import cn.nukkit.math.Vector3; @@ -120,6 +121,13 @@ public void onMove(PlayerMoveEvent event) { } } + @EventHandler + public void onQuit(PlayerQuitEvent event) { + if (AntiCheatAPI.getInstance().getMasterConfig().getAntiAutoAim() && AntiAutoAim.containsKey(event.getPlayer().getName())) { + AntiAutoAim.get(event.getPlayer().getName()).getNpc().close(); + } + } + @EventHandler public void onBlockPlace(BlockPlaceEvent event) { Reach reach = new Reach(event.getPlayer(), event.getBlock()); @@ -164,7 +172,7 @@ public void onEntitDamage(EntityDamageByEntityEvent event) { } event.setKnockBack(0.25F); // Nukkit KnockBack is so ‘long’ } - if (event.getEntity() instanceof NPC) { + if (event.getEntity() instanceof NPC || event.getEntity().getNameTag().equals("'")) { event.setCancelled(); } }