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 579c07d..73189a2 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; @@ -21,6 +22,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" ); @@ -44,6 +46,12 @@ public class QoL extends JavaPlugin { essentials = (Essentials) Bukkit.getPluginManager().getPlugin("Essentials"); } + //Dynmap hook + if (Bukkit.getPluginManager().isPluginEnabled("dynmap")) { + log("Hooked into Dynmap."); + dynmap = (DynmapAPI) Bukkit.getPluginManager().getPlugin("dynmap"); + } + if( isEnabled() ) { // Add listeners @@ -243,9 +251,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..13aba4b 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,25 +21,43 @@ import java.util.UUID; public class CommandPreprocessListener implements Listener { - QoL plugin; private Map confirmTpMap = new HashMap<>(); + private Map dynmapVisibleStatusMap = new HashMap<>(); public CommandPreprocessListener(QoL plugin) { this.plugin = plugin; } - @EventHandler public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { String command = event.getMessage(); String base = command.split(" ")[0].substring(1).toLowerCase(); // Strip the slash Player sender = event.getPlayer(); + DynmapAPI dynmap = plugin.getDynmap(); + // Spec dynmap hide + if (base.equals("spec") && sender.hasPermission("SafeSpectate.spectate") && dynmap != null) { + boolean visibleStatus; + if (sender.getGameMode() != GameMode.SPECTATOR){ + dynmapVisibleStatusMap.put(sender.getUniqueId(), dynmap.getPlayerVisbility(sender.getName())); + 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).toLowerCase().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());