From 18e36727f2ec9e7a24e951cf32df7ce0b57b4e7a Mon Sep 17 00:00:00 2001 From: Joey Hines Date: Sun, 23 Sep 2018 14:49:17 -0500 Subject: [PATCH] Added check in CommandPreprocessListener to hide a user when they go into spec and put them back into the same visibility after they come out of spec. --- pom.xml | 9 +++++ src/main/java/xyz/etztech/qol/QoL.java | 14 ++++++-- .../listeners/CommandPreprocessListener.java | 34 +++++++++++++++++-- 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 6aa771c..911ef55 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,11 @@ Essentials 2.14-SNAPSHOT + + us.dynmap + dynmap-api + 1.9.4 + commons-lang commons-lang @@ -90,6 +95,10 @@ etztech-repo http://repo.etztech.xyz + + dynmap-repo + http://repo.mikeprimm.com/ + ess-repo http://repo.ess3.net/content/groups/essentials diff --git a/src/main/java/xyz/etztech/qol/QoL.java b/src/main/java/xyz/etztech/qol/QoL.java index 1ba18d1..2b753c3 100644 --- a/src/main/java/xyz/etztech/qol/QoL.java +++ b/src/main/java/xyz/etztech/qol/QoL.java @@ -11,6 +11,7 @@ import xyz.etztech.qol.commands.*; import xyz.etztech.qol.listeners.*; import xyz.etztech.qol.other.LinkCommand; import xyz.etztech.qol.other.TPSRunnable; +import org.dynmap.DynmapAPI; import java.util.ArrayList; import java.util.List; @@ -20,6 +21,7 @@ public class QoL extends JavaPlugin { private static QoL instance; private static IEssentials essentials = null; + private static DynmapAPI dynmap = null; public static FileConfiguration config; private Logger log = Logger.getLogger( "Minecraft" ); @@ -43,6 +45,12 @@ public class QoL extends JavaPlugin { essentials = (Essentials) Bukkit.getPluginManager().getPlugin("Essentials"); } + //Dynmap hook + if (Bukkit.getPluginManager().isPluginEnabled("dynmap")) { + log("Hooked into Essentials for TPS alert."); + dynmap = (DynmapAPI) Bukkit.getPluginManager().getPlugin("dynmap"); + } + if( isEnabled() ) { // Add listeners @@ -240,9 +248,9 @@ public class QoL extends JavaPlugin { return links; } - public static IEssentials getEssentials() { - return essentials; - } + public static IEssentials getEssentials() { return essentials; } + + public static DynmapAPI getDynmap() { return dynmap; } private void runTask(final String command) { diff --git a/src/main/java/xyz/etztech/qol/listeners/CommandPreprocessListener.java b/src/main/java/xyz/etztech/qol/listeners/CommandPreprocessListener.java index 0c9d7bb..ae379f7 100644 --- a/src/main/java/xyz/etztech/qol/listeners/CommandPreprocessListener.java +++ b/src/main/java/xyz/etztech/qol/listeners/CommandPreprocessListener.java @@ -13,6 +13,7 @@ import xyz.etztech.core.CoreUtils; import xyz.etztech.core.web.CoreWeb; import xyz.etztech.qol.QoL; import xyz.etztech.qol.other.LinkCommand; +import org.dynmap.DynmapAPI; import java.util.HashMap; import java.util.Map; @@ -20,14 +21,19 @@ import java.util.UUID; public class CommandPreprocessListener implements Listener { - QoL plugin; private Map confirmTpMap = new HashMap<>(); + private Map dynmapVisibleStatusMap = new HashMap<>(); + private DynmapAPI dynmap; public CommandPreprocessListener(QoL plugin) { this.plugin = plugin; - } + if (plugin.getDynmap() != null) { + this.dynmap = plugin.getDynmap(); + } + + } @EventHandler public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { @@ -36,9 +42,27 @@ public class CommandPreprocessListener implements Listener { String base = command.split(" ")[0].substring(1).toLowerCase(); // Strip the slash Player sender = event.getPlayer(); + // Spec dynmap hide + if (base.equals("spec") && this.dynmap != null) { + boolean visibleStatus; + if (sender.getGameMode() != GameMode.SPECTATOR){ + dynmapVisibleStatusMap.put(sender.getUniqueId(), dynmap.getPlayerVisbility(sender.getDisplayName())); + visibleStatus = false; + } + else if (dynmapVisibleStatusMap.containsKey(sender.getUniqueId())){ + visibleStatus = dynmapVisibleStatusMap.remove(sender.getUniqueId()); + } + else { + visibleStatus = true; + } + + dynmap.setPlayerVisiblity(sender.getDisplayName(), visibleStatus); + } + + // Spec TP confirmation if (sender.hasPermission("qol.tpconfirm")) { //check if the command is a tp command - if (noSlash(base).equals("tp") || noSlash(base).startsWith("tele") || noSlash(command).startsWith("lagg tpchunk")) { + if (noSlash(base).equals("tp") || noSlash(base).startsWith("tele") || noSlash(command).toLowerCase().startsWith("lagg tpchunk")) { //If the user is in the confirm tp map, remove them and let the command run if (command.equals(confirmTpMap.get(sender.getUniqueId()))) { confirmTpMap.remove(sender.getUniqueId()); @@ -81,6 +105,10 @@ public class CommandPreprocessListener implements Listener { } } + if (noSlash(base).equals("spec")) { + + } + // Links for (LinkCommand linkCommand : QoL.getLinks()) { if (base.equalsIgnoreCase(linkCommand.getCommand())) {