From e17368a9acfc29e7e42909f4f43e90fd253b4870 Mon Sep 17 00:00:00 2001 From: Chiss Date: Sat, 31 Aug 2013 13:15:16 +1000 Subject: [PATCH] >.< Updates --- .../Core/src/me/chiss/Core/Modules/Blood.java | 20 +- .../core/blockrestore/BlockRestore.java | 10 +- .../game/core/damage/DamageManager.java | 83 +- .../game/core/damage/DamageManager.java.orig | 505 ------ .../src/nautilus/game/arcade/Arcade.java | 14 +- .../src/nautilus/game/arcade/Arcade.java.orig | 452 ----- .../nautilus/game/arcade/ArcadeManager.java | 15 +- .../game/arcade/ArcadeManager.java.orig | 436 ----- .../game/arcade/GameManager.java.orig | 1562 ----------------- .../nautilus/game/arcade/game/Game.java.orig | 896 ---------- .../minigames/deathtag/kits/KitArcher.java | 6 +- .../minigames/dragons/kits/KitCoward.java | 8 +- .../minigames/dragons/kits/KitMarksman.java | 6 +- .../dragons/kits/KitPyrotechnic.java | 6 +- .../minigames/evolution/mobs/KitSlime.java | 4 +- .../minigames/evolution/mobs/KitWolf.java | 4 +- .../horsecharge/kits/KitDefenceArcher.java | 6 +- .../horsecharge/kits/KitHorseKnight.java | 6 +- .../arcade/game/minigames/quiver/Quiver.java | 2 + .../minigames/quiver/kits/KitBrawler.java | 7 - .../quiver/kits/KitElementalist.java | 7 - .../game/minigames/quiver/kits/KitLeaper.java | 9 +- .../game/minigames/runner/kits/KitLeaper.java | 2 +- .../game/minigames/spleef/kits/KitLeaper.java | 2 +- .../turfforts/kits/KitInfiltrator.java | 7 - .../minigames/turfforts/kits/KitMarksman.java | 6 - .../minigames/turfforts/kits/KitShredder.java | 7 - .../standalone/bridge/kits/KitBeserker.java | 2 +- .../kits/KitHumanElementalist.java | 6 +- .../castlesiege/kits/KitHumanKnight.java | 6 +- .../castlesiege/kits/KitHumanMarksman.java | 6 +- .../castlesiege/kits/KitHumanPeasant.java | 6 - .../castlesiege/kits/KitUndeadGhoul.java | 2 +- .../game/standalone/smash/SuperSmash.java | 26 +- .../game/standalone/smash/kits/KitBlaze.java | 30 +- .../standalone/smash/kits/KitChicken.java | 2 +- .../standalone/smash/kits/KitEnderman.java | 2 +- .../game/standalone/smash/kits/KitGolem.java | 4 +- .../standalone/smash/kits/KitSkeleton.java | 9 +- .../game/standalone/smash/kits/KitSlime.java | 14 +- .../standalone/smash/kits/KitSnowman.java | 4 +- .../game/standalone/smash/kits/KitSpider.java | 2 +- .../kits/KitSurvivorArcher.java | 6 +- .../kits/KitSurvivorKnight.java | 4 +- .../zombiesurvival/kits/KitSurvivorRogue.java | 6 +- .../zombiesurvival/kits/KitUndeadAlpha.java | 6 +- .../zombiesurvival/kits/KitUndeadZombie.java | 2 +- .../src/nautilus/game/arcade/kit/Kit.java | 7 +- .../game/arcade/kit/perks/PerkBarrage.java | 2 +- .../game/arcade/kit/perks/PerkBlizzard.java | 2 +- .../game/arcade/kit/perks/PerkBomber.java | 3 + .../arcade/kit/perks/PerkBoneExplosion.java | 76 + .../arcade/kit/perks/PerkChickenRocket.java | 4 + .../game/arcade/kit/perks/PerkEggGun.java | 6 +- .../game/arcade/kit/perks/PerkFirefly.java | 6 +- .../arcade/kit/perks/PerkFlamingSword.java | 3 +- .../game/arcade/kit/perks/PerkFletcher.java | 3 + .../game/arcade/kit/perks/PerkIcePath.java | 7 +- .../game/arcade/kit/perks/PerkInferno.java | 105 ++ .../game/arcade/kit/perks/PerkJump.java | 42 + .../arcade/kit/perks/PerkKnockbackFire.java | 42 + .../arcade/kit/perks/PerkKnockbackSnow.java | 42 + .../game/arcade/kit/perks/PerkLeaper.java | 75 - .../arcade/kit/perks/PerkSlimeRocket.java | 326 ++++ .../game/arcade/kit/perks/PerkSlow.java | 2 +- .../arcade/managers/GameLobbyManager.java | 7 +- .../game/arcade/managers/MiscManager.java | 4 +- 67 files changed, 892 insertions(+), 4105 deletions(-) delete mode 100644 Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java.orig delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java.orig delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java.orig delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameManager.java.orig delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java.orig create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBoneExplosion.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInferno.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkJump.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackFire.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackSnow.java delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkLeaper.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlimeRocket.java diff --git a/Plugins/Core/src/me/chiss/Core/Modules/Blood.java b/Plugins/Core/src/me/chiss/Core/Modules/Blood.java index de3215718..13420977f 100644 --- a/Plugins/Core/src/me/chiss/Core/Modules/Blood.java +++ b/Plugins/Core/src/me/chiss/Core/Modules/Blood.java @@ -1,5 +1,6 @@ package me.chiss.Core.Modules; +import java.util.HashMap; import java.util.HashSet; import mineplex.core.MiniPlugin; @@ -21,7 +22,7 @@ import org.bukkit.util.Vector; public class Blood extends MiniPlugin { - private HashSet _blood = new HashSet(); + private HashMap _blood = new HashMap(); public Blood(JavaPlugin plugin) { @@ -36,6 +37,12 @@ public class Blood extends MiniPlugin public void Effects(Location loc, int particles, double velMult, Sound sound, float soundVol, float soundPitch, Material type, byte data, boolean bloodStep) + { + Effects(loc, particles, velMult, sound, soundVol, soundPitch, type, data, 10, bloodStep); + } + + public void Effects(Location loc, int particles, double velMult, Sound sound, + float soundVol, float soundPitch, Material type, byte data, int ticks, boolean bloodStep) { for (int i = 0 ; i < particles ; i++) { @@ -44,7 +51,7 @@ public class Blood extends MiniPlugin item.setVelocity(new Vector((Math.random() - 0.5)*velMult,Math.random()*velMult,(Math.random() - 0.5)*velMult)); - _blood.add(item); + _blood.put(item, ticks); } if (bloodStep) @@ -61,8 +68,8 @@ public class Blood extends MiniPlugin HashSet expire = new HashSet(); - for (Item cur : _blood) - if (cur.getTicksLived() > 10 || !cur.isValid()) + for (Item cur : _blood.keySet()) + if (cur.getTicksLived() > _blood.get(cur) || !cur.isValid()) expire.add(cur); for (Item cur : expire) @@ -70,7 +77,6 @@ public class Blood extends MiniPlugin cur.remove(); _blood.remove(cur); } - } @EventHandler @@ -79,7 +85,7 @@ public class Blood extends MiniPlugin if (event.isCancelled()) return; - if (_blood.contains(event.getItem())) + if (_blood.containsKey(event.getItem())) event.setCancelled(true); } @@ -89,7 +95,7 @@ public class Blood extends MiniPlugin if (event.isCancelled()) return; - if (_blood.contains(event.getItem())) + if (_blood.containsKey(event.getItem())) event.setCancelled(true); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java b/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java index 500a636f2..fe590a71e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/blockrestore/BlockRestore.java @@ -121,6 +121,14 @@ public class BlockRestore extends MiniPlugin if (block.getRelative(BlockFace.DOWN).getTypeId() == 79) return; + //No Snow on Slabs + if (block.getRelative(BlockFace.DOWN).getTypeId() == 44 || block.getRelative(BlockFace.DOWN).getTypeId() == 126) + return; + + //No Snow on Stairs + if (block.getRelative(BlockFace.DOWN).getType().toString().contains("STAIRS")) + return; + //No Snow on Fence if (block.getRelative(BlockFace.DOWN).getTypeId() == 85) return; @@ -131,7 +139,7 @@ public class BlockRestore extends MiniPlugin //Limit Build Height if (block.getTypeId() == 78) - if (block.getData() >= (byte)heightMax) + if (block.getData() >= (byte)(heightMax-1)) heightAdd = 0; //Snow diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java index a78867040..63a2c8d90 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java @@ -5,10 +5,14 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import mineplex.core.MiniPlugin; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.disguise.DisguiseManager; import mineplex.core.npc.NpcManager; import mineplex.minecraft.game.core.combat.CombatManager; import mineplex.minecraft.game.core.damage.compatibility.NpcProtectListener; @@ -37,17 +41,19 @@ import org.bukkit.util.Vector; public class DamageManager extends MiniPlugin { private CombatManager _combatManager; + private DisguiseManager _disguiseManager; protected Field _lastDamageByPlayerTime; protected Method _k; public boolean UseDefaultWeaponDamage = false; - - public DamageManager(JavaPlugin plugin, CombatManager combatManager, NpcManager npcManager) + + public DamageManager(JavaPlugin plugin, CombatManager combatManager, NpcManager npcManager, DisguiseManager disguiseManager) { super("Damage Manager", plugin); _combatManager = combatManager; - + _disguiseManager = disguiseManager; + try { _lastDamageByPlayerTime = EntityLiving.class.getDeclaredField("lastDamageByPlayerTime"); @@ -59,10 +65,10 @@ public class DamageManager extends MiniPlugin { System.out.println("Problem getting access to EntityLiving: " + e.getMessage()); } - + RegisterEvents(new NpcProtectListener(npcManager)); } - + @EventHandler(priority = EventPriority.HIGHEST) public void StartDamageEvent(EntityDamageEvent event) { @@ -77,7 +83,7 @@ public class DamageManager extends MiniPlugin LivingEntity damagee = GetDamageeEntity(event); LivingEntity damager = GetDamagerEntity(event, true); Projectile projectile = GetProjectile(event); - + if (projectile instanceof Fish) return; @@ -89,7 +95,7 @@ public class DamageManager extends MiniPlugin //event.setDamage(0); //if (GoldPower(damager)) - event.setCancelled(true); + event.setCancelled(true); } /* @@ -100,10 +106,10 @@ public class DamageManager extends MiniPlugin Player player = (Player)damager; if (!Util().Gear().isGold(player.getItemInHand())) return false; - + if (!player.getInventory().contains(Material.GOLD_NUGGET)) return false; - + UtilInv.remove(player, Material.GOLD_NUGGET, (byte)0, 1); return true; } @@ -252,6 +258,7 @@ public class DamageManager extends MiniPlugin trajectory, 0.2 + trajectory.length() * 0.8, false, 0, Math.abs(0.2 * knockback), 0.4 + (0.04 * knockback), true); } + DisplayDamage(event); } catch (IllegalAccessException e) { @@ -267,6 +274,33 @@ public class DamageManager extends MiniPlugin } } + private void DisplayDamage(CustomDamageEvent event) + { + for (Player player : UtilServer.getPlayers()) + { + if (!UtilGear.isMat(player.getItemInHand(), Material.BOOK)) + continue; + + for (DamageChange cur : event.GetDamageMod()) + UtilPlayer.message(player, F.elem("Mod ") + cur.GetDamage() + " - " + cur.GetReason() + " by " + cur.GetSource()); + + for (DamageChange cur : event.GetDamageMult()) + UtilPlayer.message(player, F.elem("Mult ") + cur.GetDamage() + " - " + cur.GetReason() + " by " + cur.GetSource()); + + for (String cur : event.GetKnockback().keySet()) + UtilPlayer.message(player, F.elem("Knockback ") + cur + " = " + event.GetKnockback().get(cur)); + + for (String cur : event.GetCancellers()) + UtilPlayer.message(player, F.elem("Cancel ") + cur); + + UtilPlayer.message(player, F.elem("Damager ") + UtilEnt.getName(event.GetDamagerEntity(true))); + UtilPlayer.message(player, F.elem("Damagee ") + UtilEnt.getName(event.GetDamageeEntity())); + UtilPlayer.message(player, F.elem("Reason ") + event.GetReason()); + UtilPlayer.message(player, F.elem("Damage ") + event.GetDamage()); + UtilPlayer.message(player, F.elem("Damage Initial ") + event.GetDamageInitial()); + } + } + private void HandleDamage(LivingEntity damagee, LivingEntity damager, DamageCause cause, float damage, boolean ignoreArmor) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { EntityLiving entityDamagee = ((CraftLivingEntity)damagee).getHandle(); @@ -329,26 +363,29 @@ public class DamageManager extends MiniPlugin //Damagee LivingEntity damagee = event.GetDamageeEntity(); if (damagee == null) return; - + + //if (_disguiseManager.isDisguised(damagee)) + // _disguiseManager.getDisguise(damagee).playHurtSound(); + //Sound Sound sound = Sound.HURT_FLESH; float vol = 1f; float pitch = 1f; - + //Armor Sound if (damagee instanceof Player) { Player player = (Player)damagee; - + double r = Math.random(); - + ItemStack stack = null; - + if (r > 0.50) stack = player.getInventory().getChestplate(); else if (r > 0.25) stack = player.getInventory().getLeggings(); else if (r > 0.10) stack = player.getInventory().getHelmet(); else stack = player.getInventory().getBoots(); - + if (stack != null) { if (stack.getType().toString().contains("LEATHER_")) @@ -383,10 +420,10 @@ public class DamageManager extends MiniPlugin { UtilEnt.PlayDamageSound(damagee); } - + damagee.getWorld().playSound(damagee.getLocation(), sound, vol, pitch); } - + private void ApplyDamage(EntityLiving entityLiving, float damage, boolean ignoreArmor) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { if (!ignoreArmor) @@ -415,8 +452,8 @@ public class DamageManager extends MiniPlugin private void WeaponDamage(EntityDamageEvent event, LivingEntity ent) { - - + + if (!(ent instanceof Player)) return; @@ -424,15 +461,15 @@ public class DamageManager extends MiniPlugin return; Player damager = (Player)ent; - + if (UseDefaultWeaponDamage) { if (event.getDamage() > 1) event.setDamage(event.getDamage() - 1); - + if (damager.getItemInHand().getType().name().contains("GOLD_")) event.setDamage(event.getDamage() + 2); - + return; } @@ -460,7 +497,7 @@ public class DamageManager extends MiniPlugin return null; EntityDamageByEntityEvent eventEE = (EntityDamageByEntityEvent)event; - + //Get Damager if (eventEE.getDamager() instanceof LivingEntity) return (LivingEntity)eventEE.getDamager(); diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java.orig b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java.orig deleted file mode 100644 index c069159dc..000000000 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java.orig +++ /dev/null @@ -1,505 +0,0 @@ -package mineplex.minecraft.game.core.damage; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import mineplex.core.MiniPlugin; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilGear; -import mineplex.core.npc.NpcManager; -import mineplex.minecraft.game.core.combat.CombatManager; -import mineplex.minecraft.game.core.damage.compatibility.NpcProtectListener; -import net.minecraft.server.v1_6_R2.DamageSource; -import net.minecraft.server.v1_6_R2.EntityHuman; -import net.minecraft.server.v1_6_R2.EntityLiving; - -import org.bukkit.EntityEffect; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftLivingEntity; -import org.bukkit.entity.Fish; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.inventory.ItemStack; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.util.Vector; - -public class DamageManager extends MiniPlugin -{ - private CombatManager _combatManager; - protected Field _lastDamageByPlayerTime; - protected Method _k; - - public boolean UseDefaultWeaponDamage = false; - - public DamageManager(JavaPlugin plugin, CombatManager combatManager, NpcManager npcManager) - { - super("Damage Manager", plugin); - - _combatManager = combatManager; - - try - { - _lastDamageByPlayerTime = EntityLiving.class.getDeclaredField("lastDamageByPlayerTime"); - _lastDamageByPlayerTime.setAccessible(true); - _k = EntityLiving.class.getDeclaredMethod("h", float.class); - _k.setAccessible(true); - } - catch (final Exception e) - { - System.out.println("Problem getting access to EntityLiving: " + e.getMessage()); - } - - RegisterEvents(new NpcProtectListener(npcManager)); - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void StartDamageEvent(EntityDamageEvent event) - { - boolean preCancel = false; - if (event.isCancelled()) - preCancel = true; - - if (!(event.getEntity() instanceof LivingEntity)) - return; - - //Get Data - LivingEntity damagee = GetDamageeEntity(event); - LivingEntity damager = GetDamagerEntity(event, true); - Projectile projectile = GetProjectile(event); - - if (projectile instanceof Fish) - return; - - //Pre-Event Modifications - WeaponDamage(event, damager); - - //New Event - NewDamageEvent(damagee, damager, projectile, event.getCause(), event.getDamage(), true, false, false, null, null, preCancel); - - //event.setDamage(0); - //if (GoldPower(damager)) - event.setCancelled(true); - } - - /* - private boolean GoldPower(LivingEntity damager) - { - try - { - Player player = (Player)damager; - if (!Util().Gear().isGold(player.getItemInHand())) - return false; - - if (!player.getInventory().contains(Material.GOLD_NUGGET)) - return false; - - UtilInv.remove(player, Material.GOLD_NUGGET, (byte)0, 1); - return true; - } - catch (Exception e) - { - return false; - } - } - */ - - public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, - DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, - String source, String reason) - { - NewDamageEvent(damagee, damager, proj, - cause, damage, knockback, ignoreRate, ignoreArmor, - source, reason, false); - } - - public void NewDamageEvent(LivingEntity damagee, LivingEntity damager, Projectile proj, - DamageCause cause, double damage, boolean knockback, boolean ignoreRate, boolean ignoreArmor, - String source, String reason, boolean cancelled) - { - _plugin.getServer().getPluginManager().callEvent( - new CustomDamageEvent(damagee, damager, proj, cause, damage, - knockback, ignoreRate, ignoreArmor, - source, reason, cancelled)); - } - - @EventHandler(priority = EventPriority.LOW) - public void CancelDamageEvent(CustomDamageEvent event) - { - if (event.GetDamageeEntity().getHealth() <= 0) - { - event.SetCancelled("0 Health"); - return; - } - - if (event.GetDamageePlayer() != null) - { - Player damagee = event.GetDamageePlayer(); - - //Not Survival - if (damagee.getGameMode() != GameMode.SURVIVAL) - { - event.SetCancelled("Damagee in Creative"); - return; - } - - //Limit World Damage Rate - if (!event.IgnoreRate()) - { - if (!_combatManager.Get(damagee.getName()).CanBeHurtBy(event.GetDamagerEntity(true))) - { - event.SetCancelled("Damage Rate"); - return; - } - } - } - - if (event.GetDamagerPlayer(true) != null) - { - Player damager = event.GetDamagerPlayer(true); - - //Not Survival - if (damager.getGameMode() != GameMode.SURVIVAL) - { - event.SetCancelled("Damager in Creative"); - return; - } - - //Damage Rate - if (!event.IgnoreRate()) - if (!_combatManager.Get(damager.getName()).CanHurt(event.GetDamageeEntity())) - { - event.SetCancelled("Damage Rate"); - return; - } - } - } - - @EventHandler(priority = EventPriority.MONITOR) - public void EndDamageEvent(CustomDamageEvent event) - { - if (event.IsCancelled()) - return; - - if (event.GetDamage() < 1) - return; - - Damage(event); - } - - private void Damage(CustomDamageEvent event) - { - if (event.GetDamageeEntity().getHealth() <= 0) - return; - - //Player Conditions - if (event.GetDamageePlayer() != null) - { - //Register Damage (must happen before damage) - _combatManager.AddAttack(event); - } - - if (event.GetDamagerPlayer(true) != null) - { - //Display Damage to Damager - if (event.GetCause() != DamageCause.THORNS) - event.GetDamagerPlayer(true).setLevel((int)event.GetDamage()); - } - - try - { - int bruteBonus = 0; - if (event.IsBrute() && - ( - event.GetCause() == DamageCause.ENTITY_ATTACK || - event.GetCause() == DamageCause.PROJECTILE || - event.GetCause() == DamageCause.CUSTOM - ) && event.GetDamage() > 2) - bruteBonus = 10; - - //Do Damage - HandleDamage(event.GetDamageeEntity(), event.GetDamagerEntity(true), event.GetCause(), (int)event.GetDamage() + bruteBonus, event.IgnoreArmor()); - - //Effect - event.GetDamageeEntity().playEffect(EntityEffect.HURT); - - //Knockback - double knockback = event.GetDamage(); - if (knockback < 1) knockback = 1; - knockback = Math.log10(knockback); - - for (double cur : event.GetKnockback().values()) - knockback = knockback * cur; - - if (event.IsKnockback()) - if (event.GetDamagerEntity(true) != null) - { - Vector trajectory = UtilAlg.getTrajectory2d(event.GetDamagerEntity(true), event.GetDamageeEntity()); - trajectory.multiply(0.6 * knockback); - trajectory.setY(Math.abs(trajectory.getY())); - - UtilAction.velocity(event.GetDamageeEntity(), - trajectory, 0.2 + trajectory.length() * 0.8, false, 0, Math.abs(0.2 * knockback), 0.4 + (0.04 * knockback), true); - } - - } - catch (IllegalAccessException e) - { - e.printStackTrace(); - } - catch (IllegalArgumentException e) - { - e.printStackTrace(); - } - catch (InvocationTargetException e) - { - e.printStackTrace(); - } - } - - private void HandleDamage(LivingEntity damagee, LivingEntity damager, DamageCause cause, float damage, boolean ignoreArmor) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException - { - EntityLiving entityDamagee = ((CraftLivingEntity)damagee).getHandle(); - EntityLiving entityDamager = null; - if (damager != null) - entityDamager= ((CraftLivingEntity)damager).getHandle(); - - entityDamagee.aG = 1.5F; - - if ((float) entityDamagee.noDamageTicks > (float) entityDamagee.maxNoDamageTicks / 2.0F) - { - if (damage <= entityDamagee.lastDamage) - { - return; - } - - ApplyDamage(entityDamagee, damage - entityDamagee.lastDamage, ignoreArmor); - entityDamagee.lastDamage = damage; - } - else - { - entityDamagee.lastDamage = damage; - entityDamagee.ax = entityDamagee.getHealth(); - //entityDamagee.noDamageTicks = entityDamagee.maxNoDamageTicks; - ApplyDamage(entityDamagee, damage, ignoreArmor); - //entityDamagee.hurtTicks = entityDamagee.aW = 10; - } - - if (entityDamager != null) - entityDamagee.b(entityDamager); - - _lastDamageByPlayerTime.setInt(entityDamagee, 60); - - if (entityDamager != null) - if (entityDamager instanceof EntityHuman) - entityDamagee.killer = (EntityHuman)entityDamager; - - if (entityDamagee.getHealth() <= 0) - { - if (entityDamager != null) - { - if (entityDamager instanceof EntityHuman) entityDamagee.die(DamageSource.playerAttack((EntityHuman)entityDamager)); - else if (entityDamager instanceof EntityLiving) entityDamagee.die(DamageSource.mobAttack((EntityLiving)entityDamager)); - else entityDamagee.die(DamageSource.GENERIC); - } - else - entityDamagee.die(DamageSource.GENERIC); - } - } - - @EventHandler - public void DamageSound(CustomDamageEvent event) - { - if (event.IsCancelled()) - return; - - if (event.GetCause() != DamageCause.ENTITY_ATTACK && event.GetCause() != DamageCause.PROJECTILE) - return; - - //Damagee - LivingEntity damagee = event.GetDamageeEntity(); - if (damagee == null) return; - - //Sound - Sound sound = Sound.HURT_FLESH; - float vol = 1f; - float pitch = 1f; - - //Armor Sound - if (damagee instanceof Player) - { - Player player = (Player)damagee; - - double r = Math.random(); - - ItemStack stack = null; - - if (r > 0.50) stack = player.getInventory().getChestplate(); - else if (r > 0.25) stack = player.getInventory().getLeggings(); - else if (r > 0.10) stack = player.getInventory().getHelmet(); - else stack = player.getInventory().getBoots(); - - if (stack != null) - { - if (stack.getType().toString().contains("LEATHER_")) - { - sound = Sound.SHOOT_ARROW; - pitch = 2f; - } - else if (stack.getType().toString().contains("CHAINMAIL_")) - { - sound = Sound.ITEM_BREAK; - pitch = 1.4f; - } - else if (stack.getType().toString().contains("GOLD_")) - { - sound = Sound.ITEM_BREAK; - pitch = 1.8f; - } - else if (stack.getType().toString().contains("IRON_")) - { - sound = Sound.BLAZE_HIT; - pitch = 0.7f; - } - else if (stack.getType().toString().contains("DIAMOND_")) - { - sound = Sound.BLAZE_HIT; - pitch = 0.9f; - } - } - } - //Animal Sound - else - { - UtilEnt.PlayDamageSound(damagee); - } - - damagee.getWorld().playSound(damagee.getLocation(), sound, vol, pitch); - } - - private void ApplyDamage(EntityLiving entityLiving, float damage, boolean ignoreArmor) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException - { - if (!ignoreArmor) - { - int j = 25 - entityLiving.aP(); - float k = damage * (float)j; - - _k.invoke(entityLiving, damage); - damage = k / 25.0f; - } - - /** - if (entityLiving.hasEffect(MobEffectList.RESISTANCE)) - { - int j = (entityLiving.getEffect(MobEffectList.RESISTANCE).getAmplifier() + 1) * 5; - int k = 25 - j; - int l = damage * k + _aS.getInt(entityLiving); - - damage = l / 25; - _aS.setInt(entityLiving, l % 25); - } - **/ - - entityLiving.setHealth(entityLiving.getHealth() - damage); - } - - private void WeaponDamage(EntityDamageEvent event, LivingEntity ent) - { - - - if (!(ent instanceof Player)) - return; - - if (event.getCause() != DamageCause.ENTITY_ATTACK) - return; - - Player damager = (Player)ent; - - if (UseDefaultWeaponDamage) - { - if (event.getDamage() > 1) - event.setDamage(event.getDamage() - 1); - - if (damager.getItemInHand().getType().name().contains("GOLD_")) - event.setDamage(event.getDamage() + 3); - - return; - } - - if (damager.getItemInHand() == null || !UtilGear.isWeapon(damager.getItemInHand())) - { - event.setDamage(1); - return; - } - - Material mat = damager.getItemInHand().getType(); - - int damage = 6; - - if (mat.name().contains("WOOD")) damage -= 3; - else if (mat.name().contains("STONE")) damage -= 2; - else if (mat.name().contains("DIAMOND")) damage += 0; - else if (mat.name().contains("GOLD")) damage += 1; - - event.setDamage(damage); - } - - private LivingEntity GetDamagerEntity(EntityDamageEvent event, boolean ranged) - { - if (!(event instanceof EntityDamageByEntityEvent)) - return null; - - EntityDamageByEntityEvent eventEE = (EntityDamageByEntityEvent)event; - - //Get Damager - if (eventEE.getDamager() instanceof LivingEntity) - return (LivingEntity)eventEE.getDamager(); - - if (!ranged) - return null; - - if (!(eventEE.getDamager() instanceof Projectile)) - return null; - - Projectile projectile = (Projectile)eventEE.getDamager(); - - if (projectile.getShooter() == null) - return null; - - if (!(projectile.getShooter() instanceof LivingEntity)) - return null; - - return (LivingEntity)projectile.getShooter(); - } - - private LivingEntity GetDamageeEntity(EntityDamageEvent event) - { - if (event.getEntity() instanceof LivingEntity) - return (LivingEntity)event.getEntity(); - - return null; - } - - private Projectile GetProjectile(EntityDamageEvent event) - { - if (!(event instanceof EntityDamageByEntityEvent)) - return null; - - EntityDamageByEntityEvent eventEE = (EntityDamageByEntityEvent)event; - - if (eventEE.getDamager() instanceof Projectile) - return (Projectile)eventEE.getDamager(); - - return null; - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index 6f781339a..24a31573e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -10,11 +10,13 @@ import java.io.InputStreamReader; import me.chiss.Core.Config.Config; import mineplex.core.account.CoreClientManager; +import mineplex.core.antistack.AntiStack; import mineplex.core.blockrestore.BlockRestore; import mineplex.core.command.CommandCenter; import mineplex.core.common.util.FileUtil; import mineplex.core.common.util.UtilServer; import mineplex.core.creature.Creature; +import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.energy.Energy; import mineplex.core.itemstack.ItemStackFactory; @@ -96,19 +98,21 @@ public class Arcade extends JavaPlugin implements INautilusPlugin, IPlugin Recharge.Initialize(this); ConditionManager conditionManager = new ConditionManager(this); - + new MessageManager(this, _clientManager); - - GetBlood(); + new AntiStack(this); + GetCreature(); GetSpawn(); GetTeleport(); + + DisguiseManager disguiseManager = new DisguiseManager(this, new PacketHandler(this)); - _damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, GetCreature())); + _damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, GetCreature()), disguiseManager); //Arcade Manager - _gameManager = new ArcadeManager(this, ReadServerConfig(), _clientManager, _donationManager, conditionManager, _damageManager, GetCreature(), new PacketHandler(this)); + _gameManager = new ArcadeManager(this, ReadServerConfig(), _clientManager, _donationManager, conditionManager, _damageManager, disguiseManager, GetCreature(), GetBlood(), new PacketHandler(this)); //Unreferenced Modules //new AntiStack(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java.orig b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java.orig deleted file mode 100644 index b2769299c..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java.orig +++ /dev/null @@ -1,452 +0,0 @@ -package nautilus.game.arcade; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.InputStreamReader; - -import me.chiss.Core.Config.Config; -import mineplex.core.account.CoreClientManager; -import mineplex.core.blockrestore.BlockRestore; -import mineplex.core.command.CommandCenter; -import mineplex.core.common.util.FileUtil; -import mineplex.core.common.util.UtilServer; -import mineplex.core.creature.Creature; -import mineplex.core.donation.DonationManager; -import mineplex.core.energy.Energy; -import mineplex.core.explosion.Explosion; -import mineplex.core.itemstack.ItemStackFactory; -import me.chiss.Core.Loot.LootFactory; -import me.chiss.Core.Module.ModuleManager; -import me.chiss.Core.Modules.*; -import me.chiss.Core.Plugin.IPlugin; -import me.chiss.Core.Scheduler.Scheduler; -import mineplex.core.message.MessageManager; -import mineplex.core.npc.NpcManager; -import mineplex.core.packethandler.PacketHandler; -import mineplex.core.pet.PetManager; -import mineplex.core.projectile.ProjectileManager; -import mineplex.core.punish.Punish; -import mineplex.core.recharge.Recharge; -import mineplex.core.spawn.Spawn; -import mineplex.core.teleport.Teleport; -import mineplex.core.updater.Updater; -import mineplex.minecraft.game.core.combat.CombatManager; -import mineplex.minecraft.game.core.condition.ConditionManager; -import mineplex.minecraft.game.core.damage.DamageManager; -import mineplex.minecraft.game.core.fire.Fire; - -import nautilus.game.arcade.game.GameServerConfig; -import nautilus.minecraft.core.INautilusPlugin; - -import org.bukkit.Location; -import org.bukkit.Server; -import org.bukkit.entity.Player; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; - -public class Arcade extends JavaPlugin implements INautilusPlugin, IPlugin -{ - private String WEB_CONFIG = "webServer"; - - //Modules - private ModuleManager _moduleManager; - private Config _config; - private CoreClientManager _clientManager; - private DonationManager _donationManager; - private DamageManager _damageManager; - private Utility _utility; - private BlockRegenerate _blockRegenerate; - private BlockRestore _blockRestore; - private Blood _blood; - private ConditionManager _condition; - private Creature _creature; - private Fire _fire; - private Logger _logger; - private LootFactory _lootFactory; - private Observer _observer; - private PetManager _petManager; - private me.chiss.Core.Server.Server _serverModule; - private Spawn _spawn; - private Teleport _teleport; - private ProjectileManager _throw; - - private ArcadeManager _gameManager; - - @Override - public void onEnable() - { - //Delete Old Games Folders - DeleteFolders(); - - //Configs - getConfig().addDefault(WEB_CONFIG, "http://api.mineplex.com/"); - getConfig().set(WEB_CONFIG, getConfig().getString(WEB_CONFIG)); - saveConfig(); - - //Init Modules - GetModules(); - - _clientManager = CoreClientManager.Initialize(this, GetWebServerAddress()); - _donationManager = new DonationManager(this, GetWebServerAddress()); - CommandCenter.Initialize(this, _clientManager); - ItemStackFactory.Initialize(this, false); - Recharge.Initialize(this); - - ConditionManager conditionManager = new ConditionManager(this); - - Explosion explosion = new Explosion(this, new BlockRestore(this)); - explosion.SetDebris(false); - - new MessageManager(this, _clientManager); - - - GetBlood(); - GetCreature(); - GetSpawn(); - GetTeleport(); - - _damageManager = new DamageManager(this, new CombatManager(this), new NpcManager(this, GetCreature())); - - //Arcade Manager - _gameManager = new ArcadeManager(this, ReadServerConfig(), _clientManager, _donationManager, conditionManager, _damageManager, GetCreature(), new PacketHandler(this)); - - //Unreferenced Modules - //new AntiStack(); - Scheduler.Initialize(this); - //new Information(this); - new Punish(this, GetWebServerAddress()); - //Updates - getServer().getScheduler().scheduleSyncRepeatingTask(this, new Updater(this), 1, 1); - } - - - @Override - public void onDisable() - { - GetModules().onDisable(); - - for (Player player : UtilServer.getPlayers()) - player.kickPlayer("Server Shutdown"); - - if (_gameManager.GetGame() != null) - if (_gameManager.GetGame().WorldData != null) - _gameManager.GetGame().WorldData.Uninitialize(); - } - - public GameServerConfig ReadServerConfig() - { - GameServerConfig config = new GameServerConfig(); - - //Load Track Data - String line = null; - - try - { - File file = new File("ArcadeSettings.config"); - if (!file.exists()) - WriteServerConfig(GetDefaultConfig()); - - FileInputStream fstream = new FileInputStream("ArcadeSettings.config"); - DataInputStream in = new DataInputStream(fstream); - BufferedReader br = new BufferedReader(new InputStreamReader(in)); - - while ((line = br.readLine()) != null) - { - String[] tokens = line.split("="); - - if (tokens.length < 2) - continue; - - if (tokens[0].equals("SERVER_TYPE")) - { - config.ServerType = tokens[1]; - } - else if (tokens[0].equals("PLAYERS_MIN")) - { - config.MinPlayers = Integer.parseInt(tokens[1]); - } - else if (tokens[0].equals("PLAYERS_MAX")) - { - config.MaxPlayers = Integer.parseInt(tokens[1]); - } - //Games - else - { - try - { - GameType type = GameType.valueOf(tokens[0]); - boolean enabled = Boolean.valueOf(tokens[1]); - - if (enabled) - config.GameList.add(type); - } - catch (Exception e) - { - - } - } - - } - - in.close(); - } - catch (Exception e) - { - - } - - if (!config.IsValid()) - config = GetDefaultConfig(); - - WriteServerConfig(config); - return config; - } - - public GameServerConfig GetDefaultConfig() - { - GameServerConfig config = new GameServerConfig(); - - config.ServerType = "Minigames"; - config.MinPlayers = 8; - config.MaxPlayers = 16; - - return config; - } - - public void WriteServerConfig(GameServerConfig config) - { - try - { - FileWriter fstream = new FileWriter("ArcadeSettings.config"); - BufferedWriter out = new BufferedWriter(fstream); - - out.write("SERVER_TYPE=" + config.ServerType + "\n"); - out.write("PLAYERS_MIN=" + config.MinPlayers + "\n"); - out.write("PLAYERS_MAX=" + config.MaxPlayers + "\n"); - out.write("\n\nGames List;\n"); - - for (GameType type : GameType.values()) - { - out.write(type.toString() + "=" + config.GameList.contains(type) + "\n"); - } - - out.close(); - } - catch (Exception e) - { - - } - } - - private void DeleteFolders() - { - File curDir = new File("."); - - File[] filesList = curDir.listFiles(); - for(File file : filesList) - { - if (!file.isDirectory()) - continue; - - if (file.getName().length() < 4) - continue; - - if (!file.getName().substring(0, 4).equalsIgnoreCase("Game")) - continue; - - FileUtil.DeleteFolder(file); - - System.out.println("Deleted Old Game: " + file.getName()); - } - } - - @Override - public JavaPlugin GetPlugin() - { - return this; - } - - @Override - public String GetWebServerAddress() - { - String webServerAddress = getConfig().getString(WEB_CONFIG); - - return webServerAddress; - } - - @Override - public Server GetRealServer() - { - return getServer(); - } - - @Override - public PluginManager GetPluginManager() - { - return GetRealServer().getPluginManager(); - } - - @Override - public void Log(String moduleName, String data) - { - System.out.println(moduleName + " : " + data); - } - - @Override - public ModuleManager GetModules() - { - if (_moduleManager == null) - _moduleManager = new ModuleManager(); - - return _moduleManager; - } - - @Override - public Config GetConfig() - { - if (_config == null) - _config = new Config(this); - - return _config; - } - - @Override - public Utility GetUtility() - { - if (_utility == null) - _utility = new Utility(this); - - return _utility; - } - - @Override - public BlockRegenerate GetBlockRegenerate() - { - if (_blockRegenerate == null) - _blockRegenerate = new BlockRegenerate(this); - - return _blockRegenerate; - } - - @Override - public BlockRestore GetBlockRestore() - { - if (_blockRestore == null) - _blockRestore = new BlockRestore(this); - - return _blockRestore; - } - - @Override - public Blood GetBlood() - { - if (_blood == null) - _blood = new Blood(this); - - return _blood; - } - - @Override - public Creature GetCreature() - { - if (_creature == null) - _creature = new Creature(this); - - return _creature; - } - - - @Override - public Fire GetFire() - { - if (_fire == null) - _fire = new Fire(this, _condition, _damageManager); - - return _fire; - } - - @Override - public Logger GetLogger() - { - if (_logger == null) - _logger = new Logger(this); - - return _logger; - } - - @Override - public LootFactory GetLoot() - { - if (_lootFactory == null) - _lootFactory = new LootFactory(this); - - return _lootFactory; - } - - @Override - public Observer GetObserver() - { - if (_observer == null) - _observer = new Observer(this); - - return _observer; - } - - @Override - public me.chiss.Core.Server.Server GetServer() - { - if (_serverModule == null) - _serverModule = new me.chiss.Core.Server.Server(this, _clientManager); - - return _serverModule; - } - - @Override - public Spawn GetSpawn() - { - if (_spawn == null) - _spawn = new Spawn(this); - - return _spawn; - } - - @Override - public Teleport GetTeleport() - { - if (_teleport == null) - _teleport = new Teleport(this, _clientManager, GetSpawn()); - - return _teleport; - } - - @Override - public ProjectileManager GetThrow() - { - if (_throw == null) - _throw = new ProjectileManager(this); - - return _throw; - } - - @Override - public Location GetSpawnLocation() - { - return null; - } - - @Override - public PetManager GetPetManager() - { - return _petManager; - } - - @Override - public Energy GetEnergy() - { - return null; - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index a8ea48ce4..dcf8cf725 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -35,6 +35,7 @@ import mineplex.minecraft.game.core.fire.Fire; import me.chiss.Core.Chat.Chat; import mineplex.core.MiniPlugin; import mineplex.core.itemstack.ItemStackFactory; +import me.chiss.Core.Modules.Blood; import me.chiss.Core.Plugin.IChat; import mineplex.core.account.CoreClientManager; import mineplex.core.blockrestore.BlockRestore; @@ -51,6 +52,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation, IChat { //Modules private BlockRestore _blockRestore; + private Blood _blood; private Chat _chat; private CoreClientManager _clientManager; private DisguiseManager _disguiseManager; @@ -81,7 +83,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation, IChat //Games private Game _game; - public ArcadeManager(JavaPlugin plugin, GameServerConfig serverConfig, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DamageManager damageManager, Creature creature, PacketHandler packetHandler) + public ArcadeManager(JavaPlugin plugin, GameServerConfig serverConfig, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DamageManager damageManager, DisguiseManager disguiseManager, Creature creature, Blood blood, PacketHandler packetHandler) { super("Game Manager", plugin); @@ -90,6 +92,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation, IChat //Modules _blockRestore = new BlockRestore(plugin); + _blood = blood; + _explosionManager = new Explosion(plugin, _blockRestore); _explosionManager.SetDebris(false); @@ -104,7 +108,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation, IChat _damageManager = damageManager; _damageManager.UseDefaultWeaponDamage = true; - _disguiseManager = new DisguiseManager(plugin, packetHandler); + _disguiseManager = disguiseManager; _donationManager = donationManager; @@ -156,6 +160,11 @@ public class ArcadeManager extends MiniPlugin implements IRelation, IChat { return GetServerConfig().GameList; } + + public Blood GetBlood() + { + return _blood; + } public Chat GetChat() { @@ -374,7 +383,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation, IChat public void HubClock(Player player) { - player.getInventory().setItem(1, ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte)0, 1, (short)0, C.cGreen + "Return to Hub", + player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte)0, 1, (short)0, C.cGreen + "Return to Hub", new String[] {"", ChatColor.RESET + "Click while holding this", ChatColor.RESET + "to return to the Hub."})); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java.orig b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java.orig deleted file mode 100644 index cee354b26..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java.orig +++ /dev/null @@ -1,436 +0,0 @@ -package nautilus.game.arcade; - -import java.io.File; -import java.util.ArrayList; - -import nautilus.game.arcade.addons.*; -import nautilus.game.arcade.command.*; -import nautilus.game.arcade.game.Game; -import nautilus.game.arcade.game.Game.GameState; -import nautilus.game.arcade.game.GameServerConfig; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.managers.*; -import nautilus.game.arcade.shop.ArcadeShop; -import nautilus.game.arcade.world.FireworkHandler; - -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.server.ServerListPingEvent; -import org.bukkit.plugin.java.JavaPlugin; - -import mineplex.minecraft.game.core.IRelation; -import mineplex.minecraft.game.core.condition.ConditionManager; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; -import mineplex.minecraft.game.core.damage.DamageManager; -import mineplex.minecraft.game.core.fire.Fire; -import me.chiss.Core.Chat.Chat; -import mineplex.core.MiniPlugin; -import mineplex.core.itemstack.ItemStackFactory; -import me.chiss.Core.Plugin.IChat; -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.*; -import mineplex.core.creature.Creature; -import mineplex.core.disguise.DisguiseManager; -import mineplex.core.donation.DonationManager; -import mineplex.core.packethandler.PacketHandler; -import mineplex.core.portal.Portal; - -public class ArcadeManager extends MiniPlugin implements IRelation, IChat -{ - //Modules - private Chat _chat; - private CoreClientManager _clientManager; - private DisguiseManager _disguiseManager; - private DonationManager _donationManager; - private ConditionManager _conditionManager; - private Creature _creature; - private DamageManager _damageManager; - private Fire _fire; - private FireworkHandler _firework; - - private Portal _portal; - private ArcadeShop _arcadeShop; - - //Managers - private GameFactory _gameFactory; - private GameChatManager _gameChatManager; - private GameCreationManager _gameCreationManager; - private GameGemManager _gameGemManager; - private GameManager _gameManager; - private GameLobbyManager _gameLobbyManager; - private GameWorldManager _gameWorldManager; - - //Server Games - private GameServerConfig _serverConfig; - - //Games - private Game _game; - - public ArcadeManager(JavaPlugin plugin, GameServerConfig serverConfig, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DamageManager damageManager, Creature creature, PacketHandler packetHandler) - { - super("Game Manager", plugin); - - _serverConfig = serverConfig; - - //Modules - _conditionManager = conditionManager; - - _clientManager = clientManager; - - _chat = new Chat(plugin, _clientManager, this); - - _creature = creature; - - _damageManager = damageManager; - _damageManager.UseDefaultWeaponDamage = true; - - _disguiseManager = new DisguiseManager(plugin, packetHandler); - - _donationManager = donationManager; - - _firework = new FireworkHandler(); - - _fire = new Fire(plugin, conditionManager, damageManager); - - _portal = new Portal(plugin); - - //Shop - _arcadeShop = new ArcadeShop(this, clientManager, donationManager); - - //Game Factory - _gameFactory = new GameFactory(this); - - //Managers - System.out.println("WOOF"); - _gameChatManager = new GameChatManager(this); - _gameCreationManager = new GameCreationManager(this); - _gameGemManager = new GameGemManager(this); - _gameManager = new GameManager(this); - _gameLobbyManager = new GameLobbyManager(this, packetHandler); - new GameFlagManager(this); - new GamePlayerManager(this); - _gameWorldManager = new GameWorldManager(this); - new MiscManager(this); - - //Game Addons - new CompassAddon(plugin, this); - new SoupAddon(plugin, this); - } - - @Override - public void AddCommands() - { - AddCommand(new GameCommand(this)); - AddCommand(new ParseCommand(this)); - AddCommand(new GemCommand(this)); - AddCommand(new WriteCommand(this)); - } - - public GameServerConfig GetServerConfig() - { - return _serverConfig; - } - - public ArrayList GetGameList() - { - return GetServerConfig().GameList; - } - - public Chat GetChat() - { - return _chat; - } - - public CoreClientManager GetClients() - { - return _clientManager; - } - - public ConditionManager GetCondition() - { - return _conditionManager; - } - - public Creature GetCreature() - { - return _creature; - } - - public DisguiseManager GetDisguise() - { - return _disguiseManager; - } - - public DamageManager GetDamage() - { - return _damageManager; - } - - public DonationManager GetDonation() - { - return _donationManager; - } - - public Fire GetFire() - { - return _fire; - } - - public FireworkHandler GetFirework() - { - return _firework; - } - - public GameLobbyManager GetLobby() - { - return _gameLobbyManager; - } - - public ArcadeShop GetShop() - { - return _arcadeShop; - } - - public GameCreationManager GetGameCreationManager() - { - return _gameCreationManager; - } - - public GameFactory GetGameFactory() - { - return _gameFactory; - } - - public GameManager GetGameManager() - { - return _gameManager; - } - - public GameGemManager GetGameGemManager() - { - return _gameGemManager; - } - - public GameWorldManager GetGameWorldManager() - { - return _gameWorldManager; - } - - public ChatColor GetColor(Player player) - { - if (_game == null) - return ChatColor.GRAY; - - GameTeam team = _game.GetTeam(player); - if (team == null) - return ChatColor.GRAY; - - return team.GetColor(); - } - - @Override - public void HandleChat(AsyncPlayerChatEvent event, String filteredMessage) - { - _gameChatManager.HandleChat(event, filteredMessage); - } - - @Override - public boolean CanHurt(String a, String b) - { - return CanHurt(UtilPlayer.searchExact(a), UtilPlayer.searchExact(b)); - } - - public boolean CanHurt(Player pA, Player pB) - { - if (pA == null || pB == null) - return false; - - if (!_game.Damage) - return false; - - if (!_game.DamagePvP) - return false; - - //Self Damage - if (pA.equals(pB)) - return _game.DamageSelf; - - GameTeam tA = _game.GetTeam(pA); - if (tA == null) - return false; - - GameTeam tB = _game.GetTeam(pB); - if (tB == null) - return false; - - if (tA.equals(tB) && !_game.DamageTeamSelf) - return false; - - if (!tA.equals(tB) && !_game.DamageTeamOther) - return false; - - return true; - } - - @Override - public boolean IsSafe(Player player) - { - if (_game == null) - return true; - - if (_game.IsPlaying(player)) - return false; - - return true; - } - - @EventHandler - public void MessageMOTD(ServerListPingEvent event) - { - if (_game == null || _game.GetState() == GameState.Recruit) - { - if (_game != null && _game.GetCountdown() != -1) - { - event.setMotd(ChatColor.GREEN + "Starting in " + _game.GetCountdown() + " Seconds"); - } - else - { - event.setMotd(ChatColor.GREEN + "Recruiting"); - } - - } - else - { - event.setMotd(ChatColor.YELLOW + "In Progress"); - } - } - - @EventHandler - public void MessageJoin(PlayerJoinEvent event) - { - event.setJoinMessage(F.sys("Join", event.getPlayer().getName())); - } - - @EventHandler - public void MessageQuit(PlayerQuitEvent event) - { - event.setQuitMessage(F.sys("Quit", GetColor(event.getPlayer()) + event.getPlayer().getName())); - } - - - - public Game GetGame() - { - return _game; - } - - public void SetGame(Game game) - { - _game = game; - } - - public int GetPlayerMin() - { - return GetServerConfig().MinPlayers; - } - - public int GetPlayerFull() - { - return GetServerConfig().MaxPlayers; - } - - - - public void HubClock(Player player) - { - player.getInventory().setItem(1, ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte)0, 1, (short)0, C.cGreen + "Return to Hub", - new String[] {"", ChatColor.RESET + "Click while holding this", ChatColor.RESET + "to return to the Hub."})); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void HubClockInteract(PlayerInteractEvent event) - { - Player player = event.getPlayer(); - - if (player.getItemInHand() == null) - return; - - if (player.getItemInHand().getType() != Material.WATCH) - return; - - if (_game != null && _game.IsAlive(player)) - return; - - _portal.SendPlayerToServer(player, "Lobby"); - } - - public boolean IsAlive(Player player) - { - if (_game == null) - return false; - - return _game.IsAlive(player); - } - - public void Clear(Player player) - { - player.setGameMode(GameMode.SURVIVAL); - UtilInv.Clear(player); - player.setFoodLevel(20); - player.setHealth(20); - player.setFireTicks(0); - player.setFallDistance(0); - player.setLevel(0); - player.setExp(0f); - ((CraftPlayer)player).getHandle().spectating = false; - ((CraftPlayer)player).getHandle().m = true; - - GetCondition().EndCondition(player, ConditionType.CLOAK, "Spectator"); - - HubClock(player); - - GetDisguise().Undisguise(player); - } - - public ArrayList LoadFiles(String gameName) - { - File folder = new File("maps" + File.separatorChar + gameName); - if (!folder.exists()) folder.mkdirs(); - - ArrayList maps = new ArrayList(); - - System.out.println("Searching Maps in: " + folder); - - for (File file : folder.listFiles()) - { - if (!file.isFile()) - continue; - - String name = file.getName(); - - if (name.length() < 5) - continue; - - name = name.substring(name.length()-4, name.length()); - - if (file.getName().equals(".zip")) - continue; - - maps.add(file.getName().substring(0, file.getName().length()-4)); - } - - for (String map : maps) - System.out.println("Found Map: " + map); - - return maps; - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameManager.java.orig b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameManager.java.orig deleted file mode 100644 index d76c2067a..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameManager.java.orig +++ /dev/null @@ -1,1562 +0,0 @@ -package nautilus.game.arcade; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; - -import nautilus.game.arcade.addons.CompassAddon; -import nautilus.game.arcade.addons.SoupAddon; -import nautilus.game.arcade.command.GameCommand; -import nautilus.game.arcade.command.GemCommand; -import nautilus.game.arcade.command.ParseCommand; -import nautilus.game.arcade.command.WriteCommand; -import nautilus.game.arcade.game.AsymTeamGame; -import nautilus.game.arcade.game.Game; -import nautilus.game.arcade.game.Game.GameState; -import nautilus.game.arcade.game.GameServerConfig; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.kit.KitAvailability; -import nautilus.game.arcade.lobby.LobbyManager; -import nautilus.game.arcade.shop.ArcadeShop; -import nautilus.game.arcade.shop.KitPackage; -import nautilus.game.arcade.world.FireworkHandler; -import nautilus.game.arcade.world.WorldData; -import net.minecraft.server.v1_6_R2.Packet40EntityMetadata; - -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.server.ServerListPingEvent; -import org.bukkit.event.world.ChunkUnloadEvent; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.event.block.Action; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.entity.CreatureSpawnEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.PrepareItemCraftEvent; -import org.bukkit.inventory.CraftingInventory; - -import mineplex.minecraft.game.core.IRelation; -import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; -import mineplex.minecraft.game.core.condition.ConditionManager; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import mineplex.minecraft.game.core.damage.DamageManager; -import mineplex.minecraft.game.core.fire.Fire; -import mineplex.core.shop.page.ConfirmationPage; -import me.chiss.Core.Chat.Chat; -import mineplex.core.MiniPlugin; -import mineplex.core.itemstack.ItemStackFactory; -import me.chiss.Core.Plugin.IChat; -import mineplex.core.account.CoreClient; -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.CurrencyType; -import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.creature.Creature; -import mineplex.core.disguise.DisguiseManager; -import mineplex.core.donation.DonationManager; -import mineplex.core.donation.Donor; -import mineplex.core.playerTagNamer.PacketHandler; -import mineplex.core.portal.Portal; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - -public class GameManager extends MiniPlugin implements IRelation, IChat -{ - //Modules - private Chat _chat; - private CoreClientManager _clientManager; - private DisguiseManager _disguiseManager; - private DonationManager _donationManager; - private ConditionManager _conditionManager; - private Creature _creature; - private DamageManager _damageManager; - private Fire _fire; - private FireworkHandler _firework; - private LobbyManager _lobbyManager; - private Portal _portal; - private ArcadeShop _arcadeShop; - - private GameFactory _gameFactory; - - //Server Games - private GameServerConfig _serverConfig; - - //Games - private Game _game; - private ArrayList _ended = new ArrayList(); - private String _lastMap = ""; - private GameType _lastGame = GameType.SnowFight; - - private GameType _nextGame = null; - private HashMap _nextGameTeams = null; - - //Player Vars - private int _playerMin = 20; - private int _playerFull = 40; - - //Chunk Loader - private HashSet _worldLoader = new HashSet(); - - public GameManager(JavaPlugin plugin, GameServerConfig serverConfig, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DamageManager damageManager, Creature creature, PacketHandler packetHandler) - { - super("Game Manager", plugin); - - _serverConfig = serverConfig; - - _playerMin = _serverConfig.MinPlayers; - _playerFull = _serverConfig.MaxPlayers; - - _damageManager = damageManager; - _damageManager.UseDefaultWeaponDamage = true; - - _disguiseManager = new DisguiseManager(plugin, packetHandler); - _donationManager = donationManager; - _conditionManager = conditionManager; - _clientManager = clientManager; - _creature = creature; - _firework = new FireworkHandler(); - _fire = new Fire(plugin, conditionManager, damageManager); - _chat = new Chat(plugin, _clientManager, this); - _lobbyManager = new LobbyManager(this, packetHandler); - _portal = new Portal(plugin); - _arcadeShop = new ArcadeShop(this, clientManager, donationManager); - - _gameFactory = new GameFactory(this); - - new CompassAddon(plugin, this); - new SoupAddon(plugin, this); - } - - @Override - public void AddCommands() - { - AddCommand(new GameCommand(this)); - AddCommand(new ParseCommand(this)); - AddCommand(new GemCommand(this)); - AddCommand(new WriteCommand(this)); - } - - public GameServerConfig GetServerConfig() - { - return _serverConfig; - } - - public ArrayList GetGameList() - { - return GetServerConfig().GameList; - } - - public Chat GetChat() - { - return _chat; - } - - public CoreClientManager GetClients() - { - return _clientManager; - } - - public ConditionManager GetCondition() - { - return _conditionManager; - } - - public DisguiseManager GetDisguise() - { - return _disguiseManager; - } - - public DamageManager GetDamage() - { - return _damageManager; - } - - public DonationManager GetDonation() - { - return _donationManager; - } - - public Fire GetFire() - { - return _fire; - } - - public FireworkHandler GetFirework() - { - return _firework; - } - - public Creature GetCreature() - { - return _creature; - } - - public LobbyManager GetLobby() - { - return _lobbyManager; - } - - public ChatColor GetColor(Player player) - { - if (_game == null) - return ChatColor.GRAY; - - GameTeam team = _game.GetTeam(player); - if (team == null) - return ChatColor.GRAY; - - return team.GetColor(); - } - - @EventHandler - public void CancelMe(PlayerCommandPreprocessEvent event) - { - if (event.getMessage().startsWith("/me")) - { - event.getPlayer().sendMessage(F.main("Mirror", "You can't see /me messages, are you a vampire?")); - event.setCancelled(true); - } - } - - @Override - public void HandleChat(AsyncPlayerChatEvent event, String filteredMessage) - { - Player sender = event.getPlayer(); - - //Dead Prefix - String dead = ""; - if (_game != null) - if (_game.GetTeam(sender) != null) - if (!_game.IsAlive(sender)) - dead = C.cGray + "Dead "; - - Rank rank = _clientManager.Get(sender).GetRank(); - boolean ownsUltra = false; - - if (_game != null) - ownsUltra= _donationManager.Get(sender.getName()).OwnsUnknownPackage(GetServerConfig().ServerType + " ULTRA"); - - //Rank Prefix - String rankStr = ""; - if (rank != Rank.ALL) - rankStr = rank.Color + C.Bold + rank.Name.toUpperCase() + " "; - - if (ownsUltra && !rank.Has(Rank.ULTRA)) - rankStr = Rank.ULTRA.Color + C.Bold + Rank.ULTRA.Name.toUpperCase() + " "; - - //Base Format - event.setFormat(dead + rankStr + GetColor(sender) + "%1$s " + ChatColor.WHITE + "%2$s"); - - //Public/Private (Not If Player Dead) - if (_game != null && _game.GetState() == GameState.Live) - { - boolean globalMessage = false; - - //Team - GameTeam team = _game.GetTeam(sender); - - if (team != null) - { - //Team Chat - if (event.getMessage().charAt(0) == '@') - { - event.setMessage(event.getMessage().substring(1, event.getMessage().length())); - event.setFormat(C.cWhite + C.Bold + "Team" + " " + dead + rankStr + team.GetColor() + "%1$s " + C.cWhite + "%2$s"); - } - //All Chat - else - { - globalMessage = true; - event.setFormat(dead + rankStr + team.GetColor() + "%1$s " + C.cWhite + "%2$s"); - } - } - - if (globalMessage) - return; - - //Team Message Remove Recipient - Iterator recipientIterator = event.getRecipients().iterator(); - - while (recipientIterator.hasNext()) - { - Player receiver = recipientIterator.next(); - - if (_clientManager.Get(receiver).GetRank().Has(Rank.MODERATOR)) - continue; - - if (_game.GetTeam(receiver) != null && _game.GetTeam(sender) != _game.GetTeam(receiver)) - recipientIterator.remove(); - } - } - } - - @Override - public boolean CanHurt(String a, String b) - { - return CanHurt(UtilPlayer.searchExact(a), UtilPlayer.searchExact(b)); - } - - public boolean CanHurt(Player pA, Player pB) - { - if (pA == null || pB == null) - return false; - - if (!_game.Damage) - return false; - - if (!_game.DamagePvP) - return false; - - //Self Damage - if (pA.equals(pB)) - return _game.DamageSelf; - - GameTeam tA = _game.GetTeam(pA); - if (tA == null) - return false; - - GameTeam tB = _game.GetTeam(pB); - if (tB == null) - return false; - - if (tA.equals(tB) && !_game.DamageTeamSelf) - return false; - - if (!tA.equals(tB) && !_game.DamageTeamOther) - return false; - - return true; - } - - @Override - public boolean IsSafe(Player player) - { - if (_game == null) - return true; - - if (_game.IsPlaying(player)) - return false; - - return true; - } - - @EventHandler(priority = EventPriority.HIGH) - public void DeathEvent(CombatDeathEvent event) - { - if (event.GetLog().GetKiller() != null) - { - Player player = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); - - if (player != null) - event.GetLog().SetKillerColor(GetColor(player)+""); - } - - - if (event.GetEvent().getEntity() instanceof Player) - { - //Don't actually die - event.GetEvent().getEntity().setHealth(20); - - //Color - Player player = (Player)event.GetEvent().getEntity(); - - if (player != null) - event.GetLog().SetKilledColor(GetColor(player)+""); - } - } - - @EventHandler - public void PlayerJoin(PlayerJoinEvent event) - { - final Player player = event.getPlayer(); - - Clear(player); - - //Lobby Name - GetLobby().AddPlayerToScoreboards(player, null); - - //Lobby Spawn - if (_game == null || !_game.InProgress()) - { - player.teleport(GetLobby().GetSpawn()); - return; - } - - //Game Spawn - if (_game.IsAlive(player)) - { - player.teleport(_game.GetTeam(player).GetSpawn()); - } - else - { - _game.SetSpectator(player); - UtilPlayer.message(player, F.main("Game", _game.GetName() + " is in progress, please wait for next game!")); - } - - player.setScoreboard(_game.GetScoreboard()); - } - - @EventHandler - public void PlayerRespawn(PlayerRespawnEvent event) - { - if (_game == null || !_game.InProgress()) - { - event.setRespawnLocation(GetLobby().GetSpawn()); - return; - } - - Player player = event.getPlayer(); - - if (_game.IsAlive(player)) - { - event.setRespawnLocation(_game.GetTeam(player).GetSpawn()); - } - else - { - _game.SetSpectator(player); - - event.setRespawnLocation(_game.GetSpectatorLocation()); - } - } - - @EventHandler - public void Motd(ServerListPingEvent event) - { - if (_game == null || _game.GetState() == GameState.Recruit) - { - event.setMotd(ChatColor.GREEN + "Recruiting"); - } - else - { - event.setMotd(ChatColor.YELLOW + "In Progress"); - } - } - - @EventHandler(priority = EventPriority.LOW) - public void ItemPickup(PlayerPickupItemEvent event) - { - if (_game == null || _game.GetState() != GameState.Live) - event.setCancelled(true); - - else if (!_game.IsAlive(event.getPlayer())) - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void ItemDrop(PlayerDropItemEvent event) - { - if (_game == null || _game.GetState() != GameState.Live) - event.setCancelled(true); - - else if (!_game.IsAlive(event.getPlayer())) - event.setCancelled(true); - } - - @EventHandler - public void CancelFoodChange(FoodLevelChangeEvent event) - { - if (event.getEntityType() == EntityType.PLAYER && event.getEntity().getWorld().getName().equals("world")) - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void DamageEvent(CustomDamageEvent event) - { - if (_game == null) - { - event.SetCancelled("Game Null"); - return; - } - - LivingEntity damagee = event.GetDamageeEntity(); - LivingEntity damager = event.GetDamagerEntity(true); - - if (damagee != null && damagee.getWorld().getName().equals("world")) - { - event.SetCancelled("In Lobby"); - - if (event.GetCause() == DamageCause.VOID) - damagee.teleport(GetLobby().GetSpawn()); - - return; - } - - if (!_game.Damage) - { - event.SetCancelled("Damage Disabled"); - return; - } - - if (_game.GetState() != GameState.Live) - { - event.SetCancelled("Game not Live"); - return; - } - - if (damagee != null && damagee instanceof Player && !_game.IsAlive((Player)damagee)) - { - event.SetCancelled("Damagee Not Playing"); - return; - } - - if (damager != null && damager instanceof Player && !_game.IsAlive((Player)damager)) - { - event.SetCancelled("Damager Not Playing"); - return; - } - - //Entity vs Entity - if (damagee != null && damager != null) - { - //PvP - if (damagee instanceof Player && damager instanceof Player) - { - if (!CanHurt((Player)damagee, (Player)damager)) - { - event.SetCancelled("Damage Rules"); - return; - } - } - //PvE - else if (damager instanceof Player) - { - if (!_game.DamagePvE) - { - event.SetCancelled("PvE Disabled"); - return; - } - } - //EvP - else if (damagee instanceof Player) - { - if (!_game.DamageEvP) - { - event.SetCancelled("EvP Disabled"); - return; - } - } - } - } - - @EventHandler(priority = EventPriority.HIGH) - public void DamageExplosion(CustomDamageEvent event) - { - if (event.IsCancelled()) - return; - - if (event.GetCause() != DamageCause.ENTITY_EXPLOSION && event.GetCause() != DamageCause.BLOCK_EXPLOSION) - return; - - Player damagee = event.GetDamageePlayer(); - if (damagee == null) return; - - Player damager = event.GetDamagerPlayer(true); - if (damager == null) return; - - if (CanHurt(damagee, damager)) - return; - - event.SetCancelled("Allied Explosion"); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void InteractActive(PlayerInteractEvent event) - { - event.setCancelled(false); - } - - @EventHandler(priority = EventPriority.LOW) - public void InteractCancel(PlayerInteractEvent event) - { - if (_game == null) - return; - - Player player = event.getPlayer(); - - if (!_game.IsAlive(player)) - { - event.setCancelled(true); - } - else if (event.getPlayer().getItemInHand().getType() == Material.INK_SACK && event.getPlayer().getItemInHand().getData().getData() == (byte)15) - { - if (event.getAction() == Action.RIGHT_CLICK_BLOCK) - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void InteractCancel(InventoryClickEvent event) - { - if (_game == null) - return; - - Player player = UtilPlayer.searchExact(event.getWhoClicked().getName()); - - if (_game.IsLive() && !_game.IsAlive(player)) - { - event.setCancelled(true); - player.closeInventory(); - } - } - - @EventHandler(priority = EventPriority.HIGH) - public void TeamInteract(PlayerInteractEntityEvent event) - { - if (event.getRightClicked() == null) - return; - - Player player = event.getPlayer(); - - GameTeam team = GetLobby().GetClickedTeam(event.getRightClicked()); - - if (team == null) - return; - - TeamClick(player, team); - } - - @EventHandler - public void TeamDamage(CustomDamageEvent event) - { - Player player = event.GetDamagerPlayer(false); - if (player == null) return; - - LivingEntity target = event.GetDamageeEntity(); - - GameTeam team = GetLobby().GetClickedTeam(target); - - if (team == null) - return; - - TeamClick(player, team); - } - - public void TeamClick(final Player player, final GameTeam team) - { - if (_game == null) - return; - - if (_game.GetState() != GameState.Recruit) - return; - - if (!_game.HasTeam(team)) - return; - - _game.AddTeamPreference(player, team); - } - - @EventHandler(priority = EventPriority.HIGH) - public void KitInteract(PlayerInteractEntityEvent event) - { - if (event.getRightClicked() == null) - return; - - Player player = event.getPlayer(); - - Kit kit = GetLobby().GetClickedKit(event.getRightClicked()); - - if (kit == null) - return; - - KitClick(player, kit, event.getRightClicked()); - } - - @EventHandler - public void KitDamage(CustomDamageEvent event) - { - Player player = event.GetDamagerPlayer(false); - if (player == null) return; - - LivingEntity target = event.GetDamageeEntity(); - - Kit kit = GetLobby().GetClickedKit(target); - - if (kit == null) - return; - - KitClick(player, kit, target); - } - - public void KitClick(final Player player, final Kit kit, final Entity entity) - { - kit.DisplayDesc(player); - - if (_game == null) - return; - - if (!_game.HasKit(kit)) - return; - - - CoreClient client = _clientManager.Get(player); - Donor donor = _donationManager.Get(player.getName()); - - if (kit.GetAvailability() == KitAvailability.Free || client.GetRank().Has(Rank.ULTRA) || donor.OwnsUnknownPackage(GetServerConfig().ServerType + " ULTRA") || donor.OwnsUnknownPackage(_game.GetName() + " " + kit.GetName())) - { - _game.SetKit(player, kit, true); - } - else if (kit.GetAvailability() == KitAvailability.Green && donor.GetBalance(CurrencyType.Gems) > kit.GetCost()) - { - _arcadeShop.OpenPageForPlayer(player, new ConfirmationPage(this, _arcadeShop, _clientManager, _donationManager, new Runnable() - { - public void run() - { - if (player.isOnline()) - { - _game.SetKit(player, kit, true); - ((CraftPlayer)player).getHandle().playerConnection.sendPacket(new Packet40EntityMetadata(entity.getEntityId(), ((CraftEntity)entity).getHandle().getDataWatcher(), true)); - } - } - }, null, new KitPackage(_game.GetName(), kit), CurrencyType.Gems, player)); - } - else - { - player.playSound(player.getLocation(), Sound.NOTE_BASS, 2f, 0.5f); - - if (kit.GetAvailability() == KitAvailability.Blue) - UtilPlayer.message(player, F.main("Kit", "You must purchase " + F.elem(C.cAqua + "Ultra") + " to use " + F.elem(kit.GetFormattedName() + " Kit") + ".")); - else - UtilPlayer.message(player, F.main("Kit", "You need more " + F.elem(C.cGreen + "Gems") + " for " + F.elem(kit.GetFormattedName() + " Kit") + ".")); - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void HungerUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.FAST) - return; - - if (_game == null) - return; - - if (_game.HungerSet != -1) - for (Player player : _game.GetPlayers(true)) - player.setFoodLevel(_game.HungerSet); - - if (_game.HealthSet != -1) - for (Player player : _game.GetPlayers(true)) - player.setHealth(_game.HealthSet); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void BoundaryCheck(UpdateEvent event) - { - if (event.getType() != UpdateType.FAST) - return; - - if (_game == null || _game.GetState() != GameState.Live) - return; - - for (Player player : UtilServer.getPlayers()) - { - if (player.getLocation().getX() > _game.WorldData.MaxX || - player.getLocation().getX() < _game.WorldData.MinX || - player.getLocation().getZ() > _game.WorldData.MaxZ || - player.getLocation().getZ() < _game.WorldData.MinZ || - (_game.WorldHeightLimit > 0 && player.getLocation().getY() > _game.WorldHeightLimit)) - { - if (!IsAlive(player)) - { - player.teleport(_game.GetSpectatorLocation()); - } - else - { - UtilPlayer.message(player, C.cRed + C.Bold + "WARNING: " + C.cWhite + C.Bold +"RETURN TO PLAYABLE AREA!"); - - GetDamage().NewDamageEvent(player, null, null, - DamageCause.VOID, 4, true, false, false, - "Void", "Void Damage"); - - player.getWorld().playSound(player.getLocation(), Sound.NOTE_BASS, 2f, 1f); - player.getWorld().playSound(player.getLocation(), Sound.NOTE_BASS, 2f, 1f); - } - } - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void ItemPickupEvent(PlayerPickupItemEvent event) - { - Player player = event.getPlayer(); - - if (_game == null) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else - { - if (!_game.IsAlive(player)) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else - { - if (_game.ItemPickup) - { - if (_game.ItemPickupDeny.contains(event.getItem().getItemStack().getTypeId())) - { - event.setCancelled(true); - } - } - else - { - if (!_game.ItemPickupAllow.contains(event.getItem().getItemStack().getTypeId())) - { - event.setCancelled(true); - } - } - } - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void ItemDropEvent(PlayerDropItemEvent event) - { - Player player = event.getPlayer(); - - if (_game == null) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else - { - if (!_game.IsAlive(player)) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else - { - if (_game.ItemDrop) - { - if (_game.ItemDropDeny.contains(event.getItemDrop().getItemStack().getTypeId())) - { - event.setCancelled(true); - } - } - else - { - if (!_game.ItemDropAllow.contains(event.getItemDrop().getItemStack().getTypeId())) - { - event.setCancelled(true); - } - } - } - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void BlockPlaceEvent(BlockPlaceEvent event) - { - Player player = event.getPlayer(); - - if (_game == null) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else - { - if (!_game.IsAlive(player)) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else - { - if (_game.BlockPlace) - { - if (_game.BlockPlaceDeny.contains(event.getBlock().getTypeId())) - { - event.setCancelled(true); - } - } - else - { - if (!_game.BlockPlaceAllow.contains(event.getBlock().getTypeId())) - { - event.setCancelled(true); - } - } - } - } - } - - @EventHandler(priority = EventPriority.LOWEST) - public void BlockBreakEvent(org.bukkit.event.block.BlockBreakEvent event) - { - Player player = event.getPlayer(); - - if (_game == null) - { - if (!player.isOp() || player.getGameMode() != GameMode.CREATIVE) - event.setCancelled(true); - } - else if (_game.GetState() == GameState.Live) - { - if (!_game.IsAlive(player)) - { - event.setCancelled(true); - } - else - { - if (_game.BlockBreak) - { - if (_game.BlockBreakDeny.contains(event.getBlock().getTypeId())) - { - event.setCancelled(true); - } - - } - else - { - if (!_game.BlockBreakAllow.contains(event.getBlock().getTypeId())) - { - event.setCancelled(true); - } - } - } - } - else - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.MONITOR) - public void PrivateBlockPlace(BlockPlaceEvent event) - { - if (_game == null) - return; - - if (!_game.PrivateBlocks) - return; - - if (event.isCancelled()) - return; - - if (!UtilBlock.usable(event.getBlockPlaced())) - return; - - if (event.getBlockPlaced().getType() != Material.CHEST && - event.getBlockPlaced().getType() != Material.FURNACE && - event.getBlockPlaced().getType() != Material.BURNING_FURNACE && - event.getBlockPlaced().getType() != Material.WORKBENCH) - return; - - String privateKey = event.getPlayer().getName(); - - if (!_game.PrivateBlockCount.containsKey(privateKey)) - { - _game.PrivateBlockCount.put(privateKey, 0); - } - - if (_game.PrivateBlockCount.get(privateKey) == 4) - return; - - if (_game.PrivateBlockCount.get(privateKey) > 1) - { - if (!_donationManager.Get(privateKey).OwnsUnknownPackage(GetServerConfig().ServerType + " ULTRA") && !_clientManager.Get(privateKey).GetRank().Has(Rank.ULTRA)) - return; - } - - _game.PrivateBlockMap.put(event.getBlockPlaced().getLocation(), event.getPlayer()); - _game.PrivateBlockCount.put(event.getPlayer().getName(), _game.PrivateBlockCount.get(event.getPlayer().getName()) + 1); - event.getPlayer().sendMessage(F.main(_game.GetName(), "Can't touch this. Na na nana!")); - - if (_game.PrivateBlockCount.get(privateKey) == 4) - { - event.getPlayer().sendMessage(F.main(_game.GetName(), "Protected block limit reached. Stay classy Ultra ranker ;)")); - } - else if (_game.PrivateBlockCount.get(privateKey) == 2) - { - if (!_donationManager.Get(privateKey).OwnsUnknownPackage(GetServerConfig().ServerType + " ULTRA") && !_clientManager.Get(privateKey).GetRank().Has(Rank.ULTRA)) - { - event.getPlayer().sendMessage(F.main(_game.GetName(), "Protected block limit reached. Thieves are scary, get Ultra for 2 extra protected blocks!")); - } - } - } - - @EventHandler(priority = EventPriority.LOW) - public void PrivateBlockPlaceCancel(BlockPlaceEvent event) - { - if (_game == null) - return; - - if (!_game.PrivateBlocks) - return; - - if (event.isCancelled()) - return; - - Block block = event.getBlockPlaced(); - - if (block.getType() != Material.CHEST) - return; - - Player player = event.getPlayer(); - - BlockFace[] faces = new BlockFace[] {BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST}; - - for (BlockFace face : faces) - { - Block other = block.getRelative(face); - - if (other.getType() != Material.CHEST) - continue; - - if (!_game.PrivateBlockMap.containsKey(other.getLocation())) - continue; - - Player owner = _game.PrivateBlockMap.get(other.getLocation()); - - if (player.equals(owner)) - continue; - - //Allow Enemy Raiding - GameTeam ownerTeam = _game.GetTeam(owner); - GameTeam playerTeam = _game.GetTeam(player); - - if (ownerTeam != null && playerTeam != null && !ownerTeam.equals(playerTeam)) - continue; - - //Disallow - UtilPlayer.message(event.getPlayer(), F.main("Game", - "You cannot combine " + - F.elem(C.cPurple + ItemStackFactory.Instance.GetName(event.getBlock(), false)) + - " with " + F.elem(GetColor(owner) + owner.getName() + "."))); - - event.setCancelled(true); - return; - } - } - - @EventHandler(priority = EventPriority.NORMAL) - public void PrivateBlockBreak(org.bukkit.event.block.BlockBreakEvent event) - { - if (_game == null) - return; - - if (!_game.PrivateBlocks) - return; - - if (event.isCancelled()) - return; - - if (!_game.PrivateBlockMap.containsKey(event.getBlock().getLocation())) - return; - - Player owner = _game.PrivateBlockMap.get(event.getBlock().getLocation()); - Player player = event.getPlayer(); - - //Same Team (or no team) - if (owner.equals(player)) - { - _game.PrivateBlockMap.remove(event.getBlock().getLocation()); - } - else - { - //Allow Enemy Raiding - GameTeam ownerTeam = _game.GetTeam(owner); - GameTeam playerTeam = _game.GetTeam(player); - - if (ownerTeam != null && playerTeam != null && !ownerTeam.equals(playerTeam)) - return; - - //Disallow - UtilPlayer.message(event.getPlayer(), F.main("Game", - F.elem(C.cPurple + ItemStackFactory.Instance.GetName(event.getBlock(), false)) + - " belongs to " + F.elem(GetColor(owner) + owner.getName() + "."))); - - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.LOW) - public void PrivateBlockUse(PlayerInteractEvent event) - { - if (_game == null) - return; - - if (!_game.PrivateBlocks) - return; - - if (event.getAction() != Action.RIGHT_CLICK_BLOCK) - return; - - if (!UtilBlock.usable(event.getClickedBlock())) - return; - - if (event.getClickedBlock().getType() != Material.CHEST && - event.getClickedBlock().getType() != Material.FURNACE && - event.getClickedBlock().getType() != Material.BURNING_FURNACE) - return; - - if (!_game.PrivateBlockMap.containsKey(event.getClickedBlock().getLocation())) - return; - - Player owner = _game.PrivateBlockMap.get(event.getClickedBlock().getLocation()); - Player player = event.getPlayer(); - - if (owner.equals(player)) - { - return; - } - else - { - //Allow Enemy Raiding - GameTeam ownerTeam = _game.GetTeam(owner); - GameTeam playerTeam = _game.GetTeam(player); - - if (ownerTeam != null && playerTeam != null && !ownerTeam.equals(playerTeam)) - return; - - //Disallow - UtilPlayer.message(event.getPlayer(), F.main("Game", - F.elem(C.cPurple + ItemStackFactory.Instance.GetName(event.getClickedBlock(), false)) + - " belongs to " + F.elem(GetColor(owner) + owner.getName() + "."))); - - event.setCancelled(true); - } - } - - @EventHandler - public void PrepareMoveCancel(PlayerMoveEvent event) - { - if (_game == null || _game.GetState() != GameState.Prepare) - return; - - if (!_game.PrepareFreeze) - return; - - if (UtilMath.offset(event.getFrom(), event.getTo()) <= 0) - return; - - event.getFrom().setPitch(event.getTo().getPitch()); - event.getFrom().setYaw(event.getTo().getYaw()); - - event.setTo(event.getFrom()); - } - - @EventHandler(priority = EventPriority.HIGH) - public void CraftingDeny(PrepareItemCraftEvent event) - { - if (event.getRecipe().getResult() == null) - return; - - Material type = event.getRecipe().getResult().getType(); - - if (type != Material.GOLDEN_APPLE && - type != Material.GOLDEN_CARROT && - type != Material.FLINT_AND_STEEL) - return; - - if (!(event.getInventory() instanceof CraftingInventory)) - return; - - CraftingInventory inv = (CraftingInventory)event.getInventory(); - - /* - String name = ItemStackFactory.Instance.GetName(event.getRecipe().getResult(), true); - - //Feedback - ItemStack result = ItemStackFactory.Instance.CreateStack(36, (byte)0, 1, - "§r" + C.cGray + "Crafting of " + F.item(name) + " is disabled.", new String[] {}); - - inv.setResult(result); - */ - - inv.setResult(null); - } - - @EventHandler - public void WaterDamage(UpdateEvent event) - { - if (_game == null) - return; - - if (_game.WaterDamage <= 0) - return; - - if (!_game.IsLive()) - return; - - if (event.getType() != UpdateType.FAST) - return; - - for (GameTeam team : _game.GetTeamList()) - for (Player player : team.GetPlayers(true)) - if (player.getLocation().getBlock().isLiquid()) - { - //Damage Event - GetDamage().NewDamageEvent(player, null, null, - DamageCause.DROWNING, 4, true, false, false, - "Water", "Water Damage"); - - player.getWorld().playSound(player.getLocation(), - Sound.SPLASH, 2f, - 1f + (float) Math.random() / 2); - } - } - - @EventHandler - public void Join(PlayerJoinEvent event) - { - event.setJoinMessage(F.sys("Join", event.getPlayer().getName())); - } - - @EventHandler - public void Quit(PlayerQuitEvent event) - { - event.setQuitMessage(F.sys("Quit", GetColor(event.getPlayer()) + event.getPlayer().getName())); - } - - @EventHandler(priority = EventPriority.LOW) - public void WorldCreature(CreatureSpawnEvent event) - { - if (_game == null) - return; - - if (!_game.CreatureAllow && !_game.CreatureAllowOverride) - { - if (_game.WorldData != null) - { - if (_game.WorldData.World != null) - { - if (event.getLocation().getWorld().equals(_game.WorldData.World)) - { - event.setCancelled(true); - } - } - } - } - } - - @EventHandler - public void WorldTime(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - if (_game == null) - return; - - if (_game.WorldTimeSet != -1) - { - if (_game.WorldData != null) - { - if (_game.WorldData.World != null) - { - _game.WorldData.World.setTime(_game.WorldTimeSet); - } - } - } - } - - @EventHandler - public void NextGame(UpdateEvent event) - { - if (event.getType() != UpdateType.FAST) - return; - - if (GetGameList().isEmpty()) - return; - - if (_game == null && _ended.isEmpty()) - { - CreateGame(null); - } - - //Archive Game - if (_game != null) - { - if (_game.GetState() == GameState.Dead) - { - HandlerList.unregisterAll(_game); - - //Schedule Cleanup - _ended.add(_game); - - //Lobby Display - GetLobby().DisplayLast(_game); - - //Prepare Round 2 - If Applicable - if (_game instanceof AsymTeamGame) - { - if (((AsymTeamGame) _game).GetPastTeams() == null) - { - _nextGame = _game.GetType(); - _nextGameTeams = new HashMap(); - - for (GameTeam team : _game.GetTeamList()) - for (Player player : team.GetPlayers(false)) - _nextGameTeams.put(player.getName(), team.GetColor()); - } - } - - _game = null; - } - } - - //Clean Archived Games - Iterator gameIterator = _ended.iterator(); - - while (gameIterator.hasNext()) - { - Game game = gameIterator.next(); - - HandlerList.unregisterAll(game); - - //Cleaned - if (game.WorldData == null) - { - gameIterator.remove(); - continue; - } - - if (game.WorldData.World == null) - { - gameIterator.remove(); - continue; - } - - //Kick Players - if (UtilTime.elapsed(game.GetStateTime(), 10000)) - { - for (Player player : game.WorldData.World.getPlayers()) - player.kickPlayer("Dead World"); - } - - //Clean - if (game.WorldData.World.getPlayers().isEmpty()) - { - game.WorldData.Uninitialize(); - game.WorldData = null; - } - } - } - - private void CreateGame(GameType gameType) - { - HashMap pastTeams = null; - - //Round 2 - if (_nextGame != null && _nextGameTeams != null) - { - gameType = _nextGame; - pastTeams = _nextGameTeams; - - _nextGame = null; - _nextGameTeams = null; - } - - //Pick Game - if (gameType == null) - { - for (int i=0 ; i<50 ; i++) - { - gameType = GetGameList().get(UtilMath.r(GetGameList().size())); - - if (gameType != _lastGame) - break; - } - } - _lastGame = gameType; - - //Make Game - _game = _gameFactory.CreateGame(gameType, pastTeams); - - if (_game == null) - { - return; - } - - GetLobby().DisplayNext(_game, pastTeams); - - UtilServer.getServer().getPluginManager().registerEvents(_game, GetPlugin()); - } - - @EventHandler - public void LobbyLiquid(BlockFromToEvent event) - { - if (_game == null) - return; - - if (event.getBlock().getWorld().getName().equals("world")) - event.setCancelled(true); - } - - @EventHandler - public void LoadWorldChunks(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - Iterator worldIterator = _worldLoader.iterator(); - - long endTime = System.currentTimeMillis() + 25; - - while (worldIterator.hasNext()) - { - long timeLeft = endTime - System.currentTimeMillis(); - if (timeLeft <= 0) continue; - - final WorldData worldData = worldIterator.next(); - - if (worldData.World == null) - { - worldIterator.remove(); - } - else if (worldData.LoadChunks(timeLeft)) - { - worldData.Host.SetState(GameState.Recruit); - worldIterator.remove(); - } - } - } - /* - @EventHandler - public void ChunkLoad(ChunkPreLoadEvent event) - { - if (_game != null) - if (_game.WorldData != null) - _game.WorldData.ChunkLoad(event); - } - */ - @EventHandler - public void ChunkUnload(ChunkUnloadEvent event) - { - if (event.getWorld().getName().equals("world")) - { - event.setCancelled(true); - return; - } - - if (_game != null) - if (_game.WorldData != null) - _game.WorldData.ChunkUnload(event); - } - - public void RegisterWorld(WorldData worldData) - { - _worldLoader.add(worldData); - } - - public Game GetGame() - { - return _game; - } - - public void SetGame(Game game) - { - _game = game; - } - - public String GetLastMap() - { - return _lastMap; - } - - public void SetLastMap(String file) - { - _lastMap = file; - } - - public GameType GetLastGame() - { - return _lastGame; - } - - public int GetPlayerMin() - { - return _playerMin; - } - - public int GetPlayerFull() - { - return _playerFull; - } - - public void Clear(Player player) - { - player.setGameMode(GameMode.SURVIVAL); - UtilInv.Clear(player); - player.setFoodLevel(20); - player.setHealth(20); - player.setFireTicks(0); - player.setFallDistance(0); - player.setLevel(0); - player.setExp(0f); - ((CraftPlayer)player).getHandle().spectating = false; - ((CraftPlayer)player).getHandle().m = true; - - GetDisguise().Undisguise(player); - - GetCondition().EndCondition(player, ConditionType.CLOAK, "Spectator"); - - player.getInventory().setItem(1, ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte)0, 1, (short)0, C.cGreen + "Return to Hub", - new String[] {"", ChatColor.RESET + "Click while holding this", ChatColor.RESET + "to return to the Hub."})); - } - - public boolean IsAlive(Player player) - { - if (_game == null) - return false; - - return _game.IsAlive(player); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void HubInteract(PlayerInteractEvent event) - { - Player player = event.getPlayer(); - - if (player.getItemInHand() == null) - return; - - if (player.getItemInHand().getType() != Material.WATCH) - return; - - if (_game != null && _game.IsAlive(player)) - return; - - _portal.SendPlayerToServer(player, "Lobby"); - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java.orig b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java.orig deleted file mode 100644 index 2de8ce204..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java.orig +++ /dev/null @@ -1,896 +0,0 @@ -package nautilus.game.arcade.game; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; - -import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.updater.UpdateType; -import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import nautilus.game.arcade.ArcadeFormat; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerStateChangeEvent; -import nautilus.game.arcade.game.GameTeam.PlayerState; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.kit.KitAvailability; -import nautilus.game.arcade.kit.Perk; -import nautilus.game.arcade.world.WorldData; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Sound; -import org.bukkit.block.BlockFace; -import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.Objective; -import org.bukkit.scoreboard.Score; -import org.bukkit.scoreboard.Scoreboard; -import org.bukkit.scoreboard.Team; -import org.bukkit.util.Vector; - -public abstract class Game implements Listener -{ - public enum GameState - { - Loading, - Recruit, - Prepare, - Live, - End, - Dead - } - - public ArcadeManager Manager; - - //Game - private GameType _gameType; - private String[] _gameDesc; - - //Map - private ArrayList _files; - - //State - private GameState _gameState = GameState.Loading; - private long _gameStateTime = System.currentTimeMillis(); - - private int _countdown = -1; - private boolean _countdownForce = false; - - private int _playerCount = 0; - - private String _customWinLine = ""; - - //Kits - private Kit[] _kits; - - //Teams - private ArrayList _teamList = new ArrayList(); - - //Player Preferences - private NautHashMap _playerKit = new NautHashMap(); - private NautHashMap> _teamPreference = new NautHashMap>(); - private NautHashMap> _gemCount = new NautHashMap>(); - - //Scoreboard - private Scoreboard _scoreboard; - private Objective _sideObjective; - - //Loaded from Map Config - public WorldData WorldData = null; - - //Gameplay Flags - public boolean Damage = true; - public boolean DamagePvP = true; - public boolean DamagePvE = true; - public boolean DamageEvP = true; - public boolean DamageSelf = true; - public boolean DamageTeamSelf = false; - public boolean DamageTeamOther = true; - - public boolean BlockBreak = false; - public HashSet BlockBreakAllow = new HashSet(); - public HashSet BlockBreakDeny = new HashSet(); - - public boolean BlockPlace = false; - public HashSet BlockPlaceAllow = new HashSet(); - public HashSet BlockPlaceDeny = new HashSet(); - - public boolean ItemPickup = false; - public HashSet ItemPickupAllow = new HashSet(); - public HashSet ItemPickupDeny = new HashSet(); - - public boolean ItemDrop = false; - public HashSet ItemDropAllow = new HashSet(); - public HashSet ItemDropDeny = new HashSet(); - - public boolean PrivateBlocks = false; - - public boolean DeathOut = true; - public boolean DeathDropItems = true; - - public boolean CreatureAllow = false; - public boolean CreatureAllowOverride = false; - - public int WorldTimeSet = -1; - public int WorldHeightLimit = 0; - - public int HungerSet = -1; - public int HealthSet = -1; - - public int SpawnDistanceRequirement = 1; - - public boolean PrepareFreeze = true; - - public int WaterDamage = 0; - - public boolean RepairWeapons = true; - - //Addons - public boolean CompassEnabled = false; - public boolean SoupEnabled = true; - - //Gameplay Data - public HashMap PrivateBlockMap = new HashMap(); - public HashMap PrivateBlockCount = new HashMap(); - - public Location SpectatorSpawn = null; - - public boolean FirstKill = true; - - public String Winner = "Nobody"; - public GameTeam WinnerTeam = null; - - public Game(ArcadeManager manager, GameType gameType, Kit[] kits, String[] gameDesc) - { - Manager = manager; - - //Game - _gameType = gameType; - _gameDesc = gameDesc; - - //Kits - _kits = kits; - - //Scoreboard - _scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); - - _sideObjective = _scoreboard.registerNewObjective("Obj"+UtilMath.r(999999999), "dummy"); - _sideObjective.setDisplaySlot(DisplaySlot.SIDEBAR); - _sideObjective.setDisplayName(C.Bold + GetName()); - - //Map - _files = Manager.LoadFiles(GetName()); - WorldData = new WorldData(this); - - System.out.println("Loading " + GetName() + "..."); - } - - public ArrayList GetFiles() - { - return _files; - } - - public String GetName() - { - return _gameType.GetName(); - } - - public GameType GetType() - { - return _gameType; - } - - public String[] GetDesc() - { - return _gameDesc; - } - - public void SetCustomWinLine(String line) - { - _customWinLine = line; - } - - public Scoreboard GetScoreboard() - { - return _scoreboard; - } - - public Objective GetObjectiveSide() - { - return _sideObjective; - } - - public ArrayList GetTeamList() - { - return _teamList; - } - - public int GetCountdown() - { - return _countdown; - } - - public void SetCountdown(int time) - { - _countdown = time; - } - - public boolean GetCountdownForce() - { - return _countdownForce; - } - - public void SetCountdownForce(boolean value) - { - _countdownForce = value; - } - - public int GetPlayerCountAtStart() - { - return _playerCount; - } - - public void SetPlayerCountAtStart(int count) - { - _playerCount = count; - } - - public NautHashMap> GetTeamPreferences() - { - return _teamPreference; - } - - public NautHashMap GetPlayerKits() - { - return _playerKit; - } - - public NautHashMap> GetPlayerGems() - { - return _gemCount; - } - - public GameState GetState() - { - return _gameState; - } - - public void SetState(GameState state) - { - _gameState = state; - _gameStateTime = System.currentTimeMillis(); - - //Event - GameStateChangeEvent stateEvent = new GameStateChangeEvent(this, state); - UtilServer.getServer().getPluginManager().callEvent(stateEvent); - - System.out.println(GetName() + " state set to " + state.toString()); - } - - public long GetStateTime() - { - return _gameStateTime; - } - - public boolean InProgress() - { - return GetState() == GameState.Prepare || GetState() == GameState.Live; - } - - public boolean IsLive() - { - return _gameState == GameState.Live; - } - - public void AddTeam(GameTeam team) - { - //Add - GetTeamList().add(team); - - //Set Spawn Data - team.SetSpawnRequirement(this.SpawnDistanceRequirement); - - - - System.out.println("Created Team: " + team.GetName()); - } - - public boolean HasTeam(GameTeam team) - { - for (GameTeam cur : GetTeamList()) - if (cur.equals(team)) - return true; - - return false; - } - - public void CreateScoreboardTeams() - { - System.out.println("Creating Scoreboard Teams."); - - //Base Groups - for (Rank rank : Rank.values()) - { - //Spectator - if (rank == Rank.ALL) - { - _scoreboard.registerNewTeam(rank.Name + "SPEC").setPrefix(ChatColor.GRAY + ""); - } - else - { - _scoreboard.registerNewTeam(rank.Name + "SPEC").setPrefix(rank.Color + C.Bold + rank.Name.toUpperCase() + ChatColor.RESET + " " + ChatColor.GRAY); - } - } - - //Team Groups - for (GameTeam team : GetTeamList()) - { - for (Rank rank : Rank.values()) - { - if (rank == Rank.ALL) - { - _scoreboard.registerNewTeam(rank.Name + team.GetName().toUpperCase()).setPrefix(team.GetColor() + ""); - } - else - { - _scoreboard.registerNewTeam(rank.Name + team.GetName().toUpperCase()).setPrefix(rank.Color + C.Bold + rank.Name.toUpperCase() + ChatColor.RESET + " " + team.GetColor()); - } - } - } - } - - public void RestrictKits() - { - //Null Default - } - - public void RegisterKits() - { - for (Kit kit : _kits) - { - UtilServer.getServer().getPluginManager().registerEvents(kit, Manager.GetPlugin()); - - for (Perk perk : kit.GetPerks()) - UtilServer.getServer().getPluginManager().registerEvents(perk, Manager.GetPlugin()); - } - - } - - public void DeregisterKits() - { - for (Kit kit : _kits) - { - HandlerList.unregisterAll(kit); - - for (Perk perk : kit.GetPerks()) - HandlerList.unregisterAll(perk); - } - } - - public void ParseData() - { - //Nothing by default, - //Use this to parse in extra location data from maps - } - - - - public void SetPlayerTeam(Player player, GameTeam team) - { - //Clean Old Team - GameTeam pastTeam = this.GetTeam(player); - if (pastTeam != null) - { - pastTeam.RemovePlayer(player); - } - - team.AddPlayer(player); - - //Ensure Valid Kit - ValidateKit(player, team); - - //Game Scoreboard - SetPlayerScoreboardTeam(player, team.GetName().toUpperCase()); - - //Lobby Scoreboard - Manager.GetLobby().AddPlayerToScoreboards(player, team.GetName().toUpperCase()); - } - - public void SetPlayerScoreboardTeam(Player player, String teamName) - { - for (Team team : GetScoreboard().getTeams()) - team.removePlayer(player); - - if (teamName == null) - teamName = ""; - - GetScoreboard().getTeam(Manager.GetClients().Get(player).GetRank().Name + teamName).addPlayer(player); - } - - public GameTeam ChooseTeam(Player player) - { - GameTeam team = null; - - //Random Team - for (int i=0 ; i<_teamList.size() ; i++) - { - if (team == null || _teamList.get(i).GetSize() < team.GetSize()) - { - team = _teamList.get(i); - } - } - - return team; - } - - public double GetKillsGems(Player killer, Player killed, boolean assist) - { - if (!DeathOut) - { - return 0.5; - } - - if (!assist) - { - return 4; - } - else - { - return 1; - } - } - - public HashMap GetGems(Player player) - { - if (!_gemCount.containsKey(player)) - _gemCount.put(player, new HashMap()); - - return _gemCount.get(player); - } - - public void AddGems(Player player, double gems, String reason, boolean countAmount) - { - if (!countAmount && gems < 1) - gems = 1; - - if (GetGems(player).containsKey(reason)) - { - GetGems(player).get(reason).AddGems(gems); - } - else - { - GetGems(player).put(reason, new GemData(gems, countAmount)); - } - } - - public void ValidateKit(Player player, GameTeam team) - { - //Kit - if (GetKit(player) == null || !team.KitAllowed(GetKit(player))) - { - for (Kit kit : _kits) - { - if (kit.GetAvailability() == KitAvailability.Hide || - kit.GetAvailability() == KitAvailability.Null) - continue; - - if (team.KitAllowed(kit)) - { - SetKit(player, kit, false); - break; - } - } - } - } - - public void SetKit(Player player, Kit kit, boolean announce) - { - GameTeam team = GetTeam(player); - if (team != null) - { - if (!team.KitAllowed(kit)) - { - player.playSound(player.getLocation(), Sound.NOTE_BASS, 2f, 0.5f); - UtilPlayer.message(player, F.main("Kit", F.elem(team.GetFormattedName()) + " cannot use " + F.elem(kit.GetFormattedName() + " Kit") + ".")); - return; - } - } - - _playerKit.put(player, kit); - - if (announce) - { - player.playSound(player.getLocation(), Sound.ORB_PICKUP, 2f, 1f); - UtilPlayer.message(player, F.main("Kit", "You equipped " + F.elem(kit.GetFormattedName() + " Kit") + ".")); - } - } - - public Kit GetKit(Player player) - { - return _playerKit.get(player); - } - - public Kit[] GetKits() - { - return _kits; - } - - public boolean HasKit(Kit kit) - { - for (Kit cur : GetKits()) - if (cur.equals(kit)) - return true; - - return false; - } - - public boolean SetPlayerState(Player player, PlayerState state) - { - GetScoreboard().resetScores(player); - - GameTeam team = GetTeam(player); - - if (team == null) - return false; - - team.SetPlayerState(player, state); - - //Event - PlayerStateChangeEvent playerStateEvent = new PlayerStateChangeEvent(this, player, PlayerState.OUT); - UtilServer.getServer().getPluginManager().callEvent(playerStateEvent); - - return true; - } - - public abstract void EndCheck(); - - public void RespawnPlayer(final Player player) - { - player.eject(); - player.teleport(GetTeam(player).GetSpawn()); - - Manager.Clear(player); - - //Re-Give Kit - Manager.GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.GetPlugin(), new Runnable() - { - public void run() - { - GetKit(player).ApplyKit(player); - } - }, 0); - } - - public boolean IsPlaying(Player player) - { - return GetTeam(player) != null; - } - - public boolean IsAlive(Player player) - { - GameTeam team = GetTeam(player); - - if (team == null) - return false; - - return team.IsAlive(player); - } - - public ArrayList GetPlayers(boolean aliveOnly) - { - ArrayList players = new ArrayList(); - - for (GameTeam team : _teamList) - players.addAll(team.GetPlayers(aliveOnly)); - - return players; - } - - public GameTeam GetTeam(Player player) - { - for (GameTeam team : _teamList) - if (team.HasPlayer(player)) - return team; - - return null; - } - - public GameTeam GetTeam(ChatColor color) - { - for (GameTeam team : _teamList) - if (team.GetColor() == color) - return team; - - return null; - } - - public Location GetSpectatorLocation() - { - if (SpectatorSpawn != null) - return SpectatorSpawn; - - Vector vec = new Vector(0,0,0); - double count = 0; - - for (GameTeam team : this.GetTeamList()) - { - for (Location spawn : team.GetSpawns()) - { - count++; - vec.add(spawn.toVector()); - } - } - - SpectatorSpawn = new Location(this.WorldData.World, 0,0,0); - - vec.multiply(1d/count); - - SpectatorSpawn.setX(vec.getX()); - SpectatorSpawn.setY(vec.getY()); - SpectatorSpawn.setZ(vec.getZ()); - - //Move Up - Out Of Blocks - while (!UtilBlock.airFoliage(SpectatorSpawn.getBlock()) || !UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) - { - SpectatorSpawn.add(0, 1, 0); - } - - int Up = 0; - - //Move Up - Through Air - for (int i=0 ; i<15 ; i++) - { - if (UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) - { - SpectatorSpawn.add(0, 1, 0); - Up++; - } - else - { - break; - } - } - - //Move Down - Out Of Blocks - while (Up > 0 && !UtilBlock.airFoliage(SpectatorSpawn.getBlock()) || !UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) - { - SpectatorSpawn.subtract(0, 1, 0); - Up--; - } - - SpectatorSpawn = SpectatorSpawn.getBlock().getLocation().add(0.5, 0.1, 0.5); - - while (SpectatorSpawn.getBlock().getTypeId() != 0 || SpectatorSpawn.getBlock().getRelative(BlockFace.UP).getTypeId() != 0) - SpectatorSpawn.add(0, 1, 0); - - return SpectatorSpawn; - } - - public void SetSpectator(Player player) - { - Manager.Clear(player); - - player.teleport(GetSpectatorLocation()); - player.setGameMode(GameMode.CREATIVE); - player.setFlying(true); - player.setFlySpeed(0.1f); - ((CraftPlayer)player).getHandle().spectating = true; - ((CraftPlayer)player).getHandle().m = false; - - Manager.GetCondition().Factory().Cloak("Spectator", player, player, 7777, true, true); - - if (GetTeam(player) != null && _scoreboard.getTeam(GetTeam(player).GetName().toUpperCase()) != null) - { - _scoreboard.getTeam(GetTeam(player).GetName().toUpperCase()).removePlayer(player); - } - - SetPlayerScoreboardTeam(player, "SPEC"); - } - - @EventHandler - public void ScoreboardUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.FAST) - return; - - for (GameTeam team : this.GetTeamList()) - { - String name = team.GetColor() + team.GetName(); - if (name.length() > 16) - name = name.substring(0, 16); - - Score score = GetObjectiveSide().getScore(Bukkit.getOfflinePlayer(name)); - score.setScore(team.GetPlayers(true).size()); - } - } - - public boolean DisplayDeathMessage() - { - if (this.DeathOut) - { - return true; - } - - return false; - } - - public boolean CanJoinTeam(GameTeam team) - { - return team.GetSize() < UtilServer.getPlayers().length/GetTeamList().size(); - } - - public GameTeam GetTeamPreference(Player player) - { - for (GameTeam team : _teamPreference.keySet()) - { - if (_teamPreference.get(team).contains(player)) - return team; - } - - return null; - } - - public void RemoveTeamPreference(Player player) - { - for (ArrayList queue : _teamPreference.values()) - queue.remove(player); - } - - public String GetTeamQueuePosition(Player player) - { - for (ArrayList queue : _teamPreference.values()) - { - for (int i=0 ; i places) - { - for (Player player : UtilServer.getPlayers()) - { - player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1f); - - UtilPlayer.message(player, ""); - UtilPlayer.message(player, ArcadeFormat.Line); - - UtilPlayer.message(player, "§aGame - §f§l" + this.GetName()); - UtilPlayer.message(player, ""); - - if (places == null || places.isEmpty()) - { - UtilPlayer.message(player, ""); - UtilPlayer.message(player, ChatColor.WHITE + "§lNobody won the game..."); - UtilPlayer.message(player, ""); - } - else - { - if (places.size() >= 1) - { - Winner = places.get(0).getName(); - UtilPlayer.message(player, C.cRed + C.Bold + "1st Place" + C.cWhite + " - " + places.get(0).getName()); - } - - - if (places.size() >= 2) - UtilPlayer.message(player, C.cGold + C.Bold + "2nd Place" + C.cWhite + " - " + places.get(1).getName()); - - if (places.size() >= 3) - UtilPlayer.message(player, C.cYellow + C.Bold + "3rd Place" + C.cWhite + " - " + places.get(2).getName()); - } - - UtilPlayer.message(player, ""); - UtilPlayer.message(player, "§aMap - §f§l" + WorldData.MapName + C.cGray + " created by " + "§f§l" + WorldData.MapAuthor); - - UtilPlayer.message(player, ArcadeFormat.Line); - } - - Manager.GetChat().Silence(5000, false); - } - - public void Announce(String message) - { - for (Player player : UtilServer.getPlayers()) - { - player.playSound(player.getLocation(), Sound.NOTE_PLING, 1f, 1f); - - UtilPlayer.message(player, message); - } - } - - -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/deathtag/kits/KitArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/deathtag/kits/KitArcher.java index d6609f2e9..d9a6c9571 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/deathtag/kits/KitArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/deathtag/kits/KitArcher.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.minigames.deathtag.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -46,8 +46,8 @@ public class KitArcher extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.CHAINMAIL_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.CHAINMAIL_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.CHAINMAIL_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitCoward.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitCoward.java index fe9135aae..7d623dc2d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitCoward.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitCoward.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.minigames.dragons.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -26,7 +26,7 @@ public class KitCoward extends Kit new Perk[] { - new PerkLeaper("Leap", 1.2, 1.0, 8000), + new PerkLeap("Leap", 1.2, 1.0, 8000), new PerkSpeed(0) }, EntityType.ZOMBIE, @@ -46,8 +46,8 @@ public class KitCoward extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.LEATHER_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitMarksman.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitMarksman.java index ab9a0a9cf..31dc29a31 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitMarksman.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitMarksman.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.minigames.dragons.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -45,8 +45,8 @@ public class KitMarksman extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.CHAINMAIL_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.CHAINMAIL_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.CHAINMAIL_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitPyrotechnic.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitPyrotechnic.java index e3b0b20bb..6115a0316 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitPyrotechnic.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/dragons/kits/KitPyrotechnic.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.minigames.dragons.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -43,8 +43,8 @@ public class KitPyrotechnic extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.GOLD_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.GOLD_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.GOLD_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitSlime.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitSlime.java index 8a83e52e9..dc43972c1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitSlime.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitSlime.java @@ -15,7 +15,7 @@ import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.perks.PerkFallDamage; -import nautilus.game.arcade.kit.perks.PerkLeaper; +import nautilus.game.arcade.kit.perks.PerkLeap; public class KitSlime extends Kit { @@ -30,7 +30,7 @@ public class KitSlime extends Kit new Perk[] { - new PerkLeaper("Bounce", 2, 2, 8000), + new PerkLeap("Bounce", 2, 2, 8000), new PerkFallDamage(-40) }, EntityType.SLIME, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitWolf.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitWolf.java index 134f50575..6dbc1ecea 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitWolf.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/evolution/mobs/KitWolf.java @@ -14,7 +14,7 @@ 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.PerkLeaper; +import nautilus.game.arcade.kit.perks.PerkLeap; import nautilus.game.arcade.kit.perks.PerkSpeed; public class KitWolf extends Kit @@ -31,7 +31,7 @@ public class KitWolf extends Kit new Perk[] { new PerkSpeed(2), - new PerkLeaper("Pounce", 1.2, 1, 4000) + new PerkLeap("Pounce", 1.2, 1, 4000) }, EntityType.SLIME, null); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitDefenceArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitDefenceArcher.java index fe51cb27c..bc1450d8a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitDefenceArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitDefenceArcher.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.minigames.horsecharge.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -44,8 +44,8 @@ public class KitDefenceArcher extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.LEATHER_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitHorseKnight.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitHorseKnight.java index 235494d92..55fb31e03 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitHorseKnight.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/horsecharge/kits/KitHorseKnight.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.minigames.horsecharge.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -44,8 +44,8 @@ public class KitHorseKnight extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.IRON_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.IRON_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.IRON_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/Quiver.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/Quiver.java index 19ef5ddbf..3851f08a5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/Quiver.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/Quiver.java @@ -243,6 +243,8 @@ public class Quiver extends SoloGame event.AddMod("Projectile", "Instagib", 9001, false); event.SetKnockback(false); + + event.GetProjectile().remove(); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitBrawler.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitBrawler.java index d208ef2eb..859b133b1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitBrawler.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitBrawler.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.minigames.quiver.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -44,10 +43,4 @@ public class KitBrawler extends Kit if (Manager.GetGame().GetState() == GameState.Live) player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)1, 1, F.item("Super Arrow"))); } - - @Override - public void SpawnCustom(Creature ent) - { - - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitElementalist.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitElementalist.java index 91c58dc45..83f8d1716 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitElementalist.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitElementalist.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.minigames.quiver.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -44,10 +43,4 @@ public class KitElementalist extends Kit if (Manager.GetGame().GetState() == GameState.Live) player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)1, 1, F.item("Super Arrow"))); } - - @Override - public void SpawnCustom(Creature ent) - { - - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitLeaper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitLeaper.java index 9ad6419d2..573a4bbe2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitLeaper.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/quiver/kits/KitLeaper.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.minigames.quiver.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -28,7 +27,7 @@ public class KitLeaper extends Kit new Perk[] { - new PerkLeaper("Leap", 1.2, 1.0, 8000) + new PerkLeap("Leap", 1.2, 1.0, 8000) }, EntityType.ZOMBIE, new ItemStack(Material.IRON_AXE)); @@ -44,10 +43,4 @@ public class KitLeaper extends Kit if (Manager.GetGame().GetState() == GameState.Live) player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)1, 1, F.item("Super Arrow"))); } - - @Override - public void SpawnCustom(Creature ent) - { - - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/runner/kits/KitLeaper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/runner/kits/KitLeaper.java index e821d39a0..697c86e18 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/runner/kits/KitLeaper.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/runner/kits/KitLeaper.java @@ -25,7 +25,7 @@ public class KitLeaper extends Kit new Perk[] { - new PerkLeaper("Leap", 1.2, 1.2, 8000) + new PerkLeap("Leap", 1.2, 1.2, 8000) }, EntityType.SKELETON, new ItemStack(Material.STONE_AXE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/spleef/kits/KitLeaper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/spleef/kits/KitLeaper.java index b555cf9dd..0a2d4650e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/spleef/kits/KitLeaper.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/spleef/kits/KitLeaper.java @@ -25,7 +25,7 @@ public class KitLeaper extends Kit new Perk[] { - new PerkLeaper("Smashing Leap", 1.2, 1.2, 8000), + new PerkLeap("Smashing Leap", 1.2, 1.2, 8000), new PerkKnockback(0.3) }, EntityType.PIG_ZOMBIE, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitInfiltrator.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitInfiltrator.java index b5781fc79..9d036ec80 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitInfiltrator.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitInfiltrator.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.minigames.turfforts.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -46,10 +45,4 @@ public class KitInfiltrator extends Kit player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOL, Manager.GetGame().GetTeam(player).GetColorData(), amount)); } - - @Override - public void SpawnCustom(Creature ent) - { - - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitMarksman.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitMarksman.java index 18891f455..d8e560b37 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitMarksman.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitMarksman.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.minigames.turfforts.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -45,10 +44,5 @@ public class KitMarksman extends Kit player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOL, Manager.GetGame().GetTeam(player).GetColorData(), amount)); } - - @Override - public void SpawnCustom(Creature ent) - { - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitShredder.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitShredder.java index 8c39ac81b..a85764e39 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitShredder.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/minigames/turfforts/kits/KitShredder.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.minigames.turfforts.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -46,10 +45,4 @@ public class KitShredder extends Kit player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOL, Manager.GetGame().GetTeam(player).GetColorData(), amount)); } - - @Override - public void SpawnCustom(Creature ent) - { - - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/bridge/kits/KitBeserker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/bridge/kits/KitBeserker.java index f85e1ea1a..e3820533b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/bridge/kits/KitBeserker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/bridge/kits/KitBeserker.java @@ -25,7 +25,7 @@ public class KitBeserker extends Kit new Perk[] { - new PerkLeaper("Beserker Leap", 1.2, 1.2, 8000), + new PerkLeap("Beserker Leap", 1.2, 1.2, 8000), new PerkAxeman(), }, EntityType.ZOMBIE, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanElementalist.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanElementalist.java index 65e2dea0c..4fe16ccbe 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanElementalist.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanElementalist.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.castlesiege.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; @@ -69,8 +69,8 @@ public class KitHumanElementalist extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.GOLD_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.GOLD_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.GOLD_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanKnight.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanKnight.java index 1a93f48fb..21b19ba33 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanKnight.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanKnight.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.castlesiege.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; @@ -76,8 +76,8 @@ public class KitHumanKnight extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.IRON_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.IRON_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.IRON_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanMarksman.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanMarksman.java index 3f81ee2c4..1d4a40e66 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanMarksman.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanMarksman.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.castlesiege.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; @@ -71,8 +71,8 @@ public class KitHumanMarksman extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.CHAINMAIL_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.CHAINMAIL_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.CHAINMAIL_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanPeasant.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanPeasant.java index 837e57536..782095184 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanPeasant.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitHumanPeasant.java @@ -1,7 +1,6 @@ package nautilus.game.arcade.game.standalone.castlesiege.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -59,10 +58,5 @@ public class KitHumanPeasant extends Kit { player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_HOE)); } - - @Override - public void SpawnCustom(Creature ent) - { - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitUndeadGhoul.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitUndeadGhoul.java index 5612bd79e..85265e154 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitUndeadGhoul.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/castlesiege/kits/KitUndeadGhoul.java @@ -28,7 +28,7 @@ public class KitUndeadGhoul extends Kit new Perk[] { - new PerkLeaper("Ghoul Attack", 1.2, 0.8, 8000) + new PerkLeap("Ghoul Attack", 1.2, 0.8, 8000) }, EntityType.PIG_ZOMBIE, new ItemStack(Material.STONE_AXE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/SuperSmash.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/SuperSmash.java index 109821d29..15d31ab16 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/SuperSmash.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/SuperSmash.java @@ -8,6 +8,7 @@ import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; @@ -70,7 +71,7 @@ public class SuperSmash extends SoloGame return; for (Player player : GetPlayers(true)) - _lives.put(player, 5); + _lives.put(player, 4); } @EventHandler @@ -134,11 +135,11 @@ public class SuperSmash extends SoloGame int lives = GetLives(player); String out; - if (lives >= 4) out = lives + " " + C.cGreen + player.getName(); - else if (lives == 3) out = lives + " " + C.cYellow + player.getName(); - else if (lives == 2) out = lives + " " + C.cGold + player.getName(); - else if (lives == 1) out = lives + " " + C.cRed + player.getName(); - else if (lives == 0) out = lives + " " + C.cRed + player.getName(); + if (lives >= 4) out = C.cGreen + player.getName(); + else if (lives == 3) out = C.cYellow + player.getName(); + else if (lives == 2) out = C.cGold + player.getName(); + else if (lives == 1) out = C.cRed + player.getName(); + else if (lives == 0) out = C.cRed + player.getName(); else continue; @@ -157,8 +158,11 @@ public class SuperSmash extends SoloGame if (event.GetDamageePlayer() != null) event.AddKnockback("Smash Knockback", 1 + 0.1 * (20 - event.GetDamageePlayer().getHealth())); - if (event.GetCause() == DamageCause.VOID) - event.AddMod("Smash Void", "Void Kill", 5000, false); + if (event.GetCause() == DamageCause.VOID || event.GetCause() == DamageCause.LAVA) + { + event.GetDamageeEntity().getWorld().strikeLightningEffect(event.GetDamageeEntity().getLocation()); + event.AddMod("Smash", "Super Smash Mobs", 5000, false); + } } @EventHandler @@ -179,4 +183,10 @@ public class SuperSmash extends SoloGame if (event.getRegainReason() == RegainReason.SATIATED) event.setCancelled(true); } + + @EventHandler(priority = EventPriority.MONITOR) + public void EntityDeath(EntityDeathEvent event) + { + event.getDrops().clear(); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitBlaze.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitBlaze.java index 7c7af2d61..2614a832f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitBlaze.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitBlaze.java @@ -3,10 +3,13 @@ package nautilus.game.arcade.game.standalone.smash.kits; import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; import mineplex.core.disguise.disguises.DisguiseBlaze; import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; @@ -14,7 +17,8 @@ import nautilus.game.arcade.kit.SmashKit; import nautilus.game.arcade.kit.perks.PerkDamageSet; import nautilus.game.arcade.kit.perks.PerkDoubleJump; import nautilus.game.arcade.kit.perks.PerkFirefly; -import nautilus.game.arcade.kit.perks.PerkFlamingSword; +import nautilus.game.arcade.kit.perks.PerkInferno; +import nautilus.game.arcade.kit.perks.PerkKnockbackFire; import nautilus.game.arcade.kit.perks.PerkKnockbackMultiplier; import nautilus.game.arcade.kit.perks.PerkSpeed; @@ -31,10 +35,11 @@ public class KitBlaze extends SmashKit new Perk[] { new PerkDoubleJump("Double Jump", 1, 1, false), - new PerkDamageSet(6), + new PerkDamageSet(7), new PerkKnockbackMultiplier(1.50), + new PerkKnockbackFire(1.50), new PerkSpeed(1), - new PerkFlamingSword(), + new PerkInferno(), new PerkFirefly(12000) }, EntityType.BLAZE, @@ -59,4 +64,23 @@ public class KitBlaze extends SmashKit disguise.SetCustomNameVisible(true); Manager.GetDisguise().Disguise(disguise); } + + + @EventHandler + public void FireItemResist(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + if (Manager.GetGame() == null) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (!HasKit(player)) + continue; + + Manager.GetCondition().Factory().FireItemImmunity(GetName(), player, player, 1.9, false); + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitChicken.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitChicken.java index 3bae130b2..9643863f1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitChicken.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitChicken.java @@ -31,7 +31,7 @@ public class KitChicken extends SmashKit { new PerkFlap(0.8, 0.8, false), new PerkDamageSet(4), - new PerkKnockbackMultiplier(1.75), + new PerkKnockbackMultiplier(2.0), new PerkEggGun(), new PerkChickenRocket() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitEnderman.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitEnderman.java index 7c690ca0d..867513046 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitEnderman.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitEnderman.java @@ -39,7 +39,7 @@ public class KitEnderman extends SmashKit { new PerkDoubleJump("Double Jump", 0.8, 0.8, false), new PerkDamageSet(7), - new PerkKnockbackMultiplier(1.25), + new PerkKnockbackMultiplier(1.3), new PerkBlink("Blink", 12, 6000), new PerkBlockToss() }, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitGolem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitGolem.java index 5c0f5e8f2..5f3e5b817 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitGolem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitGolem.java @@ -26,8 +26,8 @@ public class KitGolem extends SmashKit new Perk[] { new PerkDoubleJump("Double Jump", 0.8, 0.8, false), - new PerkDamageSet(6), - new PerkMammoth(), + new PerkDamageSet(7), + new PerkKnockbackMultiplier(1), new PerkSlow(0), new PerkIronSkin(1), new PerkSeismicSlam(), diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSkeleton.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSkeleton.java index 3939d20ca..3c22af62d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSkeleton.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSkeleton.java @@ -12,7 +12,7 @@ import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.SmashKit; -import nautilus.game.arcade.kit.perks.PerkBarrage; +import nautilus.game.arcade.kit.perks.PerkBoneExplosion; import nautilus.game.arcade.kit.perks.PerkDamageSet; import nautilus.game.arcade.kit.perks.PerkDoubleJump; import nautilus.game.arcade.kit.perks.PerkFletcher; @@ -34,11 +34,12 @@ public class KitSkeleton extends SmashKit { new PerkDoubleJump("Double Jump", 0.8, 0.8, false), new PerkDamageSet(5), - new PerkKnockbackMultiplier(1.1), + new PerkKnockbackMultiplier(1.25), new PerkFletcher(1, 2, false), new PerkKnockbackArrow(2), + new PerkBoneExplosion(), new PerkRopedArrow("Roped Arrow", 1, 4000), - new PerkBarrage(5, 250, true), + //new PerkBarrage(5, 250, true), }, EntityType.SKELETON, new ItemStack(Material.BOW)); @@ -47,7 +48,7 @@ public class KitSkeleton extends SmashKit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "???")); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Bone Explosion")); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, C.cYellow + C.Bold + "Left-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Roped Arrow")); player.getInventory().setHelmet(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_HELMET)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSlime.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSlime.java index 141879b40..ae7b416d1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSlime.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSlime.java @@ -13,7 +13,9 @@ import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.SmashKit; import nautilus.game.arcade.kit.perks.PerkDamageSet; import nautilus.game.arcade.kit.perks.PerkDoubleJump; +import nautilus.game.arcade.kit.perks.PerkJump; import nautilus.game.arcade.kit.perks.PerkKnockbackMultiplier; +import nautilus.game.arcade.kit.perks.PerkSlimeRocket; import nautilus.game.arcade.kit.perks.PerkSlimeSlam; public class KitSlime extends SmashKit @@ -28,10 +30,12 @@ public class KitSlime extends SmashKit new Perk[] { - new PerkDoubleJump("Double Jump", 1.2, 1, false), - new PerkDamageSet(7), - new PerkKnockbackMultiplier(1.4), + new PerkDoubleJump("Double Jump", 1, 0.9, false), + new PerkDamageSet(6), + new PerkKnockbackMultiplier(1.75), + new PerkJump(1), new PerkSlimeSlam(), + new PerkSlimeRocket(), }, EntityType.SLIME, null); @@ -40,8 +44,8 @@ public class KitSlime extends SmashKit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD, (byte)0, 1, C.cYellow + C.Bold + "Hold/Release Block" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "???")); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "???")); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD, (byte)0, 1, C.cYellow + C.Bold + "Hold/Release Block" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Slime Rocket")); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Slime Slam")); player.getInventory().setHelmet(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_HELMET)); player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSnowman.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSnowman.java index 35512e5e2..1f04f8244 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSnowman.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSnowman.java @@ -17,6 +17,7 @@ import nautilus.game.arcade.kit.perks.PerkDamageSet; import nautilus.game.arcade.kit.perks.PerkDoubleJump; import nautilus.game.arcade.kit.perks.PerkIcePath; import nautilus.game.arcade.kit.perks.PerkKnockbackMultiplier; +import nautilus.game.arcade.kit.perks.PerkKnockbackSnow; public class KitSnowman extends SmashKit { @@ -32,7 +33,8 @@ public class KitSnowman extends SmashKit { new PerkDoubleJump("Double Jump", 0.8, 0.8, false), new PerkDamageSet(6), - new PerkKnockbackMultiplier(1.2), + new PerkKnockbackMultiplier(1.4), + new PerkKnockbackSnow(1.5), new PerkArcticAura(), new PerkBlizzard(), new PerkIcePath(), diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSpider.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSpider.java index c6e2af12b..a9cb9cb6c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSpider.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/smash/kits/KitSpider.java @@ -29,7 +29,7 @@ public class KitSpider extends SmashKit { new PerkDoubleJump("Double Jump", 0.8, 0.8, false), new PerkDamageSet(7), - new PerkKnockbackMultiplier(1.25), + new PerkKnockbackMultiplier(1.6), }, EntityType.SPIDER, null); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorArcher.java index 783b058b4..8d2bb252e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorArcher.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.zombiesurvival.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -46,8 +46,8 @@ public class KitSurvivorArcher extends Kit } @Override - public void SpawnCustom(Creature ent) - { + public void SpawnCustom(LivingEntity ent) + { ent.getEquipment().setHelmet(new ItemStack(Material.CHAINMAIL_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.CHAINMAIL_CHESTPLATE)); ent.getEquipment().setLeggings(new ItemStack(Material.CHAINMAIL_LEGGINGS)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorKnight.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorKnight.java index ebacf5b4a..b37b055cc 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorKnight.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorKnight.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.zombiesurvival.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -45,7 +45,7 @@ public class KitSurvivorKnight extends Kit } @Override - public void SpawnCustom(Creature ent) + public void SpawnCustom(LivingEntity ent) { ent.getEquipment().setHelmet(new ItemStack(Material.IRON_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.IRON_CHESTPLATE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorRogue.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorRogue.java index a73dc273f..5eb3df094 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorRogue.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitSurvivorRogue.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.zombiesurvival.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -26,7 +26,7 @@ public class KitSurvivorRogue extends Kit new Perk[] { - new PerkLeaper("Leap", 1, 1, 8000), + new PerkLeap("Leap", 1, 1, 8000), new PerkSpeed(0) }, EntityType.ZOMBIE, @@ -45,7 +45,7 @@ public class KitSurvivorRogue extends Kit } @Override - public void SpawnCustom(Creature ent) + public void SpawnCustom(LivingEntity ent) { ent.getEquipment().setHelmet(new ItemStack(Material.LEATHER_HELMET)); ent.getEquipment().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadAlpha.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadAlpha.java index 905c31e8d..8d71c733b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadAlpha.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadAlpha.java @@ -1,8 +1,8 @@ package nautilus.game.arcade.game.standalone.zombiesurvival.kits; import org.bukkit.Material; -import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Skeleton; import org.bukkit.entity.Skeleton.SkeletonType; @@ -29,7 +29,7 @@ public class KitUndeadAlpha extends Kit new Perk[] { - new PerkLeaper("Leap", 1, 1, 8000), + new PerkLeap("Leap", 1, 1, 8000), new PerkStrength(2), new PerkIronSkin(2), new PerkRegeneration(1) @@ -52,7 +52,7 @@ public class KitUndeadAlpha extends Kit } @Override - public void SpawnCustom(Creature ent) + public void SpawnCustom(LivingEntity ent) { if (ent instanceof Skeleton) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadZombie.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadZombie.java index 230e45e9b..9658711e6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadZombie.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/standalone/zombiesurvival/kits/KitUndeadZombie.java @@ -26,7 +26,7 @@ public class KitUndeadZombie extends Kit new Perk[] { - new PerkLeaper("Leap", 1, 1, 8000), + new PerkLeap("Leap", 1, 1, 8000), new PerkStrength(1), new PerkIronSkin(1), new PerkRegeneration(0) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/Kit.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/Kit.java index 741f601ae..06adffc34 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/Kit.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/Kit.java @@ -11,6 +11,7 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; @@ -95,13 +96,13 @@ public abstract class Kit implements Listener public abstract void GiveItems(Player player); - public Creature SpawnEntity(Location loc) + public LivingEntity SpawnEntity(Location loc) { EntityType type = _entityType; if (type == EntityType.PLAYER) type = EntityType.ZOMBIE; - Creature ent = (Creature)Manager.GetCreature().SpawnEntity(loc, type); + LivingEntity ent = (LivingEntity)Manager.GetCreature().SpawnEntity(loc, type); ent.setRemoveWhenFarAway(false); ent.setCustomName(GetAvailability().GetColor() + GetName() + " Kit" + (GetAvailability() == KitAvailability.Blue ? ChatColor.GRAY + " (" + ChatColor.WHITE + "Ultra" + ChatColor.GRAY + ")" : "")); ent.setCustomNameVisible(true); @@ -114,7 +115,7 @@ public abstract class Kit implements Listener return ent; } - public void SpawnCustom(Creature ent) { } + public void SpawnCustom(LivingEntity ent) { } public void DisplayDesc(Player player) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java index 68e2a6ad6..d8685dd87 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java @@ -41,7 +41,7 @@ public class PerkBarrage extends Perk { super("Barrage", new String[] { - C.cYellow + "Charge" + C.cGray + " your bow to use " + C.cGreen + "Barrage" + C.cYellow + "Charge" + C.cGray + " your Bow to use " + C.cGreen + "Barrage" }); _max = max; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzard.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzard.java index 0d4a551fa..bfcc60bce 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzard.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzard.java @@ -44,7 +44,7 @@ public class PerkBlizzard extends Perk if (!Kit.HasKit(player)) continue; - player.setExp((float) Math.min(0.999, player.getExp()+0.015)); + player.setExp((float) Math.min(0.999, player.getExp()+0.01)); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBomber.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBomber.java index 15a2a3699..a562db811 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBomber.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBomber.java @@ -82,6 +82,9 @@ public class PerkBomber extends Perk @EventHandler public void TNTDrop(PlayerDropItemEvent event) { + if (event.isCancelled()) + return; + if (!UtilInv.IsItem(event.getItemDrop().getItemStack(), Material.TNT, (byte)0)) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBoneExplosion.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBoneExplosion.java new file mode 100644 index 000000000..be75fad41 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBoneExplosion.java @@ -0,0 +1,76 @@ +package nautilus.game.arcade.kit.perks; + +import java.util.HashMap; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.recharge.Recharge; +import nautilus.game.arcade.kit.Perk; + +public class PerkBoneExplosion extends Perk +{ + public PerkBoneExplosion() + { + super("Bone Explosion", new String[] + { + C.cYellow + "Right-Click" + C.cGray + " with Axe to " + C.cGreen + "Bone Explosion" + }); + } + + @EventHandler + public void Leap(PlayerInteractEvent event) + { + if (event.isCancelled()) + return; + + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (event.getPlayer().getItemInHand() == null) + return; + + if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) + return; + + Player player = event.getPlayer(); + + if (!Kit.HasKit(player)) + return; + + if (!Recharge.Instance.use(player, GetName(), 10000, true)) + return; + + HashMap nearby = UtilPlayer.getInRadius(player.getLocation(), 8); + for (Player other : nearby.keySet()) + { + if (player.equals(other)) + continue; + + //Inform + UtilPlayer.message(player, F.main("Game", F.elem(Manager.GetColor(player) + player.getName()) + " used " + F.skill(GetName()) + ".")); + + //Velocity + UtilAction.velocity(other, UtilAlg.getTrajectory(player, other), 0.4 + 1.2 * nearby.get(other), false, 0, 0.2 + 0.6 * nearby.get(other), 1.2, true); + } + + //Inform + UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + ".")); + + //Effect + Manager.GetBlood().Effects(player.getLocation().add(0, 0.5, 0), 48, 0.8, Sound.SKELETON_HURT, 2f, 1.2f, Material.BONE, (byte)0, 40, false); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkChickenRocket.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkChickenRocket.java index 8e3af08f1..f7e51e671 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkChickenRocket.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkChickenRocket.java @@ -16,6 +16,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilBlock; @@ -78,6 +79,9 @@ public class PerkChickenRocket extends Perk Manager.GetGame().CreatureAllowOverride = false; _data.add(new ChickenMissileData(player, ent)); + + //Inform + UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + ".")); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java index d658942fe..e98e2d15c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkEggGun.java @@ -88,7 +88,11 @@ public class PerkEggGun extends Perk continue; } - Egg egg = cur.getWorld().spawn(cur.getLocation().add(0, 0.5, 0).add(cur.getLocation().getDirection()), Egg.class); + Vector offset = cur.getLocation().getDirection(); + if (offset.getY() < 0) + offset.setY(0); + + Egg egg = cur.getWorld().spawn(cur.getLocation().add(0, 0.5, 0).add(offset), Egg.class); egg.setVelocity(cur.getLocation().getDirection().add(new Vector(0,0.2,0))); egg.setShooter(cur); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java index 7d677407e..48d784daa 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java @@ -176,13 +176,13 @@ public class PerkFirefly extends Perk if (!data.Player.equals(event.GetDamageeEntity())) continue; - if (UtilTime.elapsed(data.Time, 1000) || event.GetCause() == DamageCause.ENTITY_ATTACK) + if (!UtilTime.elapsed(data.Time, 1000) && event.GetCause() == DamageCause.PROJECTILE) { - event.SetCancelled("Firefly Immunity"); + dataIterator.remove(); } else { - dataIterator.remove(); + event.SetCancelled("Firefly Immunity"); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlamingSword.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlamingSword.java index af94302ad..7c76b5105 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlamingSword.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFlamingSword.java @@ -16,7 +16,6 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; @@ -71,7 +70,7 @@ public class PerkFlamingSword extends Perk if (UtilBlock.usable(event.getClickedBlock())) return; - if (!UtilGear.isMat(event.getPlayer().getItemInHand(), Material.GOLD_SWORD)) + if (!event.getPlayer().getItemInHand().getType().toString().contains("_SWORD")) return; Player player = event.getPlayer(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFletcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFletcher.java index c71bf3246..72ff8e158 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFletcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFletcher.java @@ -103,6 +103,9 @@ public class PerkFletcher extends Perk @EventHandler public void FletchDrop(PlayerDropItemEvent event) { + if (event.isCancelled()) + return; + if (!UtilInv.IsItem(event.getItemDrop().getItemStack(), Material.ARROW, (byte)1)) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIcePath.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIcePath.java index 5eae40d05..268f4d6cd 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIcePath.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIcePath.java @@ -12,7 +12,9 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -54,13 +56,16 @@ public class PerkIcePath extends Perk if (!Kit.HasKit(player)) return; - if (!Recharge.Instance.use(player, GetName(), 1000, true)) + if (!Recharge.Instance.use(player, GetName(), 10000, true)) return; player.setVelocity(new Vector(0,0,0)); player.teleport(player.getLocation().add(0, 0.5, 0)); _data.add(new IcePathData(player)); + + //Inform + UtilPlayer.message(player, F.main("Game", "You used " + F.skill(GetName()) + ".")); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInferno.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInferno.java new file mode 100644 index 000000000..ae98abc6a --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInferno.java @@ -0,0 +1,105 @@ +package nautilus.game.arcade.kit.perks; + +import java.util.HashMap; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Item; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.kit.Perk; + +public class PerkInferno extends Perk +{ + private HashMap _active = new HashMap(); + + public PerkInferno() + { + super("Inferno", new String[] + { + C.cYellow + "Hold Block" + C.cGray + " to use " + C.cGreen + "Inferno" + }); + } + + @EventHandler + public void Activate(PlayerInteractEvent event) + { + if (event.isCancelled()) + return; + + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (!event.getPlayer().getItemInHand().getType().toString().contains("_SWORD")) + return; + + Player player = event.getPlayer(); + + if (!Kit.HasKit(player)) + return; + + if (!Recharge.Instance.use(player, "Inferno", 4000, true)) + return; + + _active.put(player, System.currentTimeMillis()); + + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill("Inferno") + ".")); + } + + @EventHandler + public void Update(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player cur : UtilServer.getPlayers()) + { + if (!_active.containsKey(cur)) + continue; + + if (!cur.isBlocking()) + { + _active.remove(cur); + continue; + } + + if (UtilTime.elapsed(_active.get(cur), 1500)) + { + _active.remove(cur); + continue; + } + + //Fire + Item fire = cur.getWorld().dropItem(cur.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.FIRE)); + Manager.GetFire().Add(fire, cur, 0.7, 0, 0.5, 1, "Inferno"); + + fire.teleport(cur.getEyeLocation()); + double x = 0.07 - (UtilMath.r(14)/100d); + double y = 0.07 - (UtilMath.r(14)/100d); + double z = 0.07 - (UtilMath.r(14)/100d); + fire.setVelocity(cur.getLocation().getDirection().add(new Vector(x,y,z)).multiply(1.6)); + + //Effect + cur.getWorld().playSound(cur.getLocation(), Sound.GHAST_FIREBALL, 0.1f, 1f); + } + } + +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkJump.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkJump.java new file mode 100644 index 000000000..ad5b2a1c6 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkJump.java @@ -0,0 +1,42 @@ +package nautilus.game.arcade.kit.perks; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +import mineplex.core.common.util.C; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.core.updater.UpdateType; +import nautilus.game.arcade.kit.Perk; + +public class PerkJump extends Perk +{ + private int _level; + + public PerkJump(int level) + { + super("Jump", new String[] + { + C.cGray + "Permanent Jump Boost " + (level+1), + }); + + _level = level; + } + + @EventHandler + public void DigSpeed(UpdateEvent event) + { + if (event.getType() != UpdateType.SLOW) + return; + + if (Manager.GetGame() == null) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (!Kit.HasKit(player)) + continue; + + Manager.GetCondition().Factory().Jump(GetName(), player, player, 8, _level, false, false, false); + } + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackFire.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackFire.java new file mode 100644 index 000000000..ab071b021 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackFire.java @@ -0,0 +1,42 @@ +package nautilus.game.arcade.kit.perks; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import mineplex.core.common.util.C; +import nautilus.game.arcade.kit.Perk; + +public class PerkKnockbackFire extends Perk +{ + private double _power; + + public PerkKnockbackFire(double power) + { + super("Flaming Knockback", new String[] + { + C.cGray + "You deal " + (int)(power*100) + "% Knockback to burning enemies.", + }); + + _power = power; + } + + @EventHandler(priority = EventPriority.HIGH) + public void Knockback(CustomDamageEvent event) + { + if (event.GetDamageeEntity().getFireTicks() <= 0) + return; + + Player damager = event.GetDamagerPlayer(true); + if (damager == null) return; + + if (!Kit.HasKit(damager)) + return; + + if (!Manager.IsAlive(damager)) + return; + + event.AddKnockback("Knockback Fire", _power); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackSnow.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackSnow.java new file mode 100644 index 000000000..65344fe7f --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkKnockbackSnow.java @@ -0,0 +1,42 @@ +package nautilus.game.arcade.kit.perks; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import mineplex.core.common.util.C; +import nautilus.game.arcade.kit.Perk; + +public class PerkKnockbackSnow extends Perk +{ + private double _power; + + public PerkKnockbackSnow(double power) + { + super("Frosty Knockback", new String[] + { + C.cGray + "You deal " + (int)(power*100) + "% Knockback to enemies on snow.", + }); + + _power = power; + } + + @EventHandler(priority = EventPriority.HIGH) + public void Knockback(CustomDamageEvent event) + { + if (event.GetDamageeEntity().getLocation().getBlock().getTypeId() != 78) + return; + + Player damager = event.GetDamagerPlayer(true); + if (damager == null) return; + + if (!Kit.HasKit(damager)) + return; + + if (!Manager.IsAlive(damager)) + return; + + event.AddKnockback("Knockback Snow", _power); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkLeaper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkLeaper.java deleted file mode 100644 index a23a436d7..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkLeaper.java +++ /dev/null @@ -1,75 +0,0 @@ -package nautilus.game.arcade.kit.perks; - -import org.bukkit.Effect; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerInteractEvent; - -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.recharge.Recharge; -import nautilus.game.arcade.kit.Perk; -import nautilus.game.arcade.kit.perks.event.PerkLeapEvent; - -public class PerkLeaper extends Perk -{ - private String _name; - private double _power; - private double _heightMax; - private long _recharge; - - public PerkLeaper(String name, double power, double heightLimit, long recharge) - { - super("Leaper", new String[] - { - C.cYellow + "Right-Click" + C.cGray + " with Axes to " + C.cGreen + name - }); - - _name = name; - _power = power; - _heightMax = heightLimit; - _recharge = recharge; - } - - @EventHandler - public void Leap(PlayerInteractEvent event) - { - if (event.isCancelled()) - return; - - if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) - return; - - if (UtilBlock.usable(event.getClickedBlock())) - return; - - if (event.getPlayer().getItemInHand() == null) - return; - - if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) - return; - - Player player = event.getPlayer(); - - if (!Kit.HasKit(player)) - return; - - if (!Recharge.Instance.use(player, _name, _recharge, true)) - return; - - UtilAction.velocity(player, _power, 0.2, _heightMax, true); - player.setFallDistance(0); - - UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(_name) + ".")); - - player.getWorld().playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 0); - - PerkLeapEvent leapEvent = new PerkLeapEvent(player); - UtilServer.getServer().getPluginManager().callEvent(leapEvent); - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlimeRocket.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlimeRocket.java new file mode 100644 index 000000000..2555ff880 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlimeRocket.java @@ -0,0 +1,326 @@ +package nautilus.game.arcade.kit.perks; + +import java.util.HashMap; +import java.util.Iterator; + +import org.bukkit.block.Block; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Slime; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerInteractEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.projectile.IThrown; +import mineplex.core.projectile.ProjectileUser; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; + +import nautilus.game.arcade.kit.Perk; + +public class PerkSlimeRocket extends Perk implements IThrown +{ + private HashMap _active = new HashMap(); + private HashMap _owner = new HashMap(); + private HashMap _lastAttack = new HashMap(); + + public PerkSlimeRocket() + { + super("Slime Rocket", new String[] + { + C.cYellow + "Hold/Release Block" + C.cGray + " to use " + C.cGreen + "Slime Rocket" + }); + } + + @EventHandler + public void EnergyUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (!Kit.HasKit(player)) + continue; + + if (player.isBlocking()) + return; + + player.setExp((float) Math.min(0.999, player.getExp()+0.003)); + } + } + + @EventHandler + public void Activate(PlayerInteractEvent event) + { + if (event.isCancelled()) + return; + + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (!event.getPlayer().getItemInHand().getType().toString().contains("_SWORD")) + return; + + Player player = event.getPlayer(); + + if (!Kit.HasKit(player)) + return; + + if (!Recharge.Instance.use(player, GetName(), 4000, true)) + return; + + //Spawn Slime + Manager.GetGame().CreatureAllowOverride = true; + Slime slime = player.getWorld().spawn(player.getEyeLocation(), Slime.class); + slime.setSize(1); + slime.setCustomNameVisible(true); + UtilEnt.Vegetate(slime); + Manager.GetGame().CreatureAllowOverride = false; + + player.setPassenger(slime); + + _active.put(player, slime); + _owner.put(slime, player); + + UtilPlayer.message(player, F.main("Skill", "You are charging " + F.skill(GetName()) + ".")); + } + + @EventHandler + public void ChargeRelease(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + Iterator chargeIterator = _active.keySet().iterator(); + + while (chargeIterator.hasNext()) + { + Player player = chargeIterator.next(); + Slime slime = _active.get(player); + + //Invalid + if (!slime.isValid()) + { + slime.remove(); + FireRocket(player); + chargeIterator.remove(); + } + //Charge + if (player.isBlocking()) + { + //Energy Depleted + if (player.getExp() < 0.1) + { + FireRocket(player); + chargeIterator.remove(); + } + else + { + if (slime.getTicksLived() > 60) + { + if (slime.getTicksLived() > 100) + { + FireRocket(player); + chargeIterator.remove(); + } + } + else + { + player.setExp((float) Math.max(0, player.getExp()-0.01f)); + + //Size + slime.setSize((int) (1.25 + slime.getTicksLived()/25d)); + + slime.setMaxHealth(5 + slime.getTicksLived()/3); + slime.setHealth(slime.getMaxHealth()); + + //NameTag + String out = C.cRed; + + if (slime.getSize() == 1) out = C.cGold; + else if (slime.getSize() == 2) out = C.cYellow; + else if (slime.getSize() == 3) out = C.cGreen; + + for (int i=0 ; i < slime.getTicksLived()/4 ; i++) + { + out += "|"; + } + + slime.setCustomName(out); + } + } + } + //Release + else + { + FireRocket(player); + chargeIterator.remove(); + } + } + } + + public void FireRocket(Player player) + { + double charge = Math.min(3, _active.get(player).getTicksLived()/20d); + + if (_active.get(player) == null || !_active.get(player).isValid()) + { + //Inform + UtilPlayer.message(player, F.main("Skill", "You failed " + F.skill(GetName()) + ".")); + return; + } + + Slime slime = _active.get(player); + + slime.setCustomName(null); + slime.setCustomNameVisible(false); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You released " + F.skill(GetName()) + ".")); + + slime.leaveVehicle(); + player.eject(); + + UtilAction.velocity(slime, player.getLocation().getDirection(), 1 + charge/2d, false, 0, 0.2, 10, true); + + Manager.GetProjectile().AddThrow(slime, player, this, -1, true, true, true, + null, 0, 0, null, 0, UpdateType.FASTEST, 2d); + } + + @EventHandler + public void SlimeTarget(EntityTargetEvent event) + { + if (event.isCancelled()) + return; + + if (!_owner.containsKey(event.getEntity())) + return; + + if (_owner.get(event.getEntity()).equals(event.getTarget())) + { + event.setCancelled(true); + } + } + + @Override + public void Collide(LivingEntity target, Block block, ProjectileUser data) + { + if (target == null) + return; + + if (!(data.GetThrown() instanceof Slime)) + return; + + Slime slime = (Slime)data.GetThrown(); + + //Damage Event + Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null, + DamageCause.PROJECTILE, slime.getSize() * 4, true, true, false, + UtilEnt.getName(data.GetThrower()), GetName()); + } + + @EventHandler + public void Knockback(CustomDamageEvent event) + { + if (event.GetReason() == null || !event.GetReason().contains(GetName())) + return; + + event.AddKnockback(GetName(), 1.5); + } + + @Override + public void Idle(ProjectileUser data) + { + + } + + @Override + public void Expire(ProjectileUser data) + { + + } + + @EventHandler + public void SlimeDamage(CustomDamageEvent event) + { + if (!(event.GetDamagerEntity(false) instanceof Slime)) + return; + + Slime slime = (Slime)event.GetDamagerEntity(false); + + + //Attack Rate + if (_lastAttack.containsKey(slime) && !UtilTime.elapsed(_lastAttack.get(slime), 500)) + { + event.SetCancelled("Slime Attack Rate"); + return; + } + + _lastAttack.put(slime, System.currentTimeMillis()); + + //Get Owner + Player owner = _owner.get(slime); + //if (owner != null) + // event.SetDamager(owner); This gives knockback from wrong direction :( + + + if (owner != null && owner.equals(event.GetDamageeEntity())) + { + event.SetCancelled("Owner Damage"); + + //Heal Owner + if (slime.getVehicle() == null) + { + UtilPlayer.health(owner, 1); + } + } + else + { + event.AddMod("Slime Damage", "Negate", -event.GetDamageInitial(), false); + event.AddMod("Slime Damage", "Attack", 2 * slime.getSize(), true); + event.AddKnockback("Slime Knockback", 2); + } + } + + @EventHandler + public void SlimeClean(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + return; + + Iterator slimeIterator = _owner.keySet().iterator(); + + while (slimeIterator.hasNext()) + { + Slime slime = slimeIterator.next(); + + if (!slime.isValid()) + slimeIterator.remove(); + } + + slimeIterator = _lastAttack.keySet().iterator(); + + while (slimeIterator.hasNext()) + { + Slime slime = slimeIterator.next(); + + if (!slime.isValid()) + slimeIterator.remove(); + } + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlow.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlow.java index bed33d89d..1439c912c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlow.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkSlow.java @@ -14,7 +14,7 @@ public class PerkSlow extends Perk public PerkSlow(int level) { - super("Speed", new String[] + super("Slow", new String[] { C.cGray + "Permanent Slow " + (level+1), }); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java index bfce228a5..b1cd8bbbe 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java @@ -21,6 +21,7 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Creature; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Sheep; import org.bukkit.event.EventHandler; @@ -80,10 +81,10 @@ public class GameLobbyManager implements IPacketRunnable, Listener private Location spawn; - private HashMap _kits = new HashMap(); + private HashMap _kits = new HashMap(); private HashMap _kitBlocks = new HashMap(); - private HashMap _teams = new HashMap(); + private HashMap _teams = new HashMap(); private HashMap _teamBlocks = new HashMap(); private long _fireworkStart; @@ -376,7 +377,7 @@ public class GameLobbyManager implements IPacketRunnable, Listener entLoc.getChunk().load(); - Creature ent = kit.SpawnEntity(entLoc); + LivingEntity ent = kit.SpawnEntity(entLoc); if (ent == null) continue; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/MiscManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/MiscManager.java index cac64d1f8..0eb7a1bd8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/MiscManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/MiscManager.java @@ -94,7 +94,7 @@ public class MiscManager implements Listener { if (Manager.GetGame() == null) return; - + if (!Manager.GetGame().IsLive()) return; @@ -106,7 +106,7 @@ public class MiscManager implements Listener if (Manager.IsAlive(player)) continue; - UtilPlayer.message(player, C.cYellow + C.Bold + "You are out of the game, but " + C.cGold + C.Bold + "DON'T QUIT" + C.cYellow + C.Bold + "!"); + UtilPlayer.message(player, C.cYellow + C.Bold + "You are out of the game, but " + C.cRed + C.Bold + "DON'T QUIT" + C.cYellow + C.Bold + "!"); UtilPlayer.message(player, C.cYellow + C.Bold + "The next game will be starting soon..."); } }