Search in sources :

Example 6 with Arena

use of pl.plajer.villagedefense3.arena.Arena in project Village_Defense by Plajer.

the class LobbyEvents method onLobbyHurt.

@EventHandler
public void onLobbyHurt(EntityDamageByEntityEvent event) {
    if (event.getEntity().getType() != EntityType.PLAYER)
        return;
    Player player = (Player) event.getEntity();
    Arena arena = ArenaRegistry.getArena(player);
    if (arena == null || arena.getArenaState() == ArenaState.IN_GAME)
        return;
    event.setCancelled(true);
    player.setHealth(player.getMaxHealth());
}
Also used : Player(org.bukkit.entity.Player) Arena(pl.plajer.villagedefense3.arena.Arena) EventHandler(org.bukkit.event.EventHandler)

Example 7 with Arena

use of pl.plajer.villagedefense3.arena.Arena in project Village_Defense by Plajer.

the class SetupInventoryEvents method onClick.

@EventHandler
public void onClick(InventoryClickEvent event) {
    if (event.getWhoClicked().getType() != EntityType.PLAYER)
        return;
    Player player = (Player) event.getWhoClicked();
    if (!player.hasPermission(PermissionsManager.getEditGames()))
        return;
    if (!event.getInventory().getName().contains("Arena:"))
        return;
    if (event.getInventory().getHolder() != null)
        return;
    if (event.getCurrentItem() == null)
        return;
    if (!event.getCurrentItem().hasItemMeta())
        return;
    if (!event.getCurrentItem().getItemMeta().hasDisplayName())
        return;
    String name = event.getCurrentItem().getItemMeta().getDisplayName();
    name = ChatColor.stripColor(name);
    Arena arena = ArenaRegistry.getArena(event.getInventory().getName().replace("Arena: ", ""));
    if (event.getCurrentItem().getType() == Material.NAME_TAG && event.getCursor().getType() == Material.NAME_TAG) {
        event.setCancelled(true);
        if (!event.getCursor().hasItemMeta()) {
            player.sendMessage(ChatColor.RED + "This item doesn't has a name!");
            return;
        }
        if (!event.getCursor().getItemMeta().hasDisplayName()) {
            player.sendMessage(ChatColor.RED + "This item doesn't has a name!");
            return;
        }
        player.performCommand("vd " + arena.getID() + " set MAPNAME " + event.getCursor().getItemMeta().getDisplayName());
        event.getCurrentItem().getItemMeta().setDisplayName(ChatColor.GOLD + "Set a mapname (currently: " + event.getCursor().getItemMeta().getDisplayName());
        return;
    }
    ClickType clickType = event.getClick();
    if (name.contains("ending location")) {
        event.setCancelled(true);
        player.closeInventory();
        player.performCommand("vd " + arena.getID() + " set ENDLOC");
        return;
    }
    if (name.contains("starting location")) {
        event.setCancelled(true);
        player.closeInventory();
        player.performCommand("vd " + arena.getID() + " set STARTLOC");
        return;
    }
    if (name.contains("lobby location")) {
        event.setCancelled(true);
        player.closeInventory();
        player.performCommand("vd " + arena.getID() + " set LOBBYLOC");
        return;
    }
    if (name.contains("maximum players")) {
        event.setCancelled(true);
        if (clickType.isRightClick()) {
            event.getCurrentItem().setAmount(event.getCurrentItem().getAmount() + 1);
            player.performCommand("vd " + arena.getID() + " set MAXPLAYERS " + event.getCurrentItem().getAmount());
        }
        if (clickType.isLeftClick()) {
            event.getCurrentItem().setAmount(event.getCurrentItem().getAmount() - 1);
            player.performCommand("vd " + arena.getID() + " set MAXPLAYERS " + event.getCurrentItem().getAmount());
        }
        player.closeInventory();
        player.openInventory(new SetupInventory(arena).getInventory());
    }
    if (name.contains("minimum players")) {
        event.setCancelled(true);
        if (clickType.isRightClick()) {
            event.getCurrentItem().setAmount(event.getCurrentItem().getAmount() + 1);
            player.performCommand("vd " + arena.getID() + " set MINPLAYERS " + event.getCurrentItem().getAmount());
        }
        if (clickType.isLeftClick()) {
            event.getCurrentItem().setAmount(event.getCurrentItem().getAmount() - 1);
            player.performCommand("vd " + arena.getID() + " set MINPLAYERS " + event.getCurrentItem().getAmount());
        }
        player.closeInventory();
        player.openInventory(new SetupInventory(arena).getInventory());
    }
    if (name.contains("Add game sign")) {
        event.setCancelled(true);
        player.performCommand("vda addsign " + arena.getID());
        return;
    }
    if (event.getCurrentItem().getType() != Material.NAME_TAG) {
        event.setCancelled(true);
    }
    if (name.contains("Add villager spawn")) {
        event.setCancelled(true);
        player.performCommand("vd " + arena.getID() + " addspawn villager");
        player.closeInventory();
        return;
    }
    if (name.contains("Add zombie spawn")) {
        event.setCancelled(true);
        player.performCommand("vd " + arena.getID() + " addspawn zombie");
        player.closeInventory();
    }
    if (name.contains("Add doors")) {
        event.setCancelled(true);
        player.performCommand("vd " + arena.getID() + " addspawn doors");
        player.closeInventory();
        return;
    }
    if (name.contains("Set chest shop")) {
        event.setCancelled(true);
        Block targetBlock;
        targetBlock = player.getTargetBlock(null, 100);
        if (targetBlock == null || targetBlock.getType() != Material.CHEST) {
            player.sendMessage(ChatColor.RED + "Look at the chest! You are targeting something else!");
            return;
        }
        Util.saveLoc("instances." + arena.getID() + ".shop", targetBlock.getLocation(), false);
        ShopManager.registerShop(arena);
        player.sendMessage(ChatColor.GREEN + "shop for chest set!");
    }
    if (name.contains("Register arena")) {
        event.setCancelled(true);
        event.getWhoClicked().closeInventory();
        if (ArenaRegistry.getArena(arena.getID()).isReady()) {
            event.getWhoClicked().sendMessage(ChatColor.GREEN + "This arena was already validated and is ready to use!");
            return;
        }
        String[] locations = new String[] { "lobbylocation", "Startlocation", "Endlocation" };
        String[] spawns = new String[] { "zombiespawns", "villagerspawns" };
        for (String s : locations) {
            if (!ConfigurationManager.getConfig("arenas").isSet("instances." + arena.getID() + "." + s) || ConfigurationManager.getConfig("arenas").getString("instances." + arena.getID() + "." + s).equals(Util.locationToString(Bukkit.getWorlds().get(0).getSpawnLocation()))) {
                event.getWhoClicked().sendMessage(ChatColor.RED + "Arena validation failed! Please configure following spawn properly: " + s + " (cannot be world spawn location)");
                return;
            }
        }
        for (String s : spawns) {
            if (!ConfigurationManager.getConfig("arenas").isSet("instances." + arena.getID() + "." + s) || ConfigurationManager.getConfig("arenas").getConfigurationSection("instances." + arena.getID() + "." + s).getKeys(false).size() < 2) {
                event.getWhoClicked().sendMessage(ChatColor.RED + "Arena validation failed! Please configure following mob spawns properly: " + s + " (must be minimum 2 spawns)");
                return;
            }
        }
        if (ConfigurationManager.getConfig("arenas").getConfigurationSection("instances." + arena.getID() + ".doors") == null) {
            event.getWhoClicked().sendMessage(ChatColor.RED + "Arena validation failed! Please configure doors properly");
            return;
        }
        event.getWhoClicked().sendMessage(ChatColor.GREEN + "Validation succeeded! Registering new arena instance: " + arena.getID());
        FileConfiguration config = ConfigurationManager.getConfig("arenas");
        config.set("instances." + arena.getID() + ".isdone", true);
        ConfigurationManager.saveConfig(config, "arenas");
        List<Sign> signsToUpdate = new ArrayList<>();
        ArenaRegistry.unregisterArena(arena);
        if (plugin.getSignManager().getLoadedSigns().containsValue(arena)) {
            for (Sign s : plugin.getSignManager().getLoadedSigns().keySet()) {
                if (plugin.getSignManager().getLoadedSigns().get(s).equals(arena)) {
                    signsToUpdate.add(s);
                }
            }
        }
        if (plugin.is1_8_R3()) {
            arena = new ArenaInitializer1_8_R3(arena.getID(), plugin);
        } else if (plugin.is1_9_R1()) {
            arena = new ArenaInitializer1_9_R1(arena.getID(), plugin);
        } else if (plugin.is1_11_R1()) {
            arena = new ArenaInitializer1_11_R1(arena.getID(), plugin);
        } else {
            arena = new ArenaInitializer1_12_R1(arena.getID(), plugin);
        }
        arena.setReady(true);
        arena.setMinimumPlayers(ConfigurationManager.getConfig("arenas").getInt("instances." + arena.getID() + ".minimumplayers"));
        arena.setMaximumPlayers(ConfigurationManager.getConfig("arenas").getInt("instances." + arena.getID() + ".maximumplayers"));
        arena.setMapName(ConfigurationManager.getConfig("arenas").getString("instances." + arena.getID() + ".mapname"));
        arena.setLobbyLocation(Util.getLocation(false, ConfigurationManager.getConfig("arenas").getString("instances." + arena.getID() + ".lobbylocation")));
        arena.setStartLocation(Util.getLocation(false, ConfigurationManager.getConfig("arenas").getString("instances." + arena.getID() + ".Startlocation")));
        arena.setEndLocation(Util.getLocation(false, ConfigurationManager.getConfig("arenas").getString("instances." + arena.getID() + ".Endlocation")));
        for (String string : ConfigurationManager.getConfig("arenas").getConfigurationSection("instances." + arena.getID() + ".zombiespawns").getKeys(false)) {
            String path = "instances." + arena.getID() + ".zombiespawns." + string;
            arena.addZombieSpawn(Util.getLocation(false, ConfigurationManager.getConfig("arenas").getString(path)));
        }
        for (String string : ConfigurationManager.getConfig("arenas").getConfigurationSection("instances." + arena.getID() + ".villagerspawns").getKeys(false)) {
            String path = "instances." + arena.getID() + ".villagerspawns." + string;
            arena.addVillagerSpawn(Util.getLocation(false, ConfigurationManager.getConfig("arenas").getString(path)));
        }
        for (String string : ConfigurationManager.getConfig("arenas").getConfigurationSection("instances." + arena.getID() + ".doors").getKeys(false)) {
            String path = "instances." + arena.getID() + ".doors." + string + ".";
            arena.addDoor(Util.getLocation(false, ConfigurationManager.getConfig("arenas").getString(path + "location")), (byte) ConfigurationManager.getConfig("arenas").getInt(path + "byte"));
        }
        ArenaRegistry.registerArena(arena);
        arena.start();
        for (Sign s : signsToUpdate) {
            plugin.getSignManager().getLoadedSigns().put(s, arena);
        }
    }
}
Also used : Player(org.bukkit.entity.Player) ArrayList(java.util.ArrayList) ArenaInitializer1_8_R3(pl.plajer.villagedefense3.arena.ArenaInitializer1_8_R3) Arena(pl.plajer.villagedefense3.arena.Arena) FileConfiguration(org.bukkit.configuration.file.FileConfiguration) ArenaInitializer1_11_R1(pl.plajer.villagedefense3.arena.ArenaInitializer1_11_R1) ClickType(org.bukkit.event.inventory.ClickType) ArenaInitializer1_9_R1(pl.plajer.villagedefense3.arena.ArenaInitializer1_9_R1) Block(org.bukkit.block.Block) Sign(org.bukkit.block.Sign) ArenaInitializer1_12_R1(pl.plajer.villagedefense3.arena.ArenaInitializer1_12_R1) SetupInventory(pl.plajer.villagedefense3.utils.SetupInventory) EventHandler(org.bukkit.event.EventHandler)

