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());