JustPaste.it

package me.EnderPilot105.youtube;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Firework;
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.EntityExplodeEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.FireworkMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;
import org.bukkit.util.Vector;

public class Youtube extends JavaPlugin implements Listener {
    ArrayList<String> redlist = new ArrayList<String>();
    ArrayList<String> bluelist = new ArrayList<String>();
    ArrayList<String> list = new ArrayList<String>();
    ArrayList<String> isset = new ArrayList<String>();
    ArrayList<String> s = new ArrayList<String>();
    List<Location> circleblocks = new ArrayList<Location>();
    public HashMap<Player, ItemStack[]> armor = new HashMap<Player, ItemStack[]>();

    public final Logger logger = Logger.getLogger("Minecraft");
    public static Youtube plugin;

    public int number = 0;
    public int numbe = 15;
    public int numb = 10;
    public int num = 400;
    public int f = 50;
    Location loc;
    Team red;
    Team blue;
    Team spec;
    Objective objective;
    Scoreboard board;
    ItemStack item1;
    ItemStack item2;
    ItemStack item3;
    ItemStack item4;
    ItemStack item5;
    ItemStack item6;
    ItemStack item7;
    ItemStack item8;
    ItemStack item9;
    Inventory options;
    Inventory inv;
    Firework fw;
    Player p;

    @Override
    public void onDisable() {
        this.logger.info("Battle dome plugin has been disabled!");
        this.logger
                .info("If you dont see any errors the BarApi.jar at location /plugins/BarApi.jar has been deleted!");
        this.getServer().getScheduler().cancelAllTasks();
        File file = new File("/plugins/", "BarApi" + ".jar");
        file.delete();

    }

    @Override
    public void onEnable() {
        this.logger.info("Battle dome plugin has been enabled!");
        try {
            downloadFile(
                    "http://dev.bukkit.org/media/files/769/204/BarAPI.jar",
                    "plugins/BarApi.JAR");
        } catch (IOException e) {
            e.printStackTrace();
        }
        this.logger
                .info("If you dont see any errors BarApi library  has been downloaded to /plugin/BarApi.jar");
        getServer().getPluginManager().registerEvents(this, this);
        Inventory options = Bukkit.createInventory(null, 9, ""
                + ChatColor.GREEN + ChatColor.BOLD
                + "Battle Dome control panel");
        this.options = options;
        ItemStack item6 = setMeta(new ItemStack(Material.WORKBENCH), ""
                + ChatColor.GREEN + ChatColor.BOLD
                + "Remove 5 minutes from timer!",
                Arrays.asList(ChatColor.RED + "Only in build phase!"));
        ItemStack item7 = setMeta(new ItemStack(Material.WORKBENCH), ""
                + ChatColor.GREEN + ChatColor.BOLD
                + "Remove 1 minute from timer!",
                Arrays.asList(ChatColor.RED + "Only in build phase!"));
        ItemStack item1 = setMeta(new ItemStack(Material.WORKBENCH), ""
                + ChatColor.GREEN + ChatColor.BOLD + "Add 5 minutes to timer!",
                Arrays.asList(ChatColor.RED + "Only in build phase!"));
        ItemStack item2 = setMeta(new ItemStack(Material.WORKBENCH), ""
                + ChatColor.GREEN + ChatColor.BOLD + "Add 1 minute to timer!",
                Arrays.asList(ChatColor.RED + "Only in build phase!"));
        ItemStack item3 = setMeta(new ItemStack(Material.WORKBENCH), ""
                + ChatColor.GREEN + ChatColor.BOLD + "Stop all timers!",
                Arrays.asList(ChatColor.RED + "Stops all timers!"));
        ItemStack item4 = setMeta(new ItemStack(Material.WORKBENCH), ""
                + ChatColor.GREEN + ChatColor.BOLD + "Reset all scoreboards!",
                Arrays.asList(ChatColor.RED + "Only in battle phase!"));
        ItemStack item5 = setMeta(new ItemStack(Material.ENCHANTED_BOOK), ""
                + ChatColor.GREEN + ChatColor.BOLD + "Start ghost Battle Dome",
                Arrays.asList(ChatColor.RED + "Test version"));
        ItemStack item8 = setMeta(new ItemStack(Material.ENCHANTED_BOOK), ""
                + ChatColor.GREEN + ChatColor.BOLD
                + "Start tornados on all alive player locations!",
                Arrays.asList(ChatColor.RED + "Code by LucasEmanuel"));
        ItemStack item9 = setMeta(new ItemStack(Material.ENCHANTED_BOOK), ""
                + ChatColor.GREEN + ChatColor.BOLD
                + "Spanw firework circle above every alive player!",
                Arrays.asList(ChatColor.RED + "Auto set-night!"));
        options.setItem(0, item1);
        options.setItem(1, item2);
        options.setItem(2, item6);
        options.setItem(3, item7);
        options.setItem(4, item3);
        options.setItem(5, item4);
        options.setItem(6, item5);
        options.setItem(7, item8);
        options.setItem(8, item9);
        this.item1 = item1;
        this.item2 = item2;
        this.item3 = item3;
        this.item4 = item4;
        this.item5 = item5;
        this.item6 = item6;
        this.item7 = item7;
        this.item8 = item8;
        this.item9 = item9;

    }

