@SubscribeEvent public void onAnvilUpdate (AnvilUpdateEvent event) { for (final IAnvilRecipe recipe : BookshelfRegistry.getAnvilRecipes()) { if (recipe.isValidRecipe(event.getLeft(), event.getRight(), event.getName())) { event.setCost(recipe.getExperienceCost(event.getLeft(), event.getRight(), event.getName())); event.setMaterialCost(recipe.getMaterialCost(event.getLeft(), event.getRight(), event.getName())); event.setOutput(recipe.getOutput(event.getLeft(), event.getRight(), event.getName())); return; } } }
private boolean onAnvilChange(@Nonnull ItemStack inputItem, @Nonnull ItemStack modifierItem, String itemName, int baseCost) { AnvilUpdateEvent e = new AnvilUpdateEvent(inputItem, modifierItem, itemName, baseCost); if (MinecraftForge.EVENT_BUS.post(e)) return false; if (!e.getOutput().isEmpty()) { this.outputStack = e.getOutput(); this.maximumCost = e.getCost(); this.materialCost = e.getMaterialCost(); return false; } return true; }
private void handleTome(ItemStack book, ItemStack tome, AnvilUpdateEvent event) { Map<Enchantment, Integer> enchantsBook = EnchantmentHelper.getEnchantments(book); Map<Enchantment, Integer> enchantsTome = EnchantmentHelper.getEnchantments(tome); for (Map.Entry<Enchantment, Integer> entry : enchantsTome.entrySet()) { if(enchantsBook.getOrDefault(entry.getKey(), 0).equals(entry.getValue())){ enchantsBook.put(entry.getKey(), entry.getValue() + 1); } else { return; } } ItemStack output = ProxyRegistry.newStack(Items.ENCHANTED_BOOK); for (Map.Entry<Enchantment, Integer> entry : enchantsBook.entrySet()) { ItemEnchantedBook.addEnchantment(output, new EnchantmentData(entry.getKey(), entry.getValue())); } event.setOutput(output); event.setCost(mergeTomeCost); }
private static boolean isRepair(AnvilUpdateEvent evt, @Nonnull IDarkSteelItem item) { if (item.isItemForRepair(evt.getRight())) { return true; } return false; }
@SubscribeEvent public static void handleAnvilEvent(AnvilUpdateEvent evt) { if (evt.getLeft().getItem() instanceof IDarkSteelItem) { if (isRepair(evt, (IDarkSteelItem) evt.getLeft().getItem())) { handleRepair(evt, (IDarkSteelItem) evt.getLeft().getItem()); } else { handleUpgrade(evt, (IDarkSteelItem) evt.getLeft().getItem()); } } }
@SubscribeEvent public void onAnvilRepair(AnvilUpdateEvent event) { if (!event.getLeft().isEmpty() && !event.getRight().isEmpty() && event.getLeft().getItem() == MatterOverdrive.ITEMS.portableDecomposer) { event.setOutput(event.getLeft().copy()); event.setMaterialCost(1); event.setCost(3); MatterOverdrive.ITEMS.portableDecomposer.addStackToList(event.getOutput(), event.getRight()); } }
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { if ((event.getLeft().getItem() instanceof GadgetGeneric) && (event.getRight().getItem() == Items.DIAMOND)) { event.setCost(3); event.setMaterialCost(1); ItemStack newItem = event.getLeft().copy(); newItem.setItemDamage(0); event.setOutput(newItem); } } }
@SubscribeEvent public static void onAnvil(AnvilUpdateEvent event) { ItemStack upgraded = tryUpgradeBackpack(event.getLeft(), event.getRight()); if (!upgraded.isEmpty()) { event.setOutput(upgraded); event.setCost(1); event.setMaterialCost(1); } else if (event.getRight().getItem() instanceof ItemShears) { ItemStack removed = tryRemoveUpgrade(event.getLeft()); if (!removed.isEmpty()) { event.setOutput(removed); event.setCost(1); event.setMaterialCost(0); } } }
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { if (event.getLeft() != null && event.getLeft().getItem() instanceof ItemErebusShield) { if (event.getRight() != null && event.getLeft().getItem().getIsRepairable(event.getLeft(), event.getRight())) { if (event.getLeft().getTagCompound() != null && event.getLeft().getTagCompound().hasKey("damage")) { int damage = event.getLeft().getTagCompound().getInteger("damage"); int repairPerItem = ((ItemErebusShield) event.getLeft().getItem()).getMaxDamage() / 3; if (damage == 0) { ItemStack output = event.getLeft().copy(); if (event.getName() != null) output.setStackDisplayName(event.getName()); event.setOutput(output); event.setCost((int) (event.getName() != null ? event.getName().length() * 0.25D : 0)); event.setMaterialCost(0); } else { int amount = (int) Math.ceil(((double) damage / (double) repairPerItem) + .5d); ItemStack output = event.getLeft().copy(); if (event.getName() != null) output.setStackDisplayName(event.getName()); if (output.getTagCompound() == null) output.setTagCompound(event.getLeft().getTagCompound()); output.getTagCompound().setInteger("damage", damage - repairPerItem * amount < 0 ? 0 : damage - repairPerItem * amount); event.setOutput(output); int lengthDifference = event.getName() != null ? event.getName().length() - event.getLeft().getDisplayName().length() : 0; event.setCost(amount + (int) (event.getName() != null ? lengthDifference * 0.25D : 0)); event.setMaterialCost(amount);
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight(); if (!left.isEmpty() && !right.isEmpty() && right.getItem() == Items.DYE) { ItemStack out = left.copy(); String name = event.getName(); if(!name.trim().isEmpty()) out.setStackDisplayName(name.trim()); ItemNBTHelper.setInt(out, TAG_DYE, right.getItemDamage()); event.setOutput(out); event.setCost(3); } }
@SubscribeEvent public void handleAnvilEvent(AnvilUpdateEvent evt) { if (Prep.isInvalid(evt.getLeft()) || evt.getLeft().getCount() != 1 || evt.getLeft().getItem() != block_powered_spawner.getItem()) { return; } if (Prep.isInvalid(evt.getRight()) || evt.getRight().getCount() != 1 || evt.getRight().getItem() != ModObject.itemBrokenSpawner.getItem()) { return; } CapturedMob spawnerType = CapturedMob.create(evt.getRight()); if (spawnerType == null || isBlackListed(spawnerType.getEntityName())) { return; } evt.setCost(SpawnerConfig.powerSpawnerAddSpawnerCost.get()); evt.setOutput(evt.getLeft().copy()); evt.getOutput().setTagCompound(spawnerType.toNbt(evt.getOutput().getTagCompound())); }
private static void handleUpgrade(AnvilUpdateEvent evt, @Nonnull IDarkSteelItem item) { for (IDarkSteelUpgrade upgrade : UpgradeRegistry.getUpgrades()) { if (upgrade.isUpgradeItem(evt.getRight()) && upgrade.canAddToItem(evt.getLeft(), item)) { ItemStack res = new ItemStack(evt.getLeft().getItem(), 1, evt.getLeft().getItemDamage()); final NBTTagCompound tagCompound = evt.getLeft().getTagCompound(); if (tagCompound != null) { res.setTagCompound(tagCompound.copy()); } upgrade.addToItem(res, item); evt.setOutput(res); evt.setCost(upgrade.getLevelCost()); return; } } }
private static void handleRepair(AnvilUpdateEvent evt, @Nonnull IDarkSteelItem item) { final ItemStack targetStack = evt.getLeft(); final ItemStack ingots = evt.getRight(); // repair event final int maxIngots = item.getIngotsRequiredForFullRepair(); int ingouts = ingots.getCount(); final int damage = targetStack.getItemDamage(); final int maxDamage = targetStack.getMaxDamage(); final double damPerc = (double) damage / maxDamage; int requiredIngots = (int) Math.ceil(damPerc * maxIngots); if (ingouts > requiredIngots) { ingouts = requiredIngots; } final int damageAddedPerIngot = (int) Math.ceil((double) maxDamage / maxIngots); final int totalDamageRemoved = damageAddedPerIngot * ingouts; final ItemStack resultStack = targetStack.copy(); resultStack.setItemDamage(Math.max(0, damage - totalDamageRemoved)); evt.setOutput(resultStack); evt.setCost(ingouts + (int) Math.ceil(getEnchantmentRepairCost(resultStack.copy()) / 2d)); evt.setMaterialCost(ingouts); }
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight(); 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); } }
public void onAnvilChange(AnvilUpdateEvent event) { if (Enchantment.getEnchantmentByLocation("sharpness").canApply(event.getLeft()) && !event.getRight().isEmpty() && event.getRight().getItem() == ModItems.WHETSTONE) { Map<Enchantment, Integer> currentEnchantments = EnchantmentHelper.getEnchantments(event.getLeft()); if (EnchantmentHelper.getEnchantmentLevel(Enchantment.getEnchantmentByLocation("sharpness"), event.getLeft()) >= event.getRight().getItemDamage()) return; currentEnchantments.replace(enchantID, event.getRight().getItemDamage()); event.setOutput(event.getLeft().copy()); EnchantmentHelper.setEnchantments(currentEnchantments, event.getOutput()); } else { event.setOutput(event.getLeft().copy()); event.getOutput().addEnchantment(Enchantment.getEnchantmentByLocation("sharpness"), event.getRight().getItemDamage()); event.setCost(5);
if (event.getLeft().getItem() == RegistrarBloodMagicItems.SIGIL_HOLDING) { if (event.getRight().getItem() == Items.NAME_TAG) { ItemStack output = event.getLeft().copy(); if (!output.hasTagCompound()) output.setTagCompound(new NBTTagCompound()); output.getTagCompound().setString(Constants.NBT.COLOR, event.getRight().getDisplayName()); event.setCost(1); event.setOutput(output); if (event.getRight().getItem() == Items.DYE) { EnumDyeColor dyeColor = ItemBanner.getBaseColor(event.getRight()); ItemStack output = event.getLeft().copy(); if (!output.hasTagCompound()) output.setTagCompound(new NBTTagCompound()); output.getTagCompound().setString(Constants.NBT.COLOR, String.valueOf(Utils.DYE_COLOR_VALUES.getOrDefault(dyeColor, 0))); event.setCost(1); event.setOutput(output); if (event.getLeft().getItem() == Items.BOOK && event.getRight().getItem() == Items.ELYTRA && !event.getRight().isItemDamaged()) { ItemStack output = new ItemStack(RegistrarBloodMagicItems.UPGRADE_TOME); output = NBTHelper.checkNBT(output); ItemHelper.LivingUpgrades.setKey(output, BloodMagic.MODID + ".upgrade.elytra"); ItemHelper.LivingUpgrades.setLevel(output, 1); event.setCost(30); event.setOutput(output);
@SubscribeEvent public static void handleAnvilEvent(AnvilUpdateEvent evt) { ItemStack left = evt.getLeft(); ItemStack right = evt.getRight(); evt.setOutput(stack); evt.setMaterialCost(stack.getCount()); evt.setCost((int) (baselevel * baselevel) * stack.getCount());
@SubscribeEvent public void onAnvilUpdate(AnvilUpdateEvent event) { ItemStack left = event.getLeft(); ItemStack right = event.getRight(); ItemStack out = left.copy(); EnchantmentHelper.setEnchantments(currentEnchants, out); String name = event.getName(); int cost = applyTomeCost; if(name != null && !name.isEmpty()){ cost++; event.setOutput(out); event.setCost(cost); } else { event.setCanceled(true);