/* * @Return: True if they have an ability matching the held item. False if * they do not have any abilities matching held item */ public boolean useAbility(Player sender, Player target) { // check if they're holding anything if (sender.getItemInHand() == null) { return false; } ItemStack i = sender.getItemInHand(); // sees if they are fightclassed FightClass f = FightClass.get(sender); // goes through each ability, seeeing if any of the MID's match the // lore of the item for (Ability a : f.getAbilities()) { if (i.getItemMeta().hasLore() && i.getItemMeta().getLore().get(0).equalsIgnoreCase(a.getMID())) { // check if cost is able to be paid, and pay it if (a.useCost(sender)) { if (!sender.equals(target)) { a.effect(sender, target); } } else { // nothing } return true; } } return false; }
public static void initiateClass(Player sender, FightClass fightclass) { // give items for (ItemStack is : fightclass.getItems()) { sender.getInventory().addItem(is); } // give abilities (activated by these items) for (Ability a : fightclass.getAbilities()) { sender.getInventory().addItem(a.getItem()); } }
/* * Return: True if they have an ability matching the held item. False if * they do not have any abilities matching held item */ public boolean useAbility(Player sender, Block b) { // check if they're holding anything if (sender.getItemInHand() == null) { return false; } ItemStack i = sender.getItemInHand(); // sees if they are fightclassed FightClass f = FightClass.get(sender); // goes through each ability, seeeing if any of the MID's match the // lore of the item for (Ability a : f.getAbilities()) { if (i.getItemMeta().hasLore() && i.getItemMeta().getLore().get(0).equalsIgnoreCase(a.getMID())) { // check if cost is able to be paid, and pay it if (a.useCost(sender)) { // check to see if there is a target Player target = null; boolean s = true; Location l = sender.getLocation(); /* * loop through nearby entites to positions x blocks in the * direction the player is looking, starting at 0 and ending * at a.getRange() */ for (int x = 2; x < a.getRange() && (s); x++) { Location lt = l; Collection<Entity> et = lt.getWorld().getNearbyEntities(lt.add(lt.getDirection().multiply(x)), 2, 2, 2); if (!et.isEmpty()) { for (Entity entity : et) { if (entity instanceof Player) { if (!(((Player) entity).equals(sender))) { target = (Player) entity; s = false; } } } } } // see if target got set to anything if (target != null) { a.effect(sender, target); } else { if (a instanceof BlockTargettingAbility) { if (b != null && !b.getType().equals(Material.AIR)) { ((BlockTargettingAbility) a).effect(sender, b); } else { // nothing, needs a block for target it // BlockTargettingAbility } } a.effect(sender); } } else { // nothing } return true; } } return false; }