diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java index 8cc0c1554..e6ed938eb 100644 --- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -1406,7 +1406,7 @@ public class NPCCommands { @Command( aliases = { "npc" }, - usage = "remove|rem (all|id|name|--owner [owner])", + usage = "remove|rem (all|id|name| --owner [owner] | --eid [entity uuid])", desc = "Remove a NPC", modifiers = { "remove", "rem" }, min = 1, @@ -1424,6 +1424,17 @@ public class NPCCommands { Messaging.sendTr(sender, Messages.NPCS_REMOVED); return; } + if (args.hasValueFlag("eid")) { + Entity entity = Bukkit.getServer().getEntity(UUID.fromString(args.getFlag("eid"))); + if (entity != null && (npc = CitizensAPI.getNPCRegistry().getNPC(entity)) != null) { + npc.destroy(); + Messaging.sendTr(sender, Messages.NPC_REMOVED, npc.getName()); + return; + } else { + Messaging.sendErrorTr(sender, Messages.NPC_NOT_FOUND); + return; + } + } if (args.argsLength() == 2) { if (args.getString(1).equalsIgnoreCase("all")) { if (!sender.hasPermission("citizens.admin.remove.all") && !sender.hasPermission("citizens.admin")) diff --git a/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java b/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java index 277110392..4c8312932 100644 --- a/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java +++ b/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java @@ -75,7 +75,6 @@ public class TabListRemover { } private PlayerEntry getEntry(Player player) { - PlayerEntry entry = pending.get(player.getUniqueId()); if (entry == null) { entry = new PlayerEntry(player); @@ -114,12 +113,10 @@ public class TabListRemover { private class Sender implements Runnable { @Override public void run() { - int maxPacketEntries = Settings.Setting.MAX_PACKET_ENTRIES.asInt(); Iterator> entryIterator = pending.entrySet().iterator(); while (entryIterator.hasNext()) { - Map.Entry mapEntry = entryIterator.next(); PlayerEntry entry = mapEntry.getValue(); @@ -142,8 +139,9 @@ public class TabListRemover { i++; } - if (entry.player.isOnline()) + if (entry.player.isOnline()) { NMS.sendTabListRemove(entry.player, skinnableList); + } // notify skin trackers that a remove packet has been sent to a player for (SkinnableEntity entity : skinnableList) {