From 8449cf1d914818de197fb3fb6f2d35f0f1f3b56d Mon Sep 17 00:00:00 2001 From: Yip Rui Fung Date: Tue, 28 Jul 2015 15:36:42 +0800 Subject: [PATCH] Add runic shielding support to all Botania armor and baubles, after all they are made out of magically stable materials --- src/api/java/thaumcraft/api/IRunicArmor.java | 22 +++++++++++++++++++ .../armor/manasteel/ItemManasteelArmor.java | 10 ++++++++- .../item/equipment/bauble/ItemBauble.java | 10 ++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/api/java/thaumcraft/api/IRunicArmor.java diff --git a/src/api/java/thaumcraft/api/IRunicArmor.java b/src/api/java/thaumcraft/api/IRunicArmor.java new file mode 100644 index 000000000..5dd311006 --- /dev/null +++ b/src/api/java/thaumcraft/api/IRunicArmor.java @@ -0,0 +1,22 @@ +package thaumcraft.api; + +import net.minecraft.item.ItemStack; + +/** + * + * @author Azanor + * + * Armor or bauble slot items that implement this interface can provide runic shielding. + * Recharging, hardening, etc. is handled internally by thaumcraft. + * + */ + +public interface IRunicArmor { + + /** + * returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally. + */ + public int getRunicCharge(ItemStack itemstack); + + +} diff --git a/src/main/java/vazkii/botania/common/item/equipment/armor/manasteel/ItemManasteelArmor.java b/src/main/java/vazkii/botania/common/item/equipment/armor/manasteel/ItemManasteelArmor.java index e88405e7e..02af5e93a 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/armor/manasteel/ItemManasteelArmor.java +++ b/src/main/java/vazkii/botania/common/item/equipment/armor/manasteel/ItemManasteelArmor.java @@ -25,6 +25,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.ISpecialArmor; +import thaumcraft.api.IRunicArmor; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.item.IPhantomInkable; import vazkii.botania.api.mana.IManaUsingItem; @@ -35,11 +36,13 @@ import vazkii.botania.common.core.BotaniaCreativeTab; import vazkii.botania.common.core.helper.ItemNBTHelper; import vazkii.botania.common.item.ModItems; import vazkii.botania.common.item.equipment.tool.ToolCommons; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class ItemManasteelArmor extends ItemArmor implements ISpecialArmor, IManaUsingItem, IPhantomInkable { +@Optional.Interface(modid = "Thaumcraft", iface = "thaumcraft.api.IRunicArmor") +public class ItemManasteelArmor extends ItemArmor implements ISpecialArmor, IManaUsingItem, IPhantomInkable, IRunicArmor { private static final int MANA_PER_DAMAGE = 70; @@ -201,4 +204,9 @@ public class ItemManasteelArmor extends ItemArmor implements ISpecialArmor, IMan ItemNBTHelper.setBoolean(stack, TAG_PHANTOM_INK, true); } + @Override + @Optional.Method(modid = "Thaumcraft") + public int getRunicCharge(ItemStack itemstack) { + return 0; + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBauble.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBauble.java index 1de307f08..77bd4604a 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBauble.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemBauble.java @@ -20,6 +20,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import thaumcraft.api.IRunicArmor; import vazkii.botania.api.item.ICosmeticAttachable; import vazkii.botania.api.item.IPhantomInkable; import vazkii.botania.common.achievement.ModAchievements; @@ -30,10 +31,12 @@ import baubles.api.BaubleType; import baubles.api.IBauble; import baubles.common.container.InventoryBaubles; import baubles.common.lib.PlayerHandler; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public abstract class ItemBauble extends ItemMod implements IBauble, ICosmeticAttachable, IPhantomInkable { +@Optional.Interface(modid = "Thaumcraft", iface = "thaumcraft.api.IRunicArmor") +public abstract class ItemBauble extends ItemMod implements IBauble, ICosmeticAttachable, IPhantomInkable, IRunicArmor { private static final String TAG_HASHCODE = "playerHashcode"; private static final String TAG_BAUBLE_UUID_MOST = "baubleUUIDMost"; @@ -207,4 +210,9 @@ public abstract class ItemBauble extends ItemMod implements IBauble, ICosmeticAt ItemNBTHelper.setBoolean(stack, TAG_PHANTOM_INK, ink); } + @Override + @Optional.Method(modid = "Thaumcraft") + public int getRunicCharge(ItemStack itemstack) { + return 0; + } }