diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java index b8c7eb796..6a007fefa 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java @@ -8,7 +8,7 @@ public enum CurrencyType Coins(" Coins", Material.DOUBLE_PLANT), Gems(" Gems", Material.EMERALD), Gold(" Gold", Material.GOLD_NUGGET); - + private String _prefix; private Material _displayMaterial; diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEvent.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEvent.java index 79059c454..bd5346696 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEvent.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEvent.java @@ -16,7 +16,8 @@ public class UtilEvent L_BLOCK, R, R_AIR, - R_BLOCK + R_BLOCK, + ANY } public static boolean isAction(PlayerInteractEvent event, ActionType action) @@ -39,6 +40,9 @@ public class UtilEvent if (action == ActionType.R_BLOCK) return (event.getAction() == Action.RIGHT_CLICK_BLOCK); + if (action == ActionType.ANY) + return event.getAction() != Action.PHYSICAL; + return false; } diff --git a/Plugins/Mineplex.Core/.classpath b/Plugins/Mineplex.Core/.classpath index 8171cd881..b60bc08f6 100644 --- a/Plugins/Mineplex.Core/.classpath +++ b/Plugins/Mineplex.Core/.classpath @@ -12,7 +12,7 @@ - + diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java index 41410dfd6..3e77154fb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java @@ -295,6 +295,11 @@ public class DonationManager extends MiniDbClientPlugin _coinQueue.clear(); } + public void rewardGold(Callback callback, String caller, Player player, int amount) + { + rewardGold(callback, caller, player.getName(), ClientManager.Get(player).getAccountId(), amount); + } + public void rewardGold(Callback callback, String caller, String name, int accountId, int amount) { rewardGold(callback, caller, name, accountId, amount, true); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanInfo.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanInfo.java index 4ed2807d8..726778aa9 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanInfo.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanInfo.java @@ -162,6 +162,11 @@ public class ClanInfo return getAllyMap().containsKey(other); } + public boolean isAlly(ClanInfo other) + { + return isAlly(other.getName()); + } + public boolean isSelf(String other) { return this.getName().equals(other); @@ -169,7 +174,7 @@ public class ClanInfo public boolean isNeutral(String other) { - return (!isAlly(other) && !isSelf(other)); + return (!isAlly(other) && !isSelf(other) && !isEnemy(other)); } public long getTimer() @@ -451,6 +456,11 @@ public class ClanInfo return _enemyData != null; } + public boolean isEnemy(String clanName) + { + return hasEnemy() && clanName != null && clanName.equals(_enemyData.getEnemyName()); + } + public void adjustEnergy(int energy) { _energy += energy; diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanRole.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanRole.java index 3c70a4d80..928480fae 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanRole.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClanRole.java @@ -3,5 +3,5 @@ package mineplex.game.clans.clans; public enum ClanRole { NONE, RECRUIT, MEMBER, ADMIN, LEADER -} +} diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java index d15868492..fd38941fa 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java @@ -174,6 +174,7 @@ public class ClansManager extends MiniClientPlugin implements IRelat ItemFactory itemFactory = new ItemFactory(plugin, blockRestore, _condition, damageManager, energy, fire, _projectileManager, webServerAddress, itemIgnore); SkillFactory skillManager = new SkillFactory(plugin, damageManager, this, _combatManager, _condition, _projectileManager, disguiseManager, blockRestore, fire, new Movement(plugin), teleport, energy, webServerAddress); skillManager.RemoveSkill("Dwarf Toss", "Block Toss"); + skillManager.removeSkill("Whirlwind Axe"); _classManager = new ClassManager(plugin, _clientManager, donationManager, skillManager, itemFactory, webServerAddress); StatsManager statsManager = new StatsManager(plugin, _clientManager); @@ -249,6 +250,12 @@ public class ClansManager extends MiniClientPlugin implements IRelat return x <= FIELD_RADIUS && z <= FIELD_RADIUS; } + public boolean canUnclaimChunk(ClanInfo stealer, ClanInfo owner) + { + return owner.getClaims() > owner.getClaimsMax() + && !owner.isAdmin() && !owner.isAlly(stealer); + } + public ClanInfo getClan(Player player) { return _clanMemberMap.get(player.getName()); diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java index dc78f331e..1bd247212 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/commands/ClansCommand.java @@ -703,6 +703,12 @@ public class ClansCommand extends CommandBase UtilPlayer.message(caller, F.main("Clans", F.elem("Clan " + cB.getName()) + " cannot have any more allies.")); return; } + + if (cA.isEnemy(cB.getName())) + { + UtilPlayer.message(caller, F.main("Clans", "You cannot form an alliance with an enemy clan.")); + return; + } if (cB.isRequested(cA.getName())) { @@ -806,16 +812,16 @@ public class ClansCommand extends CommandBase if (cB.isSelf(cA.getName())) { UtilPlayer.message(caller, F.main("Clans", "You prefer to think of yourself positively...")); - return; } - - if (cB.isNeutral(cA.getName())) + else if (cB.isEnemy(cA.getName())) + { + UtilPlayer.message(caller, F.main("Clans", "You are currently enemies with " + F.elem("Clan " + cB.getName()) + ".")); + } + else if (cB.isNeutral(cA.getName())) { UtilPlayer.message(caller, F.main("Clans", "You are already neutral with " + F.elem("Clan " + cB.getName()) + ".")); - return; } - - if (cB.isAlly(cA.getName())) + else if (cB.isAlly(cA.getName())) { //Task Plugin.getClanDataAccess().neutral(cA, cB, caller.getName(), true); @@ -824,8 +830,6 @@ public class ClansCommand extends CommandBase UtilPlayer.message(caller, F.main("Clans", "You revoked alliance with " + F.elem("Clan " + cB.getName()) + ".")); cA.inform(F.name(caller.getName()) + " revoked alliance with " + F.elem("Clan " + cB.getName()) + ".", caller.getName()); cB.inform(F.elem("Clan " + cA.getName()) + " has revoked alliance with you.", null); - - return; } } @@ -1043,11 +1047,7 @@ public class ClansCommand extends CommandBase public boolean unclaimSteal(Player caller, ClanInfo clientClan, ClanInfo ownerClan) { - if (ownerClan.getClaims() > ownerClan.getClaimsMax()) - { - //Nothing Extra - } - else + if (!_manager.canUnclaimChunk(clientClan, ownerClan)) { return false; } diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java index d15574122..e3b90efd3 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/economy/GoldManager.java @@ -180,8 +180,7 @@ public class GoldManager extends MiniPlugin public void deductGold(Callback resultCallback, Player player, int amount) { - _donationManager.RewardGoldLater("GoldManager", player, -amount); - _donationManager.updateGoldQueue(resultCallback, player); + _donationManager.rewardGold(resultCallback, "GoldManager", player, -amount); } public void cashIn(Player player, GoldToken token) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/gameplay/Gameplay.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/gameplay/Gameplay.java index 8e4439376..0e13253bc 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/gameplay/Gameplay.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/gameplay/Gameplay.java @@ -20,6 +20,8 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.game.clans.clans.ClansManager; +import mineplex.game.clans.items.generation.Weight; +import mineplex.game.clans.items.generation.WeightSet; import org.bukkit.ChatColor; import org.bukkit.Effect; @@ -28,9 +30,11 @@ import org.bukkit.Sound; import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockDamageEvent; @@ -39,6 +43,8 @@ import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerInteractEvent; @@ -50,6 +56,7 @@ public class Gameplay extends MiniPlugin private ClansManager _clansManager; private BlockRestore _blockRestore; private DamageManager _damageManager; + private WeightSet _foodDecrease; // Weighted probability sets for food decrease event outcomes private HashMap _bucketWater = new HashMap(); @@ -60,6 +67,7 @@ public class Gameplay extends MiniPlugin _clansManager = clansManager; _blockRestore = blockRestore; _damageManager = damageManager; + _foodDecrease = new WeightSet(new Weight(50, true), new Weight(50, false)); } @EventHandler @@ -87,6 +95,21 @@ public class Gameplay extends MiniPlugin UtilInv.Update(event.getPlayer()); } + /** + * Decreases the hunger rate decrease speed by arbitrarily canceling a portion of decrease events. + * @param event + */ + @EventHandler(ignoreCancelled=true) + public void foodChangeLevel(FoodLevelChangeEvent event) + { + Player player = (Player) event.getEntity(); + + if (event.getFoodLevel() < player.getFoodLevel()) // Hunger is decreasing for player + { + event.setCancelled(_foodDecrease.generateRandom()); + } + } + @EventHandler public void BucketFill(PlayerBucketFillEvent event) { @@ -211,6 +234,37 @@ public class Gameplay extends MiniPlugin event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation().add(0.5, 0.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.ENDER_CHEST)); } + @EventHandler + public void disableEnderPearls(PlayerInteractEvent event) + { + if (!isRightClick(event.getAction())) + return; + + if (event.hasItem() && event.getItem().getType() == Material.ENDER_PEARL) + { + event.setCancelled(true); + UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot use ender pearls!")); + } + } + + @EventHandler + public void disableFlintNSteel(PlayerInteractEvent event) + { + if (!isRightClick(event.getAction())) + return; + + if (event.hasItem() && event.getItem().getType() == Material.FLINT_AND_STEEL) + { + event.setCancelled(true); + UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot use flint & steel!")); + } + } + + private static boolean isRightClick(Action action) + { + return action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK; + } + @EventHandler public void IronDoor(PlayerInteractEvent event) { @@ -417,6 +471,19 @@ public class Gameplay extends MiniPlugin event.SetCancelled("Spawn Fall"); } + /** + * Cancel the spawning of all Witches. + * @param event + */ + @EventHandler + public void cancelWitchSpawns(EntitySpawnEvent event) + { + if (event.getEntityType() == EntityType.WITCH) + { + event.setCancelled(true); + } + } + @EventHandler public void Repair(PlayerInteractEvent event) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/AlligatorsTooth.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/AlligatorsTooth.java index 28670c413..8926bb09c 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/AlligatorsTooth.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/items/legendaries/AlligatorsTooth.java @@ -33,7 +33,7 @@ public class AlligatorsTooth extends LegendaryItem if (isInWater(wielder)) { // Player gain water breathing while under water with legendary equipped - grantPotionEffect(wielder, PotionEffectType.WATER_BREATHING, 0, 20); + grantPotionEffect(wielder, PotionEffectType.WATER_BREATHING, 0, 50); if (isHoldingRightClick()) { diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/BankPage.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/BankPage.java index 45ec9a154..5e00d6962 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/BankPage.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/BankPage.java @@ -87,7 +87,7 @@ public class BankPage extends ShopPageBase private void buildTransferGemsCooldown() { - StoreGoldButton button = new StoreGoldButton(this); + DisplayButton button = new DisplayButton(); String title = ChatColor.RED + C.Bold + "Conversion Cooldown!"; String purchaseString = ChatColor.RESET + C.cWhite + "You have already converted gems into coins today"; ShopItem shopItem = new ShopItem(Material.REDSTONE_BLOCK, title, new String[] {" ", purchaseString, " "}, 0, true, true); @@ -112,7 +112,7 @@ public class BankPage extends ShopPageBase int playerGold = getPlayerGold(); int goldCost = TOKEN_VALUE; - StoreGoldButton button = new StoreGoldButton(this); + DisplayButton button = new DisplayButton(); String title = ChatColor.RED + C.Bold + "Missing Gold!"; String playerGoldString = ChatColor.RESET + F.value("Your Gold", playerGold + "g"); String purchaseString = ChatColor.RESET + C.cWhite + "You don't have enough gold"; diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/DisplayButton.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/DisplayButton.java new file mode 100644 index 000000000..f2e04bb5e --- /dev/null +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/shop/bank/DisplayButton.java @@ -0,0 +1,24 @@ +package mineplex.game.clans.shop.bank; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.shop.item.IButton; +import mineplex.game.clans.economy.GoldManager; + +public class DisplayButton implements IButton +{ + + public DisplayButton() + { + + } + + @Override + public void onClick(Player player, ClickType clickType) + { + // Display button doesn't activate any on click events + } + +} diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/spawn/Spawn.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/spawn/Spawn.java index 1e9d7892b..5b3417ccd 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/spawn/Spawn.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/spawn/Spawn.java @@ -6,6 +6,7 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Entity; +import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.block.BlockBreakEvent; @@ -14,6 +15,7 @@ import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.plugin.java.JavaPlugin; @@ -51,6 +53,22 @@ public class Spawn extends MiniPlugin } } + /** + * Prevent {@link ItemFrame}s from being broken inside Spawn. + * @param event + */ + @EventHandler + public void onItemFrameDestroyed(HangingBreakByEntityEvent event) + { + if (event.getEntity() instanceof ItemFrame) + { + if (isInSpawn(event.getEntity().getLocation())) + { + event.setCancelled(true); + } + } + } + @EventHandler public void onRespawn(PlayerRespawnEvent event) { @@ -78,7 +96,7 @@ public class Spawn extends MiniPlugin @EventHandler public void onEntityTarget(EntityTargetEvent event) { - if (isInSpawn(event.getTarget().getLocation())) + if (event.getTarget() != null && isInSpawn(event.getTarget().getLocation())) { event.setCancelled(true); } diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Brute.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Brute.java index 573fa3ff8..63a98526a 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Brute.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Brute/Brute.java @@ -10,8 +10,9 @@ import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; +import mineplex.minecraft.game.classcombat.Skill.Global.BowDeficiencySkill; -public class Brute extends Skill +public class Brute extends BowDeficiencySkill { public Brute(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels) { @@ -43,25 +44,10 @@ public class Brute extends Skill event.SetBrute(); } - @EventHandler - public void BowShoot(EntityShootBowEvent event) - { - if (getLevel(event.getEntity()) == 0) - return; - - event.getProjectile().setVelocity(event.getProjectile().getVelocity().multiply(0.75)); - } - @EventHandler public void CancelEnergy(EnergyEvent event) { if (getLevel(event.GetPlayer()) > 0) event.setCancelled(true); } - - @Override - public void Reset(Player player) - { - - } } diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/BowDeficiencySkill.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/BowDeficiencySkill.java new file mode 100644 index 000000000..9f5978423 --- /dev/null +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Global/BowDeficiencySkill.java @@ -0,0 +1,57 @@ +package mineplex.minecraft.game.classcombat.Skill.Global; + +import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; +import mineplex.minecraft.game.classcombat.Skill.Skill; +import mineplex.minecraft.game.classcombat.Skill.SkillFactory; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityShootBowEvent; + +/** + * The BowDeficiencySkill provides a reduction in overall arrow velocity and damage to owners. + * @author MrTwiggy + * + */ +public class BowDeficiencySkill extends Skill +{ + + public BowDeficiencySkill(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int maxLevel) + { + super(skills, name, classType, skillType, cost, maxLevel); + } + + /** + * Reduce outgoing arrow velocity by bow deficiency owners. + * @param event + */ + @EventHandler + public void BowShoot(EntityShootBowEvent event) + { + if (getLevel(event.getEntity()) == 0) + return; + + event.getProjectile().setVelocity(event.getProjectile().getVelocity().multiply(0.75)); + } + + /** + * Reduce damage output of arrows shot by bow deficiency owners. + * @param event + */ + @EventHandler + public void onArrowDamage(CustomDamageEvent event) + { + // Check to see if arrow was shot by owner of this Skill. + if (event.GetProjectile() == null || getLevel(event.GetDamagerEntity(true)) == 0) + return; + + event.AddMod("BowDeficiencySkill", -2.0d); + } + + @Override + public void Reset(Player player) + { + + } +} diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/Knight.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/Knight.java index eff3aec2f..d837b2732 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/Knight.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Knight/Knight.java @@ -8,8 +8,9 @@ import mineplex.core.energy.event.EnergyEvent; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; +import mineplex.minecraft.game.classcombat.Skill.Global.BowDeficiencySkill; -public class Knight extends Skill +public class Knight extends BowDeficiencySkill { public Knight(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels) { @@ -20,15 +21,6 @@ public class Knight extends Skill "25% reduction in Arrow Velocity." }); } - - @EventHandler - public void BowShoot(EntityShootBowEvent event) - { - if (getLevel(event.getEntity()) == 0) - return; - - event.getProjectile().setVelocity(event.getProjectile().getVelocity().multiply(0.75)); - } @EventHandler public void CancelEnergy(EnergyEvent event) @@ -36,10 +28,4 @@ public class Knight extends Skill if (getLevel(event.GetPlayer()) > 0) event.setCancelled(true); } - - @Override - public void Reset(Player player) - { - - } } diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Mage.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Mage.java index 38c119541..96afcc79a 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Mage.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/Mage/Mage.java @@ -1,14 +1,20 @@ package mineplex.minecraft.game.classcombat.Skill.Mage; +import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.metadata.MetadataValue; import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType; import mineplex.minecraft.game.classcombat.Skill.Skill; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; +import mineplex.minecraft.game.classcombat.Skill.Global.BowDeficiencySkill; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; -public class Mage extends Skill +public class Mage extends BowDeficiencySkill { public Mage(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels) { @@ -20,18 +26,5 @@ public class Mage extends Skill }); } - @EventHandler - public void BowShoot(EntityShootBowEvent event) - { - if (getLevel(event.getEntity()) == 0) - return; - - event.getProjectile().setVelocity(event.getProjectile().getVelocity().multiply(0.75)); - } - - @Override - public void Reset(Player player) - { - - } + } diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java index 1e24bc023..b215765e1 100644 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java +++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Skill/SkillFactory.java @@ -40,6 +40,7 @@ import org.bukkit.plugin.java.JavaPlugin; public class SkillFactory extends MiniPlugin implements ISkillFactory { + private DamageManager _damageManager; private IRelation _relation; private CombatManager _combatManager; @@ -581,6 +582,11 @@ public class SkillFactory extends MiniPlugin implements ISkillFactory System.out.println("Skill Factory: Removed " + remove.GetName() + " from SkillMap."); } + + public void removeSkill(String skillName) + { + RemoveSkill(skillName, null); + } @Override public List GetGlobalSkillsFor(IPvpClass gameClass) diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/redis/RedisConfig.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/redis/RedisConfig.java index cd841fc6f..913db74ef 100644 --- a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/redis/RedisConfig.java +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/redis/RedisConfig.java @@ -16,7 +16,7 @@ public class RedisConfig // The connections managed by this configuration private List _connections; - + /** * Class constructor * @param connections