diff --git a/.idea/misc.xml b/.idea/misc.xml index 982bac40..602a0ddb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,5 +7,5 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index da9c2b15..032257c0 100644 --- a/pom.xml +++ b/pom.xml @@ -140,6 +140,13 @@ compile + + com.github.MyzelYam + SuperVanish + 6.1.8 + provided + + org.spigotmc spigot @@ -202,6 +209,12 @@ provided + + me.rayzr522 + jsonmessage + 1.0.0 + + com.github.vexsoftware votifier diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index 4760a4a3..6625e77a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -22,6 +22,7 @@ import me.totalfreedom.totalfreedommod.bridge.EssentialsBridge; import me.totalfreedom.totalfreedommod.bridge.FAWEBridge; import me.totalfreedom.totalfreedommod.bridge.LibsDisguisesBridge; import me.totalfreedom.totalfreedommod.bridge.TFGuildsBridge; +import me.totalfreedom.totalfreedommod.bridge.VanishBridge; import me.totalfreedom.totalfreedommod.bridge.WorldEditBridge; import me.totalfreedom.totalfreedommod.bridge.WorldGuardBridge; import me.totalfreedom.totalfreedommod.caging.Cager; @@ -136,7 +137,7 @@ public class TotalFreedomMod extends JavaPlugin public SignBlocker snp; public EntityWiper ew; public Sitter st; - public VanishHandler vh; + public VanishBridge vb; public AMP amp; //public HubWorldRestrictions hwr; @@ -235,7 +236,7 @@ public class TotalFreedomMod extends JavaPlugin snp = new SignBlocker(); ew = new EntityWiper(); st = new Sitter(); - vh = new VanishHandler(); + vb = new VanishBridge(); amp = new AMP(); // Single admin utils diff --git a/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java b/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java deleted file mode 100644 index 7d1e586d..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/VanishHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -package me.totalfreedom.totalfreedommod; - -import me.totalfreedom.totalfreedommod.util.FLog; -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.scheduler.BukkitRunnable; - -public class VanishHandler extends FreedomService -{ - - @Override - public void onStart() - { - } - - @Override - public void onStop() - { - } - - @EventHandler(priority = EventPriority.HIGH) - public void onPlayerJoin(PlayerJoinEvent event) - { - Player player = event.getPlayer(); - - for (Player p : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(player) && plugin.al.isVanished(p.getName())) - { - player.hidePlayer(plugin, p); - } - } - - for (Player p : server.getOnlinePlayers()) - { - if (!plugin.al.isAdmin(p) && plugin.al.isVanished(player.getName())) - { - p.hidePlayer(plugin, player); - } - } - - if (plugin.al.isVanished(player.getName())) - { - plugin.esb.setVanished(player.getName(), true); - FLog.info(player.getName() + " joined while still vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has joined silently."); - event.setJoinMessage(null); - - new BukkitRunnable() - { - @Override - public void run() - { - if (!plugin.al.isVanished(player.getName())) - { - this.cancel(); - } - - player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(ChatColor.GOLD + "You are hidden from other players.")); - } - }.runTaskTimer(plugin, 0L, 4L); - } - } - - @EventHandler - public void onPlayerLeave(PlayerQuitEvent event) - { - Player player = event.getPlayer(); - - if (plugin.al.isVanished(player.getName())) - { - event.setQuitMessage(null); - FLog.info(player.getName() + " left while still vanished."); - plugin.al.messageAllAdmins(ChatColor.YELLOW + player.getName() + " has left silently."); - } - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java index 8d2f5b54..2b4d6c61 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/AdminList.java @@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.admin; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import de.myzelyam.api.vanish.VanishAPI; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @@ -31,7 +32,6 @@ public class AdminList extends FreedomService private final Map ipTable = Maps.newHashMap(); public final List verifiedNoAdmins = new ArrayList<>(); public final Map> verifiedNoAdminIps = Maps.newHashMap(); - public static List vanished = new ArrayList<>(); @Override public void onStart() @@ -363,8 +363,8 @@ public class AdminList extends FreedomService updateTables(); } - public boolean isVanished(String player) + public boolean isVanished(Player player) { - return vanished.contains(player); + return VanishAPI.isInvisible(player); } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/VanishBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/VanishBridge.java new file mode 100644 index 00000000..097309b6 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/VanishBridge.java @@ -0,0 +1,64 @@ +package me.totalfreedom.totalfreedommod.bridge; + +import de.myzelyam.api.vanish.PlayerHideEvent; +import de.myzelyam.api.vanish.PlayerShowEvent; +import me.totalfreedom.totalfreedommod.FreedomService; +import me.totalfreedom.totalfreedommod.player.PlayerData; +import me.totalfreedom.totalfreedommod.rank.Displayable; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +public class VanishBridge extends FreedomService +{ + @Override + public void onStart() + { + } + + @Override + public void onStop() + { + } + + @EventHandler + public void onPlayerUnvanish(PlayerShowEvent event) + { + Player player = event.getPlayer(); + Displayable display = plugin.rm.getDisplay(player); + String tag = display.getColoredTag(); + + if (event.isSilent()) + { + plugin.al.messageAllAdmins(ChatColor.GOLD + player.getName() + " silently unvanished."); + } + else + { + plugin.al.messageAllAdmins(ChatColor.GOLD + player.getName() + " unvanished and is now visible to all players."); + FUtil.bcastMsg(plugin.rm.craftLoginMessage(event.getPlayer(), null)); + plugin.dc.messageChatChannel("**" + player.getName() + " joined the server" + "**"); + } + + PlayerData playerData = plugin.pl.getData(player); + if (playerData.getTag() != null) + { + tag = FUtil.colorize(playerData.getTag()); + } + playerData.setTag(tag); + } + + @EventHandler + public void onPlayerVanish(PlayerHideEvent event) + { + Player player = event.getPlayer(); + if (event.isSilent()) + { + plugin.al.messageAllAdmins(ChatColor.GOLD + player.getName() + " vanished and is now only visible to admins."); + } + else + { + plugin.dc.messageChatChannel("**" + player.getName() + " left the server" + "**"); + } + } +} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java index d2ee0af0..a3ab50d4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java @@ -1,9 +1,9 @@ package me.totalfreedom.totalfreedommod.command; +import de.myzelyam.api.vanish.VanishAPI; import java.util.ArrayList; import java.util.List; import me.totalfreedom.totalfreedommod.admin.Admin; -import me.totalfreedom.totalfreedommod.admin.AdminList; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Displayable; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -96,7 +96,7 @@ public class Command_list extends FreedomCommand } else { - onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size() - AdminList.vanished.size()) + onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size() - VanishAPI.getInvisiblePlayers().size()) .append(ChatColor.BLUE) .append(" out of a maximum ") .append(ChatColor.RED) @@ -109,11 +109,11 @@ public class Command_list extends FreedomCommand { continue; } - if (listFilter == ListFilter.ADMINS && plugin.al.isVanished(p.getName())) + if (listFilter == ListFilter.ADMINS && plugin.al.isVanished(p)) { continue; } - if (listFilter == ListFilter.VANISHED_ADMINS && !plugin.al.isVanished(p.getName())) + if (listFilter == ListFilter.VANISHED_ADMINS && !plugin.al.isVanished(p)) { continue; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java new file mode 100644 index 00000000..4a20ae47 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_vanish.java @@ -0,0 +1,44 @@ +package me.totalfreedom.totalfreedommod.command; + +import de.myzelyam.api.vanish.VanishAPI; +import me.totalfreedom.totalfreedommod.rank.Rank; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Hide yourself from other players", usage = "/ [-s]", aliases = "v,ev,evanish") +public class Command_vanish extends FreedomCommand +{ + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (args.length == 0) + { + if (!VanishAPI.isInvisible(playerSender)) + { + VanishAPI.hidePlayer(playerSender); + } + else + { + VanishAPI.showPlayer(playerSender); + } + } + else if (args[0].equalsIgnoreCase("-s") || args[0].equalsIgnoreCase("-v")) + { + if (!VanishAPI.isInvisible(playerSender)) + { + VanishAPI.getPlugin().getVisibilityChanger().hidePlayer(playerSender, null, true); + } + else + { + VanishAPI.getPlugin().getVisibilityChanger().showPlayer(playerSender, null, true); + } + } + else + { + return false; + } + return true; + } +} \ No newline at end of file