summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/vanish
diff options
context:
space:
mode:
authorDavid <david@panic.tk>2018-11-07 23:50:06 +0100
committerDavid <david@panic.tk>2018-11-07 23:50:06 +0100
commit604cf01967ede98bf5024e4926bb0777fc4e8eee (patch)
treee2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/vanish
parente86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff)
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/vanish')
-rw-r--r--src/main/java/com/redstoner/modules/vanish/Vanish.cmd33
-rw-r--r--src/main/java/com/redstoner/modules/vanish/Vanish.java260
2 files changed, 293 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/vanish/Vanish.cmd b/src/main/java/com/redstoner/modules/vanish/Vanish.cmd
new file mode 100644
index 0000000..618a4c1
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/vanish/Vanish.cmd
@@ -0,0 +1,33 @@
+command vanish {
+ [empty] {
+ help Toggles your vanish status.;
+ type player;
+ run vanish;
+ perm utils.vanish;
+ }
+ on {
+ help Turns your vanish on.;
+ type player;
+ run vanish_on;
+ perm utils.vanish;
+ }
+ off {
+ help Turns your vanish off.;
+ type player;
+ run vanish_off;
+ perm utils.vanish;
+ }
+ [string:name] {
+ help Toggles someone elses vanish;
+ run vanish_other name;
+ perm utils.vanishother;
+ }
+}
+command imout {
+ [empty] {
+ help Makes you magically disappear;
+ type player;
+ perm utils.imout;
+ run imout;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/redstoner/modules/vanish/Vanish.java b/src/main/java/com/redstoner/modules/vanish/Vanish.java
new file mode 100644
index 0000000..d4e57e8
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/vanish/Vanish.java
@@ -0,0 +1,260 @@
+package com.redstoner.modules.vanish;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.UUID;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+
+import com.nemez.cmdmgr.Command;
+import com.redstoner.annotations.AutoRegisterListener;
+import com.redstoner.annotations.Commands;
+import com.redstoner.annotations.Version;
+import com.redstoner.misc.CommandHolderType;
+import com.redstoner.misc.Utils;
+import com.redstoner.modules.Module;
+import com.redstoner.modules.datamanager.DataManager;
+
+@Commands(CommandHolderType.File)
+@AutoRegisterListener
+@Version(major = 4, minor = 1, revision = 0, compatible = 4)
+public class Vanish implements Module, Listener
+{
+ private ArrayList<UUID> vanished = new ArrayList<>();
+ List<String> imouted = new ArrayList<String>();
+ private HashMap<UUID, ArrayList<UUID>> vanishOthers = new HashMap<>();
+
+ @Override
+ public void migrate(Version old)
+ {
+ Module.super.migrate(old);
+ if ((old.major() == 4) && (old.minor() == 0) && (old.revision() <= 1))
+ {
+ DataManager.setConfig("indicator", "&7[V]");
+ }
+ }
+
+ @Command(hook = "vanish")
+ public boolean vanish(CommandSender sender)
+ {
+ UUID uid = ((Player) sender).getUniqueId();
+ if (vanished.contains(uid))
+ {
+ vanished.remove(uid);
+ getLogger().message(sender, "You are no longer vanished!");
+ unvanishPlayer((Player) sender);
+ }
+ else
+ {
+ vanished.add(uid);
+ getLogger().message(sender, "You are now vanished!");
+ vanishPlayer((Player) sender);
+ }
+ return true;
+ }
+
+ @Command(hook = "vanish_on")
+ public boolean vanishOn(CommandSender sender)
+ {
+ UUID uid = ((Player) sender).getUniqueId();
+ if (vanished.contains(uid))
+ getLogger().message(sender,
+ "You were already vanished, however we refreshed the vanish for you just to be sure!");
+ else
+ {
+ vanished.add(uid);
+ getLogger().message(sender, "You are now vanished!");
+ }
+ vanishPlayer((Player) sender);
+ return true;
+ }
+
+ @Command(hook = "vanish_off")
+ public boolean vanishOff(CommandSender sender)
+ {
+ UUID uid = ((Player) sender).getUniqueId();
+ if (!vanished.contains(uid))
+ getLogger().message(sender,
+ "You were not vanished, however we refreshed the vanish for you just to be sure!");
+ else
+ {
+ vanished.remove(uid);
+ getLogger().message(sender, "You are no longer vanished!");
+ }
+ unvanishPlayer((Player) sender);
+ return true;
+ }
+
+ @Command(hook = "vanish_other")
+ public boolean vanishOther(CommandSender sender, String name)
+ {
+ Player player = Bukkit.getPlayer(name);
+ if (player == null)
+ {
+ getLogger().message(sender, "&cPlayer &6" + name + " &ccould not be found!");
+ return true;
+ }
+ UUID uid = player.getUniqueId();
+ if (player.hasPermission("utils.vanish"))
+ {
+ if (vanished.contains(uid))
+ {
+ vanished.remove(uid);
+ getLogger().message(sender, "Successfully unvanished &e" + player.getDisplayName());
+ getLogger().message(player, "You are no longer vanished!");
+ }
+ else
+ {
+ vanished.add(uid);
+ getLogger().message(sender, "Successfully vanished &e" + player.getDisplayName());
+ getLogger().message(player, "You are now vanished!");
+ }
+ return true;
+ }
+ for (Entry<UUID, ArrayList<UUID>> entry : vanishOthers.entrySet())
+ {
+ if (entry.getValue().contains(uid))
+ {
+ entry.getValue().remove(uid);
+ getLogger().message(sender, "Successfully unvanished &e" + player.getDisplayName());
+ getLogger().message(player, "You are no longer vanished!");
+ if (entry.getValue().size() == 0)
+ vanishOthers.remove(entry.getKey());
+ return true;
+ }
+ }
+ UUID uuid = ((Player) sender).getUniqueId();
+ ArrayList<UUID> toAddTo = vanishOthers.get(uuid);
+ if (toAddTo == null)
+ toAddTo = new ArrayList<>();
+ toAddTo.add(uid);
+ vanishOthers.put(uuid, toAddTo);
+ getLogger().message(sender, "Successfully vanished &e" + player.getDisplayName());
+ getLogger().message(player, "You are now vanished!");
+ return true;
+ }
+
+ @SuppressWarnings("deprecation")
+ @EventHandler(priority = EventPriority.MONITOR)
+ public void onPlayerJoin(PlayerJoinEvent event)
+ {
+ Player player = event.getPlayer();
+ DataManager.setState(player, "vanished", vanished.contains(player.getUniqueId()));
+ if (vanished.contains(player.getUniqueId()))
+ {
+ for (Player p : Bukkit.getOnlinePlayers())
+ {
+ if (!p.hasPermission("utils.vanish"))
+ p.hidePlayer(player);
+ }
+ event.setJoinMessage(null);
+ }
+ if (player.hasPermission("utils.vanish"))
+ return;
+ for (UUID uid : vanished)
+ {
+ Player p = Bukkit.getPlayer(uid);
+ if (p == null)
+ continue;
+ player.hidePlayer(p);
+ }
+ for (Entry<UUID, ArrayList<UUID>> entry : vanishOthers.entrySet())
+ {
+ for (UUID uid : entry.getValue())
+ {
+ Player p = Bukkit.getPlayer(uid);
+ if (p == null)
+ continue;
+ player.hidePlayer(p);
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR)
+ public void onPlayerLeave(PlayerQuitEvent event)
+ {
+ Player player = event.getPlayer();
+ UUID uid = player.getUniqueId();
+ if (vanished.contains(player.getUniqueId()))
+ {
+ event.setQuitMessage(null);
+ }
+ if (vanishOthers.containsKey(uid))
+ {
+ ArrayList<UUID> toUnvanish = vanishOthers.remove(uid);
+ for (UUID uuid : toUnvanish)
+ {
+ Player p = Bukkit.getPlayer(uuid);
+ if (p != null)
+ unvanishPlayer(p);
+ }
+ }
+ boolean wasVanished = false;
+ for (Entry<UUID, ArrayList<UUID>> entry : vanishOthers.entrySet())
+ {
+ if (entry.getValue().contains(uid))
+ {
+ entry.getValue().remove(uid);
+ wasVanished = true;
+ break;
+ }
+ }
+ if (wasVanished)
+ unvanishPlayer(player);
+ }
+
+ @SuppressWarnings("deprecation")
+ private void vanishPlayer(Player player)
+ {
+ for (Player p : Bukkit.getOnlinePlayers())
+ {
+ if (!p.hasPermission("utils.vanish"))
+ p.hidePlayer(player);
+ }
+ DataManager.setState(player, "vanished", true);
+ DataManager.setData(Utils.getID(player), "Seen", "lastquit", System.currentTimeMillis());
+ }
+
+ @SuppressWarnings("deprecation")
+ private void unvanishPlayer(Player player)
+ {
+ for (Player p : Bukkit.getOnlinePlayers())
+ p.showPlayer(player);
+ DataManager.setState(player, "vanished", false);
+ DataManager.setData(Utils.getID(player), "Seen", "lastjoined", System.currentTimeMillis());
+ }
+
+ @Command(hook = "imout")
+ public void onImoutCommand(CommandSender sender)
+ {
+ String symbol;
+ Player s = (Player) sender;
+ String name = sender.getName();
+ if (imouted.contains(name))
+ {
+ symbol = "§a§l+";
+ getLogger().message(sender, "§eWelcome back! You are no longer hidden", "");
+ s.performCommand("vanish off");
+ s.performCommand("act off");
+ imouted.remove(name);
+ }
+ else
+ {
+ symbol = "§c§l-";
+ getLogger().message(sender, "§e§oPoof!§e You are now gone!", "");
+ s.performCommand("vanish on");
+ s.performCommand("act on");
+ imouted.add(name);
+ }
+ Utils.broadcast(symbol, " §7" + name, null);
+ }
+}