skywars update!

This commit is contained in:
Cheese 2015-06-26 14:14:22 +10:00
parent 2d1d65b239
commit 0874178973
9 changed files with 209 additions and 134 deletions

View File

@ -25,7 +25,7 @@ public class KitDestructor extends Kit
new Perk[] new Perk[]
{ {
new PerkDestructor(40, 2) new PerkDestructor(40, 2, 400, false)
}, },
EntityType.ZOMBIE, EntityType.ZOMBIE,
new ItemStack(Material.ENDER_PEARL)); new ItemStack(Material.ENDER_PEARL));

View File

@ -2,6 +2,7 @@ package nautilus.game.arcade.game.games.skywars;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.MapUtil;
@ -33,7 +34,8 @@ import nautilus.game.arcade.game.games.skywars.data.TNTGenerator;
import nautilus.game.arcade.game.games.skywars.events.PlayerKillZombieEvent; import nautilus.game.arcade.game.games.skywars.events.PlayerKillZombieEvent;
import nautilus.game.arcade.game.games.skywars.events.TNTKillEvent; import nautilus.game.arcade.game.games.skywars.events.TNTKillEvent;
import nautilus.game.arcade.game.games.skywars.kits.KitChicken; import nautilus.game.arcade.game.games.skywars.kits.KitChicken;
import nautilus.game.arcade.game.games.skywars.kits.KitLooter; import nautilus.game.arcade.game.games.skywars.kits.KitDestructor;
import nautilus.game.arcade.game.games.skywars.kits.KitMiner;
import nautilus.game.arcade.game.games.skywars.kits.KitZoo; import nautilus.game.arcade.game.games.skywars.kits.KitZoo;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.ore.OreHider; import nautilus.game.arcade.ore.OreHider;
@ -74,6 +76,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.event.entity.ItemDespawnEvent; import org.bukkit.event.entity.ItemDespawnEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerPickupItemEvent;
@ -89,7 +92,8 @@ public class SkyWars extends SoloGame
private HashSet<Location> _lootedBlocks = new HashSet<Location>(); private HashSet<Location> _lootedBlocks = new HashSet<Location>();
private TNTGenerator _tntGen; private TNTGenerator _tntGen;
private boolean _alreadyAnnounced; private boolean _alreadyAnnounced;
private ArrayList<Creature> _mobs = new ArrayList<Creature>();
private NautHashMap<Zombie, Location> _zombies = new NautHashMap<Zombie, Location>();
private ArrayList<Block> _spawnChests = new ArrayList<Block>(); private ArrayList<Block> _spawnChests = new ArrayList<Block>();
private ArrayList<Block> _middleChests = new ArrayList<Block>(); private ArrayList<Block> _middleChests = new ArrayList<Block>();
@ -116,12 +120,18 @@ public class SkyWars extends SoloGame
{ {
super(manager, GameType.Skywars, new Kit[] super(manager, GameType.Skywars, new Kit[]
{ {
new KitZoo(manager), new KitLooter(manager), new KitMiner(manager),
new KitChicken(manager) new KitMiner(manager),
new KitZoo(manager),
new KitChicken(manager),
new KitDestructor(manager),
}, new String[] }, new String[]
{ {
"Free for all battle in the sky:", "Collect loot from chests", "Free for all battle in the sky!",
"Mine up ores on your island", "Last player alive wins!" "Collect loot from chests",
"Mine ores on your island",
"Last player alive wins!"
}); });
PrepareFreeze = true; PrepareFreeze = true;
@ -134,7 +144,7 @@ public class SkyWars extends SoloGame
QuitDropItems = true; QuitDropItems = true;
WorldTimeSet = 0; WorldTimeSet = 0;
WorldBoundaryKill = false; WorldBoundaryKill = false;
SpawnDistanceRequirement = 48; SpawnDistanceRequirement = 48;
@ -231,51 +241,31 @@ public class SkyWars extends SoloGame
// Zombies // Zombies
for (Location loc : WorldData.GetDataLocs("RED")) for (Location loc : WorldData.GetDataLocs("RED"))
{ {
while (_mobs.size() < 15) //Spawn
{ CreatureAllowOverride = true;
CreatureAllowOverride = true; Zombie zombie = (Zombie) loc.getWorld().spawn(loc, Zombie.class);
Zombie zombie = (Zombie) loc.getWorld() zombie.setRemoveWhenFarAway(false);
.spawn(loc, Zombie.class); zombie.setCustomName(C.cDRed + "Zombie Guardian");
zombie.setRemoveWhenFarAway(false); zombie.setCustomNameVisible(true);
zombie.setCustomName(C.cDRed + "Zombie Guardian"); zombie.setMaxHealth(20.0D);
zombie.setCustomNameVisible(true); CreatureAllowOverride = false;
zombie.setMaxHealth(20.0D);
// Armor - Make sure the player can't get it!
zombie.getEquipment().setHelmet(
new ItemStack(Material.GOLD_HELMET));
zombie.getEquipment().setHelmetDropChance(0F);
zombie.getEquipment().setChestplate(
new ItemStack(Material.GOLD_CHESTPLATE));
zombie.getEquipment().setChestplateDropChance(0F);
zombie.getEquipment().setLeggings(
new ItemStack(Material.GOLD_LEGGINGS));
zombie.getEquipment().setLeggingsDropChance(0F);
zombie.getEquipment().setBoots(
new ItemStack(Material.GOLD_BOOTS));
zombie.getEquipment().setBootsDropChance(0F);
// Armor - Make sure the player can't get it!
zombie.getEquipment().setHelmet(
new ItemStack(Material.GOLD_HELMET));
zombie.getEquipment().setHelmetDropChance(0F);
zombie.getEquipment().setChestplate(
new ItemStack(Material.GOLD_CHESTPLATE));
zombie.getEquipment().setChestplateDropChance(0F);
zombie.getEquipment().setLeggings(
new ItemStack(Material.GOLD_LEGGINGS));
zombie.getEquipment().setLeggingsDropChance(0F);
zombie.getEquipment().setBoots(
new ItemStack(Material.GOLD_BOOTS));
zombie.getEquipment().setBootsDropChance(0F);
// Buff? _zombies.put(zombie, loc);
int c = UtilMath.r(9);
switch (c)
{
case 1:
case 7:
case 4:
zombie.addPotionEffect(new PotionEffect(
PotionEffectType.SPEED, Integer.MAX_VALUE, 0));
default:
break;
}
_mobs.add(zombie);
CreatureAllowOverride = false;
}
} }
} }
@ -370,12 +360,6 @@ public class SkyWars extends SoloGame
} }
} }
@EventHandler
public void equipWeapons(PlayerKitGiveEvent event)
{
event.GetPlayer().getInventory().addItem(new ItemStack(Material.WOOD_AXE));
event.GetPlayer().getInventory().addItem(new ItemStack(Material.WOOD_PICKAXE));
}
@EventHandler @EventHandler
public void blockUpdate(UpdateEvent event) public void blockUpdate(UpdateEvent event)
@ -734,6 +718,50 @@ public class SkyWars extends SoloGame
_tntGen.update(); _tntGen.update();
} }
@EventHandler
public void zombieUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
Iterator<Zombie> zombieIter = _zombies.keySet().iterator();
while (zombieIter.hasNext())
{
Zombie zombie = zombieIter.next();
if (!zombie.isValid())
{
zombieIter.remove();
continue;
}
Location loc = _zombies.get(zombie);
if (zombie.getTarget() == null || UtilMath.offset(zombie.getLocation(), loc) > 8)
{
zombie.setTarget(null);
UtilEnt.CreatureMove(zombie, loc, 1f);
}
}
}
@EventHandler
public void zombieTarget(EntityTargetLivingEntityEvent event)
{
if (event.getEntity() instanceof Zombie && _zombies.containsKey((Zombie)event.getEntity()))
{
Zombie zombie = (Zombie)event.getEntity();
Location loc = _zombies.get(zombie);
if (UtilMath.offset(event.getTarget().getLocation(), loc) > 8)
{
event.setCancelled(true);
zombie.setTarget(null);
}
}
}
@EventHandler @EventHandler
public void noZombieBurn(EntityCombustEvent e) public void noZombieBurn(EntityCombustEvent e)
{ {
@ -785,12 +813,12 @@ public class SkyWars extends SoloGame
if (e.getBlock().getType() == Material.WEB) if (e.getBlock().getType() == Material.WEB)
{ {
for (int i=0 ; i<1 + UtilMath.r(2) ; i++) for (int i=0 ; i<1 + UtilMath.r(2) ; i++)
e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().add(0.5, 0.5, 0.5), new ItemStack(Material.STRING)); e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().add(0.5, 0, 0.5), new ItemStack(Material.STRING));
} }
if (e.getBlock().getType() == Material.GRAVEL) if (e.getBlock().getType() == Material.GRAVEL)
{ {
e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().add(0.5, 0.5, 0.5), new ItemStack(Material.FLINT)); e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().add(0.5, 0, 0.5), new ItemStack(Material.FLINT));
} }
if (e.getBlock().getType() == Material.IRON_ORE) if (e.getBlock().getType() == Material.IRON_ORE)
@ -798,7 +826,7 @@ public class SkyWars extends SoloGame
e.setCancelled(true); e.setCancelled(true);
e.getBlock().setType(Material.AIR); e.getBlock().setType(Material.AIR);
e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().add(0.5, 0.5, 0.5), new ItemStack(Material.IRON_INGOT)); e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().add(0.5, 0, 0.5), new ItemStack(Material.IRON_INGOT));
} }
} }
@ -842,21 +870,18 @@ public class SkyWars extends SoloGame
@EventHandler @EventHandler
public void onKillZombie(EntityDeathEvent e) public void onKillZombie(EntityDeathEvent e)
{ {
if (e.getEntity() instanceof Zombie) if (e.getEntity() instanceof Zombie)
{ {
Zombie ent = (Zombie) e.getEntity(); Zombie ent = (Zombie) e.getEntity();
if (_mobs.contains(ent)) if (_zombies.containsKey(ent))
{ {
if (ent.getKiller() instanceof Player) if (ent.getKiller() instanceof Player)
{ {
Player p = ent.getKiller(); Player p = ent.getKiller();
Bukkit.getPluginManager().callEvent( Bukkit.getPluginManager().callEvent(
new PlayerKillZombieEvent(p, ent)); new PlayerKillZombieEvent(p, ent));
} }
} }
} }
@ -891,7 +916,7 @@ public class SkyWars extends SoloGame
event.getDrops().clear(); event.getDrops().clear();
//Zombie Loot //Zombie Loot
if (_mobs.contains(event.getEntity())) if (event.getEntity() instanceof Zombie && _zombies.containsKey((Zombie)event.getEntity()))
{ {
double r = Math.random(); double r = Math.random();
@ -1108,6 +1133,7 @@ public class SkyWars extends SoloGame
//Projectile //Projectile
_middleTool.addLoot(new RandomItem(Material.BOW, 1)); _middleTool.addLoot(new RandomItem(Material.BOW, 1));
_middleProjectile.addLoot(new RandomItem(Material.ARROW, 2, 4, 12)); _middleProjectile.addLoot(new RandomItem(Material.ARROW, 2, 4, 12));
_middleProjectile.addLoot(new RandomItem(Material.ENDER_PEARL, 1, 1, 2));
//Block //Block
_middleBlock.addLoot(new RandomItem(Material.BRICK, 30, 8, 16)); _middleBlock.addLoot(new RandomItem(Material.BRICK, 30, 8, 16));

View File

@ -32,10 +32,11 @@ public class KitChicken extends Kit
} }
@Override @Override
public void GiveItems(Player player){ public void GiveItems(Player player)
{
p.spawnChicken(player, player.getLocation()); p.spawnChicken(player, player.getLocation());
player.getInventory().addItem(new ItemStack(Material.WOOD_AXE));
player.getInventory().addItem(new ItemStack(Material.WOOD_PICKAXE));
} }
} }

