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 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); }
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(); 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 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); } } }
cost++; event.setOutput(out); event.setCost(cost); } else {
@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 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); } }
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; } } }
@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()); } }
if (event.getName() != null) output.setStackDisplayName(event.getName()); event.setOutput(output); 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));
@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; } } }
@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())); }