Example 8 with Arena

use of pl.plajer.villagedefense3.arena.Arena in project Village_Defense by Plajer.

the class SpectatorItemEvents method onSpectatorInventoryClick.

@EventHandler
public void onSpectatorInventoryClick(InventoryClickEvent e) {
    Player p = (Player) e.getWhoClicked();
    if (ArenaRegistry.getArena(p) == null)
        return;
    Arena arena = ArenaRegistry.getArena(p);
    if (e.getCurrentItem() == null)
        return;
    if (!e.getCurrentItem().hasItemMeta())
        return;
    if (!e.getCurrentItem().getItemMeta().hasDisplayName())
        return;
    if (!e.getCurrentItem().getItemMeta().hasLore())
        return;
    if (e.getCurrentItem().hasItemMeta()) {
        if (e.getInventory().getName().equalsIgnoreCase(ChatManager.colorMessage("In-Game.Spectator.Spectator-Menu-Name"))) {
            e.setCancelled(true);
            if ((e.isLeftClick() || e.isRightClick())) {
                ItemMeta meta = e.getCurrentItem().getItemMeta();
                for (Player player : arena.getPlayers()) {
                    if (player.getName().equalsIgnoreCase(meta.getDisplayName()) || ChatColor.stripColor(meta.getDisplayName()).contains(player.getName())) {
                        p.sendMessage(ChatManager.formatMessage(arena, ChatManager.colorMessage("Kits.Teleporter.Teleported-To-Player"), player));
                        p.teleport(player);
                        p.closeInventory();
                        e.setCancelled(true);
                        return;
                    }
                }
                p.sendMessage(ChatManager.colorMessage("Kits.Teleporter.Player-Not-Found"));
            }
            e.setCancelled(true);
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Arena(pl.plajer.villagedefense3.arena.Arena) ItemMeta(org.bukkit.inventory.meta.ItemMeta) EventHandler(org.bukkit.event.EventHandler)

Example 9 with Arena

use of pl.plajer.villagedefense3.arena.Arena in project Village_Defense by Plajer.

the class ShopManager method openShop.

public static void openShop(Player player) {
    Arena arena = ArenaRegistry.getArena(player);
    if (arena == null)
        return;
    if (arenaShop.get(arena) == null) {
        player.sendMessage(ChatManager.colorMessage("In-Game.Messages.Shop-Messages.No-Shop-Defined"));
        return;
    }
    player.openInventory(arenaShop.get(arena));
}
Also used : Arena(pl.plajer.villagedefense3.arena.Arena)

Example 10 with Arena

use of pl.plajer.villagedefense3.arena.Arena in project Village_Defense by Plajer.

the class SignManager method updateSignScheduler.

private void updateSignScheduler() {
    Bukkit.getScheduler().runTaskTimer(plugin, () -> {
        for (Sign s : loadedSigns.keySet()) {
            Arena arena = loadedSigns.get(s);
            ArenaState arenaState;
            if (arena == null) {
                arenaState = ArenaState.WAITING_FOR_PLAYERS;
            } else {
                arenaState = arena.getArenaState();
            }
            s.setLine(0, ChatColor.translateAlternateColorCodes('&', LanguageManager.getLanguageFile().getStringList("Signs.Lines").get(0)));
            if (arena.getPlayers().size() == arena.getMaximumPlayers()) {
                s.setLine(1, ChatColor.translateAlternateColorCodes('&', LanguageManager.getLanguageFile().getStringList("Signs.Lines").get(1).replaceAll("%state%", ChatManager.colorMessage("Signs.Game-States.Full-Game"))));
            } else {
                s.setLine(1, ChatColor.translateAlternateColorCodes('&', LanguageManager.getLanguageFile().getStringList("Signs.Lines").get(1).replaceAll("%state%", gameStateToString.get(arenaState))));
            }
            s.setLine(2, ChatColor.translateAlternateColorCodes('&', LanguageManager.getLanguageFile().getStringList("Signs.Lines").get(2).replaceAll("%mapname%", arena.getMapName())));
            s.setLine(3, ChatColor.translateAlternateColorCodes('&', LanguageManager.getLanguageFile().getStringList("Signs.Lines").get(3).replaceAll("%maxplayers%", String.valueOf(arena.getMaximumPlayers())).replaceAll("%playersize%", String.valueOf(arena.getPlayers().size()))));
            s.update();
        }
    }, 10, 10);
}
Also used : Sign(org.bukkit.block.Sign) ArenaState(pl.plajer.villagedefense3.arena.ArenaState) Arena(pl.plajer.villagedefense3.arena.Arena)

Aggregations

Arena (pl.plajer.villagedefense3.arena.Arena)49 Player (org.bukkit.entity.Player)28 EventHandler (org.bukkit.event.EventHandler)27 User (pl.plajer.villagedefense3.User)15 ItemStack (org.bukkit.inventory.ItemStack)9 ArenaInitializer1_11_R1 (pl.plajer.villagedefense3.arena.ArenaInitializer1_11_R1)7 ArenaInitializer1_12_R1 (pl.plajer.villagedefense3.arena.ArenaInitializer1_12_R1)7 ArenaInitializer1_8_R3 (pl.plajer.villagedefense3.arena.ArenaInitializer1_8_R3)7 ArenaInitializer1_9_R1 (pl.plajer.villagedefense3.arena.ArenaInitializer1_9_R1)7 FileConfiguration (org.bukkit.configuration.file.FileConfiguration)5 Villager (org.bukkit.entity.Villager)5 Zombie (org.bukkit.entity.Zombie)5 ItemMeta (org.bukkit.inventory.meta.ItemMeta)5 IronGolem (org.bukkit.entity.IronGolem)4 ArrayList (java.util.ArrayList)3 Sign (org.bukkit.block.Sign)3 PotionEffect (org.bukkit.potion.PotionEffect)3 Entity (org.bukkit.entity.Entity)2 Inventory (org.bukkit.inventory.Inventory)2 BukkitRunnable (org.bukkit.scheduler.BukkitRunnable)2