Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.comze_instancelabs.bedwars;
- import com.comze_instancelabs.bedwars.gui.MainGUI;
- import com.comze_instancelabs.bedwars.gui.TeamSelectorGUI;
- import com.comze_instancelabs.bedwars.sheep.Register;
- import com.comze_instancelabs.bedwars.sheep.Register110;
- import com.comze_instancelabs.bedwars.sheep.Register111;
- import com.comze_instancelabs.bedwars.sheep.Register1710;
- import com.comze_instancelabs.bedwars.sheep.Register172;
- import com.comze_instancelabs.bedwars.sheep.Register175;
- import com.comze_instancelabs.bedwars.sheep.Register178;
- import com.comze_instancelabs.bedwars.sheep.Register18;
- import com.comze_instancelabs.bedwars.sheep.Register185;
- import com.comze_instancelabs.bedwars.sheep.Register188;
- import com.comze_instancelabs.bedwars.sheep.Register19;
- import com.comze_instancelabs.bedwars.sheep.Register194;
- import com.comze_instancelabs.bedwars.sheep.Sheeep;
- import com.comze_instancelabs.bedwars.villager.Merchant;
- import com.comze_instancelabs.bedwars.villager.Merchant110;
- import com.comze_instancelabs.bedwars.villager.Merchant111;
- import com.comze_instancelabs.bedwars.villager.Merchant1710;
- import com.comze_instancelabs.bedwars.villager.Merchant172;
- import com.comze_instancelabs.bedwars.villager.Merchant175;
- import com.comze_instancelabs.bedwars.villager.Merchant178;
- import com.comze_instancelabs.bedwars.villager.Merchant18;
- import com.comze_instancelabs.bedwars.villager.Merchant185;
- import com.comze_instancelabs.bedwars.villager.Merchant188;
- import com.comze_instancelabs.bedwars.villager.Merchant19;
- import com.comze_instancelabs.bedwars.villager.Merchant194;
- import com.comze_instancelabs.minigamesapi.Arena;
- import com.comze_instancelabs.minigamesapi.ArenaSetup;
- import com.comze_instancelabs.minigamesapi.ArenaState;
- import com.comze_instancelabs.minigamesapi.ArenaType;
- import com.comze_instancelabs.minigamesapi.MinigamesAPI;
- import com.comze_instancelabs.minigamesapi.PluginInstance;
- import com.comze_instancelabs.minigamesapi.SmartReset;
- import com.comze_instancelabs.minigamesapi.config.ArenasConfig;
- import com.comze_instancelabs.minigamesapi.config.DefaultConfig;
- import com.comze_instancelabs.minigamesapi.config.MessagesConfig;
- import com.comze_instancelabs.minigamesapi.config.StatsConfig;
- import com.comze_instancelabs.minigamesapi.util.Cuboid;
- import com.comze_instancelabs.minigamesapi.util.Util;
- import com.comze_instancelabs.minigamesapi.util.Validator;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.logging.Logger;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Chunk;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.block.Block;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.configuration.file.FileConfigurationOptions;
- import org.bukkit.entity.Arrow;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Item;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Villager;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.entity.ItemSpawnEvent;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryType.SlotType;
- import org.bukkit.event.player.AsyncPlayerChatEvent;
- import org.bukkit.event.player.PlayerBedEnterEvent;
- import org.bukkit.event.player.PlayerInteractEntityEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.event.player.PlayerMoveEvent;
- import org.bukkit.event.player.PlayerTeleportEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.PlayerInventory;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.plugin.PluginManager;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.scheduler.BukkitScheduler;
- import org.bukkit.util.Vector;
- public class Main
- extends JavaPlugin
- implements Listener
- {
- Register reg;
- MinigamesAPI api = null;
- PluginInstance pli = null;
- static Main m = null;
- public IArenaScoreboard scoreboard = new IArenaScoreboard(this);
- ICommandHandler cmdhandler = new ICommandHandler();
- public MainGUI maingui;
- public TeamSelectorGUI teamgui;
- public GUIConfig gui;
- public static HashMap<String, String> pteam = new HashMap();
- public Merchant BlocksMerchant;
- public Merchant ArmorMerchant;
- public Merchant PickaxesMerchant;
- public Merchant SwordsMerchant;
- public Merchant BowsMerchant;
- public Merchant ConsumablesMerchant;
- public Merchant ChestsMerchant;
- public Merchant PotionsMerchant;
- public Merchant SpecialsMerchant;
- public void onEnable()
- {
- m = this;
- MinigamesAPI.getAPI();this.api = MinigamesAPI.setupAPI(this, "bedwars", IArena.class, new ArenasConfig(this), new MessagesConfig(this), new IClassesConfig(this), new StatsConfig(this, false), new DefaultConfig(this, false), true);
- PluginInstance pinstance = (PluginInstance)MinigamesAPI.pinstances.get(this);
- pinstance.addLoadedArenas(loadArenas(this, pinstance.getArenasConfig()));
- Bukkit.getPluginManager().registerEvents(this, this);
- pinstance.scoreboardManager = new IArenaScoreboard(this);
- pinstance.arenaSetup = new IArenaSetup();
- IArenaListener listener = new IArenaListener(this, pinstance, "bedwars");
- pinstance.setArenaListener(listener);
- MinigamesAPI.getAPI();MinigamesAPI.registerArenaListenerLater(this, listener);
- pinstance.setAchievementGuiEnabled(true);
- this.pli = pinstance;
- this.gui = new GUIConfig(this);
- this.maingui = new MainGUI(this.pli, this);
- this.teamgui = new TeamSelectorGUI(this.pli, this);
- boolean continue_ = false;
- for (Method m : this.pli.getArenaAchievements().getClass().getMethods()) {
- if (m.getName().equalsIgnoreCase("addDefaultAchievement")) {
- continue_ = true;
- }
- }
- if (continue_) {}
- this.BlocksMerchant = createMerchant("Blocks");
- this.ArmorMerchant = createMerchant("Armor");
- this.PickaxesMerchant = createMerchant("Pickaxes");
- this.SwordsMerchant = createMerchant("Swords");
- this.BowsMerchant = createMerchant("Bows");
- this.ConsumablesMerchant = createMerchant("Consumables");
- this.ChestsMerchant = createMerchant("Chests");
- this.PotionsMerchant = createMerchant("Potions");
- this.SpecialsMerchant = createMerchant("Specials");
- FileConfiguration config = this.gui.getConfig();
- loadTrades(config, "blocksgui.trades.", this.BlocksMerchant);
- loadTrades(config, "armorgui.trades.", this.ArmorMerchant);
- loadTrades(config, "pickaxesgui.trades.", this.PickaxesMerchant);
- loadTrades(config, "swordsgui.trades.", this.SwordsMerchant);
- loadTrades(config, "bowsgui.trades.", this.BowsMerchant);
- loadTrades(config, "consumablesgui.trades.", this.ConsumablesMerchant);
- loadTrades(config, "chestsgui.trades.", this.ChestsMerchant);
- loadTrades(config, "potionsgui.trades.", this.PotionsMerchant);
- loadTrades(config, "specialsgui.trades.", this.SpecialsMerchant);
- this.pli.getMessagesConfig().getConfig().addDefault("messages.bed_destroyed", "&cTeam &4<team>&c's bed was destroyed!");
- this.pli.getMessagesConfig().getConfig().options().copyDefaults(true);
- this.pli.getMessagesConfig().saveConfig();
- switch (MinigamesAPI.SERVER_VERSION)
- {
- case Unknown:
- default:
- break;
- case V1_10:
- case V1_10_R1:
- this.reg = new Register110();
- break;
- case V1_11:
- case V1_11_R1:
- this.reg = new Register111();
- break;
- case V1_7:
- case V1_7_R1:
- this.reg = new Register172();
- break;
- case V1_7_R2:
- this.reg = new Register175();
- break;
- case V1_7_R3:
- this.reg = new Register178();
- break;
- case V1_7_R4:
- this.reg = new Register1710();
- break;
- case V1_8:
- case V1_8_R1:
- this.reg = new Register18();
- break;
- case V1_8_R2:
- this.reg = new Register185();
- break;
- case V1_8_R3:
- this.reg = new Register188();
- break;
- case V1_9:
- case V1_9_R1:
- this.reg = new Register19();
- break;
- case V1_9_R2:
- this.reg = new Register194();
- }
- this.reg.registerEntities();
- }
- private Merchant createMerchant(String string)
- {
- switch (MinigamesAPI.SERVER_VERSION)
- {
- case Unknown:
- default:
- break;
- case V1_11:
- case V1_11_R1:
- return new Merchant111(string);
- case V1_10:
- case V1_10_R1:
- return new Merchant110(string);
- case V1_7:
- case V1_7_R1:
- return new Merchant172(string);
- case V1_7_R2:
- return new Merchant175(string);
- case V1_7_R3:
- return new Merchant178(string);
- case V1_7_R4:
- return new Merchant1710(string);
- case V1_8:
- case V1_8_R1:
- return new Merchant18(string);
- case V1_8_R2:
- return new Merchant185(string);
- case V1_8_R3:
- return new Merchant188(string);
- case V1_9:
- case V1_9_R1:
- return new Merchant19(string);
- case V1_9_R2:
- return new Merchant194(string);
- }
- return null;
- }
- public void loadTrades(FileConfiguration config, String path, Merchant m)
- {
- if (config.isSet(path)) {
- for (String aclass : config.getConfigurationSection(path).getKeys(false))
- {
- ArrayList<ItemStack> items = Util.parseItems(config.getString(path + aclass + ".items"));
- if (items.size() > 2) {
- m.addOffer((ItemStack)items.get(1), (ItemStack)items.get(2), (ItemStack)items.get(0));
- } else {
- m.addOffer((ItemStack)items.get(1), (ItemStack)items.get(0));
- }
- }
- }
- }
- public static ArrayList<Arena> loadArenas(JavaPlugin plugin, ArenasConfig cf)
- {
- ArrayList<Arena> ret = new ArrayList();
- FileConfiguration config = cf.getConfig();
- if (!config.isSet("arenas")) {
- return ret;
- }
- for (String arena : config.getConfigurationSection("arenas.").getKeys(false)) {
- if (Validator.isArenaValid(plugin, arena, cf.getConfig())) {
- ret.add(initArena(arena));
- }
- }
- return ret;
- }
- public static IArena initArena(String arena)
- {
- IArena a = new IArena(m, arena);
- MinigamesAPI.getAPI();ArenaSetup s = ((PluginInstance)MinigamesAPI.pinstances.get(m)).arenaSetup;
- a.init(Util.getSignLocationFromArena(m, arena), Util.getAllSpawns(m, arena), Util.getMainLobby(m), Util.getComponentForArena(m, arena, "lobby"), s.getPlayerCount(m, arena, true), s.getPlayerCount(m, arena, false), s.getArenaVIP(m, arena));
- return a;
- }
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
- {
- boolean ret = this.cmdhandler.handleArgs(this, MinigamesAPI.getAPI().getPermissionGamePrefix("bedwars"), "/" + cmd.getName(), sender, args);
- if ((args.length > 0) &&
- (args[0].equalsIgnoreCase("setupbeds")) &&
- (args.length > 1)) {
- if ((sender instanceof Player))
- {
- Player p = (Player)sender;
- p.getInventory().addItem(new ItemStack[] { getSetupBed(args[1], "red") });
- p.getInventory().addItem(new ItemStack[] { getSetupBed(args[1], "blue") });
- p.getInventory().addItem(new ItemStack[] { getSetupBed(args[1], "green") });
- p.getInventory().addItem(new ItemStack[] { getSetupBed(args[1], "yellow") });
- p.updateInventory();
- }
- else
- {
- sender.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.RED + "-" + ChatColor.DARK_GRAY + "]" + ChatColor.GRAY + " Usage: " + cmd.getName() + " setupbeds <arena> <team>");
- }
- }
- return ret;
- }
- public ItemStack getSetupBed(String arena, String team)
- {
- ItemStack item = new ItemStack(Material.BED);
- ItemMeta itemmeta = item.getItemMeta();
- itemmeta.setDisplayName("bwbeds:" + team + "#" + arena);
- item.setItemMeta(itemmeta);
- return item;
- }
- @EventHandler
- public void onPlace(BlockPlaceEvent event)
- {
- if (event.getBlock().getType() == Material.BED_BLOCK)
- {
- if ((event.getItemInHand().hasItemMeta()) &&
- (event.getItemInHand().getItemMeta().hasDisplayName()))
- {
- String displayname = event.getItemInHand().getItemMeta().getDisplayName();
- if (displayname.startsWith("bwbeds:"))
- {
- int a = displayname.indexOf("#");
- String arena = displayname.substring(a + 1);
- String team = displayname.substring(displayname.indexOf(":") + 1, a);
- getLogger().fine("#" + arena + " " + team);
- Util.saveComponentForArena(this, arena, team + "_bed.loc1", event.getBlock().getLocation());
- Location l = event.getBlock().getLocation();
- for (int i = -3; i < 3; i++) {
- for (int j = -3; j < 3; j++)
- {
- Location l_ = l.clone().add(i, 0.0D, j);
- if ((l.getBlockX() != l_.getBlockX()) || (l.getBlockY() != l_.getBlockY()) || (l.getBlockZ() != l_.getBlockZ())) {
- if (l_.getBlock().getType() == Material.BED_BLOCK) {
- Util.saveComponentForArena(this, arena, team + "_bed.loc2", l_);
- }
- }
- }
- }
- }
- }
- }
- else if (event.getBlock().getType() == Material.WOOL)
- {
- if (this.pli.global_players.containsKey(event.getPlayer().getName())) {
- event.setCancelled(true);
- }
- }
- else if (this.pli.global_players.containsKey(event.getPlayer().getName()))
- {
- Arena a = (Arena)this.pli.global_players.get(event.getPlayer().getName());
- if (a.getArenaState() == ArenaState.INGAME) {
- a.getSmartReset().addChanged(event.getBlock(), event.getBlockReplacedState());
- }
- }
- }
- @EventHandler
- public void onInteract(PlayerBedEnterEvent event)
- {
- if (this.pli.global_players.containsKey(event.getPlayer().getName())) {
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onEntityInteract(final PlayerInteractEntityEvent event)
- {
- final Player p = event.getPlayer();
- if ((this.pli.global_players.containsKey(p.getName())) &&
- (event.getRightClicked().getType() == EntityType.VILLAGER))
- {
- Bukkit.getScheduler().runTaskLater(this, new Runnable()
- {
- public void run()
- {
- Main.this.maingui.openGUI((Villager)event.getRightClicked(), p.getName());
- }
- }, 1L);
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onInventoryClick(InventoryClickEvent event)
- {
- Player p = (Player)event.getWhoClicked();
- if ((this.pli.global_players.containsKey(p.getName())) &&
- (event.getInventory().getName().equalsIgnoreCase("container.crafting")) &&
- (event.getSlotType() == InventoryType.SlotType.RESULT)) {
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onInteract(final PlayerInteractEvent event)
- {
- if ((event.hasItem()) &&
- (this.pli.global_players.containsKey(event.getPlayer().getName())))
- {
- Arena a = (Arena)this.pli.global_players.get(event.getPlayer().getName());
- if (event.getItem().getType() == Material.WOOL)
- {
- if ((a.getArenaState() != ArenaState.INGAME) && (!a.isArcadeMain()) && (!a.getIngameCountdownStarted())) {
- this.teamgui.openGUI(event.getPlayer().getName());
- }
- }
- else if ((event.getItem().getType() == Material.MONSTER_EGG) &&
- (event.hasBlock()))
- {
- if (pteam.containsKey(event.getPlayer().getName()))
- {
- String team = (String)pteam.get(event.getPlayer().getName());
- Location l = event.getPlayer().getLocation();
- Player target = null;
- int temp_dist = 0;
- for (String p_ : a.getAllPlayers()) {
- if (Validator.isPlayerOnline(p_))
- {
- Player p = Bukkit.getPlayer(p_);
- if ((pteam.containsKey(p.getName())) && (this.pli.global_players.containsKey(p.getName())) &&
- (!((String)pteam.get(p.getName())).equalsIgnoreCase(team)))
- {
- int dist = (int)p.getLocation().distance(l);
- if (dist < temp_dist) {
- break;
- }
- temp_dist = dist;
- target = p; break;
- }
- }
- }
- if (target != null)
- {
- getLogger().fine("# Spawned sheeep for target " + target.getName());
- final Sheeep s = this.reg.spawnSheep(this, event.getClickedBlock().getLocation().add(0.0D, 1.0D, 0.0D), target, colorCodeFromTeam(team));
- final ItemStack item = event.getPlayer().getItemInHand();
- l.getBlock().getChunk().load();
- Bukkit.getScheduler().runTaskLater(this, new Runnable()
- {
- public void run()
- {
- event.getPlayer().getInventory().remove(item);
- event.getPlayer().updateInventory();
- }
- }, 5L);
- Bukkit.getScheduler().runTaskLater(this, new Runnable()
- {
- public void run()
- {
- Location l = s.getLocation();
- l.getWorld().createExplosion(l.getX(), l.getY(), l.getZ(), 2.5F, true, false);
- }
- }, 140L);
- }
- }
- event.setCancelled(true);
- }
- }
- }
- @EventHandler(priority=EventPriority.HIGHEST)
- public void onMove(PlayerMoveEvent event)
- {
- Player p = event.getPlayer();
- if (this.pli.global_players.containsKey(p.getName()))
- {
- IArena a = (IArena)this.pli.global_players.get(p.getName());
- if ((a.getArenaState() == ArenaState.INGAME) &&
- (p.getLocation().getY() < 0.0D)) {
- if (pteam.containsKey(p.getName()))
- {
- String team = (String)pteam.get(p.getName());
- String playername = p.getName();
- Util.clearInv(p);
- if (team.equalsIgnoreCase("red"))
- {
- if (a.red_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- }
- }
- else if (team.equalsIgnoreCase("blue"))
- {
- if (a.blue_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- }
- }
- else if (team.equalsIgnoreCase("green"))
- {
- if (a.green_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- }
- }
- else if (team.equalsIgnoreCase("yellow")) {
- if (a.yellow_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- }
- }
- this.scoreboard.updateScoreboard(a);
- }
- }
- }
- }
- @EventHandler(priority=EventPriority.HIGHEST)
- public void onPlayerDeath(PlayerDeathEvent event)
- {
- Player p = event.getEntity();
- if (this.pli.global_players.containsKey(p.getName()))
- {
- IArena a = (IArena)this.pli.global_players.get(p.getName());
- if (a.getArenaState() == ArenaState.INGAME)
- {
- event.setDeathMessage(null);
- p.setHealth(20.0D);
- event.getDrops().clear();
- if (pteam.containsKey(p.getName()))
- {
- String team = (String)pteam.get(p.getName());
- String playername = p.getName();
- if (team.equalsIgnoreCase("red"))
- {
- if (a.red_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- a.red -= 1;
- }
- }
- else if (team.equalsIgnoreCase("blue"))
- {
- if (a.blue_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- a.blue -= 1;
- }
- }
- else if (team.equalsIgnoreCase("green"))
- {
- if (a.green_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- a.green -= 1;
- }
- }
- else if (team.equalsIgnoreCase("yellow")) {
- if (a.yellow_bed)
- {
- a.onEliminated(playername);
- Util.teleportPlayerFixed(p, Util.getComponentForArena(m, a.getName(), "spawns.spawn" + (String)pteam.get(playername)));
- }
- else
- {
- a.spectate(p.getName(), true);
- a.yellow -= 1;
- }
- }
- teamCheck(a);
- }
- }
- }
- }
- public void teamCheck(IArena a)
- {
- if ((a.blue < 1) && (a.red < 1) && (a.yellow < 1) && (a.green > 0)) {
- a.stop();
- }
- if ((a.blue < 1) && (a.red < 1) && (a.yellow > 0) && (a.green < 1)) {
- a.stop();
- }
- if ((a.blue < 1) && (a.red > 0) && (a.yellow < 1) && (a.green < 1)) {
- a.stop();
- }
- if ((a.blue > 0) && (a.red < 1) && (a.yellow < 1) && (a.green < 1)) {
- a.stop();
- }
- }
- @EventHandler
- public void onEntityDamageByEntity(EntityDamageByEntityEvent event)
- {
- if ((event.getEntity() instanceof Player))
- {
- Player p = (Player)event.getEntity();
- if (this.pli.global_players.containsKey(p.getName()))
- {
- IArena a = (IArena)this.pli.global_players.get(p.getName());
- if (a.getArenaState() == ArenaState.INGAME) {
- if ((event.getDamager() instanceof Player))
- {
- Player p2 = (Player)event.getDamager();
- if (((String)pteam.get(p.getName())).equalsIgnoreCase((String)pteam.get(p2.getName()))) {
- event.setCancelled(true);
- }
- }
- else if ((event.getDamager() instanceof Arrow))
- {
- Arrow ar = (Arrow)event.getDamager();
- if ((ar.getShooter() instanceof Player))
- {
- Player p2 = (Player)ar.getShooter();
- if (((String)pteam.get(p.getName())).equalsIgnoreCase((String)pteam.get(p2.getName()))) {
- event.setCancelled(true);
- }
- }
- }
- }
- }
- }
- else if ((event.getDamager() instanceof Player))
- {
- Player p = (Player)event.getDamager();
- if (this.pli.global_players.containsKey(p.getName())) {
- event.setCancelled(true);
- }
- }
- else if ((event.getDamager() instanceof Arrow))
- {
- Arrow ar = (Arrow)event.getDamager();
- if ((ar.getShooter() instanceof Player))
- {
- Player p = (Player)ar.getShooter();
- if (this.pli.global_players.containsKey(p.getName())) {
- event.setCancelled(true);
- }
- }
- }
- }
- @EventHandler
- public void onItemSpawn(ItemSpawnEvent event)
- {
- for (Arena a : this.pli.getArenas()) {
- if ((Validator.isArenaValid(this, a)) && (a.getArenaType() == ArenaType.REGENERATION))
- {
- Cuboid c = a.getBoundaries();
- if ((c != null) && (a.getArenaState() == ArenaState.INGAME) &&
- (c.containsLocWithoutY(event.getEntity().getLocation())) &&
- (event.getEntity().getItemStack().getType() == Material.BED)) {
- event.setCancelled(true);
- }
- }
- }
- }
- @EventHandler
- public void onBreak(BlockBreakEvent event)
- {
- Player p = event.getPlayer();
- if (this.pli.global_players.containsKey(p.getName()))
- {
- IArena a = (IArena)this.pli.global_players.get(p.getName());
- if (a.getArenaState() == ArenaState.INGAME)
- {
- if (event.getBlock().getType() == Material.BED_BLOCK)
- {
- String team = getTeambyBedLocation(a.getName(), event.getBlock().getLocation());
- if (team == "-")
- {
- event.setCancelled(true);
- return;
- }
- if (((String)pteam.get(p.getName())).equalsIgnoreCase(team))
- {
- event.setCancelled(true);
- return;
- }
- if (team.equalsIgnoreCase("red")) {
- a.red_bed = false;
- } else if (team.equalsIgnoreCase("green")) {
- a.green_bed = false;
- } else if (team.equalsIgnoreCase("blue")) {
- a.blue_bed = false;
- } else if (team.equalsIgnoreCase("yellow")) {
- a.yellow_bed = false;
- } else {
- return;
- }
- a.getSmartReset().addChanged(event.getBlock(), event.getBlock().getType().equals(Material.CHEST));
- a.getSmartReset().addChanged(event.getBlock().getLocation().clone().add(1.0D, 0.0D, 0.0D).getBlock(), event.getBlock().getLocation().clone().add(1.0D, 0.0D, 1.0D).getBlock().getType().equals(Material.CHEST));
- a.getSmartReset().addChanged(event.getBlock().getLocation().clone().add(-1.0D, 0.0D, 0.0D).getBlock(), event.getBlock().getLocation().clone().add(1.0D, 0.0D, -1.0D).getBlock().getType().equals(Material.CHEST));
- a.getSmartReset().addChanged(event.getBlock().getLocation().clone().add(0.0D, 0.0D, 1.0D).getBlock(), event.getBlock().getLocation().clone().add(-1.0D, 0.0D, 1.0D).getBlock().getType().equals(Material.CHEST));
- a.getSmartReset().addChanged(event.getBlock().getLocation().clone().add(0.0D, 0.0D, -1.0D).getBlock(), event.getBlock().getLocation().clone().add(-1.0D, 0.0D, -1.0D).getBlock().getType().equals(Material.CHEST));
- event.getBlock().setType(Material.AIR);
- for (String p_ : a.getAllPlayers()) {
- if (Validator.isPlayerOnline(p_)) {
- Bukkit.getPlayer(p_).sendMessage(ChatColor.translateAlternateColorCodes('&', this.pli.getMessagesConfig().getConfig().getString("messages.bed_destroyed").replaceAll("<team>", Character.toUpperCase(team.charAt(0)) + team.substring(1))));
- }
- }
- return;
- }
- if ((event.getBlock().getType() != Material.IRON_BLOCK) && (event.getBlock().getType() != Material.ENDER_CHEST) && (event.getBlock().getType() != Material.TNT) && (event.getBlock().getType() != Material.SANDSTONE) && (event.getBlock().getType() != Material.GLOWSTONE) && (event.getBlock().getType() != Material.ENDER_STONE) && (event.getBlock().getType() != Material.GLASS) && (event.getBlock().getType() != Material.LADDER) && (event.getBlock().getType() != Material.CHEST)) {
- event.setCancelled(true);
- }
- }
- }
- }
- public String getTeambyBedLocation(String arena, Location l)
- {
- String ret = "-";
- HashMap<String, Location> temp = new HashMap();
- temp.put("yellow_1", Util.getComponentForArena(this, arena, "yellow_bed.loc1"));
- temp.put("yellow_2", Util.getComponentForArena(this, arena, "yellow_bed.loc2"));
- temp.put("red_1", Util.getComponentForArena(this, arena, "red_bed.loc1"));
- temp.put("red_2", Util.getComponentForArena(this, arena, "red_bed.loc2"));
- temp.put("blue_1", Util.getComponentForArena(this, arena, "blue_bed.loc1"));
- temp.put("blue_2", Util.getComponentForArena(this, arena, "blue_bed.loc2"));
- temp.put("green_1", Util.getComponentForArena(this, arena, "green_bed.loc1"));
- temp.put("green_2", Util.getComponentForArena(this, arena, "green_bed.loc2"));
- for (String team : temp.keySet()) {
- if (temp.get(team) != null)
- {
- Location l_ = (Location)temp.get(team);
- if ((l.getBlockX() == l_.getBlockX()) && (l.getBlockY() == l_.getBlockY()) && (l.getBlockZ() == l_.getBlockZ())) {
- return team.substring(0, team.indexOf("_"));
- }
- }
- }
- return ret;
- }
- @EventHandler(priority=EventPriority.HIGHEST)
- public void onChat(AsyncPlayerChatEvent event)
- {
- Player p = event.getPlayer();
- if (this.pli.global_players.containsKey(p.getName()))
- {
- if (!pteam.containsKey(p.getName())) {
- return;
- }
- if (event.getMessage().startsWith("@")) {
- return;
- }
- if (event.getMessage().startsWith("all"))
- {
- event.setMessage(event.getMessage().replace("all", ""));
- return;
- }
- String team = (String)pteam.get(p.getName());
- String msg = String.format(ChatColor.GRAY + "[" + ChatColor.valueOf(team.toUpperCase()) + team + ChatColor.GRAY + "] " + event.getFormat(), new Object[] { p.getName(), event.getMessage() });
- for (Player receiver : event.getRecipients()) {
- if ((this.pli.global_players.containsKey(receiver.getName())) &&
- (this.pli.global_players.get(receiver.getName()) == this.pli.global_players.get(p.getName())) &&
- (pteam.containsKey(receiver.getName())) &&
- (((String)pteam.get(receiver.getName())).equalsIgnoreCase(team))) {
- receiver.sendMessage(msg);
- }
- }
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onTeleport(PlayerTeleportEvent event)
- {
- final Player p = event.getPlayer();
- if (this.pli.global_players.containsKey(p.getName()))
- {
- for (Entity e : p.getLocation().getChunk().getEntities()) {
- if (e.getType() == EntityType.VILLAGER)
- {
- Villager v = (Villager)e;
- v.setVelocity(new Vector(0.0F, 0.1F, 0.0F));
- }
- }
- Bukkit.getScheduler().runTaskLater(this, new Runnable()
- {
- public void run()
- {
- p.getLocation().getChunk().unload(true, false);
- p.getLocation().getChunk().load();
- }
- }, 10L);
- }
- }
- public int colorCodeFromTeam(String team)
- {
- int ret = 0;
- if (team.equalsIgnoreCase("red")) {
- ret = 14;
- } else if (team.equalsIgnoreCase("blue")) {
- ret = 11;
- } else if (team.equalsIgnoreCase("yellow")) {
- ret = 4;
- } else if (team.equalsIgnoreCase("green")) {
- ret = 13;
- }
- return ret;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement