Search in sources :

Example 26 with Zombie

use of org.bukkit.entity.Zombie in project Village_Defense by Plajer.

the class ArenaInitializer1_9_R1 method spawnHalfInvisibleZombie.

@Override
public void spawnHalfInvisibleZombie(Random random) {
    Location location = zombieSpawns.get(random.nextInt(zombieSpawns.size() - 1));
    net.minecraft.server.v1_9_R1.World McWorld = ((CraftWorld) location.getWorld()).getHandle();
    FastZombie fastZombie = new FastZombie(location.getWorld());
    fastZombie.setPosition(location.getX(), location.getY(), location.getZ());
    McWorld.addEntity(fastZombie, CreatureSpawnEvent.SpawnReason.CUSTOM);
    Zombie zombie = (Zombie) fastZombie.getBukkitEntity();
    zombie.setRemoveWhenFarAway(false);
    zombie.getEquipment().setBoots(new ItemStack(Material.CHAINMAIL_BOOTS));
    zombie.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1));
    CreatureUtils.applyHealthBar(zombie);
    this.addZombie((Zombie) fastZombie.getBukkitEntity());
    CreatureUtils.applyMetadata(fastZombie.getBukkitEntity(), this);
    super.subtractZombiesToSpawn();
}
Also used : FastZombie(pl.plajer.villagedefense3.creatures.v1_9_R1.FastZombie) TankerZombie(pl.plajer.villagedefense3.creatures.v1_9_R1.TankerZombie) Zombie(org.bukkit.entity.Zombie) FastZombie(pl.plajer.villagedefense3.creatures.v1_9_R1.FastZombie) BabyZombie(pl.plajer.villagedefense3.creatures.v1_9_R1.BabyZombie) HardZombie(pl.plajer.villagedefense3.creatures.v1_9_R1.HardZombie) PotionEffect(org.bukkit.potion.PotionEffect) ItemStack(org.bukkit.inventory.ItemStack) CraftWorld(org.bukkit.craftbukkit.v1_9_R1.CraftWorld) Location(org.bukkit.Location)

Example 27 with Zombie

use of org.bukkit.entity.Zombie in project Village_Defense by Plajer.

the class Arena method run.

