@Nullable public static Integer getSP(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; String spNode = InventoryUtils.getMetaString(item, "sp"); if (spNode == null) return null; Integer sp = null; try { sp = Integer.parseInt(spNode); } catch (Exception ex) { sp = null; } return sp; }
@Nullable public static String getSpell(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object spellNode = InventoryUtils.getNode(item, "spell"); if (spellNode == null) return null; return InventoryUtils.getMetaString(spellNode, "key"); }
@Nullable public static String getBrush(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object brushNode = InventoryUtils.getNode(item, "brush"); if (brushNode == null) return null; return InventoryUtils.getMetaString(brushNode, "key"); }
@Nullable public static String getWandId(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object wandNode = InventoryUtils.getNode(item, WAND_KEY); if (wandNode == null) return null; return InventoryUtils.getMetaString(wandNode, "id"); }
@Nullable public static String getSpellArgs(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object spellNode = InventoryUtils.getNode(item, "spell"); if (spellNode == null) return null; return InventoryUtils.getMetaString(spellNode, "args"); }
@Nullable public static String getSpellClass(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object spellNode = InventoryUtils.getNode(item, "spell"); if (spellNode == null) return null; return InventoryUtils.getMetaString(spellNode, "class"); }
@Nullable public static Double getCurrencyAmount(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object currencyNode = InventoryUtils.getNode(item, "currency"); if (currencyNode == null) return null; return InventoryUtils.getMetaDouble(currencyNode, "amount"); }
@Nullable public static String getCurrencyType(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object currencyNode = InventoryUtils.getNode(item, "currency"); if (currencyNode == null) return null; return InventoryUtils.getMetaString(currencyNode, "type"); }
@Nullable protected static Object getWandOrUpgradeNode(ItemStack item) { if (InventoryUtils.isEmpty(item)) return null; Object wandNode = InventoryUtils.getNode(item, WAND_KEY); if (wandNode == null) { wandNode = InventoryUtils.getNode(item, UPGRADE_KEY); } return wandNode; }
public static boolean isQuickCastSkill(ItemStack item) { if (InventoryUtils.isEmpty(item)) return false; Object spellNode = InventoryUtils.getNode(item, "spell"); if (spellNode == null) return false; Boolean quickCast = InventoryUtils.containsNode(spellNode, "quick_cast") ? InventoryUtils.getMetaBoolean(spellNode, "quick_cast") : null; return quickCast == null ? true : quickCast; }
@Nullable @Override public Object getWandProperty(ItemStack item, String key) { Preconditions.checkNotNull(key, "key"); if (InventoryUtils.isEmpty(item)) return null; Object wandNode = InventoryUtils.getNode(item, Wand.WAND_KEY); if (wandNode == null) return null; Object value = InventoryUtils.getMetaObject(wandNode, key); if (value == null) { WandTemplate template = getWandTemplate(InventoryUtils.getMetaString(wandNode, "template")); if (template != null) { value = template.getProperty(key); } } return value; }
@Override public <T> T getWandProperty(ItemStack item, String key, T defaultValue) { Preconditions.checkNotNull(key, "key"); Preconditions.checkNotNull(defaultValue, "defaultValue"); if (InventoryUtils.isEmpty(item)) { return defaultValue; } Object wandNode = InventoryUtils.getNode(item, Wand.WAND_KEY); if (wandNode == null) { return defaultValue; } // Obtain the type via the default value. // (This is unchecked because of type erasure) @SuppressWarnings("unchecked") Class<? extends T> clazz = (Class<? extends T>) defaultValue.getClass(); // Value directly stored on wand Object value = InventoryUtils.getMetaObject(wandNode, key); if (value != null) { if (clazz.isInstance(value)) { return clazz.cast(value); } return defaultValue; } String tplName = InventoryUtils.getMetaString(wandNode, "template"); WandTemplate template = getWandTemplate(tplName); if (template != null) { return template.getProperty(key, defaultValue); } return defaultValue; }
@Override public void giveItem(ItemStack itemStack, boolean putInHand) { if (putInHand) { giveItem(itemStack); } else { Player player = getPlayer(); if (player == null) return; PlayerInventory inventory = player.getInventory(); ItemStack inHand = inventory.getItemInMainHand(); Integer freeSlot = null; if (InventoryUtils.isEmpty(inHand)) { for (int i = 0; i < inventory.getSize() && freeSlot == null; i++) { if (i != inventory.getHeldItemSlot() && InventoryUtils.isEmpty(inventory.getItem(i))) { freeSlot = i; } } } if (freeSlot == null) { giveItem(itemStack); } else { inventory.setItem(freeSlot, itemStack); } } }
if (InventoryUtils.isEmpty(skullItem)) { player.sendMessage(api.getMessages().get("item.skull_invalid_book")); return true;
private void returnItem() { if (targetMage == null || stashedItem == null) return; Player player = targetMage.getPlayer(); if (player == null) return; boolean gave = false; Wand activeWand = targetMage.getActiveWand(); if (activeWand != null && activeWand.isInventoryOpen()) { gave = targetMage.addToStoredInventory(stashedItem); } else { if (isOffhand) { ItemStack existing = player.getInventory().getItemInOffHand(); if (InventoryUtils.isEmpty(existing)) { player.getInventory().setItemInOffHand(stashedItem); gave = true; } } else { ItemStack existing = player.getInventory().getItem(slotNumber); if (InventoryUtils.isEmpty(existing)) { player.getInventory().setItem(slotNumber, stashedItem); gave = true; } } } if (!gave) { targetMage.giveItem(stashedItem); } targetMage.checkWand(); stashedItem = null; targetMage = null; }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onPlayerInteractArmorStand(PlayerArmorStandManipulateEvent event) { Player player = event.getPlayer(); Mage mage = controller.getRegisteredMage(player); if (mage == null) return; com.elmakers.mine.bukkit.api.wand.Wand wand = mage.checkWand(); if (wand != null) { if (wand.isUndroppable()) { event.setCancelled(true); return; } else { wand.deactivate(); } } else { ItemStack mainHand = player.getInventory().getItemInMainHand(); ItemStack offhand = player.getInventory().getItemInOffHand(); if (InventoryUtils.getMetaBoolean(mainHand, "undroppable", false) || (InventoryUtils.isEmpty(mainHand) && InventoryUtils.getMetaBoolean(offhand, "undroppable", false))) { event.setCancelled(true); return; } } }
@Override public void giveItem(ItemStack itemStack) { if (InventoryUtils.isEmpty(itemStack)) return;
ItemStack offhand = player.getInventory().getItemInOffHand(); if (InventoryUtils.getMetaBoolean(mainHand, "undroppable", false) || (InventoryUtils.isEmpty(mainHand) && InventoryUtils.getMetaBoolean(offhand, "undroppable", false))) { event.setCancelled(true); return;
if (InventoryUtils.isEmpty(activeItem))