List of usage examples for net.minecraftforge.event AnvilUpdateEvent getLeft
@Nonnull
public ItemStack getLeft()
From source file:vazkii.quark.misc.feature.AncientTomes.java
License:Creative Commons License
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight();/* ww w . j a v a 2 s . c o m*/ if (!left.isEmpty() && !right.isEmpty()) { if (left.getItem() == Items.ENCHANTED_BOOK && right.getItem() == ancient_tome) handleTome(left, right, event); else if (right.getItem() == Items.ENCHANTED_BOOK && left.getItem() == ancient_tome) handleTome(right, left, event); else if (right.getItem() == Items.ENCHANTED_BOOK) { Map<Enchantment, Integer> enchants = EnchantmentHelper.getEnchantments(right); Map<Enchantment, Integer> currentEnchants = EnchantmentHelper.getEnchantments(left); boolean hasOverLevel = false; boolean hasMatching = false; for (Map.Entry<Enchantment, Integer> entry : enchants.entrySet()) { Enchantment ench = entry.getKey(); if (ench == null) continue; int level = entry.getValue(); if (level > ench.getMaxLevel()) { hasOverLevel = true; if (ench.canApply(left)) { hasMatching = true; //remove incompatible enchantments for (Iterator<Enchantment> iterator = currentEnchants.keySet().iterator(); iterator .hasNext();) { Enchantment enchCompare = iterator.next(); if (enchCompare == ench) continue; if (!enchCompare.isCompatibleWith(ench)) { iterator.remove(); } } currentEnchants.put(ench, level); } } else if (ench.canApply(left)) { boolean compatible = true; //don't apply incompatible enchantments for (Enchantment enchCompare : currentEnchants.keySet()) { if (enchCompare == ench) continue; if (enchCompare != null && !enchCompare.isCompatibleWith(ench)) { compatible = false; break; } } if (compatible) { currentEnchants.put(ench, level); } } } if (hasOverLevel) { if (hasMatching) { ItemStack out = left.copy(); EnchantmentHelper.setEnchantments(currentEnchants, out); String name = event.getName(); int cost = applyTomeCost; if (name != null && !name.isEmpty()) { out.setStackDisplayName(name); cost++; } event.setOutput(out); event.setCost(cost); } else { event.setCanceled(true); } } } } }
From source file:vazkii.quark.misc.feature.ColorRunes.java
License:Creative Commons License
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight();/*from ww w . jav a 2 s . com*/ if (!left.isEmpty() && !right.isEmpty() && left.isItemEnchanted() && right.getItem() == rune) { ItemStack out = left.copy(); ItemNBTHelper.setBoolean(out, TAG_RUNE_ATTACHED, true); ItemNBTHelper.setInt(out, TAG_RUNE_COLOR, right.getItemDamage()); event.setOutput(out); event.setCost(applyCost); } }
From source file:vazkii.quark.world.feature.AncientTomes.java
License:Creative Commons License
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight();/*from w ww .j ava 2 s . com*/ if (left != null && right != null) { if (left.getItem() == Items.ENCHANTED_BOOK && right.getItem() == ancient_tome) handleTome(left, right, event); else if (right.getItem() == Items.ENCHANTED_BOOK && left.getItem() == ancient_tome) handleTome(right, left, event); else if (right.getItem() == Items.ENCHANTED_BOOK) { Map<Enchantment, Integer> enchants = EnchantmentHelper.getEnchantments(right); if (enchants.size() == 1) { Enchantment ench = enchants.keySet().iterator().next(); int level = enchants.get(ench); if (level > ench.getMaxLevel() && ench.canApply(left)) { ItemStack out = left.copy(); Map<Enchantment, Integer> currentEnchants = EnchantmentHelper.getEnchantments(out); currentEnchants.put(ench, level); EnchantmentHelper.setEnchantments(currentEnchants, out); event.setOutput(out); event.setCost(35); } } } } }
From source file:vazkii.quark.world.feature.ColorRunes.java
License:Creative Commons License
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight();//from www. ja v a 2 s . c o m if (left != null && right != null && left.isItemEnchanted() && right.getItem() == rune) { ItemStack out = left.copy(); ItemNBTHelper.setBoolean(out, TAG_RUNE_ATTACHED, true); ItemNBTHelper.setInt(out, TAG_RUNE_COLOR, right.getItemDamage()); event.setOutput(out); event.setCost(15); } }