diff --git a/Plugins/Mineplex.Core/src/mineplex/core/recharge/Recharge.java b/Plugins/Mineplex.Core/src/mineplex/core/recharge/Recharge.java index d292a98b4..7a3b8661b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/recharge/Recharge.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/recharge/Recharge.java @@ -91,17 +91,6 @@ public class Recharge extends MiniPlugin } } } - /* - public boolean use(Player player, String ability, long recharge, boolean inform) - { - return use(player, ability, ability, recharge, inform, false); - } - - public boolean use(Player player, String ability, String abilityFull, long recharge, boolean inform) - { - return use(player, ability, ability, recharge, inform, false); - } - */ public boolean use(Player player, String ability, long recharge, boolean inform, boolean attachItem) { @@ -150,7 +139,12 @@ public class Recharge extends MiniPlugin public void useForce(Player player, String ability, long recharge) { - UseRecharge(player, ability, recharge, false, false); + useForce(player, ability, recharge, false); + } + + public void useForce(Player player, String ability, long recharge, boolean attachItem) + { + UseRecharge(player, ability, recharge, attachItem, false); } public boolean usable(Player player, String ability) @@ -183,10 +177,8 @@ public class Recharge extends MiniPlugin RechargeEvent rechargeEvent = new RechargeEvent(player, ability, recharge); UtilServer.getServer().getPluginManager().callEvent(rechargeEvent); - if (attachItem || attachDurability) - Get(player).put(ability, new RechargeData(this, player, ability, player.getItemInHand(), rechargeEvent.GetRecharge(), attachItem, attachDurability)); - else - Get(player).put(ability, new RechargeData(System.currentTimeMillis()+rechargeEvent.GetRecharge())); + Get(player).put(ability, new RechargeData(this, player, ability, player.getItemInHand(), + rechargeEvent.GetRecharge(), attachItem, attachDurability)); } public void recharge(Player player, String ability) @@ -200,8 +192,36 @@ public class Recharge extends MiniPlugin _recharge.remove(event.getPlayer().getName()); } + public void setDisplayForce(Player player, String ability, boolean displayForce) + { + if (!_recharge.containsKey(player.getName())) + return; + + if (!_recharge.get(player.getName()).containsKey(ability)) + return; + + _recharge.get(player.getName()).get(ability).DisplayForce = displayForce; + } + public void Reset(Player player) { _recharge.put(player.getName(), new NautHashMap()); } + + public void debug(Player player, String ability) + { + if (!_recharge.containsKey(player.getName())) + { + player.sendMessage("No Recharge Map."); + return; + } + + if (!_recharge.get(player.getName()).containsKey(ability)) + { + player.sendMessage("Ability Not Found."); + return; + } + + _recharge.get(player.getName()).get(ability).debug(player); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/recharge/RechargeData.java b/Plugins/Mineplex.Core/src/mineplex/core/recharge/RechargeData.java index 8e6846dea..cf06042c4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/recharge/RechargeData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/recharge/RechargeData.java @@ -2,6 +2,7 @@ package mineplex.core.recharge; import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; @@ -28,14 +29,10 @@ public class RechargeData public ItemStack Item; + public boolean DisplayForce = false; public boolean AttachItem; public boolean AttachDurability; - public RechargeData(long time) - { - Time = time; - } - public RechargeData(Recharge host, Player player, String name, ItemStack stack, long rechargeTime, boolean attachitem, boolean attachDurability) { Host = host; @@ -52,16 +49,16 @@ public class RechargeData public boolean Update() { - if (Item != null && Name != null && Player != null) + if ((DisplayForce || Item != null) && Name != null && Player != null) { //Holding Recharge Item double percent = (double)(System.currentTimeMillis() - Time)/(double)Recharge; - if (AttachItem) + if (DisplayForce || AttachItem) { try { - if (Player.getItemInHand().getType() == Item.getType()) + if (DisplayForce || (Item != null && UtilGear.isMat(Player.getItemInHand(), Item.getType()))) { if (!UtilTime.elapsed(Time, Recharge)) { @@ -84,27 +81,10 @@ public class RechargeData } } - if (AttachDurability) + if (AttachDurability && Item != null) { Item.setDurability((short) (Item.getType().getMaxDurability() - (Item.getType().getMaxDurability() * percent))); } - - /* - ItemMeta itemMeta = Item.getItemMeta(); - - if (System.currentTimeMillis() < Time) - itemMeta.setDisplayName(C.cRed + C.Bold + Name + ChatColor.RESET + " - " + C.cYellow + C.Bold + UtilTime.MakeStr(Time - System.currentTimeMillis())); - else - itemMeta.setDisplayName(C.cGreen + C.Bold + Name); - - Item.setItemMeta(itemMeta); - - - if (System.currentTimeMillis() < Time) - Item.removeEnchantment(Enchantment.DURABILITY); - else - Item.addEnchantment(Enchantment.DURABILITY, 1); - */ } @@ -115,4 +95,12 @@ public class RechargeData { return Recharge - (System.currentTimeMillis() - Time); } + + public void debug(Player player) + { + player.sendMessage("Recharge: " + Recharge); + player.sendMessage("Time: " + Time); + player.sendMessage("Elapsed: " + (System.currentTimeMillis() - Time)); + player.sendMessage("Remaining: " + GetRemaining()); + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 9cb49bee7..e376ed814 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -1,5 +1,6 @@ package mineplex.hub; +import java.util.ArrayList; import java.util.HashMap; import org.bukkit.Bukkit; @@ -137,6 +138,8 @@ public class HubManager extends MiniClientPlugin private boolean _shuttingDown; private HashMap _portalTime = new HashMap(); + + private HashMap> _creativeAdmin = new HashMap>(); //Admin private boolean _gadgetsEnabled = true; @@ -996,4 +999,39 @@ public class HubManager extends MiniClientPlugin if (!_gadgetsEnabled) event.setCancelled(true); } + + public void addGameMode(Player caller, Player target) + { + if (!_creativeAdmin.containsKey(caller.getName())) + _creativeAdmin.put(caller.getName(), new ArrayList()); + + if (target.getGameMode() == GameMode.CREATIVE) + { + _creativeAdmin.get(caller.getName()).add(target.getName()); + } + else + { + _creativeAdmin.get(caller.getName()).remove(target.getName()); + } + } + + @EventHandler + public void clearGameMode(PlayerQuitEvent event) + { + ArrayList creative = _creativeAdmin.remove(event.getPlayer().getName()); + + if (creative == null) + return; + + for (String name : creative) + { + Player player = UtilPlayer.searchExact(name); + if (player == null) + continue; + + player.setGameMode(GameMode.SURVIVAL); + + UtilPlayer.message(player, F.main("Game Mode", event.getPlayer().getName() + " left the game. Creative Mode: " + F.tf(false))); + } + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/GameModeCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/GameModeCommand.java index 28e921f4e..7900e79ee 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/GameModeCommand.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/GameModeCommand.java @@ -5,6 +5,8 @@ import org.bukkit.entity.Player; import mineplex.core.command.CommandBase; import mineplex.core.common.Rank; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; import mineplex.hub.HubManager; public class GameModeCommand extends CommandBase @@ -17,9 +19,27 @@ public class GameModeCommand extends CommandBase @Override public void Execute(Player caller, String[] args) { - if (caller.getGameMode() == GameMode.SURVIVAL) - caller.setGameMode(GameMode.CREATIVE); + Player target = caller; + + if (args != null && args.length >= 1) + { + target = UtilPlayer.searchOnline(caller, args[0], true); + + if (target == null) + return; + } + + if (target.getGameMode() == GameMode.SURVIVAL) + target.setGameMode(GameMode.CREATIVE); else - caller.setGameMode(GameMode.SURVIVAL); + target.setGameMode(GameMode.SURVIVAL); + + if (!target.equals(caller)) + { + Plugin.addGameMode(caller, target); + UtilPlayer.message(target, F.main("Game Mode", caller.getName() + " toggled your Creative Mode: " + F.tf(target.getGameMode() == GameMode.CREATIVE))); + } + + UtilPlayer.message(caller, F.main("Game Mode", target.getName() + " Creative Mode: " + F.tf(target.getGameMode() == GameMode.CREATIVE))); } } diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Fissure.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Fissure.java index c6622de9c..7c989c822 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Fissure.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Fissure.java @@ -70,7 +70,7 @@ public class Fissure extends SkillActive @Override public void Skill(Player player, int level) { - FissureData data = new FissureData(this, player, level, player.getLocation().getDirection(), player.getLocation().add(0, -0.5, 0)); + FissureData data = new FissureData(this, player, level, player.getLocation().getDirection(), player.getLocation().add(0, -0.4, 0)); _active.add(data); //Inform diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java index 554b15bc2..8d95abeee 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java @@ -157,8 +157,6 @@ public class Quiver extends SoloGame if (Manager.GetCondition().HasCondition(event.GetEvent().getEntity(), ConditionType.FALLING, null)) { amount = 2; - - player.playSound(player.getLocation(), Sound.ORB_PICKUP, 3f, 0.75f); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java index cbbe64e84..36c26500c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/SheepGame.java @@ -36,6 +36,7 @@ import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTextTop; import mineplex.core.common.util.UtilTime; @@ -140,8 +141,6 @@ public class SheepGame extends TeamGame "Most sheep at 5 minutes wins!" }); - this.StrictAntiHack = true; - this.DeathOut = false; this.DeathSpectateSecs = 8; @@ -233,35 +232,66 @@ public class SheepGame extends TeamGame UtilFirework.playFirework(sheep.getLocation().add(0, 0.5, 0), FireworkEffect.builder().flicker(false).withColor(Color.WHITE).with(Type.BALL).trail(false).build()); } +// @EventHandler +// public void Stack(PlayerInteractEntityEvent event) +// { +// if (!IsLive()) +// return; +// +// if (!(event.getRightClicked() instanceof Sheep)) +// return; +// +// if (event.getRightClicked().getVehicle() != null) +// return; +// +// if (!Recharge.Instance.usable(event.getPlayer(), "Sheep Stack", true)) +// return; +// +// SheepStack(event.getPlayer(), (Sheep)event.getRightClicked()); +// } + @EventHandler - public void Stack(PlayerInteractEntityEvent event) + public void Stack(UpdateEvent event) { - if (!IsLive()) + if (event.getType() != UpdateType.SEC) return; - - if (!(event.getRightClicked() instanceof Sheep)) - return; - - if (event.getRightClicked().getVehicle() != null) - return; - - Player player = event.getPlayer(); - - if (!Recharge.Instance.usable(player, "Sheep Stack")) - return; - + + for (Player player : GetPlayers(true)) + { + if (!Recharge.Instance.usable(player, "Sheep Stack")) + return; + + for (Entity ent : player.getWorld().getEntities()) + { + if (!(ent instanceof Sheep)) + continue; + + if (ent.getVehicle() != null) + continue; + + if (UtilMath.offset(player, ent) > 2.5) + continue; + + if (SheepStack(player, (Sheep)ent)) + break; + } + } + } + + public boolean SheepStack(Player player, Sheep sheep) + { if (player.getItemInHand() != null && player.getItemInHand().getType() != Material.SADDLE) - return; + return true; - if (event.getPlayer().getGameMode() != GameMode.SURVIVAL) - return; + if (player.getGameMode() != GameMode.SURVIVAL) + return true; - if (!IsAlive(event.getPlayer())) - return; + if (!IsAlive(player)) + return true; if (player.getPassenger() != null && player.getPassenger() instanceof Player) { - DropSheep(player); + DropSheep(player, 500); } //Holding too many @@ -275,36 +305,41 @@ public class SheepGame extends TeamGame if (count >= 3) { - UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot hold more than 3 Sheep!")); - return; + //UtilPlayer.message(player, F.main("Game", "You cannot hold more than 3 Sheep!")); + return true; } for (SheepData data : _sheep.values()) { - if (data.Sheep.equals(event.getRightClicked())) + if (data.Sheep.equals(sheep)) { - if (data.Owner != null && data.Owner.equals(GetTeam(event.getPlayer())) && data.IsInsideOwnPen()) + if (data.Owner != null && data.Owner.equals(GetTeam(player)) && data.IsInsideOwnPen()) { - UtilPlayer.message(event.getPlayer(), F.main("Game", "You have already captured this Sheep!")); - return; + //UtilPlayer.message(player, F.main("Game", "You have already captured this Sheep!")); + return false; } - data.SetHolder(event.getPlayer()); + data.SetHolder(player); } } //Put Wool in Inventory - player.getInventory().setItem(4 + count, ItemStackFactory.Instance.CreateStack(35, ((Sheep)event.getRightClicked()).getColor().getWoolData())); + player.getInventory().setItem(4 + count, ItemStackFactory.Instance.CreateStack(35, ((Sheep)sheep).getColor().getWoolData())); UtilInv.Update(player); //Effect - event.getRightClicked().getWorld().playEffect(event.getRightClicked().getLocation(), Effect.STEP_SOUND, 35); + sheep.getWorld().playEffect(sheep.getLocation(), Effect.STEP_SOUND, 35); //Stack - top.setPassenger(event.getRightClicked()); + top.setPassenger(sheep); //Audio player.playSound(player.getLocation(), Sound.SHEEP_IDLE, 2f, 3f); + + //Cooldown + Recharge.Instance.useForce(player, "Sheep Stack", 500); + + return true; } @EventHandler @@ -329,7 +364,7 @@ public class SheepGame extends TeamGame return; if (player.getPassenger() != null) - DropSheep(player); + DropSheep(player, 500); if (!Recharge.Instance.usable(player, "Sheep Stack")) return; @@ -350,22 +385,25 @@ public class SheepGame extends TeamGame player.setPassenger(other); //Audio - player.playSound(player.getLocation(), Sound.VILLAGER_YES, 2f, 3f); - other.playSound(player.getLocation(), Sound.VILLAGER_NO, 2f, 3f); + player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1f, 1f); //Inform UtilPlayer.message(other, F.main("Skill", F.elem(GetTeam(player).GetColor() + player.getName()) + " picked you up.")); - UtilPlayer.message(player, F.main("Skill", "You picked up " + F.elem(GetTeam(player).GetColor() + player.getName()) + ".")); + UtilPlayer.message(player, F.main("Skill", "You picked up " + F.elem(GetTeam(other).GetColor() + other.getName()) + ".")); } @EventHandler public void DeathDrop(PlayerDeathEvent event) { - DropSheep(event.getEntity()); + DropSheep(event.getEntity(), 0); } - public void DropSheep(Player player) + public void DropSheep(Player player, long cooldown) { + //Brute can only throw + if (GetKit(player) instanceof KitBrute) + return; + boolean hadSheep = false; Entity top = player; @@ -388,12 +426,15 @@ public class SheepGame extends TeamGame //Audio player.playSound(player.getLocation(), Sound.SHEEP_IDLE, 2f, 1f); + + //Recharge + Recharge.Instance.useForce(player, "Sheep Stack", cooldown); } @EventHandler public void Drop(PlayerDropItemEvent event) { - DropSheep(event.getPlayer()); + DropSheep(event.getPlayer(), 500); } @EventHandler @@ -452,9 +493,24 @@ public class SheepGame extends TeamGame UtilTextTop.displayProgress(C.Bold + "Return the Sheep to your Team Pen!", (float)count/3f, player); } } + + @EventHandler(priority = EventPriority.LOW) + public void DamageSheepCancel(CustomDamageEvent event) + { + if (event.IsCancelled()) + return; + + if (event.GetDamagerPlayer(true) != null) + { + if (event.GetDamagerPlayer(true).getPassenger() != null) + { + event.SetCancelled("SQ: Has Passenger"); + } + } + } @EventHandler(priority = EventPriority.LOW) - public void DamagePasson(CustomDamageEvent event) + public void DamagePassOn(CustomDamageEvent event) { if (event.IsCancelled()) return; @@ -493,7 +549,7 @@ public class SheepGame extends TeamGame Player player = event.GetDamageePlayer(); if (player == null) return; - DropSheep(player); + DropSheep(player, 2000); Bukkit.getPluginManager().callEvent(new DropEnemySheepEvent(event.GetDamagerPlayer(true), player)); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java index 9e3e4d91e..dff88cdb6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitArcher.java @@ -9,6 +9,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.LeatherArmorMeta; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; import mineplex.core.itemstack.ItemStackFactory; @@ -45,7 +46,8 @@ public class KitArcher extends Kit { player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.WOOD_SWORD)); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW)); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE)); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, + C.cYellow + C.Bold + "Move Near Sheep" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Pick Up Sheep")); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBeserker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBeserker.java index 7366dbf1a..c755f0641 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBeserker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBeserker.java @@ -5,8 +5,8 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.LeatherArmorMeta; +import mineplex.core.common.util.C; import mineplex.core.itemstack.ItemStackFactory; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.Kit; @@ -27,7 +27,7 @@ public class KitBeserker extends Kit new Perk[] { - new PerkLeap("Beserker Leap", 1.2, 1.2, 8000) + new PerkDoubleJump("Beserker Jump", 1.2, 1.2, true, 8000, true) }, EntityType.ZOMBIE, new ItemStack(Material.IRON_AXE)); @@ -37,7 +37,8 @@ public class KitBeserker extends Kit public void GiveItems(Player player) { player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE)); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE)); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, + C.cYellow + C.Bold + "Move Near Sheep" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Pick Up Sheep")); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java index ef953a9a9..0831c64ce 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/kits/KitBrute.java @@ -38,7 +38,8 @@ public class KitBrute extends Kit public void GiveItems(Player player) { player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD)); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE)); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, + C.cYellow + C.Bold + "Move Near Sheep" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Pick Up Sheep")); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDoubleJump.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDoubleJump.java index 73addf2db..271307dfa 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDoubleJump.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDoubleJump.java @@ -2,6 +2,7 @@ package nautilus.game.arcade.kit.perks; import org.bukkit.Effect; import org.bukkit.GameMode; +import org.bukkit.Material; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -12,6 +13,7 @@ import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilServer; +import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.kit.Perk; @@ -21,10 +23,12 @@ public class PerkDoubleJump extends Perk private double _power; private double _heightMax; private boolean _control; + private long _recharge; + private boolean _displayForce; public PerkDoubleJump(String name, double power, double heightLimit, boolean control) { - super("Jumper", new String[] + super(name, new String[] { C.cYellow + "Tap Jump Twice" + C.cGray + " to " + C.cGreen + name }); @@ -32,6 +36,22 @@ public class PerkDoubleJump extends Perk _power = power; _heightMax = heightLimit; _control = control; + _recharge = 0; + _displayForce = false; + } + + public PerkDoubleJump(String name, double power, double heightLimit, boolean control, long recharge, boolean displayForce) + { + super(name, new String[] + { + C.cYellow + "Tap Jump Twice" + C.cGray + " to " + C.cGreen + name + }); + + _power = power; + _heightMax = heightLimit; + _control = control; + _recharge = recharge; + _displayForce = displayForce; } @EventHandler @@ -63,6 +83,17 @@ public class PerkDoubleJump extends Perk //Sound player.getWorld().playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 0); + + //Recharge + if (_recharge > 0) + { + Recharge.Instance.useForce(player, GetName(), _recharge); + + if (_displayForce) + { + Recharge.Instance.setDisplayForce(player, GetName(), true); + } + } } @EventHandler @@ -79,6 +110,9 @@ public class PerkDoubleJump extends Perk if (!Kit.HasKit(player)) continue; + if (_recharge > 0 && !Recharge.Instance.usable(player, GetName())) + continue; + if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN))) player.setAllowFlight(true); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java index fbfe0bb35..39a298af1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkThrower.java @@ -10,15 +10,19 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerDropItemEvent; 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.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilTextTop; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.projectile.IThrown; import mineplex.core.projectile.ProjectileUser; @@ -32,22 +36,16 @@ public class PerkThrower extends Perk implements IThrown { super("Thrower", new String[] { - C.cGray + "You can pick up team mates!", - C.cYellow + "Right-Click" + C.cGray + " with Sword to " + C.cGreen + "Throw Sheep", + C.cGray + "You can also pick up team mates!", + C.cYellow + "Drop Weapon" + C.cGray + " to " + C.cGreen + "Throw Sheep / Players", }); } @EventHandler - public void Throw(PlayerInteractEvent event) + public void Throw(PlayerDropItemEvent event) { - if (!UtilEvent.isAction(event, ActionType.R)) - return; - Player thrower = event.getPlayer(); - if (!UtilGear.isMat(thrower.getItemInHand(), Material.IRON_SWORD)) - return; - if (thrower.getPassenger() == null) return; @@ -73,6 +71,8 @@ public class PerkThrower extends Perk implements IThrown fThrower.setPassenger(fThroweeStack); } }, 2); + + UtilPlayer.message(thrower, F.main("Game", "You threw " + UtilEnt.getName(throwee) + ".")); } //Throw