@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 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); } }
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);
ItemStack out = left.copy(); EnchantmentHelper.setEnchantments(currentEnchants, out); String name = event.getName(); int cost = applyTomeCost; if(name != null && !name.isEmpty()){