View File

@ -0,0 +1,51 @@
package nautilus.game.arcade.game.games.skywars.kits;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import mineplex.core.achievement.Achievement;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.*;
public class KitDestructor extends Kit
{
public KitDestructor(ArcadeManager manager)
{
super(manager, "Destructor", KitAvailability.Achievement,
new String[]
{
"Your Ender Pearls make the world crumble!"
},
new Perk[]
{
new PerkDestructor(40, 2, 2500, true)
},
EntityType.ZOMBIE,
new ItemStack(Material.ENDER_PEARL));
this.setAchievementRequirements(new Achievement[]
{
Achievement.SKYWARS_BOMBER,
Achievement.SKYWARS_NOARMOR,
Achievement.SKYWARS_NOCHEST,
Achievement.SKYWARS_PLAYER_KILLS,
Achievement.SKYWARS_TNT,
Achievement.SKYWARS_WINS,
Achievement.SKYWARS_ZOMBIE_KILLS
});
}
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(new ItemStack(Material.WOOD_AXE));
player.getInventory().addItem(new ItemStack(Material.WOOD_PICKAXE));
}
}

View File

@ -1,37 +0,0 @@
package nautilus.game.arcade.game.games.skywars.kits;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkLooter;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class KitLooter extends Kit
{
public KitLooter(ArcadeManager manager)
{
super(manager, "Bandit", KitAvailability.Gem, 5000,
new String[]
{
"hehehe...","ALL MINE!"
},
new Perk[] {new PerkLooter()},
EntityType.ZOMBIE,
new ItemStack(Material.GOLD_INGOT));
// TODO Auto-generated constructor stub
}
@Override
public void GiveItems(Player player)
{
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,40 @@
package nautilus.game.arcade.game.games.skywars.kits;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.*;
public class KitMiner extends Kit
{
public KitMiner(ArcadeManager manager)
{
super(manager, "Miner", KitAvailability.Gem, 5000,
new String[]
{
"Start with better tools!"
},
new Perk[]
{
new PerkDigger(),
},
EntityType.ZOMBIE,
new ItemStack(Material.STONE_PICKAXE));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().addItem(new ItemStack(Material.STONE_AXE));
player.getInventory().addItem(new ItemStack(Material.STONE_PICKAXE));
}
}

View File

@ -16,18 +16,21 @@ public class KitZoo extends Kit
public KitZoo(ArcadeManager manager) public KitZoo(ArcadeManager manager)
{ {
super(manager, "Mad Scientist", KitAvailability.Achievement, 0, new String[] super(manager, "Mad Scientist",
{ "EUREKA!" }, new Perk[] KitAvailability.Gem,
{ new PerkZoologist(manager) }, EntityType.ZOMBIE, new ItemStack( new String[]{ "EUREKA! Zombie Eggs!" },
Material.MONSTER_EGG)); new Perk[]
{
new PerkZoologist(manager) }, EntityType.ZOMBIE, new ItemStack(
Material.MONSTER_EGG));
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
@Override @Override
public void GiveItems(Player player) public void GiveItems(Player player)
{ {
player.getInventory().addItem(new ItemStack(Material.WOOD_AXE));
player.getInventory().addItem(new ItemStack(Material.WOOD_PICKAXE));
} }
} }

View File

@ -54,6 +54,9 @@ public class PerkChicken extends Perk
c.setRemoveWhenFarAway(false); c.setRemoveWhenFarAway(false);
c.setMaxHealth(35.0D); c.setMaxHealth(35.0D);
c.setAdult(); c.setAdult();
c.setCustomName(player.getName() + "'s Chicken");
c.setCustomNameVisible(true);
_activeKitHolders.put(player.getName(), c); _activeKitHolders.put(player.getName(), c);
_failedAttempts.put(player.getName(), 0); _failedAttempts.put(player.getName(), 0);
@ -137,7 +140,7 @@ public class PerkChicken extends Perk
@EventHandler @EventHandler
public void dropEggs(UpdateEvent e) public void dropEggs(UpdateEvent e)
{ {
if (e.getType() != UpdateType.SLOWER) if (e.getType() != UpdateType.SLOW)
{ {
return; return;
} }

View File

@ -24,24 +24,29 @@ import java.util.*;
public class PerkDestructor extends Perk public class PerkDestructor extends Perk
{ {
private boolean _enabled = false; private boolean _enabled;
private int _spawnRate; private int _spawnRate;
private int _max; private int _max;
private long _fallTime;
private HashMap<Block, Long> _blocks = new HashMap<Block, Long>(); private HashMap<Block, Long> _blocks = new HashMap<Block, Long>();
public PerkDestructor(int spawnRate, int max) public PerkDestructor(int spawnRate, int max, long fallTime, boolean enabled)
{ {
super("Seismic Charge", new String[] super("Seismic Charge", new String[]
{ {
C.cGray + "Receive 1 Seismic Charge every " + spawnRate + " seconds. Maximum of " + max + ".", C.cGray + "Receive 1 Seismic Charge every " + spawnRate + " seconds. Maximum of " + max + ".",
C.cYellow + "Right-Click" + C.cGray + " with Seismic Charge to " + C.cGreen + "Throw Seismic Charge", C.cYellow + "Right-Click" + C.cGray + " with Seismic Charge to " + C.cGreen + "Throw Seismic Charge",
C.cGray + "You will not receive them until bridges drop", enabled ? "" : C.cGray + "You will not receive them until bridges drop",
}); });
_spawnRate = spawnRate; _spawnRate = spawnRate;
_max = max; _max = max;
_fallTime = fallTime;
_enabled = enabled;
} }
public void Apply(Player player) public void Apply(Player player)
@ -172,7 +177,7 @@ public class PerkDestructor extends Perk
for (Block block : _blocks.keySet()) for (Block block : _blocks.keySet())
{ {
if (!UtilTime.elapsed(_blocks.get(block), 400)) if (!UtilTime.elapsed(_blocks.get(block), _fallTime))
continue; continue;
if (lowest == null || block.getY() < lowestY) if (lowest == null || block.getY() < lowestY)
@ -198,23 +203,6 @@ public class PerkDestructor extends Perk
_blocks.remove(lowest); _blocks.remove(lowest);
} }
} }
@EventHandler
public void PaintballDamage(CustomDamageEvent event)
{
if (Manager.GetGame() == null || !Manager.GetGame().IsLive())
return;
if (event.GetProjectile() == null)
return;
if (!(event.GetProjectile() instanceof EnderPearl))
return;
event.AddMod(GetName(), GetName(), 4, true);
event.AddKnockback(GetName(), 2.5);
}
public void setEnabled(boolean var) public void setEnabled(boolean var)
{ {