Skip to content

Commit

Permalink
Change the damage display stuff to use NBT instead of the internal da…
Browse files Browse the repository at this point in the history
…mage stuff, so we can make setItemDamage compatible with the NBT durability we use.
  • Loading branch information
bonii-xx committed Sep 20, 2014
1 parent 61e2f1a commit 2526124
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 13 deletions.
14 changes: 8 additions & 6 deletions src/main/java/tconstruct/library/tools/AbilityHelper.java
Expand Up @@ -347,14 +347,14 @@ public static void damageTool (ItemStack stack, int dam, NBTTagCompound tags, En
if (damageTrue <= 0)
{
tags.getCompoundTag("InfiTool").setInteger("Damage", 0);
stack.setItemDamage(0);
//stack.setItemDamage(0);
tags.getCompoundTag("InfiTool").setBoolean("Broken", false);
}

else if (damageTrue > maxDamage)
{
breakTool(stack, tags, entity);
stack.setItemDamage(0);
//stack.setItemDamage(0);
}

else
Expand All @@ -364,7 +364,7 @@ else if (damageTrue > maxDamage)
int stackDamage = stack.getItemDamage();
if (toolDamage != stackDamage)
{
stack.setItemDamage((damage * 100 / maxDamage) + 1);
//stack.setItemDamage((damage * 100 / maxDamage) + 1);
}
}
}
Expand Down Expand Up @@ -425,7 +425,7 @@ public static boolean damageEnergyTool (ItemStack stack, NBTTagCompound tags, En
energy -= trueSpeed * 2;
tags.setInteger("Energy", energy);

stack.setItemDamage(1 + (tool.getMaxEnergyStored(stack) - energy) * (stack.getMaxDamage() - 1) / tool.getMaxEnergyStored(stack));
//stack.setItemDamage(1 + (tool.getMaxEnergyStored(stack) - energy) * (stack.getMaxDamage() - 1) / tool.getMaxEnergyStored(stack));
}
return true;
}
Expand Down Expand Up @@ -521,7 +521,8 @@ public static boolean hoeGround (ItemStack stack, EntityPlayer player, World wor

if (event.getResult() == Result.ALLOW)
{
damageTool(stack, 1, player, false);
stack.damageItem(1, player);
//damageTool(stack, 1, player, false);
return true;
}

Expand All @@ -539,7 +540,8 @@ public static boolean hoeGround (ItemStack stack, EntityPlayer player, World wor
else
{
world.setBlock(x, y, z, block1);
damageTool(stack, 1, player, false);
stack.damageItem(1, player);
//damageTool(stack, 1, player, false);
return true;
}
}
Expand Down
30 changes: 24 additions & 6 deletions src/main/java/tconstruct/library/tools/ToolCore.java
Expand Up @@ -729,7 +729,14 @@ public boolean hasEffect (ItemStack par1ItemStack, int pass)
}

/* Proper stack damage */
public int getItemMaxDamageFromStack (ItemStack stack)
@Override
public boolean showDurabilityBar(ItemStack stack) {
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
return !tags.getBoolean("Broken") && getDamage(stack) > 0;
}

@Override
public int getMaxDamage (ItemStack stack)
{
NBTTagCompound tags = stack.getTagCompound();
if (tags == null)
Expand All @@ -745,8 +752,8 @@ public int getItemMaxDamageFromStack (ItemStack stack)
return tags.getCompoundTag("InfiTool").getInteger("TotalDurability");
}

public int getItemDamageFromStackForDisplay (ItemStack stack)
{
@Override
public int getDamage(ItemStack stack) {
NBTTagCompound tags = stack.getTagCompound();
if (tags == null)
{
Expand All @@ -755,12 +762,23 @@ public int getItemDamageFromStackForDisplay (ItemStack stack)
if (tags.hasKey("Energy"))
{
int energy = tags.getInteger("Energy");
if (energy > 0)
if(energy > 0)
return getMaxEnergyStored(stack) - energy;
}
return tags.getCompoundTag("InfiTool").getInteger("Damage");
}

@Override
public int getDisplayDamage(ItemStack stack) {
return getDamage(stack);
}


@Override
public void setDamage(ItemStack stack, int damage) {
AbilityHelper.damageTool(stack, damage - stack.getItemDamage(), null, false);
}

/* Prevent tools from dying */
public boolean hasCustomEntity (ItemStack stack)
{
Expand Down Expand Up @@ -797,7 +815,7 @@ public int receiveEnergy (ItemStack container, int maxReceive, boolean simulate)
{
energy += energyReceived;
tags.setInteger("Energy", energy);
container.setItemDamage(1 + (getMaxEnergyStored(container) - energy) * (container.getMaxDamage() - 2) / getMaxEnergyStored(container));
//container.setItemDamage(1 + (getMaxEnergyStored(container) - energy) * (container.getMaxDamage() - 2) / getMaxEnergyStored(container));
}
return energyReceived;
}
Expand All @@ -820,7 +838,7 @@ public int extractEnergy (ItemStack container, int maxExtract, boolean simulate)
{
energy -= energyExtracted;
tags.setInteger("Energy", energy);
container.setItemDamage(1 + (getMaxEnergyStored(container) - energy) * (container.getMaxDamage() - 1) / getMaxEnergyStored(container));
//container.setItemDamage(1 + (getMaxEnergyStored(container) - energy) * (container.getMaxDamage() - 1) / getMaxEnergyStored(container));
}
return energyExtracted;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/tconstruct/modifiers/tools/ModFlux.java
Expand Up @@ -140,6 +140,6 @@ public void modify (ItemStack[] input, ItemStack tool)

tags.setInteger(key, 1);
ToolCore toolcore = (ToolCore) tool.getItem();
tool.setItemDamage(1 + (toolcore.getMaxEnergyStored(tool) - charge) * (tool.getMaxDamage() - 1) / toolcore.getMaxEnergyStored(tool));
//tool.setItemDamage(1 + (toolcore.getMaxEnergyStored(tool) - charge) * (tool.getMaxDamage() - 1) / toolcore.getMaxEnergyStored(tool));
}
}

0 comments on commit 2526124

Please sign in to comment.