public void run() {
    User.handleCooldowns();
    ArenaUtils.updateScoreboard(this);
    switch(getArenaState()) {
        case WAITING_FOR_PLAYERS:
            if (plugin.isBungeeActivated())
                plugin.getServer().setWhitelist(false);
            if (getPlayers().size() < getMinimumPlayers()) {
                if (getTimer() <= 0) {
                    setTimer(15);
                    String message = ChatManager.formatMessage(this, ChatManager.colorMessage("In-Game.Messages.Lobby-Messages.Waiting-For-Players"), getMinimumPlayers());
                    for (Player player1 : getPlayers()) {
                        player1.sendMessage(ChatManager.PLUGIN_PREFIX + message);
                    }
                    return;
                }
            } else {
                if (plugin.isBossbarEnabled()) {
                    gameBar.setTitle(ChatManager.colorMessage("Bossbar.Waiting-For-Players"));
                }
                for (Player p : getPlayers()) {
                    p.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("In-Game.Messages.Lobby-Messages.Enough-Players-To-Start"));
                }
                setArenaState(ArenaState.STARTING);
                setTimer(Main.STARTING_TIMER_TIME);
                this.showPlayers();
            }
            setTimer(getTimer() - 1);
            break;
        case STARTING:
            if (plugin.isBossbarEnabled()) {
                gameBar.setTitle(ChatManager.colorMessage("Bossbar.Starting-In").replaceAll("%time%", String.valueOf(getTimer())));
                gameBar.setProgress(getTimer() / plugin.getConfig().getDouble("Starting-Waiting-Time"));
            }
            if (getTimer() == 0) {
                VillageGameStartEvent villageGameStartEvent = new VillageGameStartEvent(this);
                Bukkit.getPluginManager().callEvent(villageGameStartEvent);
                setArenaState(ArenaState.IN_GAME);
                if (plugin.isBossbarEnabled()) {
                    gameBar.setProgress(1.0);
                }
                setTimer(5);
                teleportAllToStartLocation();
                for (Player player : getPlayers()) {
                    player.getInventory().clear();
                    player.setGameMode(GameMode.SURVIVAL);
                    UserManager.getUser(player.getUniqueId()).setInt("orbs", plugin.getConfig().getInt("Orbs-Starting-Amount"));
                    ArenaUtils.hidePlayersOutsideTheGame(player, this);
                    if (UserManager.getUser(player.getUniqueId()).getKit() != null) {
                        UserManager.getUser(player.getUniqueId()).getKit().giveKitItems(player);
                    } else {
                        KitRegistry.getDefaultKit().giveKitItems(player);
                    }
                    player.updateInventory();
                    addStat(player, "gamesplayed");
                    addExperience(player, 10);
                    setTimer(25);
                    player.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("In-Game.Messages.Lobby-Messages.Game-Started"));
                }
                isFighting = false;
            }
            setTimer(getTimer() - 1);
            break;
        case IN_GAME:
            if (plugin.isBossbarEnabled()) {
                if (barToggle > 5) {
                    gameBar.setTitle(ChatManager.colorMessage("Bossbar.In-Game-Wave").replaceAll("%wave%", String.valueOf(getWave())));
                    barToggle++;
                    if (barToggle > 10) {
                        barToggle = 0;
                    }
                } else {
                    gameBar.setTitle(ChatManager.colorMessage("Bossbar.In-Game-Info").replaceAll("%wave%", String.valueOf(getWave())));
                    barToggle++;
                }
            }
            if (plugin.isBungeeActivated()) {
                if (getMaximumPlayers() <= getPlayers().size()) {
                    plugin.getServer().setWhitelist(true);
                } else {
                    plugin.getServer().setWhitelist(false);
                }
            }
            zombieChecker++;
            if (zombieChecker >= 60) {
                List<Villager> remove = new ArrayList<>();
                for (Villager villager : getVillagers()) {
                    if (villager.isDead())
                        remove.add(villager);
                }
                for (Villager villager : remove) {
                    removeVillager(villager);
                }
                remove.clear();
                zombieChecker = 0;
                List<Zombie> removeAfterLoop = new ArrayList<>();
                for (Zombie zombie : getZombies()) {
                    if (zombie.isDead()) {
                        removeAfterLoop.add(zombie);
                        continue;
                    }
                    if (glitchedZombies.contains(zombie) && zombie.getLocation().distance(zombieCheckerLocations.get(zombie)) <= 1) {
                        removeAfterLoop.add(zombie);
                        zombieCheckerLocations.remove(zombie);
                        zombie.remove();
                    }
                    if (zombieCheckerLocations.get(zombie) == null) {
                        zombieCheckerLocations.put(zombie, zombie.getLocation());
                    } else {
                        Location location = zombieCheckerLocations.get(zombie);
                        if (zombie.getLocation().distance(location) <= 1) {
                            zombie.teleport(zombieSpawns.get(random.nextInt(zombieSpawns.size() - 1)));
                            zombieCheckerLocations.put(zombie, zombie.getLocation());
                            glitchedZombies.add(zombie);
                        }
                    }
                }
                for (Zombie zombie : removeAfterLoop) {
                    removeZombie(zombie);
                }
                removeAfterLoop.clear();
            }
            if (getVillagers().size() <= 0 || getPlayersLeft().size() <= 0) {
                clearZombies();
                this.setArenaState(ArenaState.ENDING);
                this.stopGame(false);
                if (getVillagers().size() <= 0) {
                    showPlayers();
                    this.setTimer(10);
                } else
                    this.setTimer(5);
                return;
            }
            if (isFighting) {
                if (getZombiesLeft() <= 0) {
                    isFighting = false;
                    endWave();
                }
                if (zombiesToSpawn > 0) {
                    spawnZombies();
                    setTimer(500);
                } else {
                    if (getTimer() == 0) {
                        if (getZombiesLeft() <= 5) {
                            clearZombies();
                            zombiesToSpawn = 0;
                            for (Player p : getPlayers()) {
                                p.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("In-Game.Messages.Zombie-Got-Stuck-In-The-Map"));
                            }
                        } else {
                            getZombies().clear();
                            for (int i = getZombiesLeft(); i > 0; i++) {
                                spawnFastZombie(random);
                            }
                        }
                    }
                }
                if (zombiesToSpawn < 0)
                    zombiesToSpawn = 0;
                setTimer(getTimer() - 1);
            } else {
                if (getTimer() <= 0) {
                    isFighting = true;
                    startWave();
                }
            }
            setTimer(getTimer() - 1);
            break;
        case ENDING:
            if (plugin.isBungeeActivated())
                plugin.getServer().setWhitelist(false);
            if (getTimer() <= 0) {
                if (plugin.isBossbarEnabled()) {
                    gameBar.setTitle(ChatManager.colorMessage("Bossbar.Game-Ended"));
                }
                clearVillagers();
                clearZombies();
                clearGolems();
                clearWolfs();
                for (Player player : getPlayers()) {
                    UserManager.getUser(player.getUniqueId()).removeScoreboard();
                    player.setGameMode(GameMode.SURVIVAL);
                    for (Player players : Bukkit.getOnlinePlayers()) {
                        player.showPlayer(players);
                        players.hidePlayer(player);
                    }
                    for (PotionEffect effect : player.getActivePotionEffects()) {
                        player.removePotionEffect(effect.getType());
                    }
                    player.setFlying(false);
                    player.setAllowFlight(false);
                    player.getInventory().clear();
                    ArmorHelper.clearArmor(player);
                    if (plugin.isBossbarEnabled()) {
                        gameBar.removePlayer(player);
                    }
                    player.setMaxHealth(20.0);
                    player.setHealth(player.getMaxHealth());
                    player.setFireTicks(0);
                    player.setFoodLevel(20);
                    for (Player players : plugin.getServer().getOnlinePlayers()) {
                        if (ArenaRegistry.getArena(players) != null)
                            players.showPlayer(player);
                        player.showPlayer(players);
                    }
                }
                teleportAllToEndLocation();
                if (plugin.isInventoryManagerEnabled()) {
                    for (Player player : getPlayers()) {
                        plugin.getInventoryManager().loadInventory(player);
                    }
                }
                for (Player p : getPlayers()) {
                    p.sendMessage(ChatManager.PLUGIN_PREFIX + ChatManager.colorMessage("Commands.Teleported-To-The-Lobby"));
                }
                setArenaState(ArenaState.RESTARTING);
                for (User user : UserManager.getUsers(this)) {
                    user.setSpectator(false);
                    user.setInt("orbs", 0);
                    user.setFakeDead(false);
                }
                plugin.getRewardsHandler().performEndGameRewards(this);
                clearPlayers();
                if (plugin.isBungeeActivated()) {
                    if (ConfigurationManager.getConfig("bungee").getBoolean("Shutdown-When-Game-Ends"))
                        plugin.getServer().shutdown();
                }
            }
            setTimer(getTimer() - 1);
            break;
        case RESTARTING:
            clearVillagers();
            this.restoreMap();
            getPlayers().clear();
            setArenaState(ArenaState.WAITING_FOR_PLAYERS);
            wave = 1;
            if (plugin.isBungeeActivated()) {
                for (Player player : plugin.getServer().getOnlinePlayers()) {
                    this.addPlayer(player);
                }
            }
            break;
        default:
            // o.o?
            break;
    }
}
Also used : Player(org.bukkit.entity.Player) VillageGameStartEvent(pl.plajer.villagedefense3.villagedefenseapi.VillageGameStartEvent) User(pl.plajer.villagedefense3.User) Zombie(org.bukkit.entity.Zombie) PotionEffect(org.bukkit.potion.PotionEffect) Villager(org.bukkit.entity.Villager) ArrayList(java.util.ArrayList) Location(org.bukkit.Location)

