From 574f43010d647bd8cac176923f2b82e7cbcfc909 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 5 Dec 2014 12:13:10 -0500 Subject: [PATCH] Added more recipes, made Imbued Spell Enhancements craftable --- .../AlchemicalWizardry.java | 18 +++- .../alchemicalWizardry/ModBlocks.java | 5 ++ .../alchemicalWizardry/ModItems.java | 5 ++ .../common/block/BlockCrystal.java | 81 ++++++++++++++++++ .../bloodAltarUpgrade/UpgradedAltars.java | 54 +++++++++++- .../demon/EntityMinorDemonGrunt.java | 28 ++++++ .../common/entity/mob/EntityDemon.java | 1 + .../common/items/ItemComponents.java | 2 +- .../common/items/ItemCrystalBlock.java | 48 +++++++++++ .../common/items/TranscendentBloodOrb.java | 21 +++++ .../TESpellEnhancementBlockItemRenderer.java | 42 +++++---- .../tileEntity/TESpellEnhancementBlock.java | 8 +- .../assets/alchemicalwizardry/lang/en_US.lang | 5 ++ .../textures/blocks/ShardCluster.png | Bin 0 -> 691 bytes .../textures/blocks/ShardClusterBrick.png | Bin 0 -> 506 bytes .../textures/items/TranscendentBloodOrb.png | Bin 0 -> 632 bytes .../textures/items/baseItemLifeBrace.png | Bin 0 -> 476 bytes .../textures/items/baseItemLifeShard.png | Bin 0 -> 358 bytes .../items/baseItemScribedRunicPlate.png | Bin 513 -> 513 bytes .../textures/items/baseItemSoulRunicPlate.png | Bin 0 -> 597 bytes .../textures/items/baseItemSoulShard.png | Bin 0 -> 370 bytes .../textures/models/SpellEnhancementCost4.png | Bin 0 -> 3224 bytes .../models/SpellEnhancementPotency4.png | Bin 0 -> 3250 bytes .../models/SpellEnhancementPower4.png | Bin 0 -> 4957 bytes 24 files changed, 295 insertions(+), 23 deletions(-) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/common/block/BlockCrystal.java create mode 100644 src/main/java/WayofTime/alchemicalWizardry/common/items/ItemCrystalBlock.java create mode 100644 src/main/java/WayofTime/alchemicalWizardry/common/items/TranscendentBloodOrb.java create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/blocks/ShardCluster.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/blocks/ShardClusterBrick.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/items/TranscendentBloodOrb.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/items/baseItemLifeBrace.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/items/baseItemLifeShard.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/items/baseItemSoulRunicPlate.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/items/baseItemSoulShard.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost4.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency4.png create mode 100644 src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower4.png diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 5c241a72..4ff55520 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -916,7 +916,14 @@ public class AlchemicalWizardry ItemStack potencyCoreStack = new ItemStack(ModItems.baseItems, 1, 24); ItemStack obsidianBraceStack = new ItemStack(ModItems.baseItems, 1, 25); ItemStack etherealSlateStack = new ItemStack(ModItems.baseItems, 1, 27); + ItemStack lifeShardStack = new ItemStack(ModItems.baseItems, 1, 28); + ItemStack soulShardStack = new ItemStack(ModItems.baseItems, 1, 29); + ItemStack soulRunicPlateStack = new ItemStack(ModItems.baseItems, 1, 30); + ItemStack livingBraceStack = new ItemStack(ModItems.baseItems, 1, 31); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystal), "lsl", "sls", "lsl", 'l', lifeShardStack, 's', soulShardStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystal, 4, 1), "ss", "ss", 's', new ItemStack(ModBlocks.blockCrystal, 1, 0)); + ItemStack magicalesCraftedCableStack = new ItemStack(ModItems.baseItems, 5, 2); ItemStack crackedRunicPlateStackCrafted = new ItemStack(ModItems.baseItems, 2, 15); ItemStack runicPlateStackCrafted = new ItemStack(ModItems.baseItems, 2, 16); @@ -927,6 +934,7 @@ public class AlchemicalWizardry GameRegistry.addRecipe(woodBraceStack, " il", "ili", "li ", 'l', new ItemStack(Blocks.log, 1, craftingConstant), 'i', new ItemStack(Items.string)); GameRegistry.addRecipe(stoneBraceStack, " is", "isi", "si ", 'i', ironIngotStack, 's', reinforcedSlateStack); GameRegistry.addRecipe(obsidianBraceStack, " is", "ibi", "si ", 'i', obsidianStack, 's', reinforcedSlateStack, 'b', stoneBraceStack); + GameRegistry.addRecipe(livingBraceStack, " gc", "gog", "sg ", 'g', goldIngotStack, 'o', obsidianBraceStack, 'c', lifeShardStack, 's', demonSlateStack); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(projectileCoreStack, "mbm", "aca", "mom", 'c', emptyCoreStack, 'b', weakBloodShardStack, 'm', magicalesStack, 'o', magicianBloodOrbStack, 'a', new ItemStack(Items.arrow))); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(selfCoreStack, "sbs", "ncn", "sos", 'c', emptyCoreStack, 's', sanctusStack, 'b', weakBloodShardStack, 'o', magicianBloodOrbStack, 'n', glowstoneDustStack)); @@ -960,7 +968,8 @@ public class AlchemicalWizardry AlchemyRecipeRegistry.registerRecipe(runicPlateStack, 30, new ItemStack[]{crackedRunicPlateStack, terraeStack}, 5); AlchemyRecipeRegistry.registerRecipe(imbuedRunicPlateStack, 100, new ItemStack[]{magicalesStack, incendiumStack, runicPlateStack, runicPlateStack, aquasalusStack}, 5); AlchemyRecipeRegistry.registerRecipe(complexSpellCrystalStack, 50, new ItemStack[]{new ItemStack(ModItems.blankSpell), weakBloodShardStack, weakBloodShardStack, diamondStack, goldIngotStack}, 3); - + AlchemyRecipeRegistry.registerRecipe(soulRunicPlateStack, 150, new ItemStack[]{imbuedRunicPlateStack, soulShardStack, soulShardStack, weakBloodShardStack, diamondStack}, 6); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockConduit, 1, 0), "q q", "ccc", "q q", 'q', quartzRodStack, 'c', magicalesCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm, 1, 0), "gb ", "pcw", "gb ", 'p', paradigmBackPlateStack, 'c', projectileCoreStack, 'g', goldIngotStack, 'b', stoneBraceStack, 'w', outputCableStack); @@ -981,12 +990,15 @@ public class AlchemicalWizardry GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 0), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', woodBraceStack, 'p', crackedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 1), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', stoneBraceStack, 'p', runicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 2), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', obsidianBraceStack, 'p', imbuedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 3), "bpb", "ico", "bpb", 'c', powerCoreStack, 'b', livingBraceStack, 'p', soulRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 5), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', woodBraceStack, 'p', crackedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 6), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', stoneBraceStack, 'p', runicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 7), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', obsidianBraceStack, 'p', imbuedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 8), "bpb", "ico", "bpb", 'c', costCoreStack, 'b', livingBraceStack, 'p', soulRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 10), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', woodBraceStack, 'p', crackedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 11), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', stoneBraceStack, 'p', runicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 12), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', obsidianBraceStack, 'p', imbuedRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement, 1, 13), "bpb", "ico", "bpb", 'c', potencyCoreStack, 'b', livingBraceStack, 'p', soulRunicPlateStack, 'i', inputCableStack, 'o', outputCableStack); GameRegistry.addRecipe(new ItemStack(ModItems.itemAttunedCrystal), "Sr ", " ar", "s S", 'r', quartzRodStack, 's', new ItemStack(Items.stick, 1, craftingConstant), 'a', strengthenedCatalystStack, 'S', stoneStack); GameRegistry.addRecipe(new ItemStack(ModItems.itemTankSegmenter), "gqi", " rq", "q g", 'q', quartzRodStack, 'i', ironIngotStack, 'r', strengthenedCatalystStack, 'g', goldIngotStack); @@ -1161,12 +1173,14 @@ public class AlchemicalWizardry AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.magicianBloodOrb), new ItemStack(Blocks.gold_block), 3, 25000, 20, 20, false); AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.masterBloodOrb), new ItemStack(ModItems.weakBloodShard), 4, 40000, 30, 50, false); AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.archmageBloodOrb), new ItemStack(ModItems.demonBloodShard), 5, 75000, 50, 100, false); + AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.transcendentBloodOrb), new ItemStack(ModBlocks.blockCrystal), 6, 200000, 100, 200, false); AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.weakBloodOrb), 1, 2); AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.apprenticeBloodOrb), 2, 5); AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.magicianBloodOrb), 3, 15); AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.masterBloodOrb), 4, 25); AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.archmageBloodOrb), 5, 50); + AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.transcendentBloodOrb), 6, 100); AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.telepositionFocus), new ItemStack(Items.ender_pearl), 4, 2000, 10, 10, false); AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.enhancedTelepositionFocus), new ItemStack(ModItems.telepositionFocus), 4, 10000, 25, 15, false); @@ -1220,7 +1234,7 @@ public class AlchemicalWizardry Rituals.registerRitual("AW028SpawnWard", 1, 150000, new RitualEffectSpawnWard(), "Ward of Sacrosanctity", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"), 0, 0, 0, 255, 0, 0.501, 0.501, 0, 1.5, false)); Rituals.registerRitual("AW029VeilOfEvil", 1, 150000, new RitualEffectVeilOfEvil(), "Veil of Evil", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"), 0, 0, 0, 255, 0, 0.501, 0.501, 0, 1.5, false)); Rituals.registerRitual("AW030FullStomach", 1, 100000, new RitualEffectFullStomach(), "Requiem of the Satiated Stomach", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"), 0, 0, 0, 255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW031DemonPortal", 2, 15000000, new RitualEffectDemonPortal(), "Convocation of the Damned", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/TransCircleDemon.png"), 220, 22, 22, 255, 0, 0.501, 0.501, 0, 5, false)); + Rituals.registerRitual("AW031Convocation", 2, 15000000, new RitualEffectDemonPortal(), "Convocation of the Damned", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/TransCircleDemon.png"), 220, 22, 22, 255, 0, 0.501, 0.501, 0, 5, false)); //Rituals.registerRitual(1,100,new RitualEffectApiaryOverclock(),"Apiary Overclock")); } diff --git a/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java b/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java index 15f8f6ca..4932e815 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java +++ b/src/main/java/WayofTime/alchemicalWizardry/ModBlocks.java @@ -7,6 +7,7 @@ import WayofTime.alchemicalWizardry.common.block.BlockAltar; import WayofTime.alchemicalWizardry.common.block.BlockBelljar; import WayofTime.alchemicalWizardry.common.block.BlockBloodLightSource; import WayofTime.alchemicalWizardry.common.block.BlockConduit; +import WayofTime.alchemicalWizardry.common.block.BlockCrystal; import WayofTime.alchemicalWizardry.common.block.BlockDemonPortal; import WayofTime.alchemicalWizardry.common.block.BlockHomHeart; import WayofTime.alchemicalWizardry.common.block.BlockMasterStone; @@ -37,6 +38,7 @@ import WayofTime.alchemicalWizardry.common.block.SpeedRune; import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.BlockDemonChest; import WayofTime.alchemicalWizardry.common.items.ItemBlockCrystalBelljar; import WayofTime.alchemicalWizardry.common.items.ItemBloodRuneBlock; +import WayofTime.alchemicalWizardry.common.items.ItemCrystalBlock; import WayofTime.alchemicalWizardry.common.items.ItemSpellEffectBlock; import WayofTime.alchemicalWizardry.common.items.ItemSpellEnhancementBlock; import WayofTime.alchemicalWizardry.common.items.ItemSpellModifierBlock; @@ -87,6 +89,7 @@ public class ModBlocks public static Block blockAlchemicCalcinator; public static Block blockCrystalBelljar; public static Block blockDemonChest; + public static Block blockCrystal; public static void init() { @@ -123,6 +126,7 @@ public class ModBlocks blockAlchemicCalcinator = new BlockAlchemicCalcinator(); blockCrystalBelljar = new BlockBelljar(); blockDemonChest = new BlockDemonChest(); + blockCrystal = new BlockCrystal(); blockLifeEssence = new LifeEssenceBlock(); } @@ -166,6 +170,7 @@ public class ModBlocks GameRegistry.registerBlock(ModBlocks.blockAlchemicCalcinator, "blockAlchemicCalcinator"); GameRegistry.registerBlock(ModBlocks.blockCrystalBelljar, ItemBlockCrystalBelljar.class, "blockCrystalBelljar"); GameRegistry.registerBlock(ModBlocks.blockDemonChest, "blockDemonChest"); + GameRegistry.registerBlock(ModBlocks.blockCrystal, ItemCrystalBlock.class, "blockCrystal"); } public static void registerBlocksInInit() diff --git a/src/main/java/WayofTime/alchemicalWizardry/ModItems.java b/src/main/java/WayofTime/alchemicalWizardry/ModItems.java index 3965fb93..d4c5e80a 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/ModItems.java +++ b/src/main/java/WayofTime/alchemicalWizardry/ModItems.java @@ -44,6 +44,7 @@ import WayofTime.alchemicalWizardry.common.items.MasterBloodOrb; import WayofTime.alchemicalWizardry.common.items.ReinforcedTelepositionFocus; import WayofTime.alchemicalWizardry.common.items.SacrificialDagger; import WayofTime.alchemicalWizardry.common.items.TelepositionFocus; +import WayofTime.alchemicalWizardry.common.items.TranscendentBloodOrb; import WayofTime.alchemicalWizardry.common.items.WaterScribeTool; import WayofTime.alchemicalWizardry.common.items.energy.ItemAttunedCrystal; import WayofTime.alchemicalWizardry.common.items.energy.ItemDestinationClearer; @@ -201,6 +202,8 @@ public class ModItems public static Item bucketLife; public static Item itemBloodPack; + + public static Item transcendentBloodOrb; public static void init() { @@ -209,6 +212,7 @@ public class ModItems magicianBloodOrb = new MagicianBloodOrb(150000).setUnlocalizedName("magicianBloodOrb"); masterBloodOrb = new MasterBloodOrb(1000000).setUnlocalizedName("masterBloodOrb"); archmageBloodOrb = new ArchmageBloodOrb(10000000).setUnlocalizedName("archmageBloodOrb"); + transcendentBloodOrb = new TranscendentBloodOrb(30000000).setUnlocalizedName("transcendentBloodOrb"); energyBlaster = new EnergyBlast().setUnlocalizedName("energyBlast"); energySword = new EnergySword().setUnlocalizedName("energySword"); lavaCrystal = new LavaCrystal().setUnlocalizedName("lavaCrystal"); @@ -362,6 +366,7 @@ public class ModItems GameRegistry.registerItem(ModItems.tennebrae, "tennebrae"); GameRegistry.registerItem(ModItems.demonBloodShard, "demonBloodShard"); GameRegistry.registerItem(ModItems.archmageBloodOrb, "archmageBloodOrb"); + GameRegistry.registerItem(ModItems.transcendentBloodOrb, "transcendentBloodOrb"); GameRegistry.registerItem(ModItems.sigilOfWind, "sigilOfWind"); GameRegistry.registerItem(ModItems.telepositionFocus, "telepositionFocus"); GameRegistry.registerItem(ModItems.enhancedTelepositionFocus, "enhancedTelepositionFocus"); diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockCrystal.java b/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockCrystal.java new file mode 100644 index 00000000..ea95d12e --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/block/BlockCrystal.java @@ -0,0 +1,81 @@ +package WayofTime.alchemicalWizardry.common.block; + +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.ModBlocks; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +public class BlockCrystal extends Block +{ + //private Icon bloodRuneIcon; + private IIcon fullIcon; + private IIcon brickIcon; + + + public BlockCrystal() + { + super(Material.iron); + this.setBlockName("crystalBlock"); + setCreativeTab(AlchemicalWizardry.tabBloodMagic); + setHardness(2.0F); + setResistance(5.0F); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) + { + this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:BlankRune"); + this.fullIcon = iconRegister.registerIcon("AlchemicalWizardry:ShardCluster"); + this.brickIcon = iconRegister.registerIcon("AlchemicalWizardry:ShardClusterBrick"); + } + + @SideOnly(Side.CLIENT) + + /** + * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) + */ + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) + { + if (this.equals(ModBlocks.blockCrystal)) + { + par3List.add(new ItemStack(par1, 1, 0)); + par3List.add(new ItemStack(par1, 1, 1)); + } else + { + super.getSubBlocks(par1, par2CreativeTabs, par3List); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) + { + switch (meta) + { + case 0: + return fullIcon; + + case 1: + return brickIcon; + + default: + return blockIcon; + } + } + + @Override + public int damageDropped(int metadata) + { + return metadata; + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java b/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java index 43926eb2..ad8839b2 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java @@ -15,7 +15,8 @@ public class UpgradedAltars public static List thirdTierAltar = new ArrayList(); public static List fourthTierAltar = new ArrayList(); public static List fifthTierAltar = new ArrayList(); - public static int highestAltar = 5; + public static List sixthTierAltar = new ArrayList(); + public static int highestAltar = 6; public static int isAltarValid(World world, int x, int y, int z) { @@ -136,6 +137,31 @@ public class UpgradedAltars } return true; + + case 6: + for (AltarComponent ac : sixthTierAltar) + { + if (ac.isBloodRune()) + { + Block testBlock = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); + + if (!(testBlock instanceof BloodRune)) + { + return false; + } + } else + { + Block block = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); + int metadata = world.getBlockMetadata(x + ac.getX(), y + ac.getY(), z + ac.getZ()); + + if (((ac.getBlock() != block) || (ac.getMetadata() != metadata)) && !(ac.getBlock() == Blocks.stonebrick && !world.isAirBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()))) + { + return false; + } + } + } + + return true; default: return false; @@ -279,6 +305,29 @@ public class UpgradedAltars fifthTierAltar.add(new AltarComponent(i, -4, 8, ModBlocks.bloodRune, 0, true, true)); fifthTierAltar.add(new AltarComponent(i, -4, -8, ModBlocks.bloodRune, 0, true, true)); } + + sixthTierAltar.addAll(fifthTierAltar); + + for(int i = -4; i <= 2; i++) + { + sixthTierAltar.add(new AltarComponent(11, i, 11, Blocks.stonebrick, 0, false, false)); + sixthTierAltar.add(new AltarComponent(-11, i, -11, Blocks.stonebrick, 0, false, false)); + sixthTierAltar.add(new AltarComponent(11, i, -11, Blocks.stonebrick, 0, false, false)); + sixthTierAltar.add(new AltarComponent(-11, i, 11, Blocks.stonebrick, 0, false, false)); + } + + sixthTierAltar.add(new AltarComponent(11, 3, 11, ModBlocks.blockCrystal, 0, false, false)); + sixthTierAltar.add(new AltarComponent(-11, 3, -11, ModBlocks.blockCrystal, 0, false, false)); + sixthTierAltar.add(new AltarComponent(11, 3, -11, ModBlocks.blockCrystal, 0, false, false)); + sixthTierAltar.add(new AltarComponent(-11, 3, 11, ModBlocks.blockCrystal, 0, false, false)); + + for (int i = -9; i <= 9; i++) + { + sixthTierAltar.add(new AltarComponent(11, -5, i, ModBlocks.bloodRune, 0, true, true)); + sixthTierAltar.add(new AltarComponent(-11, -5, i, ModBlocks.bloodRune, 0, true, true)); + sixthTierAltar.add(new AltarComponent(i, -5, 11, ModBlocks.bloodRune, 0, true, true)); + sixthTierAltar.add(new AltarComponent(i, -5, -11, ModBlocks.bloodRune, 0, true, true)); + } } public static List getAltarUpgradeListForTier(int tier) @@ -296,6 +345,9 @@ public class UpgradedAltars case 5: return fifthTierAltar; + + case 6: + return sixthTierAltar; } return null; diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGrunt.java b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGrunt.java index 49b74f2f..24b04cee 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGrunt.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/demonVillage/demonHoard/demon/EntityMinorDemonGrunt.java @@ -97,6 +97,34 @@ public class EntityMinorDemonGrunt extends EntityDemon implements IOccasionalRan } } + @Override + protected void dropFewItems(boolean par1, int par2) + { + if(!this.getDoesDropCrystal()) + { + ItemStack lifeShardStack = new ItemStack(ModItems.baseItems, 1, 28); + ItemStack soulShardStack = new ItemStack(ModItems.baseItems, 1, 29); + + int dropAmount = 0; + + for(int i=0; i<=par2; i++) + { + dropAmount += this.worldObj.rand.nextFloat() < 0.6f ? 1 : 0; + } + + ItemStack drop = this.worldObj.rand.nextBoolean() ? lifeShardStack : soulShardStack; + drop.stackSize = dropAmount; + + if(dropAmount > 0) + { + this.entityDropItem(drop, 0.0f); + } + }else + { + super.dropFewItems(par1, par2); + } + } + @Override public void setPortalLocation(Int3 position) { diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java b/src/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java index b2ecdba1..5aa8394f 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java @@ -61,6 +61,7 @@ public class EntityDemon extends EntityTameable implements IDemon return null; } + @Override protected void dropFewItems(boolean par1, int par2) { if(this.getDoesDropCrystal()) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java index 146f3502..e47a3782 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java @@ -16,7 +16,7 @@ import java.util.List; public class ItemComponents extends Item { - private static final String[] ITEM_NAMES = new String[]{"QuartzRod", "EmptyCore", "MagicalesCable", "WoodBrace", "StoneBrace", "ProjectileCore", "SelfCore", "MeleeCore", "ParadigmBackPlate", "OutputCable", "FlameCore", "IcyCore", "GustCore", "EarthenCore", "InputCable", "CrackedRunicPlate", "RunicPlate", "ScribedRunicPlate", "DefaultCore", "OffensiveCore", "DefensiveCore", "EnvironmentalCore", "PowerCore", "CostCore", "PotencyCore", "ObsidianBrace", "ToolCore", "EtherealSlate"}; + private static final String[] ITEM_NAMES = new String[]{"QuartzRod", "EmptyCore", "MagicalesCable", "WoodBrace", "StoneBrace", "ProjectileCore", "SelfCore", "MeleeCore", "ParadigmBackPlate", "OutputCable", "FlameCore", "IcyCore", "GustCore", "EarthenCore", "InputCable", "CrackedRunicPlate", "RunicPlate", "ScribedRunicPlate", "DefaultCore", "OffensiveCore", "DefensiveCore", "EnvironmentalCore", "PowerCore", "CostCore", "PotencyCore", "ObsidianBrace", "ToolCore", "EtherealSlate", "LifeShard", "SoulShard", "SoulRunicPlate", "LifeBrace"}; @SideOnly(Side.CLIENT) private IIcon[] icons; diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemCrystalBlock.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemCrystalBlock.java new file mode 100644 index 00000000..d063cdde --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemCrystalBlock.java @@ -0,0 +1,48 @@ +package WayofTime.alchemicalWizardry.common.items; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemCrystalBlock extends ItemBlock + +{ + public ItemCrystalBlock(Block par1) + { + super(par1); + setHasSubtypes(true); + + } + + public String getUnlocalizedName(ItemStack itemstack) + + { + String name = ""; + + switch (itemstack.getItemDamage()) + { + case 0: + { + name = "fullCrystal"; + break; + } + + case 1: + { + name = "crystalBrick"; + break; + } + + default: + name = "broken"; + } + + return getUnlocalizedName() + "." + name; + } + + public int getMetadata(int par1) + + { + return par1; + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/TranscendentBloodOrb.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/TranscendentBloodOrb.java new file mode 100644 index 00000000..ecab2b21 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/TranscendentBloodOrb.java @@ -0,0 +1,21 @@ +package WayofTime.alchemicalWizardry.common.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; + +public class TranscendentBloodOrb extends EnergyBattery +{ + public TranscendentBloodOrb(int damage) + { + super(damage); + orbLevel = 6; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:TranscendentBloodOrb"); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java index 91a78d42..0fbd6e01 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java @@ -85,24 +85,30 @@ public class TESpellEnhancementBlockItemRenderer implements IItemRenderer { switch (meta) { - case 0: - return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; - case 1: - return "alchemicalwizardry:textures/models/SpellEnhancementPower2.png"; - case 2: - return "alchemicalwizardry:textures/models/SpellEnhancementPower3.png"; - case 5: - return "alchemicalwizardry:textures/models/SpellEnhancementCost1.png"; - case 6: - return "alchemicalwizardry:textures/models/SpellEnhancementCost2.png"; - case 7: - return "alchemicalwizardry:textures/models/SpellEnhancementCost3.png"; - case 10: - return "alchemicalwizardry:textures/models/SpellEnhancementPotency1.png"; - case 11: - return "alchemicalwizardry:textures/models/SpellEnhancementPotency2.png"; - case 12: - return "alchemicalwizardry:textures/models/SpellEnhancementPotency3.png"; + case 0: + return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; + case 1: + return "alchemicalwizardry:textures/models/SpellEnhancementPower2.png"; + case 2: + return "alchemicalwizardry:textures/models/SpellEnhancementPower3.png"; + case 3: + return "alchemicalwizardry:textures/models/SpellEnhancementPower4.png"; + case 5: + return "alchemicalwizardry:textures/models/SpellEnhancementCost1.png"; + case 6: + return "alchemicalwizardry:textures/models/SpellEnhancementCost2.png"; + case 7: + return "alchemicalwizardry:textures/models/SpellEnhancementCost3.png"; + case 8: + return "alchemicalwizardry:textures/models/SpellEnhancementCost4.png"; + case 10: + return "alchemicalwizardry:textures/models/SpellEnhancementPotency1.png"; + case 11: + return "alchemicalwizardry:textures/models/SpellEnhancementPotency2.png"; + case 12: + return "alchemicalwizardry:textures/models/SpellEnhancementPotency3.png"; + case 13: + return "alchemicalwizardry:textures/models/SpellEnhancementPotency4.png"; } return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellEnhancementBlock.java b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellEnhancementBlock.java index 576b1c52..2682d67b 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellEnhancementBlock.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellEnhancementBlock.java @@ -144,18 +144,24 @@ public class TESpellEnhancementBlock extends TESpellBlock return "alchemicalwizardry:textures/models/SpellEnhancementPower2.png"; case 2: return "alchemicalwizardry:textures/models/SpellEnhancementPower3.png"; + case 3: + return "alchemicalwizardry:textures/models/SpellEnhancementPower4.png"; case 5: return "alchemicalwizardry:textures/models/SpellEnhancementCost1.png"; case 6: return "alchemicalwizardry:textures/models/SpellEnhancementCost2.png"; case 7: - return "alchemicalwizardry:textures/models/SpellEnhancementCost3.png"; + return "alchemicalwizardry:textures/models/SpellEnhancementCost3.png"; + case 8: + return "alchemicalwizardry:textures/models/SpellEnhancementCost4.png"; case 10: return "alchemicalwizardry:textures/models/SpellEnhancementPotency1.png"; case 11: return "alchemicalwizardry:textures/models/SpellEnhancementPotency2.png"; case 12: return "alchemicalwizardry:textures/models/SpellEnhancementPotency3.png"; + case 13: + return "alchemicalwizardry:textures/models/SpellEnhancementPotency4.png"; } return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; diff --git a/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang index 1bc12184..b89be434 100644 --- a/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang +++ b/src/main/resources/assets/alchemicalwizardry/lang/en_US.lang @@ -55,6 +55,8 @@ tile.alchemicCalcinator.name=Alchemic Calcinator tile.crystalBelljar.name=Crystal Belljar tile.blockReagentConduit.name=Alchemy Relay tile.lifeEssenceFluidBlock.name=Life Essence +tile.crystalBlock.fullCrystal.name=Crystal Cluster +tile.crystalBlock.crystalBrick.name=Crystal Cluster Brick #Item Localization item.weakBloodOrb.name=Weak Blood Orb @@ -165,6 +167,8 @@ item.bloodMagicBaseItem.CostCore.name=Reduction Core item.bloodMagicBaseItem.PotencyCore.name=Potency Core item.bloodMagicBaseItem.ObsidianBrace.name=Obsidian Brace item.bloodMagicBaseItem.EtherealSlate.name=Ethereal Slate +item.bloodMagicBaseItem.LifeShard.name=Life Shard +item.bloodMagicBaseItem.SoulShard.name=Soul Shard item.bloodMagicAlchemyItem.Offensa.name=Offensa item.bloodMagicAlchemyItem.Praesidium.name=Praesidium item.bloodMagicAlchemyItem.OrbisTerrae.name=Orbis Terrae @@ -190,6 +194,7 @@ item.creativeDagger.name=Creative Sacrificial Knife item.itemBloodPack.name=Blood Letter's Pack item.itemHarvestSigil.name=Harvest Goddess Sigil item.itemCompressionSigil.name=Sigil of Compression +item.transcendentBloodOrb.name=Transcendent Blood Orb #Creative Tab itemGroup.tabBloodMagic=Blood Magic diff --git a/src/main/resources/assets/alchemicalwizardry/textures/blocks/ShardCluster.png b/src/main/resources/assets/alchemicalwizardry/textures/blocks/ShardCluster.png new file mode 100644 index 0000000000000000000000000000000000000000..0eeaaf47d298f46532a7544c644fd9f846e9d4f4 GIT binary patch literal 691 zcmV;k0!;mhP)^@R4C5{!Ml!}MG%0|uc|M9&+N{wF)4&VU}5CM z4lp4RsnI?FB!~?0CSV~#KZgAP5E(MdA;=OWc)WA{FWp_mIr8-4r$+1a6f(-(=GJSY zcDKc9lu%?)#GQ^cEY8d$<7i{+4G=VXY}Co;b3b?K1Gz{UD3!U=;>0xixa+%9J67*8 zgq5t!z4}tAZg%2SD0jFnTDo*Sa=NwKLq8n-H2HY$_s zNMzmHe&6>ePK{=G_cq!%+SsI3S)TCZ-Us(?nY#CIKi)t4INLn=JTouUPS4~{ z-}>!u{`)6~kAJaW6^$OUHT+~vIu8^bEK(H37cNs7dEUwy0J6v{wZbD=1>LB~eMg_?*!rN$u)t+g-p ztA`&x>~HLuJxdIYcHl5F9ywlckw}FSJSZBzD4*M6fB2teSAMpq;EK*Hdv+s}VTts; ze)pIEof$4<9Ug^8bDKt;UfRn*a8Pt%Sy&tw5rtXOBsaqa6$rKt!i>f$Oj_?3gYi0ei!pZoJdQB=`* z&Bny`>{K*LLdj&uaDvAqDS1ksQcss$7D~)glAekb6VH-y09RK;Jtk6?oJl$6Ra*@V Z{{wnNOb~$h)4u=!002ovPDHLkV1l^IJ3;^e literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/alchemicalwizardry/textures/blocks/ShardClusterBrick.png b/src/main/resources/assets/alchemicalwizardry/textures/blocks/ShardClusterBrick.png new file mode 100644 index 0000000000000000000000000000000000000000..c2d3e27f7c62bbd363f8cc573a37b2cb8eaa035a GIT binary patch literal 506 zcmVfHvX;;yI@2N<;q`iFcIMtgVHBlUEB_;WzuYz-MvesWSPuW`KjNPIKJF&Z z6AM5<0)oLNPT8}=8=SP#wpgs|dZWK1!L4sc-zQ5(52}qcP8zDgD(jhEc7At?MMfqV z0VIx-PnDGf97&SF&CSKGNouxR@PC_ z;3PvL00)hhIXPS)0xYm7EIo%-YFF+Oa>M3HSnjx00HR`Ij#^L>QpQwJ0cp`HmE%!Mle?#(VE$ ze{{5zJQXQ#^lIQRV1Mv__{Ztyo;-~l;!>r35gU$R1u1x z2s{IVS4h&OiI6+UJJ5h2LKcE|ff|Vx$szoS+yGI8iG4or?cOfU5qxn{FsqSvr1`#? z+5JYiz*f}tFdKjKhjLzCbP@1@zK;(98*(fb6yZD~ISan)@1R5@0tE%mJ4A#nwMnn& zv9As)BCna{|4h7-q@+GK5cjUBx+H-gMoU-heaJc1xVojMlFFNW-@M?Ce< zSfD{)^-sHqs?{Bq0*^soWe4|uNNw!cL|K}>?fF=9kU#+Wfp zntW0Ryju38M+q1c6u{-hMcPrsLx0Fy^^PeS4vWE%GG@Yrl$5^e^Lj-y9t;T6=|3T5 zlL^W>+DXC_Gvcwlrz4%ptSKokYCo7BC#1m7StXi0M}SMlAi$fD5{DFBCRqTj$t;YO z;x}+StAnmcxETU%AP4>~K^=$z-E3mwn4{qk1AGTk5%xlmQz3OlLJ|Vk$~XpG`Awnp z0k8m^l;DaEu73QWjR;>$-xuMF2nQm3F7H-^6A^m5_geg~wYE2;wY@R7(tiM$lhb;; SNPT_)0000VGd000McNliru-V6l~123I!<7)r_0clA@ zK~y-)rIXDr1VI#qzgsMrVMTZWv#zJ`1id2?$%vmsB}1$&YzB!;D6=6VA#CU;ka&k$ zdjMi53=>9|#Z=Qe?I+w-RVC*;b?&W_rqTShBJ1eQY!uKR8{PUz*s{*6?ow2Gcm%I! z@DN$|t@z10Ujq^#Hkx-p53mTFga1n04&nwdR4NJZ0hk1701H53ozG<*Xj|v!flXkz zRFZbJ!Y4p%G!q~@0n*7pPT<}E+rVgWPD}Drh^*rn{1UJSyZ{E+07f#-X{mh9*l4Ce z_JKKILWFt{7xhII9bT@D(*bUk;yG<#wL;##5D;0%_3DLR1P+sgBk!q&+5dQhZ2tAo zFf~0UO<+nX?yU2D2Uo>_$U08JuLNp*l1n>`wKBZ*=Wf=Ci%~I26zL{S&t^I Shdsgo0000>if|Tq zL>4nJa0`PlBg3pY5H=O_Io_64A#6MXCpmLV0FMhJw4NZ$OG(Dmzg8l&6bhh{frxlQ;4;83?rf7tlT-}`s}zT9>CXN&2i2u*c`-lVy18~<@m zaNBrp#ze!ztTS0<*f&q)R(fvre&$90b0!Uk3$|x8SvPob%y>2Z`9kido1$jh?rJgI zHaOy^X;XV&YLV!L>|S%@mZhKT?>jo1w55mCF=upM5a?|XI#8;qpji~C-8zk9d*{wD vF3*YGuEG*0oV}Lclw8!f;|znswYum0bpbP0l+XkK?GS#| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png b/src/main/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png index 81a8df869afc1077e9394600998779ea162d1fac..3b9891e0968cf2bcd08dcdfa82fade04e99fdba3 100644 GIT binary patch delta 60 zcmZo21s-{WEBGZc@! Lm%4dl^fE>OA`1~l delta 60 zcmZo=_ssI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfJ!SzRO?~DZ KeVL8X%NPN1NepNJ diff --git a/src/main/resources/assets/alchemicalwizardry/textures/items/baseItemSoulRunicPlate.png b/src/main/resources/assets/alchemicalwizardry/textures/items/baseItemSoulRunicPlate.png new file mode 100644 index 0000000000000000000000000000000000000000..d92eb06d49a035e30a3159afa806294eb0793696 GIT binary patch literal 597 zcmV-b0;>IqP)cU}Mh03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00Fs4L_t(I%cYY~YZFlv z#ea8*nKYFK1h-X+|5gcNzJRzJ6OeWxxNxsa&8~vewr2tQlwpnVUjS6MVpZCJmx%0>}%Ifco1}B_PRZSLCD*BnX2y* z4H8~__E_`p(j(>qucz0RgyCxW>bCN1XpxU<`GJbmRHUYxZ0Hs>?KA?-^Iln&G?qNc z-f2g?*(&3bqEc=i5+GjsC5Fxjue6R~W8$%iIVaYdiy>>U&hmO%f6gh)9#-8wUsxv&uj}?Su!CSRk(j@+wkOmRGvW zC+%$Y)$$Lu8|O4RFKPN2k1A&c{b7%URZ_U5$&w(9HG29w9j4=mlV^@ga+v?e?rPSI jo#r>rO5n^So~8Z*+-Vs+_l62600000NkvXXu0mjfb20m+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/alchemicalwizardry/textures/items/baseItemSoulShard.png b/src/main/resources/assets/alchemicalwizardry/textures/items/baseItemSoulShard.png new file mode 100644 index 0000000000000000000000000000000000000000..13420bd16c5db15a139a446233af3f06985ce94d GIT binary patch literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE(~rAf((L@Oa3bZMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`#m03MnV1eEc-SAg=8~BB1)X|b8}PkN`PDj2Ir#G z#FEq$h4Rdj3bl^-#S|ISi^uV|2uj+5duloOS zW#Yl*mU>^5TJ}c$|DU++c8|+$hDc*(W@hJ@7p`nEdWnaY-8@#p*5>5hyf%XO;H#$7 z*UgOYR2Rsc+h6;e^YG8&?H=6CATgWDs`-vVXZV(9L+p|@87?_ zJ&MOpRJB#;|M~xa?!))-A!mJbwo6F-6MEQmIA^=${(m-SKm7k+-uAzz|KThUuR+%^ z@hj6A0k&h;D@-5vwt`gU)*Jn4-&nXZd5MWNGlQ;V-0u1R{Omwp_jL7hS?83{1ORF9 Bl4t+` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost4.png b/src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost4.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4327bd14f7262a4329bc6c26ccf096dd0e2188 GIT binary patch literal 3224 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower4.png b/src/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower4.png new file mode 100644 index 0000000000000000000000000000000000000000..492e505e8be900604dd6bf3ba804c4137bbfddc6 GIT binary patch literal 4957 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 bw<`P}=MZ{BhTfa?00000NkvXXu0mjfx3g&D literal 0 HcmV?d00001