Chisel Bug: Durability = Item Stack
Opened this issue ยท 0 comments
If you make a pure obsidian chisel (obsidian tool rod and obsidian head), the tool has a total of 56 durability. I didn't pay any attention to that at first, since I intended to make it unbreakable anyway...
However, I noticed that if you put in a full-stack (say cobblestone) and chisel it, you'll only get 56 back, not the 64 you should be.
I put a diamond on the chisel to confirm, I now get the 64 back I should be.
The issue lies here: https://github.com/KnightMiner/TinkersComplement/blob/master/src/main/java/knightminer/tcomplement/plugin/chisel/items/ItemChisel.java
@Optional.Method(modid="chisel")
@Override
public ItemStack craftItem(ItemStack chisel, ItemStack source, ItemStack target, EntityPlayer player) {
int toCraft = Math.min(source.getCount(), target.getMaxStackSize());
int damageLeft = chisel.getMaxDamage() - chisel.getItemDamage();
toCraft = Math.min(toCraft, damageLeft);
ToolHelper.damageTool(chisel, toCraft, player);
// add XP for chiseling, this will safely do nothing if tool leveling is not loaded
ToolLevelingPlugin.xpAdder.addXp(chisel, toCraft, player);
ItemStack res = target.copy();
source.shrink(toCraft);
res.setCount(toCraft);
return res;
}
Take the tool I made...
@Optional.Method(modid="chisel")
@Override
public ItemStack craftItem(ItemStack chisel, ItemStack source, ItemStack target, EntityPlayer player) {
int toCraft = Math.min(64,64);
int damageLeft = 54 - 0;
toCraft = Math.min(64,54);
ToolHelper.damageTool(chisel, 54, player);
// add XP for chiseling, this will safely do nothing if tool leveling is not loaded
ToolLevelingPlugin.xpAdder.addXp(chisel, toCraft, player);
ItemStack res = target.copy();
source.shrink(toCraft);
res.setCount(toCraft);
return res;
}
The issue becomes obvious. This is obviously a check to make sure it only crafts the correct amount that the tool can handle... That's a good check... however, it should be ignored if the tool is unbreakable (having 5 reinforcement modifiers).
Fix? Check if the tool is unbreakable, if so don't bother with the damage check, since it isn't needed.