Example 28 with Zombie

use of org.bukkit.entity.Zombie in project Village_Defense by Plajer.

the class ArenaInitializer1_11_R1 method spawnKnockbackResistantZombies.

@Override
public void spawnKnockbackResistantZombies(Random random) {
    Location location = zombieSpawns.get(random.nextInt(zombieSpawns.size()));
    net.minecraft.server.v1_11_R1.World McWorld = ((CraftWorld) location.getWorld()).getHandle();
    TankerZombie fastZombie = new TankerZombie(location.getWorld());
    fastZombie.getAttributeInstance(GenericAttributes.c).setValue(Double.MAX_VALUE);
    fastZombie.setPosition(location.getX(), location.getY(), location.getZ());
    McWorld.addEntity(fastZombie, CreatureSpawnEvent.SpawnReason.CUSTOM);
    Zombie zombie = (Zombie) fastZombie.getBukkitEntity();
    zombie.getEquipment().setItemInHand(new ItemStack(Material.GOLD_AXE));
    zombie.getEquipment().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
    zombie.getEquipment().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
    zombie.getEquipment().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
    zombie.getEquipment().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
    zombie.setRemoveWhenFarAway(false);
    CreatureUtils.applyHealthBar(zombie);
    this.addZombie((Zombie) fastZombie.getBukkitEntity());
    CreatureUtils.applyMetadata(fastZombie.getBukkitEntity(), this);
    super.subtractZombiesToSpawn();
}
Also used : Zombie(org.bukkit.entity.Zombie) TankerZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.TankerZombie) HardZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.HardZombie) BabyZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.BabyZombie) FastZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.FastZombie) TankerZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.TankerZombie) ItemStack(org.bukkit.inventory.ItemStack) CraftWorld(org.bukkit.craftbukkit.v1_11_R1.CraftWorld) Location(org.bukkit.Location)

Example 29 with Zombie

use of org.bukkit.entity.Zombie in project Village_Defense by Plajer.

the class ArenaInitializer1_11_R1 method spawnBabyZombie.