    public static void downloadFile(String link, String directory)
            throws IOException {
        URL url = new URL(link);
        InputStream is = url.openStream();
        OutputStream os = new FileOutputStream(directory);

        byte[] b = new byte[2048];
        int length;

        while ((length = is.read(b)) != -1) {
            os.write(b, 0, length);
        }

        is.close();
        os.close();
    }

    public void regen(final List<BlockState> blocks, final boolean effect,
            final int speed) {

        new BukkitRunnable() {
            int i = -1;

            @SuppressWarnings("deprecation")
            public void run() {
                if (i != blocks.size() - 1) {
                    i++;
                    BlockState bs = blocks.get(i);
                    bs.getBlock().setType(bs.getType());
                    bs.getBlock().setData(bs.getBlock().getData());
                    if (effect)
                        bs.getBlock()
                                .getWorld()
                                .playEffect(bs.getLocation(),
                                        Effect.STEP_SOUND,
                                        bs.getBlock().getType());
                } else {
                    for (BlockState bs : blocks) {
                        bs.getBlock().setType(bs.getType());
                        bs.getBlock().setData(bs.getBlock().getData());
                    }
                    blocks.clear();
                    this.cancel();
                }
            }
        }.runTaskTimer(this, speed, speed);
    }

    @SuppressWarnings("deprecation")
    @EventHandler
    public void explode(EntityExplodeEvent e) {
        if (!e.blockList().isEmpty()) {
            final List<BlockState> blocks = new ArrayList<BlockState>();
            for (Block b : e.blockList()) {
                if (b.getType() != Material.AIR) {
                    if (!blocks.contains(b.getState())) {
                        blocks.add(b.getState());
                        FallingBlock fb = b.getWorld().spawnFallingBlock(
                                b.getLocation(), b.getType(), b.getData());
                        fb.setDropItem(false);
                        b.setType(Material.AIR);
                    }
                }
            }
            new BukkitRunnable() {
                int i = 17;

                public void run() {
                    if (i > 0) {
                        i--;
                    } else {
                        regen(blocks, true, 1);
                        this.cancel();
                    }
                }
            }.runTaskTimer(this, 15, 15);

            e.blockList().clear();
        }
    }

    private List<Location> circle(Location loc, Integer r, Integer h,
            Boolean hollow, Boolean sphere, int plus_y) {
        int cx = loc.getBlockX();
        int cy = loc.getBlockY();
        int cz = loc.getBlockZ();
        int i = 0;
        for (int x = cx - r; x <= cx + r; x++)
            for (int z = cz - r; z <= cz + r; z++)
                for (int y = (sphere ? cy - r : cy); y < (sphere ? cy + r : cy
                        + h); y++) {
                    double dist = (cx - x) * (cx - x) + (cz - z) * (cz - z)
                            + (sphere ? (cy - y) * (cy - y) : 0);
                    if (dist < r * r && !(hollow && dist < (r - 1) * (r - 1))) {
                        if (i++ < 2) {
                            continue;
                        } else {
                            i = 0;
                        }
                        Location l = new Location(loc.getWorld(), x,
                                y + plus_y, z);
                        circleblocks.add(l);
                    }
                }

        return circleblocks;
    }

