diff --git a/src/main/java/electroblob/wizardry/item/ItemWand.java b/src/main/java/electroblob/wizardry/item/ItemWand.java index 234ed0a4..343be7eb 100644 --- a/src/main/java/electroblob/wizardry/item/ItemWand.java +++ b/src/main/java/electroblob/wizardry/item/ItemWand.java @@ -849,7 +849,12 @@ public class ItemWand extends Item implements IWorkbenchItem, ISpellCastingItem, int chargeDepleted = this.getManaCapacity(centre.getStack()) - this.getMana(centre.getStack()); - int manaPerItem = Constants.MANA_PER_CRYSTAL; + // Not too pretty but allows addons implementing the IManaStoringItem interface to provide their mana amount for custom crystals, + // previously this was defaulted to the regular crystal's amount, allowing players to exploit it if a crystal was worth less mana than that. + int manaPerItem = crystals.getStack().getItem() instanceof IManaStoringItem ? + ((IManaStoringItem) crystals.getStack().getItem()).getMana(crystals.getStack()) : + crystals.getStack().getItem() instanceof ItemCrystal ? Constants.MANA_PER_CRYSTAL : Constants.MANA_PER_SHARD; + if(crystals.getStack().getItem() == WizardryItems.crystal_shard) manaPerItem = Constants.MANA_PER_SHARD; if(crystals.getStack().getItem() == WizardryItems.grand_crystal) manaPerItem = Constants.GRAND_CRYSTAL_MANA; diff --git a/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java b/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java index 9296482c..4e621920 100644 --- a/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java +++ b/src/main/java/electroblob/wizardry/item/ItemWizardArmour.java @@ -334,7 +334,12 @@ public class ItemWizardArmour extends ItemArmor implements IWorkbenchItem, IMana int chargeDepleted = this.getManaCapacity(centre.getStack()) - this.getMana(centre.getStack()); - int manaPerItem = Constants.MANA_PER_CRYSTAL; + // Not too pretty but allows addons implementing the IManaStoringItem interface to provide their mana amount for custom crystals, + // previously this was defaulted to the regular crystal's amount, allowing players to exploit it if a crystal was worth less mana than that. + int manaPerItem = crystals.getStack().getItem() instanceof IManaStoringItem ? + ((IManaStoringItem) crystals.getStack().getItem()).getMana(crystals.getStack()) : + crystals.getStack().getItem() instanceof ItemCrystal ? Constants.MANA_PER_CRYSTAL : Constants.MANA_PER_SHARD; + if(crystals.getStack().getItem() == WizardryItems.crystal_shard) manaPerItem = Constants.MANA_PER_SHARD; if(crystals.getStack().getItem() == WizardryItems.grand_crystal) manaPerItem = Constants.GRAND_CRYSTAL_MANA;