public void spawnBabyZombie(Random random) {
    Location location = zombieSpawns.get(random.nextInt(zombieSpawns.size()));
    net.minecraft.server.v1_11_R1.World McWorld = ((CraftWorld) location.getWorld()).getHandle();
    BabyZombie fastZombie = new BabyZombie(location.getWorld());
    fastZombie.setPosition(location.getX(), location.getY(), location.getZ());
    Zombie zombie = (Zombie) fastZombie.getBukkitEntity();
    CreatureUtils.applyHealthBar(zombie);
    zombie.setRemoveWhenFarAway(false);
    McWorld.addEntity(fastZombie, CreatureSpawnEvent.SpawnReason.CUSTOM);
    this.addZombie((Zombie) fastZombie.getBukkitEntity());
    CreatureUtils.applyMetadata(fastZombie.getBukkitEntity(), this);
    super.subtractZombiesToSpawn();
}
Also used : Zombie(org.bukkit.entity.Zombie) TankerZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.TankerZombie) HardZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.HardZombie) BabyZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.BabyZombie) FastZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.FastZombie) BabyZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.BabyZombie) CraftWorld(org.bukkit.craftbukkit.v1_11_R1.CraftWorld) Location(org.bukkit.Location)

Example 30 with Zombie

use of org.bukkit.entity.Zombie in project Village_Defense by Plajer.

the class ArenaInitializer1_11_R1 method spawnHalfInvisibleZombie.

@Override
public void spawnHalfInvisibleZombie(Random random) {
    Location location = zombieSpawns.get(random.nextInt(zombieSpawns.size()));
    net.minecraft.server.v1_11_R1.World McWorld = ((CraftWorld) location.getWorld()).getHandle();
    FastZombie fastZombie = new FastZombie(location.getWorld());
    fastZombie.setPosition(location.getX(), location.getY(), location.getZ());
    McWorld.addEntity(fastZombie, CreatureSpawnEvent.SpawnReason.CUSTOM);
    Zombie zombie = (Zombie) fastZombie.getBukkitEntity();
    zombie.setRemoveWhenFarAway(false);
    zombie.getEquipment().setBoots(new ItemStack(Material.CHAINMAIL_BOOTS));
    zombie.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1));
    CreatureUtils.applyHealthBar(zombie);
    this.addZombie((Zombie) fastZombie.getBukkitEntity());
    CreatureUtils.applyMetadata(fastZombie.getBukkitEntity(), this);
    super.subtractZombiesToSpawn();
}
Also used : FastZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.FastZombie) Zombie(org.bukkit.entity.Zombie) TankerZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.TankerZombie) HardZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.HardZombie) BabyZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.BabyZombie) FastZombie(pl.plajer.villagedefense3.creatures.v1_11_R1.FastZombie) PotionEffect(org.bukkit.potion.PotionEffect) ItemStack(org.bukkit.inventory.ItemStack) CraftWorld(org.bukkit.craftbukkit.v1_11_R1.CraftWorld) Location(org.bukkit.Location)

Aggregations

Zombie (org.bukkit.entity.Zombie)56 Location (org.bukkit.Location)39 ItemStack (org.bukkit.inventory.ItemStack)27 Player (org.bukkit.entity.Player)12 Entity (org.bukkit.entity.Entity)10 LivingEntity (org.bukkit.entity.LivingEntity)9 CraftWorld (org.bukkit.craftbukkit.v1_11_R1.CraftWorld)8 CraftWorld (org.bukkit.craftbukkit.v1_12_R1.CraftWorld)8 CraftWorld (org.bukkit.craftbukkit.v1_8_R3.CraftWorld)8 CraftWorld (org.bukkit.craftbukkit.v1_9_R1.CraftWorld)8 Ageable (org.bukkit.entity.Ageable)8 BabyZombie (pl.plajer.villagedefense3.creatures.v1_11_R1.BabyZombie)8 FastZombie (pl.plajer.villagedefense3.creatures.v1_11_R1.FastZombie)8 HardZombie (pl.plajer.villagedefense3.creatures.v1_11_R1.HardZombie)8 TankerZombie (pl.plajer.villagedefense3.creatures.v1_11_R1.TankerZombie)8 BabyZombie (pl.plajer.villagedefense3.creatures.v1_12_R1.BabyZombie)8 FastZombie (pl.plajer.villagedefense3.creatures.v1_12_R1.FastZombie)8 HardZombie (pl.plajer.villagedefense3.creatures.v1_12_R1.HardZombie)8 TankerZombie (pl.plajer.villagedefense3.creatures.v1_12_R1.TankerZombie)8 BabyZombie (pl.plajer.villagedefense3.creatures.v1_8_R3.BabyZombie)8