package me.Travja.HungerArena; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.Chest; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ Logger log; public ArrayList Playing = new ArrayList(); public ArrayList Ready = new ArrayList(); public ArrayList Dead = new ArrayList(); public ArrayList Quit = new ArrayList(); public ArrayList Out = new ArrayList(); public ArrayList Watching = new ArrayList(); public ArrayList NeedConfirm = new ArrayList(); public HashSet Frozen = new HashSet(); public Listener DeathListener = new DeathListener(this); public Listener SpectatorListener = new SpectatorListener(this); public Listener FreezeListener = new FreezeListener(this); public Listener JoinAndQuitListener = new JoinAndQuitListener(this); public Listener ChatListener = new ChatListener(this); public Listener Chests = new Chests(this); public Listener PvP = new PvP(this); public Listener Blocks = new Blocks(this); public Listener CommandBlock = new CommandBlock(this); public Listener Signs = new Signs(this); public CommandExecutor HaCommands = new HaCommands(this); public CommandExecutor SponsorCommands = new SponsorCommands(this); public CommandExecutor SpawnsCommand = new SpawnsCommand(this); public boolean canjoin; public boolean exists; public FileConfiguration config; public ItemStack Reward; public ItemStack Cost; public void onEnable(){ log = this.getLogger(); log.info("HungerArena has been Enabled"); config = getConfig(); config.options().copyDefaults(true); this.saveDefaultConfig(); getServer().getPluginManager().registerEvents(DeathListener, this); getServer().getPluginManager().registerEvents(SpectatorListener, this); getServer().getPluginManager().registerEvents(FreezeListener, this); getServer().getPluginManager().registerEvents(JoinAndQuitListener, this); getServer().getPluginManager().registerEvents(ChatListener, this); getServer().getPluginManager().registerEvents(Chests, this); getServer().getPluginManager().registerEvents(PvP, this); getServer().getPluginManager().registerEvents(Blocks, this); getServer().getPluginManager().registerEvents(CommandBlock, this); getServer().getPluginManager().registerEvents(Signs, this); getCommand("Ha").setExecutor(HaCommands); getCommand("Sponsor").setExecutor(SponsorCommands); getCommand("Startpoint").setExecutor(SpawnsCommand); Reward = new ItemStack(config.getInt("Reward.ID"), config.getInt("Reward.Amount")); Cost = new ItemStack(config.getInt("Sponsor_Cost.ID"), config.getInt("Sponsor_Cost.Amount")); } public void onDisable(){ log = this.getLogger(); log.info("HungerArena has been Disabled"); } /*public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){ Player p = (Player) sender; String pname = p.getName(); if(cmd.getName().equalsIgnoreCase("Sponsor")){ if(!Playing.contains(p)){ if(args.length== 0){ p.sendMessage(ChatColor.RED + "You didn't specify a tribute!"); return false; } if(args.length== 1){ p.sendMessage(ChatColor.RED + "You didn't specify an item!"); } if(args.length== 2){ p.sendMessage(ChatColor.RED + "You didn't specify an amount!"); } if(args.length== 3){ Player target = Bukkit.getPlayer(args[0]); if(args[1].equalsIgnoreCase("57") || args[1].equalsIgnoreCase("7")){ p.sendMessage(ChatColor.RED + "You can't sponsor that item!"); }else{ int ID = Integer.parseInt(args[1]); int Amount = Integer.parseInt(args[2]); ItemStack sponsoritem = new ItemStack(ID, Amount); if(p.getInventory().contains(Cost)){ if(!Playing.contains(target)){ p.sendMessage(ChatColor.RED + "That person isn't playing!"); }else{ if(args[0].equalsIgnoreCase(pname)){ p.sendMessage(ChatColor.RED + "You can't sponsor yourself!"); }else{ target.sendMessage(ChatColor.AQUA + "You have been Sponsored!"); target.getInventory().addItem(sponsoritem); p.sendMessage("You have sponsored " + target.getName() + "!"); p.getInventory().removeItem(Cost); } } }else{ p.sendMessage(ChatColor.RED + "You don't have the necessary items to sponsor!"); } } } }else{ p.sendMessage(ChatColor.RED + "You are playing, you can't sponsor yourself!"); } } if(cmd.getName().equalsIgnoreCase("Ha")){ if(config.getString("Spawns_set").equalsIgnoreCase("false")){ p.sendMessage(ChatColor.RED + "/ha setspawn hasn't been run!"); } if(args.length== 0){ p.sendMessage(ChatColor.GREEN + "[HungerArena] by " + ChatColor.AQUA + "travja!"); return false; } if(args[0].equalsIgnoreCase("List")){ if(p.hasPermission("HungerArena.GameMaker")){ p.sendMessage(ChatColor.AQUA + "-----People Playing-----"); for(Player players:Playing){ p.sendMessage(ChatColor.GREEN + players.getDisplayName() + " Life: " + players.getHealth() + "/20"); } if(Playing.size()== 0){ p.sendMessage(ChatColor.GRAY + "No one is playing!"); } p.sendMessage(ChatColor.AQUA + "----------------------"); }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } if(args[0].equalsIgnoreCase("SetSpawn")){ if(p.hasPermission("HungerArena.SetSpawn")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Spawn_coords", x + "," + y + "," + z + "," + w); saveConfig(); config.set("Spawns_set", "true"); p.sendMessage(ChatColor.AQUA + "You have set the spawn for dead tributes!"); }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } String[] Spawncoords = config.getString("Spawn_coords").split(","); double spawnx = Double.parseDouble(Spawncoords[0]); double spawny = Double.parseDouble(Spawncoords[1]); double spawnz = Double.parseDouble(Spawncoords[2]); String spawnworld = Spawncoords[3]; World spawnw = getServer().getWorld(spawnworld); Location Spawn = new Location(spawnw, spawnx, spawny, spawnz); if(args[0].equalsIgnoreCase("Join")){ if(p.hasPermission("HungerArena.Join")){ if(Playing.contains(p)){ p.sendMessage(ChatColor.RED + "You are already playing!"); }else if(Dead.contains(p) || Quit.contains(p)){ p.sendMessage(ChatColor.RED + "You DIED/QUIT! You can't join again!"); }else if(Playing.size()== 24){ p.sendMessage(ChatColor.RED + "There are already 24 Tributes!"); }else if(canjoin== true){ p.sendMessage(ChatColor.RED + "The game is in progress!"); }else{ NeedConfirm.add(p); p.sendMessage(ChatColor.GOLD + "You're inventory will be cleared! Type /ha confirm to procede"); } }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } if(args[0].equalsIgnoreCase("Confirm")){ if(NeedConfirm.contains(p)){ Playing.add(p); NeedConfirm.remove(p); p.getInventory().clear(); p.getInventory().setBoots(null); p.getInventory().setChestplate(null); p.getInventory().setHelmet(null); p.getInventory().setLeggings(null); getServer().broadcastMessage(ChatColor.AQUA + pname + " has Joined the Game!"); if(Playing.size()== 24){ p.performCommand("ha warpall"); } } } if(args[0].equalsIgnoreCase("Ready")){ if(Playing.contains(p)){ Ready.add(p); p.sendMessage(ChatColor.AQUA + "You have marked yourself as READY!"); if(Playing.size()== Ready.size()){ p.performCommand("Ha Warpall"); } }else if(!Playing.contains(p)){ p.sendMessage(ChatColor.RED + "You aren't playing!"); } } if(args[0].equalsIgnoreCase("Leave")){ if(!Playing.contains(p)){ p.sendMessage(ChatColor.RED + "You aren't playing!"); }else{ Playing.remove(p); Quit.add(p); p.sendMessage(ChatColor.AQUA + "You have left the game!"); p.getServer().broadcastMessage(ChatColor.RED + pname + " Quit!"); p.getInventory().clear(); p.getInventory().setBoots(null); p.getInventory().setChestplate(null); p.getInventory().setHelmet(null); p.getInventory().setLeggings(null); p.teleport(Spawn); if(Frozen.contains(p)){ Frozen.remove(p); } if(Playing.size()== 1 && canjoin== true){ for(Player winner:Playing){ String winnername = winner.getName(); p.getServer().broadcastMessage(ChatColor.GREEN + winnername + " is the victor of this Hunger Games!"); winner.getInventory().clear(); winner.getInventory().addItem(Reward); } for(Player spectator:Watching){ spectator.setAllowFlight(false); } canjoin= false; Watching.clear(); } } } if(args[0].equalsIgnoreCase("Watch")){ if(p.hasPermission("HungerArena.Watch")){ if(!Watching.contains(p) && !Playing.contains(p) && canjoin== true){ Watching.add(p); for(Player online:getServer().getOnlinePlayers()){ online.hidePlayer(p); } p.setAllowFlight(true); p.sendMessage(ChatColor.AQUA + "You can now spectate!"); }else if(canjoin == false){ p.sendMessage(ChatColor.RED + "The game isn't in progress!"); }else if(Playing.contains(p)){ p.sendMessage(ChatColor.RED + "You can't watch while you're playing!"); }else if(Watching.contains(p)){ Watching.remove(p); for(Player online:getServer().getOnlinePlayers()){ online.showPlayer(p); } p.teleport(Spawn); p.setAllowFlight(false); p.sendMessage(ChatColor.AQUA + "You are not spectating anymore"); } }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } if(args[0].equalsIgnoreCase("Kick")){ Player target = getServer().getPlayer(args[1]); if(p.hasPermission("HungerArena.Kick")){ if(Playing.contains(target)){ if(p.isOnline()){ Playing.remove(target); getServer().broadcastMessage(ChatColor.RED + target.getName() + " was kicked from the game!"); target.teleport(Spawn); target.getInventory().clear(); target.getInventory().setBoots(null); target.getInventory().setChestplate(null); target.getInventory().setHelmet(null); target.getInventory().setLeggings(null); Quit.add(target); if(Playing.size()== 1 && canjoin== true){ for(Player winner:Playing){ String winnername = winner.getName(); p.getServer().broadcastMessage(ChatColor.GREEN + winnername + " is the victor of this Hunger Games!"); winner.getInventory().clear(); winner.getInventory().addItem(Reward); } for(Player spectator:Watching){ spectator.setAllowFlight(false); } canjoin= false; Watching.clear(); }else{ Playing.remove(target); Quit.add(target); } } }else{ p.sendMessage(ChatColor.RED + "That player isn't in the game!"); } }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } if(args[0].equalsIgnoreCase("Refill")){ int list056; list056 = 0; int limit; limit = getConfig().getStringList("StorageXYZ").size(); while(limit > list056){ String xyz2 = getConfig().getStringList("StorageXYZ").get(list056); int chestx = getConfig().getInt("Storage." + xyz2 + ".Location.X"); int chesty = getConfig().getInt("Storage." + xyz2 + ".Location.Y"); int chestz = getConfig().getInt("Storage." + xyz2 + ".Location.Z"); String chestw = getConfig().getString("Storage." + xyz2 + ".Location.W"); Block blockatlocation = Bukkit.getWorld(chestw).getBlockAt(chestx, chesty, chestz); exists = false; if(blockatlocation.getState() instanceof Chest){ exists = true; Chest chest = (Chest) blockatlocation.getState(); chest.getInventory().clear(); ItemStack[] itemsinchest = null; Object o = getConfig().get("Storage." + xyz2 + ".ItemsInStorage"); if(o instanceof ItemStack[]){ itemsinchest = (ItemStack[]) o; }else if(o instanceof List){ itemsinchest = (ItemStack[]) ((List) o).toArray(new ItemStack[0]); }else{ try{ throw new Exception(); }catch (Exception e) { e.printStackTrace(); } chest.getInventory().setContents(itemsinchest); } } } } if(args[0].equalsIgnoreCase("Restart")){ if(p.hasPermission("HungerArena.Restart")){ for(Player spectator:Watching){ spectator.setAllowFlight(false); } Dead.clear(); Playing.clear(); Quit.clear(); Watching.clear(); Frozen.clear(); canjoin = false; p.sendMessage(ChatColor.AQUA + "The games have been reset!"); }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } if(args[0].equalsIgnoreCase("Reload")){ reloadConfig(); p.sendMessage(ChatColor.AQUA + "HungerArena Reloaded!"); } if(args[0].equalsIgnoreCase("WarpAll")){ if(p.hasPermission("HungerArena.Warpall")){ if(Playing.size()== 1){ p.sendMessage(ChatColor.RED + "There are not enough players!"); } if(Playing.size()>= 2){ config.getString("Tribute_one_spawn"); String[] onecoords = config.getString("Tribute_one_spawn").split(","); Player Tribute_one = Playing.get(0); double x = Double.parseDouble(onecoords[0]); double y = Double.parseDouble(onecoords[1]); double z = Double.parseDouble(onecoords[2]); String world = onecoords[3]; World w = getServer().getWorld(world); Location oneloc = new Location(w, x, y, z); Tribute_one.teleport(oneloc); Frozen.add(Tribute_one); Tribute_one.setFoodLevel(20); config.getString("Tribute_two_spawn"); String[] twocoords = config.getString("Tribute_two_spawn").split(","); Player Tribute_two = Playing.get(1); double twox = Double.parseDouble(twocoords[0]); double twoy = Double.parseDouble(twocoords[1]); double twoz = Double.parseDouble(twocoords[2]); String twoworld = twocoords[3]; World twow = getServer().getWorld(twoworld); Location twoloc = new Location(twow, twox, twoy, twoz); Tribute_two.teleport(twoloc); Frozen.add(Tribute_two); Tribute_two.setFoodLevel(20); p.getWorld().setTime(0); } if(Playing.size()>= 3){ config.getString("Tribute_three_spawn"); String[] coords = config.getString("Tribute_three_spawn").split(","); Player Tribute_three = Playing.get(2); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_three.teleport(loc); Frozen.add(Tribute_three); Tribute_three.setFoodLevel(20); } if(Playing.size()>= 4){ config.getString("Tribute_four_spawn"); String[] coords = config.getString("Tribute_four_spawn").split(","); Player Tribute_four = Playing.get(3); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_four.teleport(loc); Frozen.add(Tribute_four); Tribute_four.setFoodLevel(20); } if(Playing.size()>= 5){ config.getString("Tribute_five_spawn"); String[] coords = config.getString("Tribute_five_spawn").split(","); Player Tribute_five = Playing.get(4); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_five.teleport(loc); Frozen.add(Tribute_five); Tribute_five.setFoodLevel(20); } if(Playing.size()>= 6){ config.getString("Tribute_six_spawn"); String[] coords = config.getString("Tribute_six_spawn").split(","); Player Tribute_six = Playing.get(5); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_six.teleport(loc); Frozen.add(Tribute_six); Tribute_six.setFoodLevel(20); } if(Playing.size()>= 7){ config.getString("Tribute_seven_spawn"); String[] coords = config.getString("Tribute_seven_spawn").split(","); Player Tribute_seven = Playing.get(6); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_seven.teleport(loc); Frozen.add(Tribute_seven); Tribute_seven.setFoodLevel(20); } if(Playing.size()>= 8){ config.getString("Tribute_eight_spawn"); String[] coords = config.getString("Tribute_eight_spawn").split(","); Player Tribute_eight = Playing.get(7); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_eight.teleport(loc); Frozen.add(Tribute_eight); Tribute_eight.setFoodLevel(20); } if(Playing.size()>= 9){ config.getString("Tribute_nine_spawn"); String[] coords = config.getString("Tribute_nine_spawn").split(","); Player Tribute_nine = Playing.get(8); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_nine.teleport(loc); Frozen.add(Tribute_nine); Tribute_nine.setFoodLevel(20); } if(Playing.size()>= 10){ config.getString("Tribute_ten_spawn"); String[] coords = config.getString("Tribute_ten_spawn").split(","); Player Tribute_ten = Playing.get(9); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_ten.teleport(loc); Frozen.add(Tribute_ten); Tribute_ten.setFoodLevel(20); } if(Playing.size()>= 11){ config.getString("Tribute_eleven_spawn"); String[] coords = config.getString("Tribute_eleven_spawn").split(","); Player Tribute_eleven = Playing.get(10); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_eleven.teleport(loc); Frozen.add(Tribute_eleven); Tribute_eleven.setFoodLevel(20); } if(Playing.size()>= 12){ config.getString("Tribute_twelve_spawn"); String[] coords = config.getString("Tribute_twelve_spawn").split(","); Player Tribute_twelve = Playing.get(11); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_twelve.teleport(loc); Frozen.add(Tribute_twelve); Tribute_twelve.setFoodLevel(20); } if(Playing.size()>= 13){ config.getString("Tribute_thirteen_spawn"); String[] coords = config.getString("Tribute_thirteen_spawn").split(","); Player Tribute_thirteen = Playing.get(12); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_thirteen.teleport(loc); Frozen.add(Tribute_thirteen); Tribute_thirteen.setFoodLevel(20); } if(Playing.size()>= 14){ config.getString("Tribute_fourteen_spawn"); String[] coords = config.getString("Tribute_fourteen_spawn").split(","); Player Tribute_fourteen = Playing.get(13); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_fourteen.teleport(loc); Frozen.add(Tribute_fourteen); Tribute_fourteen.setFoodLevel(20); } if(Playing.size()>= 15){ config.getString("Tribute_fifteen_spawn"); String[] coords = config.getString("Tribute_fifteen_spawn").split(","); Player Tribute_fifteen = Playing.get(14); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_fifteen.teleport(loc); Frozen.add(Tribute_fifteen); Tribute_fifteen.setFoodLevel(20); } if(Playing.size()>= 16){ config.getString("Tribute_sixteen_spawn"); String[] coords = config.getString("Tribute_sixteen_spawn").split(","); Player Tribute_sixteen = Playing.get(15); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_sixteen.teleport(loc); Frozen.add(Tribute_sixteen); Tribute_sixteen.setFoodLevel(20); } if(Playing.size()>= 17){ config.getString("Tribute_seventeen_spawn"); String[] coords = config.getString("Tribute_seventeen_spawn").split(","); Player Tribute_seventeen = Playing.get(16); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_seventeen.teleport(loc); Frozen.add(Tribute_seventeen); Tribute_seventeen.setFoodLevel(20); } if(Playing.size()>= 18){ config.getString("Tribute_eighteen_spawn"); String[] coords = config.getString("Tribute_eighteen_spawn").split(","); Player Tribute_eighteen = Playing.get(17); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_eighteen.teleport(loc); Frozen.add(Tribute_eighteen); Tribute_eighteen.setFoodLevel(20); } if(Playing.size()>= 19){ config.getString("Tribute_nineteen_spawn"); String[] coords = config.getString("Tribute_nineteen_spawn").split(","); Player Tribute_nineteen = Playing.get(18); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_nineteen.teleport(loc); Frozen.add(Tribute_nineteen); Tribute_nineteen.setFoodLevel(20); } if(Playing.size()>= 20){ config.getString("Tribute_twenty_spawn"); String[] coords = config.getString("Tribute_twenty_spawn").split(","); Player Tribute_twenty = Playing.get(19); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_twenty.teleport(loc); Frozen.add(Tribute_twenty); Tribute_twenty.setFoodLevel(20); } if(Playing.size()>= 21){ config.getString("Tribute_twentyone_spawn"); String[] coords = config.getString("Tribute_twentyone_spawn").split(","); Player Tribute_twentyone = Playing.get(20); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_twentyone.teleport(loc); Frozen.add(Tribute_twentyone); Tribute_twentyone.setFoodLevel(20); } if(Playing.size()>= 22){ config.getString("Tribute_twentytwo_spawn"); String[] coords = config.getString("Tribute_twentytwo_spawn").split(","); Player Tribute_twentytwo = Playing.get(21); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_twentytwo.teleport(loc); Frozen.add(Tribute_twentytwo); Tribute_twentytwo.setFoodLevel(20); } if(Playing.size()>= 23){ config.getString("Tribute_twentythree_spawn"); String[] coords = config.getString("Tribute_twentythree_spawn").split(","); Player Tribute_twentythree = Playing.get(22); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_twentythree.teleport(loc); Frozen.add(Tribute_twentythree); Tribute_twentythree.setFoodLevel(20); } if(Playing.size()>= 24){ config.getString("Tribute_twentyfour_spawn"); String[] coords = config.getString("Tribute_twentyfour_spawn").split(","); Player Tribute_twentyfour = Playing.get(23); double x = Double.parseDouble(coords[0]); double y = Double.parseDouble(coords[1]); double z = Double.parseDouble(coords[2]); String world = coords[3]; World w = getServer().getWorld(world); Location loc = new Location(w, x, y, z); Tribute_twentyfour.teleport(loc); Frozen.add(Tribute_twentyfour); Tribute_twentyfour.setFoodLevel(20); } } } if(args[0].equalsIgnoreCase("Start")){ String begin = config.getString("Start_Message"); begin = begin.replaceAll("(&([a-f0-9]))", "\u00A7$2"); final String msg = begin; if(p.hasPermission("HungerArena.Start")){ if(config.getString("Countdown").equalsIgnoreCase("true")){ getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("10"); } }, 20L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("9"); } }, 40L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("8"); } }, 60L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("7"); } }, 80L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("6"); } }, 100L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("5"); } }, 120L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("4"); } }, 140L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("3"); } }, 160L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("2"); } }, 180L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ getServer().broadcastMessage("1"); } }, 200L); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run(){ Frozen.clear(); getServer().broadcastMessage(msg); canjoin = true; } }, 220L); }else{ Frozen.clear(); p.getServer().broadcastMessage(ChatColor.AQUA + "Let the Games Begin!!"); canjoin = true; } }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } } if(cmd.getName().equalsIgnoreCase("StartPoint")){ if(p.hasPermission("HungerArena.StartPoint")){ if(args[0].equalsIgnoreCase("1")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_one_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute one!"); } if(args[0].equalsIgnoreCase("2")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_two_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute two!"); } if(args[0].equalsIgnoreCase("3")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_three_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute three!"); } if(args[0].equalsIgnoreCase("4")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_four_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute four!"); } if(args[0].equalsIgnoreCase("5")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_five_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute five!"); } if(args[0].equalsIgnoreCase("6")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_six_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute six!"); } if(args[0].equalsIgnoreCase("7")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_seven_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute seven!"); } if(args[0].equalsIgnoreCase("8")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_eight_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute eight!"); } if(args[0].equalsIgnoreCase("9")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_nine_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute nine!"); } if(args[0].equalsIgnoreCase("10")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_ten_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute ten!"); } if(args[0].equalsIgnoreCase("11")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_eleven_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute eleven!"); } if(args[0].equalsIgnoreCase("12")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_twelve_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute twelve!"); } if(args[0].equalsIgnoreCase("13")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_thirteen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute thirteen!"); } if(args[0].equalsIgnoreCase("14")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_fourteen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute fourteen!"); } if(args[0].equalsIgnoreCase("15")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_fifteen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute fifteen!"); } if(args[0].equalsIgnoreCase("16")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_sixteen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute sixteen!"); } if(args[0].equalsIgnoreCase("17")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_seventeen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute seventeen!"); } if(args[0].equalsIgnoreCase("18")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_eighteen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute eighteen!"); } if(args[0].equalsIgnoreCase("19")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_nineteen_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute nineteen!"); } if(args[0].equalsIgnoreCase("20")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_twenty_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute twenty!"); } if(args[0].equalsIgnoreCase("21")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_twentyone_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute twentyone!"); } if(args[0].equalsIgnoreCase("22")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_twentytwo_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute twentytwo!"); } if(args[0].equalsIgnoreCase("23")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_twentythree_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute twentythree!"); } if(args[0].equalsIgnoreCase("24")){ double x = p.getLocation().getX(); double y = p.getLocation().getY(); double z = p.getLocation().getZ(); String w = p.getWorld().getName(); config.set("Tribute_twentyfour_spawn", x + "," + y + "," + z + "," + w); saveConfig(); p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute twentyfour!"); } }else{ p.sendMessage(ChatColor.RED + "You don't have permission!"); } } return true; } } class DeadListener implements Listener{ public Main plugin; public DeadListener(Main m){ this.plugin = m; } @EventHandler public void onPlayerMove(PlayerMoveEvent event){ Player p = event.getPlayer(); if(plugin.Frozen.contains(p) && plugin.config.getString("Frozen_Teleport").equalsIgnoreCase("True")){ event.setCancelled(true); } } @EventHandler public void onPlayerRespawn(PlayerRespawnEvent event){ Player p = event.getPlayer(); if(plugin.Dead.contains(p)){ String[] Spawncoords = plugin.config.getString("Spawn_coords").split(","); World spawnw = p.getWorld(); double spawnx = Double.parseDouble(Spawncoords[0]); double spawny = Double.parseDouble(Spawncoords[1]); double spawnz = Double.parseDouble(Spawncoords[2]); Location Spawn = new Location(spawnw, spawnx, spawny, spawnz); event.setRespawnLocation(Spawn); } } @EventHandler public void onPlayerDeath(PlayerDeathEvent event){ Player p = event.getEntity(); Server s = p.getServer(); String pname = p.getName(); if(plugin.Playing.contains(p)){ if(plugin.config.getString("Cannon_Death").equalsIgnoreCase("True")){ p.getWorld().playEffect(p.getLocation(), Effect.ZOMBIE_CHEW_WOODEN_DOOR, 0, 300); } plugin.Dead.add(p); plugin.Playing.remove(p); String leftmsg = ChatColor.BLUE + "There are now " + plugin.Playing.size() + " tributes left!"; if(p.getKiller() instanceof Player){ if(p.getKiller().getItemInHand().getType().getId()== 0){ Player killer = p.getKiller(); String killername = killer.getName(); event.setDeathMessage(""); s.broadcastMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!"); s.broadcastMessage(leftmsg); if(plugin.Playing.size()== 1){ for(Player winner:plugin.Playing){ String winnername = winner.getName(); s.broadcastMessage(ChatColor.GREEN + winnername + " is the victor of this Hunger Games!"); winner.getInventory().clear(); winner.getInventory().setBoots(null); winner.getInventory().setChestplate(null); winner.getInventory().setHelmet(null); winner.getInventory().setLeggings(null); winner.getInventory().addItem(plugin.Reward); } for(Player spectator:plugin.Watching){ spectator.setAllowFlight(false); } if(plugin.config.getString("Auto_Restart").equalsIgnoreCase("True")){ plugin.Dead.clear(); plugin.Playing.clear(); plugin.Quit.clear(); plugin.Watching.clear(); plugin.Frozen.clear(); plugin.canjoin = false; } } }else{ Player killer = p.getKiller(); String killername = killer.getName(); Material weapon = killer.getItemInHand().getType(); String msg = ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with a(n) " + weapon; event.setDeathMessage(""); s.broadcastMessage(msg); s.broadcastMessage(leftmsg); if(plugin.Playing.size()== 1){ for(Player winner:plugin.Playing){ String winnername = winner.getName(); s.broadcastMessage(ChatColor.GREEN + winnername + " is the victor of this Hunger Games!"); winner.getInventory().clear(); winner.getInventory().setBoots(null); winner.getInventory().setChestplate(null); winner.getInventory().setHelmet(null); winner.getInventory().setLeggings(null); winner.getInventory().addItem(plugin.Reward); } for(Player spectator:plugin.Watching){ spectator.setAllowFlight(false); } if(plugin.config.getString("Auto_Restart").equalsIgnoreCase("True")){ plugin.Dead.clear(); plugin.Playing.clear(); plugin.Quit.clear(); plugin.Watching.clear(); plugin.Frozen.clear(); plugin.canjoin = false; } } } }else{ event.setDeathMessage(""); s.broadcastMessage(ChatColor.LIGHT_PURPLE + pname + " died of natural causes!"); s.broadcastMessage(leftmsg); if(plugin.Playing.size()== 1){ for(Player winner:plugin.Playing){ String winnername = winner.getName(); s.broadcastMessage(ChatColor.GREEN + winnername + " is the victor of this Hunger Games!"); winner.getInventory().clear(); winner.getInventory().setBoots(null); winner.getInventory().setChestplate(null); winner.getInventory().setHelmet(null); winner.getInventory().setLeggings(null); winner.getInventory().addItem(plugin.Reward); } for(Player spectator:plugin.Watching){ spectator.setAllowFlight(false); } if(plugin.config.getString("Auto_Restart").equalsIgnoreCase("True")){ plugin.Dead.clear(); plugin.Playing.clear(); plugin.Quit.clear(); plugin.Watching.clear(); plugin.Frozen.clear(); plugin.canjoin = false; } } } } if(plugin.Watching.contains(p)){ for(Player online:plugin.getServer().getOnlinePlayers()) online.showPlayer(p); } } @EventHandler public void onPlayerJoin(PlayerJoinEvent event){ Player p = event.getPlayer(); final Player player = event.getPlayer(); if(plugin.Watching.contains(p)){ p.setAllowFlight(true); p.setFlying(true); for(Player everyone:plugin.getServer().getOnlinePlayers()){ everyone.hidePlayer(p); } } if(plugin.Out.contains(p)){ plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){ public void run(){ player.sendMessage(ChatColor.AQUA + "You have saved yourself from being ejected from the arena!"); } }, 40L); plugin.Out.remove(p); } if(plugin.Quit.contains(p) || plugin.Dead.contains(p)){ String[] Spawncoords = plugin.config.getString("Spawn_coords").split(","); String w = Spawncoords[3]; World spawnw = plugin.getServer().getWorld(w); double spawnx = Double.parseDouble(Spawncoords[0]); double spawny = Double.parseDouble(Spawncoords[1]); double spawnz = Double.parseDouble(Spawncoords[2]); final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz); plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){ public void run(){ player.teleport(Spawn); player.sendMessage(ChatColor.RED + "You have been teleported to spawn because you quit/forfieted!"); } }, 40L); } } @EventHandler public void onPlayerQuit(PlayerQuitEvent event){ final Player p = event.getPlayer(); String[] Spawncoords = plugin.config.getString("Spawn_coords").split(","); String w = Spawncoords[3]; World spawnw = plugin.getServer().getWorld(w); double spawnx = Double.parseDouble(Spawncoords[0]); double spawny = Double.parseDouble(Spawncoords[1]); double spawnz = Double.parseDouble(Spawncoords[2]); final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz); if(plugin.Playing.contains(p)){ if(plugin.Playing.size()== 1){ } plugin.Out.add(p); } if(plugin.Watching.contains(p)){ System.out.println(p.getName() + " testing"); } plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){ public void run(){ if(plugin.Playing.contains(p) && plugin.Out.contains(p)){ if(plugin.canjoin== true){ plugin.Playing.remove(p); plugin.Quit.add(p); plugin.Out.remove(p); if(plugin.Playing.size()== 1){ for(Player winner:plugin.Playing){ String winnername = winner.getName(); p.getServer().broadcastMessage(ChatColor.GREEN + winnername + " is the victor of this Hunger Games!"); winner.getInventory().clear(); winner.getInventory().setBoots(null); winner.getInventory().setChestplate(null); winner.getInventory().setHelmet(null); winner.getInventory().setLeggings(null); winner.getInventory().addItem(plugin.Reward); } for(Player spectator:plugin.Watching){ spectator.setAllowFlight(false); spectator.teleport(Spawn); } if(plugin.config.getString("Auto_Restart").equalsIgnoreCase("True")){ plugin.Dead.clear(); plugin.Playing.clear(); plugin.Quit.clear(); plugin.Watching.clear(); plugin.Frozen.clear(); plugin.canjoin = false; } } }else if(plugin.canjoin== false){ plugin.Playing.remove(p); plugin.Quit.add(p); plugin.Out.remove(p); } } } }, 1200L); } @EventHandler public void BreakBlock(BlockBreakEvent event){ Player p = event.getPlayer(); if(plugin.Playing.contains(p)){ if(plugin.config.getString("Protected_Arena").equalsIgnoreCase("True")){ event.setCancelled(true); p.sendMessage(ChatColor.RED + "You can't break blocks when you're playing!"); } } if(plugin.Watching.contains(p)){ event.setCancelled(true); p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!"); } } @EventHandler public void TributeChat(PlayerChatEvent event){ Player p = event.getPlayer(); if(plugin.Playing.contains(p)){ String msg = "<" + ChatColor.RED + "[Tribute] " + ChatColor.WHITE + p.getName() + ">" + " " + event.getMessage(); if(plugin.config.getString("ChatClose").equalsIgnoreCase("True")){ double radius = plugin.config.getDouble("ChatClose_Radius"); List near = p.getNearbyEntities(radius, radius, radius); event.setCancelled(true); if(near.size()== 0){ p.sendMessage(msg); p.sendMessage(ChatColor.YELLOW + "No one near!"); }else if(!(near.size()== 0)){ for(Entity en:near){ if(!(en instanceof Player)){ p.sendMessage(msg); p.sendMessage(ChatColor.YELLOW + "No one near!"); } } }else{ for(Entity e:near){ if(e instanceof Player){ ((Player) e).sendMessage(msg); } } } }else{ plugin.getServer().broadcastMessage(msg); } } } @EventHandler public void PvP(EntityDamageByEntityEvent event){ Entity p = event.getEntity(); Entity offense = event.getDamager(); if(p instanceof Player){ if(plugin.Playing.contains(p) && plugin.canjoin== false){ event.setCancelled(true); } } if(offense instanceof Player){ Player Attacker = (Player) event.getDamager(); if(plugin.Watching.contains(Attacker)){ event.setCancelled(true); Attacker.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!"); } }else if(event.getDamager() instanceof Projectile){ Projectile arrow = (Projectile) offense; if(arrow.getShooter() instanceof Player){ Player BowMan = (Player) arrow.getShooter(); if(plugin.Watching.contains(BowMan)){ event.setCancelled(true); BowMan.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!"); } } } } @EventHandler public void SpectatorDrops(PlayerDropItemEvent event){ Player p = event.getPlayer(); if(plugin.Watching.contains(p)){ event.setCancelled(true); p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!"); } } @EventHandler public void SpectatorInteractions(PlayerInteractEvent event){ Player p = event.getPlayer(); if(plugin.Watching.contains(p)){ event.setCancelled(true); p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!"); } } @EventHandler public void SpectatorItems(PlayerPickupItemEvent event){ Player p = event.getPlayer(); if(plugin.Watching.contains(p)){ event.setCancelled(true); p.sendMessage(ChatColor.RED + "You are spectating, you can't interfere with the game!"); } } @EventHandler public void ChestSaves(PlayerInteractEvent event){ Block block = event.getClickedBlock(); Player p = event.getPlayer(); //currently crashes the server when refilling.... //Kinda glitchy through all here... if(p.getItemInHand().getType()== Material.BLAZE_ROD && event.getAction() == Action.LEFT_CLICK_BLOCK){ if(block.getState() instanceof Chest){ ItemStack[] itemsinchest = ((Chest) block.getState()).getInventory().getContents(); int blockx = block.getX(); int blocky = block.getY(); int blockz = block.getZ(); String blockw = block.getWorld().getName().toString(); if(!plugin.getConfig().contains("Storage." + blockx + "," + blocky + "," + blockz + ".Location.X")){ plugin.getConfig().addDefault("Storage." + blockx + "," + blocky + "," + blockz + ".Location.X", blockx); plugin.getConfig().addDefault("Storage." + blockx + "," + blocky + "," + blockz + ".Location.Y", blocky); plugin.getConfig().addDefault("Storage." + blockx + "," + blocky + "," + blockz + ".Location.Z",blockz); plugin.getConfig().addDefault("Storage." + blockx + "," + blocky + "," + blockz + ".Location.W", blockw); plugin.getConfig().addDefault("Storage." + blockx + "," + blocky + "," + blockz + ".ItemsInStorage", itemsinchest); }else{ plugin.getConfig().set("Storage." + blockx + "," + blocky+ "," + blockz + ".Location.X",blockx); plugin.getConfig().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.Y", blocky); plugin.getConfig().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.Z", blockz); plugin.getConfig().set("Storage." + blockx + "," + blocky + "," + blockz + ".Location.W", blockw); plugin.getConfig().set("Storage." + blockx + "," + blocky + "," + blockz + ".ItemsInStorage", itemsinchest); } List list2 = plugin.getConfig().getStringList("StorageXYZ"); list2.add(blockx + "," + blocky + "," + blockz); plugin.getConfig().set("StorageXYZ", list2); plugin.getConfig().options().copyDefaults(true); plugin.saveConfig(); } } }*/ }