From f6e8be33a542da40056be7482918befe89bf3f06 Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Wed, 30 Nov 2016 18:01:59 +0100 Subject: [PATCH] Exclude Citizens; resolves #182 --- .../dungeonsxl/listener/PlayerListener.java | 41 ++++++++++++++++--- .../dungeonsxl/player/DGlobalPlayer.java | 1 - 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java b/core/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java index 836526d4..d8a048e6 100644 --- a/core/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java +++ b/core/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java @@ -50,6 +50,7 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; import org.bukkit.block.Sign; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -85,6 +86,9 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onDeath(PlayerDeathEvent event) { Player player = event.getEntity(); + if (isCitizensNPC(player)) { + return; + } DGamePlayer dPlayer = DGamePlayer.getByPlayer(player); if (dPlayer == null) { return; @@ -95,6 +99,9 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); + if (isCitizensNPC(player)) { + return; + } DGlobalPlayer dGlobalPlayer = dPlayers.getByPlayer(player); Block clickedBlock = event.getClickedBlock(); DGameWorld dGameWorld = DGameWorld.getByWorld(player.getWorld()); @@ -268,6 +275,9 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onDropItem(PlayerDropItemEvent event) { Player player = event.getPlayer(); + if (isCitizensNPC(player)) { + return; + } DGlobalPlayer dPlayer = dPlayers.getByPlayer(player); if (dPlayer == null) { @@ -313,6 +323,9 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onRespawn(PlayerRespawnEvent event) { Player player = event.getPlayer(); + if (isCitizensNPC(player)) { + return; + } plugin.getDPlayers().getByPlayer(player).applyRespawnInventory(); DGlobalPlayer dPlayer = DGamePlayer.getByPlayer(player); @@ -375,6 +388,9 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onTeleport(PlayerTeleportEvent event) { Player player = event.getPlayer(); + if (isCitizensNPC(player)) { + return; + } DGamePlayer dPlayer = DGamePlayer.getByPlayer(player); if (dPlayer == null) { @@ -393,6 +409,9 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGH) public void onChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); + if (isCitizensNPC(player)) { + return; + } DGamePlayer dPlayer = DGamePlayer.getByPlayer(player); if (dPlayer == null) { return; @@ -497,14 +516,19 @@ public class PlayerListener implements Listener { // Deny Player Cmds @EventHandler(priority = EventPriority.HIGH) public void onCommand(PlayerCommandPreprocessEvent event) { - if (DPermissions.hasPermission(event.getPlayer(), DPermissions.BYPASS)) { + Player player = event.getPlayer(); + if (isCitizensNPC(player)) { return; } - if (!(dPlayers.getByPlayer(event.getPlayer()) instanceof DInstancePlayer)) { + if (DPermissions.hasPermission(player, DPermissions.BYPASS)) { return; } - DInstancePlayer dPlayer = (DInstancePlayer) dPlayers.getByPlayer(event.getPlayer()); + + if (!(dPlayers.getByPlayer(player) instanceof DInstancePlayer)) { + return; + } + DInstancePlayer dPlayer = (DInstancePlayer) dPlayers.getByPlayer(player); String command = event.getMessage().toLowerCase(); ArrayList commandWhitelist = new ArrayList<>(); @@ -512,7 +536,7 @@ public class PlayerListener implements Listener { Game game = Game.getByWorld(dPlayer.getWorld()); if (dPlayer instanceof DEditPlayer) { - if (DPermissions.hasPermission(event.getPlayer(), DPermissions.CMD_EDIT)) { + if (DPermissions.hasPermission(player, DPermissions.CMD_EDIT)) { return; } else { @@ -538,7 +562,7 @@ public class PlayerListener implements Listener { } if (event.isCancelled()) { - MessageUtil.sendMessage(event.getPlayer(), DMessages.ERROR_CMD.getMessage()); + MessageUtil.sendMessage(player, DMessages.ERROR_CMD.getMessage()); } } @@ -607,6 +631,9 @@ public class PlayerListener implements Listener { @EventHandler public void onMove(PlayerMoveEvent event) { Player player = event.getPlayer(); + if (isCitizensNPC(player)) { + return; + } DGameWorld gameWorld = DGameWorld.getByWorld(player.getWorld()); DGamePlayer gamePlayer = DGamePlayer.getByPlayer(player); if (gameWorld != null && gamePlayer != null && gamePlayer.isStealing()) { @@ -640,4 +667,8 @@ public class PlayerListener implements Listener { dPortal.teleport(player); } + boolean isCitizensNPC(LivingEntity entity) { + return entity.hasMetadata("NPC"); + } + } diff --git a/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java b/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java index cedc40c9..3397e7ea 100644 --- a/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java +++ b/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java @@ -29,7 +29,6 @@ import io.github.dre2n.dungeonsxl.global.DPortal; import io.github.dre2n.dungeonsxl.world.DGameWorld; import io.github.dre2n.dungeonsxl.world.DResourceWorld; import java.io.File; -import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import org.bukkit.Bukkit; import org.bukkit.entity.Player;