Skip to content

Instantly share code, notes, and snippets.

@mbax
Created December 25, 2012 16:55
Show Gist options
  • Save mbax/4374179 to your computer and use it in GitHub Desktop.
Save mbax/4374179 to your computer and use it in GitHub Desktop.
package com.aholacraft.lololmaker.aholavanish;
import java.util.HashSet;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class AholaVanish extends JavaPlugin
implements Listener
{
private final HashSet<String> vanished = new HashSet();
public static final String VANISH_PERM = "aholavanish.vanish";
public void onEnable()
{
getServer().getPluginManager().registerEvents(this, this);
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 0) {
if (!(sender instanceof Player)) {
sender.sendMessage(new StringBuilder().append(ChatColor.DARK_RED).append("Can't vanish if not a player!").toString());
return true;
}
if (!sender.hasPermission("aholavanish.vanish")) {
sender.sendMessage(new StringBuilder().append(ChatColor.DARK_RED).append("You don't have permission to use AholaVanish!").toString());
return true;
}
boolean vanishing = true;
String bit;
if (this.vanished.contains(sender.getName())) {
vanishing = false;
this.vanished.remove(sender.getName());
String bit = "unvanished";
sender.sendMessage(new StringBuilder().append(ChatColor.DARK_GREEN).append("You have unvanished!").toString());
} else {
this.vanished.add(sender.getName());
bit = "vanished";
sender.sendMessage(new StringBuilder().append(ChatColor.DARK_GREEN).append("You have vanished!").toString());
}
Player player = (Player)sender;
for (Player plr : getServer().getOnlinePlayers()) {
if ((vanishing) && (!plr.hasPermission("aholavanish.vanish")))
plr.hidePlayer(player);
else if ((!vanishing) && (!plr.canSee(player))) {
plr.showPlayer(player);
}
}
getServer().broadcast(new StringBuilder().append(ChatColor.AQUA).append(player.getName()).append(" has ").append(bit).toString(), "aholavanish.vanish");
} else if (args[0].equalsIgnoreCase("list")) {
if (((sender instanceof Player)) && (!sender.hasPermission("aholavanish.vanish"))) {
sender.sendMessage(new StringBuilder().append(ChatColor.DARK_RED).append("You don't have permission to use AholaVanish!").toString());
return true;
}
StringBuilder list = new StringBuilder();
list.append(ChatColor.AQUA);
list.append("Vanished (");
list.append(this.vanished.size());
list.append("): ");
for (String name : this.vanished) {
list.append(name);
list.append(", ");
}
list.setLength(list.length() - 2);
sender.sendMessage(list.toString());
}
return true;
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
if ((!event.getPlayer().hasPermission("aholavanish.vanish")) && (this.vanished.size() > 0)) {
Player player = event.getPlayer();
for (Player plr : getServer().getOnlinePlayers())
if (this.vanished.contains(plr.getName()))
player.hidePlayer(plr);
}
}
@EventHandler
public void onQuit(PlayerQuitEvent event)
{
if (this.vanished.contains(event.getPlayer().getName())) {
Player player = event.getPlayer();
this.vanished.remove(event.getPlayer().getName());
for (Player plr : getServer().getOnlinePlayers())
if ((plr != null) && (!plr.canSee(event.getPlayer())))
plr.showPlayer(player);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment