Fixed the Hellfire Forge filling the Tartaric Gem with the incorrect Will from the Demon Aura, without actually adding to the gem
This commit is contained in:
parent
c34bd48aa5
commit
b8745e34ee
|
@ -26,7 +26,7 @@ public interface IDemonWillGem
|
|||
|
||||
int getMaxWill(EnumDemonWillType type, ItemStack willGemStack);
|
||||
|
||||
double drainWill(EnumDemonWillType type, ItemStack stack, double drainAmount);
|
||||
double drainWill(EnumDemonWillType type, ItemStack stack, double drainAmount, boolean doDrain);
|
||||
|
||||
double fillWill(EnumDemonWillType type, ItemStack stack, double fillAmount);
|
||||
double fillWill(EnumDemonWillType type, ItemStack stack, double fillAmount, boolean doFill);
|
||||
}
|
||||
|
|
|
@ -119,7 +119,7 @@ public class PlayerDemonWillHandler
|
|||
inventory[i] = null;
|
||||
} else if (stack.getItem() instanceof IDemonWillGem)
|
||||
{
|
||||
consumed += ((IDemonWillGem) stack.getItem()).drainWill(type, stack, amount - consumed);
|
||||
consumed += ((IDemonWillGem) stack.getItem()).drainWill(type, stack, amount - consumed, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ public class PlayerDemonWillHandler
|
|||
{
|
||||
if (stack != null && stack.getItem() instanceof IDemonWillGem)
|
||||
{
|
||||
remaining -= ((IDemonWillGem) stack.getItem()).fillWill(type, stack, remaining);
|
||||
remaining -= ((IDemonWillGem) stack.getItem()).fillWill(type, stack, remaining, true);
|
||||
if (remaining <= 0)
|
||||
break;
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ public class PlayerDemonWillHandler
|
|||
{
|
||||
if (stack != null && !stack.equals(ignored) && stack.getItem() instanceof IDemonWillGem)
|
||||
{
|
||||
remaining -= ((IDemonWillGem) stack.getItem()).fillWill(type, stack, remaining);
|
||||
remaining -= ((IDemonWillGem) stack.getItem()).fillWill(type, stack, remaining, true);
|
||||
|
||||
if (remaining <= 0)
|
||||
break;
|
||||
|
|
|
@ -57,7 +57,7 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I
|
|||
double drain = Math.min(this.getWill(type, stack), this.getMaxWill(type, stack) / 10);
|
||||
|
||||
double filled = PlayerDemonWillHandler.addDemonWill(type, player, drain, stack);
|
||||
this.drainWill(type, stack, filled);
|
||||
this.drainWill(type, stack, filled, true);
|
||||
|
||||
return new ActionResult<ItemStack>(EnumActionResult.PASS, stack);
|
||||
}
|
||||
|
@ -196,7 +196,7 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I
|
|||
}
|
||||
|
||||
@Override
|
||||
public double drainWill(EnumDemonWillType type, ItemStack soulGemStack, double drainAmount)
|
||||
public double drainWill(EnumDemonWillType type, ItemStack soulGemStack, double drainAmount, boolean doDrain)
|
||||
{
|
||||
EnumDemonWillType currentType = this.getCurrentType(soulGemStack);
|
||||
if (currentType != type)
|
||||
|
@ -206,7 +206,11 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I
|
|||
double souls = getWill(type, soulGemStack);
|
||||
|
||||
double soulsDrained = Math.min(drainAmount, souls);
|
||||
|
||||
if (!doDrain)
|
||||
{
|
||||
setWill(type, soulGemStack, souls - soulsDrained);
|
||||
}
|
||||
|
||||
return soulsDrained;
|
||||
}
|
||||
|
@ -271,7 +275,7 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I
|
|||
}
|
||||
|
||||
@Override
|
||||
public double fillWill(EnumDemonWillType type, ItemStack stack, double fillAmount)
|
||||
public double fillWill(EnumDemonWillType type, ItemStack stack, double fillAmount, boolean doFill)
|
||||
{
|
||||
if (!type.equals(getCurrentType(stack)) && this.getWill(getCurrentType(stack), stack) > 0)
|
||||
{
|
||||
|
@ -283,12 +287,11 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I
|
|||
|
||||
double filled = Math.min(fillAmount, maxWill - current);
|
||||
|
||||
if (filled > 0)
|
||||
if (filled > 0 && doFill)
|
||||
{
|
||||
this.setWill(type, stack, filled + current);
|
||||
return filled;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return filled;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo
|
|||
double fillAmount = Math.min(gemDrainRate, current);
|
||||
if (fillAmount > 0)
|
||||
{
|
||||
fillAmount = gemItem.fillWill(type, stack, fillAmount);
|
||||
fillAmount = gemItem.fillWill(type, stack, fillAmount, true);
|
||||
if (willMap.get(type) - fillAmount <= 0)
|
||||
{
|
||||
willMap.remove(type);
|
||||
|
@ -80,7 +80,7 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo
|
|||
double currentAmount = WorldDemonWillHandler.getCurrentWill(worldObj, pos, type);
|
||||
double drainAmount = Math.min(maxWill - currentAmount, gemDrainRate);
|
||||
double filled = WorldDemonWillHandler.fillWillToMaximum(worldObj, pos, type, drainAmount, maxWill, false);
|
||||
filled = gemItem.drainWill(type, stack, filled);
|
||||
filled = gemItem.drainWill(type, stack, filled, true);
|
||||
if (filled > 0)
|
||||
{
|
||||
WorldDemonWillHandler.fillWillToMaximum(worldObj, pos, type, filled, maxWill, true);
|
||||
|
|
|
@ -231,7 +231,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
|
|||
if (soulStack.getItem() instanceof IDemonWillGem)
|
||||
{
|
||||
IDemonWillGem soul = (IDemonWillGem) soulStack.getItem();
|
||||
return soul.drainWill(EnumDemonWillType.DEFAULT, soulStack, requested);
|
||||
return soul.drainWill(EnumDemonWillType.DEFAULT, soulStack, requested, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -288,15 +288,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
|
|||
|
||||
IDemonWillGem willGem = (IDemonWillGem) stack.getItem();
|
||||
|
||||
double maxWill = willGem.getMaxWill(type, stack);
|
||||
double current = willGem.getWill(type, stack);
|
||||
|
||||
if (!doFill)
|
||||
{
|
||||
return Math.min(maxWill - current, amount);
|
||||
}
|
||||
|
||||
double filled = willGem.fillWill(type, stack, amount);
|
||||
double filled = willGem.fillWill(type, stack, amount, doFill);
|
||||
|
||||
return filled;
|
||||
}
|
||||
|
@ -321,7 +313,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
|
|||
|
||||
if (doDrain)
|
||||
{
|
||||
drained = willGem.drainWill(type, stack, drained);
|
||||
drained = willGem.drainWill(type, stack, drained, true);
|
||||
}
|
||||
|
||||
return drained;
|
||||
|
|
Loading…
Reference in a new issue