    public void Launch() {
        for (Player s : Bukkit.getOnlinePlayers()) {
            s.playSound(s.getLocation(), Sound.AMBIENCE_CAVE, 10, 0);
            Tornado.spawnTornado(this, s.getLocation(), Material.PACKED_ICE,
                    (byte) 0, new Vector(2, 0, 2), 0.1d, 100, (long) 10 * 80,
                    true, true);
            s.sendMessage("" + ChatColor.DARK_RED + ChatColor.BOLD
                    + "<Broken Battle Dome>" + ChatColor.RESET + ChatColor.BOLD
                    + ChatColor.AQUA + "The wind starts blowing faster...");

        }
    }

    @EventHandler
    public void chatFormat(AsyncPlayerChatEvent event) {
        Player player = event.getPlayer();
        String p = player.getName();

        if (redlist.contains(p)) {
            event.setFormat("" + ChatColor.DARK_RED + ChatColor.BOLD + "[RED]"
                    + ChatColor.RESET + ChatColor.YELLOW + ChatColor.BOLD + p
                    + ": " + ChatColor.RESET + ChatColor.YELLOW
                    + event.getMessage());
        } else if (bluelist.contains(p)) {
            event.setFormat("" + ChatColor.DARK_BLUE + ChatColor.BOLD
                    + "[BLUE]" + ChatColor.RESET + ChatColor.YELLOW
                    + ChatColor.BOLD + p + ": " + ChatColor.RESET
                    + ChatColor.YELLOW + event.getMessage());
        } else if (s.contains(p)) {
            event.setFormat("" + ChatColor.DARK_GRAY + ChatColor.BOLD
                    + "[SPECTATOR]" + ChatColor.RESET + ChatColor.YELLOW
                    + ChatColor.BOLD + p + ": " + ChatColor.RESET
                    + ChatColor.YELLOW + event.getMessage());
        } else {
            event.setFormat("" + ChatColor.DARK_GREEN + ChatColor.BOLD
                    + "[GUEST]" + ChatColor.RESET + ChatColor.YELLOW
                    + ChatColor.BOLD + p + ": " + ChatColor.RESET
                    + ChatColor.YELLOW + event.getMessage());

        }
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onPlayerDeath(PlayerDeathEvent event) {
        
        event.setDeathMessage(null);
        Player player = event.getEntity();
        Player killer = player.getKiller();
        player.teleport(killer);
        if (bluelist.contains(player.getName())) {
            blue.removePlayer(player);
            s.add(player.getName());
            spec.addPlayer(player);
            for (Player players : Bukkit.getOnlinePlayers()) {
                players.hidePlayer(player);
            }
            player.setCanPickupItems(false);

            player.setGameMode(GameMode.CREATIVE);
            String target = player.getName();
            Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>"
                    + ChatColor.YELLOW + ChatColor.BOLD + target
                    + ChatColor.GREEN + ChatColor.BOLD + " has died!");
            player.sendMessage(ChatColor.GREEN + "<Battle Dome>"
                    + ChatColor.BOLD + ChatColor.GREEN
                    + "You are now spectating");
            player.sendMessage(ChatColor.GREEN + "<Battle Dome>"
                    + ChatColor.BOLD + ChatColor.GREEN
                    + "You are now hidden from other players");
            if(bluelist.isEmpty()) {
                Bukkit.broadcastMessage("" + ChatColor.DARK_RED + ChatColor.BOLD + "Red team won! Congrats!");
                for( Player abc : Bukkit.getOnlinePlayers()) {
                    abc.kickPlayer("" + ChatColor.DARK_RED + ChatColor.BOLD + "Red team won! Congrats");
                    Bukkit.getServer().reload();
                }
            }
        }
        if (redlist.contains(player.getName())) {
            red.removePlayer(player);
            s.add(player.getName());
            spec.addPlayer(player);
            for (Player players : Bukkit.getOnlinePlayers()) {
                players.hidePlayer(player);
            }
            player.setGameMode(GameMode.CREATIVE);
            String target = player.getName();
            Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>"
                    + ChatColor.YELLOW + ChatColor.BOLD + target
                    + ChatColor.GREEN + ChatColor.BOLD + " has died!");
            player.sendMessage(ChatColor.GREEN + "<Battle Dome>"
                    + ChatColor.BOLD + ChatColor.GREEN
                    + "You are now spectating");
            if(redlist.isEmpty()) {
                Bukkit.broadcastMessage("" + ChatColor.DARK_BLUE + ChatColor.BOLD + "Blue team won! Congrats!");
                for( Player abc : Bukkit.getOnlinePlayers()) {
                    abc.kickPlayer("" + ChatColor.DARK_BLUE + ChatColor.BOLD + "Blue team won! Congrats");
                    Bukkit.getServer().reload();
                }
            }
        } else {

        }

    }

    public void ScoreboardSetup() {

        ScoreboardManager manager = Bukkit.getScoreboardManager();
        org.bukkit.scoreboard.Scoreboard board = manager.getNewScoreboard();
        this.board = board;
        Objective obj = board.registerNewObjective("test1", "health");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("" + ChatColor.DARK_RED + ChatColor.BOLD + "Health");

        for (Player player : Bukkit.getOnlinePlayers()) {
            Score health = obj.getScore(player);
            health.setScore(20);
            player.setScoreboard(board);
        }

        Objective objective = board.registerNewObjective("test2", "deathCount");
        objective.setDisplaySlot(DisplaySlot.PLAYER_LIST);
        objective.setDisplayName("" + ChatColor.DARK_RED + "Deaths");
        this.objective = objective;

    }

    public void Startup() {
        for (Player p : Bukkit.getOnlinePlayers()) {
            p.playSound(p.getLocation(), Sound.ANVIL_USE, 1, 0);
            p.addPotionEffect(new PotionEffect(
                    PotionEffectType.DAMAGE_RESISTANCE, 18000, 3));
            p.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION,
                    18000, 0));
            p.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION,
                    18000, 3));
        }
        TeamSetup();
        isset.add("on");
        Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>" + ""
                + ChatColor.DARK_RED + ChatColor.BOLD
                + "A 15 minute countdown has been started!");

        this.getServer().getScheduler()
                .scheduleSyncRepeatingTask(this, new BukkitRunnable() {

                    public void run() {
                        if (numbe != -1) {
                            if (numbe != 1) {
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ChatColor.BOLD
                                        + ChatColor.DARK_RED + numbe
                                        + ChatColor.BOLD + ChatColor.GREEN
                                        + " minutes remaining...");
                                for (Player p : Bukkit.getOnlinePlayers()) {
                                    p.playSound(p.getLocation(), Sound.CLICK,
                                            1, 0);
                                }
                                numbe--;

                            } else {
                                MinuteSetup();
                                numbe--;
                                Bukkit.getServer().getScheduler()
                                        .cancelTask(getTaskId());

                            }
                            if (numbe != 14) {
                                Bukkit.broadcastMessage("");
                            } else {
                                Bukkit.broadcastMessage(""
                                        + ChatColor.GREEN
                                        + "<Battle Dome>"
                                        + ChatColor.BOLD
                                        + ChatColor.GREEN
                                        + "You can now select your team by doing:");
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ChatColor.BOLD
                                        + ChatColor.GREEN
                                        + "/team red - join red team");
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ChatColor.BOLD
                                        + ChatColor.GREEN
                                        + "/team blue - join blue team");
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ChatColor.BOLD
                                        + ChatColor.GREEN
                                        + "/team leave - leave your team");
                            }
                        }
                    }
                }, 0L, 1200L);
    }

    public void TeamSetup() {
        ScoreboardManager manager = Bukkit.getScoreboardManager();
        org.bukkit.scoreboard.Scoreboard boar = manager.getNewScoreboard();
        Team red = boar.registerNewTeam("red");
        red.setAllowFriendlyFire(false);
        red.setPrefix("" + ChatColor.DARK_RED + ChatColor.BOLD + "[RED]" + "");
        red.setDisplayName("Red team");

        Team blue = boar.registerNewTeam("blue");
        blue.setAllowFriendlyFire(false);
        blue.setPrefix("" + ChatColor.DARK_BLUE + ChatColor.BOLD + "[BLUE]"
                + "");
        blue.setDisplayName("Blue team");

        Team spec = boar.registerNewTeam("spectators");
        spec.setAllowFriendlyFire(false);
        spec.setPrefix("" + ChatColor.DARK_GRAY + ChatColor.BOLD + "[SPEC]"
                + "");
        spec.setDisplayName("Spectators team");
        spec.setCanSeeFriendlyInvisibles(true);
        this.spec = spec;
        this.red = red;
        this.blue = blue;
    }

    public void MinuteSetup() {
        number = 59;

        for (Player p : Bukkit.getOnlinePlayers()) {
            p.playSound(p.getLocation(), Sound.ENDERDRAGON_GROWL, 1, 0);
        }
        Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>" + ""
                + ChatColor.DARK_RED + ChatColor.BOLD + "1 Minute left!");
        this.getServer().getScheduler()
                .scheduleSyncRepeatingTask(this, new BukkitRunnable() {

                    public void run() {
                        if (number != -1) {
                            if (number != 0) {
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ChatColor.BOLD
                                        + ChatColor.DARK_RED + number
                                        + ChatColor.GREEN + ChatColor.BOLD
                                        + " seconds remaining...");

                                number--;
                            } else {
                                for (Player p : Bukkit.getOnlinePlayers()) {
                                    p.playSound(p.getLocation(),
                                            Sound.PORTAL_TRAVEL, 1, 0);
                                }
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ""
                                        + ChatColor.DARK_RED + ChatColor.BOLD
                                        + "Time is up!");
                                list.add("1");
                                ScoreboardSetup();
                                Bukkit.broadcastMessage("" + ChatColor.GREEN
                                        + "<Battle Dome>" + ChatColor.DARK_RED
                                        + "Build phase has started!");
                                number--;
                                Bukkit.getServer().getScheduler()
                                        .cancelTask(getTaskId());

                            }
                        }
                    }
                }, 0L, 20L);

    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) throws Exception {
        Player player = (Player) event.getWhoClicked();
        ItemStack clicked = event.getCurrentItem();
        Inventory inventory = event.getInventory();
        if (inventory.getName().equals(options.getName())) {
            if (clicked.equals(item1)) {
                numbe++;
                numbe++;
                numbe++;
                numbe++;
                numbe++;
                event.setCancelled(true);
                Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>"
                        + ChatColor.DARK_RED + ChatColor.BOLD
                        + "5 minutes added to timer!");
                player.closeInventory();

            }
            if (clicked.equals(item2)) {
                numbe++;
                event.setCancelled(true);
                Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>"
                        + ChatColor.DARK_RED + ChatColor.BOLD
                        + "1 minute added to timer!");
            }
            if (clicked.equals(item3)) {
                Bukkit.reload();
                event.setCancelled(true);
                Bukkit.broadcastMessage("" + ChatColor.GREEN + "<Battle Dome>"
                        + ChatColor.BOLD + ChatColor.DARK_RED
                        + "Battle Dome has been stopped");
                player.closeInventory();

            }
            if (clicked.equals(item4)) {
                if (list.contains("1")) {
                    for (Player target : Bukkit.getOnlinePlayers()) {
                        Score deaths = objective.getScore(player);
                        deaths.setScore(0);
                        target.setScoreboard(board);
                    }
                    event.setCancelled(true);
                    Bukkit.broadcastMessage("" + ChatColor.GREEN
                            + "<Battle Dome>" + ChatColor.DARK_RED
                            + ChatColor.BOLD + "Scoreboard has been reseted!");
                    player.closeInventory();
                } else {
                    player.sendMessage(""
                            + ChatColor.GREEN
                            + "<Battle Dome>"
                            + ChatColor.BOLD
                            + ChatColor.DARK_RED
                            + "Scoreboard not set - only active at battle phase");
                    player.closeInventory();
                }

            }
            if (clicked.equals(item5)) {
                event.setCancelled(true);
                player.closeInventory();
                Bukkit.broadcastMessage("" + ChatColor.DARK_PURPLE
                        + ChatColor.BOLD + "<Ghost Battle Dome>"
                        + ChatColor.RESET + ChatColor.MAGIC
                        + "BajanCanadian BajanCanadian BajanCanadian");
                Bukkit.broadcastMessage(ChatColor.GREEN + "<Battle Dome>");
                Bukkit.broadcastMessage("" + ChatColor.AQUA + ChatColor.BOLD
                        + ChatColor.ITALIC
                        + "Tip: Ghost Battle Dome is 2 minutes long...");
                Bukkit.broadcastMessage(""
                        + ChatColor.AQUA
                        + ChatColor.BOLD
                        + ChatColor.ITALIC
                        + "Tip: When Ghost Battle Dome is over you get your items back...");
                for (final Player bluep : getServer().getOnlinePlayers()) {
                    armor.put(bluep.getPlayer(), bluep.getEquipment()
                            .getArmorContents());
                    bluep.getPlayer().getInventory().clear();
                    ItemStack a = new ItemStack(Material.SKULL_ITEM);
                    ItemStack b = new ItemStack(Material.LEATHER_CHESTPLATE);
                    LeatherArmorMeta bmeta = (LeatherArmorMeta) b.getItemMeta();
                    bmeta.setColor(Color.BLACK);
                    b.setItemMeta(bmeta);
                    ItemStack c = new ItemStack(Material.GHAST_TEAR);
                    ItemStack d = new ItemStack(Material.GHAST_TEAR);
                    PotionEffect e = new PotionEffect(
                            PotionEffectType.INVISIBILITY, Integer.MAX_VALUE,
                            Integer.MAX_VALUE);
                    PotionEffect f = new PotionEffect(PotionEffectType.JUMP,
                            Integer.MAX_VALUE, 1);
                    bluep.getWorld().setTime(18000);
                    bluep.getInventory().setHelmet(a);
                    bluep.getInventory().setChestplate(b);
                    bluep.getInventory().setLeggings(c);
                    bluep.getInventory().setBoots(d);
                    bluep.addPotionEffect(e);
                    bluep.addPotionEffect(f);

                    Bukkit.getServer()
                            .getScheduler()
                            .scheduleSyncRepeatingTask(this,
                                    new BukkitRunnable() {
                                        @SuppressWarnings("deprecation")
                                        public void run() {
                                            if (num != -1) {
                                                if (num != 0) {
                                                    bluep.getPlayer()
                                                            .playEffect(
                                                                    bluep.getLocation(),
                                                                    Effect.MOBSPAWNER_FLAMES,
                                                                    1);
                                                    num--;
                                                } else {
                                                    bluep.getWorld().setTime(
                                                            1000);
                                                    bluep.getInventory()
                                                            .clear();
                                                    bluep.getEquipment()
                                                            .setArmorContents(
                                                                    armor.get(bluep
                                                                            .getPlayer()));
                                                    armor.remove(bluep
                                                            .getPlayer());
                                                    Bukkit.getServer()
                                                            .getScheduler()
                                                            .cancelTask(
                                                                    this.getTaskId());
                                                    num--;
                                                }
                                            }

                                        }
                                    }, 0L, 10L);
                }
            }

        }
        if (clicked.equals(item6)) {
            numbe--;
            numbe--;
            numbe--;
            numbe--;
            numbe--;
            event.setCancelled(true);
            player.closeInventory();
        }
        if (clicked.equals(item7)) {
            numbe--;
            event.setCancelled(true);
        }
        if (clicked.equals(item8)) {
            event.setCancelled(true);
            player.closeInventory();
            for (Player players : Bukkit.getOnlinePlayers()) {
                players.sendMessage("" + ChatColor.DARK_RED + ChatColor.BOLD
                        + "<Broken Battle Dome>" + ChatColor.RESET
                        + ChatColor.AQUA + ChatColor.BOLD
                        + "The wind starts blowing faster...");
                Launch();
            }
        }

        if (clicked.equals(item9)) {
            event.setCancelled(true);
            for (final Player p : Bukkit.getOnlinePlayers()) {
                World world = p.getWorld();
                world.setTime(15000);
                this.p = p;
                final List<Location> blocks = circle(p.getLocation(), 30, 1,
                        true, false, 10);
                new BukkitRunnable() {
                    int maxIterations = 2;
                    int iterations = 0;

                    @Override
                    public void run() {
                        iterations = 0;
                        while (!blocks.isEmpty()
                                && iterations++ < maxIterations) {

                            final Firework fw = (Firework) p.getWorld()
                                    .spawnEntity(blocks.get(0),
                                            EntityType.FIREWORK);
                            FireworkMeta meta = fw.getFireworkMeta();

                            meta.addEffect(FireworkEffect.builder()
                                    .with(Type.BALL_LARGE).withColor(Color.RED)
                                    .withColor(Color.GREEN)
                                    .withFade(Color.ORANGE).build());

                            fw.setFireworkMeta(meta);

                            fw.detonate();
                            fw.detonate();
                            blocks.remove(0);
                        }
                        if (blocks.isEmpty()) {
                            this.cancel();

                        }
                    }
                }.runTaskTimer(this, 5, 3);
            }
            player.closeInventory();

        }

    }

    public ItemStack setMeta(ItemStack material, String name, List<String> lore) {
        if (((material == null) || material.getType() == Material.AIR)
                || (name == null) && lore == null)
            return null;
        ItemMeta ph = material.getItemMeta();
        ph.addEnchant(Enchantment.DURABILITY, 1, false);
        if (name != null)
            ph.setDisplayName(name);
        if (lore != null)
            ph.setLore(lore);
        material.setItemMeta(ph);
        return material;

    }

    public boolean onCommand(CommandSender sender, Command cmd,
            String commandLabel, String args[]) {
        if (commandLabel.equalsIgnoreCase("start")) {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW,
                        Integer.MAX_VALUE, Integer.MAX_VALUE));
            }

            Bukkit.getServer().getScheduler()
                    .scheduleSyncRepeatingTask(this, new BukkitRunnable() {

                        public void run() {
                            if (numb != -1) {
                                if (numb != 0) {
                                    Bukkit.broadcastMessage(""
                                            + ChatColor.GREEN + "<Battle Dome>"
                                            + ChatColor.BOLD + ChatColor.GREEN
                                            + "Starting in "
                                            + ChatColor.DARK_RED
                                            + ChatColor.BOLD + numb
                                            + ChatColor.GREEN + " seconds...");

                                    for (Player p : Bukkit.getOnlinePlayers()) {
                                        p.playSound(p.getLocation(),
                                                Sound.CLICK, 1, 0);
                                    }
                                    numb--;
                                } else {
                                    numb--;
                                    for (Player player : Bukkit
                                            .getOnlinePlayers()) {
                                        player.removePotionEffect(PotionEffectType.SLOW);
                                    }
                                    Startup();
                                    Bukkit.getServer().getScheduler()
                                            .cancelTask(getTaskId());

                                }
                            }
                        }
                    }, 0L, 20L);

        } else if (commandLabel.equalsIgnoreCase("control")) {
            Player player = (Player) sender;
            player.openInventory(options);
        } else if (commandLabel.equalsIgnoreCase("team")) {
            if (isset.contains("on")) {
                if (args.length == 0) {
                    Player a = (Player) sender;
                    a.sendMessage("" + ChatColor.GREEN + "<Battle Dome> "
                            + ChatColor.RESET + ChatColor.DARK_GREEN
                            + ChatColor.BOLD + "/team red - join red team...");
                    a.sendMessage("" + ChatColor.GREEN + "<Battle Dome> "
                            + ChatColor.RESET + ChatColor.DARK_GREEN
                            + ChatColor.BOLD + "/team blue - join blue team...");
                    a.sendMessage("" + ChatColor.GREEN + "<Battle Dome> "
                            + ChatColor.RESET + ChatColor.DARK_GREEN
                            + ChatColor.BOLD + "/team leave - leave your team!");
                }

                else if (args[0].equalsIgnoreCase("red")) {
                    Player player = (Player) sender;
                    String name = player.getName();
                    if (redlist.contains(name)) {
                        p.sendMessage(ChatColor.GREEN
                                + "<Battle Dome>"
                                + ChatColor.RESET
                                + ChatColor.DARK_RED
                                + ChatColor.BOLD
                                + "You are already in a team to leave type /team leave");
                        return true;
                    } else {
                        redlist.add(name);
                        red.addPlayer(player);
                        Bukkit.broadcastMessage(ChatColor.GREEN
                                + "<Battle Dome>" + ChatColor.BOLD
                                + ChatColor.YELLOW + name + ChatColor.BOLD
                                + ChatColor.GREEN + " has joined "
                                + ChatColor.BOLD + ChatColor.DARK_RED
                                + "red team");
                        return true;
                    }
                } else if (args[0].equalsIgnoreCase("blue")) {
                    Player player = (Player) sender;
                    String name = player.getName();
                    if (bluelist.contains(name)) {
                        p.sendMessage(ChatColor.GREEN
                                + "<Battle Dome>"
                                + ChatColor.RESET
                                + ChatColor.DARK_RED
                                + ChatColor.BOLD
                                + "You are already in a team to leave type /team leave");
                        return true;
                    } else {
                        bluelist.add(name);
                        blue.addPlayer(player);
                        Bukkit.broadcastMessage(ChatColor.GREEN
                                + "<Battle Dome>" + ChatColor.BOLD
                                + ChatColor.YELLOW + name + ChatColor.BOLD
                                + ChatColor.GREEN + " has joined "
                                + ChatColor.BOLD + ChatColor.DARK_BLUE
                                + "blue team");
                        return true;
                    }
                } else if (args[0].equalsIgnoreCase("leave")) {
                    Player player = (Player) sender;
                    String name = player.getName();
                    if (redlist.contains(name)) {
                        Bukkit.broadcastMessage(ChatColor.GREEN
                                + "<Battle Dome>" + ChatColor.BOLD
                                + ChatColor.YELLOW + name + ChatColor.BOLD
                                + ChatColor.GREEN + " has left "
                                + ChatColor.BOLD + ChatColor.DARK_RED
                                + "red team");
                        redlist.remove(name);
                        return true;

                    }
                    if (bluelist.contains(name)) {
                        Bukkit.broadcastMessage(ChatColor.GREEN
                                + "<Battle Dome>" + ChatColor.BOLD
                                + ChatColor.YELLOW + name + ChatColor.BOLD
                                + ChatColor.GREEN + " has left "
                                + ChatColor.BOLD + ChatColor.DARK_BLUE
                                + "blue team");
                        bluelist.remove(name);
                        return true;
                    } else {
                        player.sendMessage("" + ChatColor.GREEN
                                + ChatColor.BOLD + "<Battle Dome>"
                                + ChatColor.RESET + ChatColor.DARK_RED
                                + ChatColor.BOLD
                                + "You have not joined a team!");
                        return true;
                    }
                }

            } else {
                Player pl = (Player) sender;
                pl.sendMessage(ChatColor.GREEN + "<Battle Dome>"
                        + ChatColor.RESET + ChatColor.DARK_RED + ChatColor.BOLD
                        + "Battle dome hasn't been started!");
            }
        }
        return true;
    }
}