From 158002ade7dd57305fab9197a3e0ab96d4232186 Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Sun, 25 Jan 2015 18:28:45 +0000 Subject: [PATCH] Added Spellbinding Cloth from TT. --- .../common/core/BotaniaCreativeTab.java | 1 + .../crafting/recipe/SpellClothRecipe.java | 75 ++++++++++++++++++ .../botania/common/item/ItemSpellCloth.java | 59 ++++++++++++++ .../vazkii/botania/common/item/ModItems.java | 2 + .../botania/common/lib/LibItemNames.java | 1 + .../resources/assets/botania/lang/en_US.lang | 1 + .../botania/textures/items/enchantCloth.png | Bin 19393 -> 0 bytes .../botania/textures/items/spellCloth.png | Bin 0 -> 3270 bytes 8 files changed, 139 insertions(+) create mode 100644 src/main/java/vazkii/botania/common/crafting/recipe/SpellClothRecipe.java create mode 100644 src/main/java/vazkii/botania/common/item/ItemSpellCloth.java delete mode 100644 src/main/resources/assets/botania/textures/items/enchantCloth.png create mode 100644 src/main/resources/assets/botania/textures/items/spellCloth.png diff --git a/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java b/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java index 74329c2ec..dfdb3f45e 100644 --- a/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java +++ b/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java @@ -98,6 +98,7 @@ public final class BotaniaCreativeTab extends CreativeTabs { addBlock(ModBlocks.forestEye); addBlock(ModBlocks.enderEye); addItem(ModItems.enderHand); + addItem(ModItems.spellCloth); addItem(ModItems.craftingHalo); addItem(ModItems.spawnerMover); addBlock(ModBlocks.spawnerClaw); diff --git a/src/main/java/vazkii/botania/common/crafting/recipe/SpellClothRecipe.java b/src/main/java/vazkii/botania/common/crafting/recipe/SpellClothRecipe.java new file mode 100644 index 000000000..5849d8115 --- /dev/null +++ b/src/main/java/vazkii/botania/common/crafting/recipe/SpellClothRecipe.java @@ -0,0 +1,75 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Jan 25, 2015, 6:16:13 PM (GMT)] + */ +package vazkii.botania.common.crafting.recipe; + +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import vazkii.botania.common.item.ModItems; + +public class SpellClothRecipe implements IRecipe { + + @Override + public boolean matches(InventoryCrafting var1, World var2) { + boolean foundCloth = false; + boolean foundEnchanted = false; + + for(int i = 0; i < var1.getSizeInventory(); i++) { + ItemStack stack = var1.getStackInSlot(i); + if(stack != null) { + if(stack.isItemEnchanted() && !foundEnchanted) + foundEnchanted = true; + + else if(stack.getItem() == ModItems.spellCloth && !foundCloth) + foundCloth = true; + + else return false; // Found an invalid item, breaking the recipe + } + } + + return foundCloth && foundEnchanted; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting var1) { + ItemStack stackToDisenchant = null; + for(int i = 0; i < var1.getSizeInventory(); i++) { + ItemStack stack = var1.getStackInSlot(i); + if(stack != null && stack.isItemEnchanted()) { + stackToDisenchant = stack.copy(); + break; + } + } + + if(stackToDisenchant == null) + return null; + + NBTTagCompound cmp = (NBTTagCompound) stackToDisenchant.getTagCompound().copy(); + cmp.removeTag("ench"); // Remove enchantments + stackToDisenchant.setTagCompound(cmp); + + return stackToDisenchant; + } + + @Override + public int getRecipeSize() { + return 10; + } + + @Override + public ItemStack getRecipeOutput() { + return null; + } + +} diff --git a/src/main/java/vazkii/botania/common/item/ItemSpellCloth.java b/src/main/java/vazkii/botania/common/item/ItemSpellCloth.java new file mode 100644 index 000000000..33843917f --- /dev/null +++ b/src/main/java/vazkii/botania/common/item/ItemSpellCloth.java @@ -0,0 +1,59 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Jan 25, 2015, 6:14:13 PM (GMT)] + */ +package vazkii.botania.common.item; + +import java.awt.Color; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.RecipeSorter; +import net.minecraftforge.oredict.RecipeSorter.Category; +import vazkii.botania.common.crafting.recipe.SpellClothRecipe; +import vazkii.botania.common.lib.LibItemNames; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemSpellCloth extends ItemMod { + + public ItemSpellCloth() { + setMaxDamage(35); + setMaxStackSize(1); + setNoRepair(); + setUnlocalizedName(LibItemNames.SPELL_CLOTH); + + GameRegistry.addRecipe(new SpellClothRecipe()); + RecipeSorter.register("botania:spellCloth", SpellClothRecipe.class, Category.SHAPELESS, ""); + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack par1ItemStack, int par2) { + return Color.HSBtoRGB(0.75F, ((float) par1ItemStack.getMaxDamage() - (float) par1ItemStack.getItemDamage()) / par1ItemStack.getMaxDamage() * 0.5F, 1F); + } + + @Override + public boolean hasContainerItem() { + return true; + } + + @Override + public ItemStack getContainerItem(ItemStack itemStack) { + itemStack.setItemDamage(itemStack.getItemDamage() + 1); + return itemStack; + } + + @Override + public boolean doesContainerItemLeaveCraftingGrid(ItemStack par1ItemStack) { + return false; + } + +} diff --git a/src/main/java/vazkii/botania/common/item/ModItems.java b/src/main/java/vazkii/botania/common/item/ModItems.java index 53002eabc..4f35d1b04 100644 --- a/src/main/java/vazkii/botania/common/item/ModItems.java +++ b/src/main/java/vazkii/botania/common/item/ModItems.java @@ -197,6 +197,7 @@ public final class ModItems { public static Item cobbleRod; public static Item smeltRod; public static Item worldSeed; + public static Item spellCloth; public static void init() { lexicon = new ItemLexicon(); @@ -301,6 +302,7 @@ public final class ModItems { cobbleRod = new ItemCobbleRod(); smeltRod = new ItemSmeltRod(); worldSeed = new ItemWorldSeed(); + spellCloth = new ItemSpellCloth(); OreDictionary.registerOre(LibOreDict.LEXICON, lexicon); for(int i = 0; i < 16; i++) { diff --git a/src/main/java/vazkii/botania/common/lib/LibItemNames.java b/src/main/java/vazkii/botania/common/lib/LibItemNames.java index 1d5b57316..94a6c2b50 100644 --- a/src/main/java/vazkii/botania/common/lib/LibItemNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibItemNames.java @@ -116,6 +116,7 @@ public final class LibItemNames { public static final String COBBLE_ROD = "cobbleRod"; public static final String SMELT_ROD = "smeltRod"; public static final String WORLD_SEED = "worldSeed"; + public static final String SPELL_CLOTH = "spellCloth"; public static final String[] LENS_NAMES = new String[] { "lensNormal", diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index db0f8a1cd..6a361cbe4 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -806,6 +806,7 @@ item.botania:clip.name=Lens Clip item.botania:cobbleRod.name=Rod of the Depths item.botania:smeltRod.name=Rod of the Molten Core item.botania:worldSeed.name=World Seed +item.botania:spellCloth.name=Spellbinding Cloth # BREW NAMES botania.brew.fallback=Fallback diff --git a/src/main/resources/assets/botania/textures/items/enchantCloth.png b/src/main/resources/assets/botania/textures/items/enchantCloth.png deleted file mode 100644 index 6f68337bc5804f1bf426c06ff02404d3ea67000a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19393 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