From 9dc8a57a2ddb1c1f9a477d9fe1d0380bb89fb66c Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sat, 5 Apr 2014 16:00:08 -0400 Subject: [PATCH] Updating 1.7.2 repo --- .../AlchemicalWizardry.java | 102 ++++++- .../common/LifeBucketHandler.java | 2 +- .../AlchemicalPotionCreationHandler.java | 2 + .../common/items/EnergyItems.java | 9 +- .../common/items/ItemAlchemyBase.java | 2 +- .../common/items/ItemComponents.java | 2 +- .../common/items/sigil/SigilOfGrowth.java | 4 +- .../spell/complex/EntitySpellProjectile.java | 13 + .../complex/SpellParadigmProjectile.java | 3 + .../complex/effect/SpellEffectEarth.java | 25 +- .../spell/complex/effect/SpellEffectFire.java | 44 ++- .../spell/complex/effect/SpellEffectWind.java | 67 ++--- .../spell/complex/effect/SpellHelper.java | 12 +- .../ExtrapolatedMeleeEntityEffect.java | 4 +- .../earth/MeleeDefaultEarth.java | 6 +- .../earth/MeleeDefensiveEarth.java | 2 - .../earth/MeleeEnvironmentalEarth.java | 1 + .../earth/ProjectileDefaultEarth.java | 1 - .../earth/ProjectileEnvironmentalEarth.java | 16 +- .../earth/ProjectileOffensiveEarth.java | 6 - .../impactEffects/earth/SelfDefaultEarth.java | 1 + .../earth/SelfEnvironmentalEarth.java | 32 +-- .../impactEffects/fire/MeleeDefaultFire.java | 30 +++ .../fire/MeleeDefensiveFire.java | 49 ++++ .../fire/MeleeEnvironmentalFire.java | 32 +++ .../fire/MeleeOffensiveFire.java | 32 +++ .../fire/ProjectileOffensiveFire.java | 7 - .../impactEffects/fire/SelfOffensiveFire.java | 2 +- .../impactEffects/ice/MeleeDefaultIce.java | 3 +- .../ice/MeleeEnvironmentalIce.java | 4 +- .../impactEffects/ice/MeleeOffensiveIce.java | 3 +- .../ice/ProjectileDefensiveIce.java | 1 - .../impactEffects/ice/SelfDefaultIce.java | 2 - .../impactEffects/wind/MeleeDefaultWind.java | 40 +++ .../wind/MeleeDefensiveWind.java | 33 +++ .../wind/MeleeEnvironmentalWind.java | 36 +++ .../wind/MeleeOffensiveWind.java | 40 +++ .../impactEffects/wind/SelfDefaultWind.java | 27 ++ .../impactEffects/wind/SelfDefensiveWind.java | 39 +++ .../wind/SelfEnvironmentalWind.java | 45 ++++ .../impactEffects/wind/SelfOffensiveWind.java | 32 +++ .../alchemicalwizardry/gui/nei/altar.png | Bin 0 -> 4204 bytes .../assets/alchemicalwizardry/lang/de_DE.lang | 137 ++++++++++ .../assets/alchemicalwizardry/lang/en_US.lang | 49 +++- .../textures/items/ComplexCrystal.png | Bin 0 -> 414 bytes .../baseAlchemyItemConcentratedCatalyst.png | Bin 0 -> 478 bytes .../items/baseAlchemyItemFracturedBone.png | Bin 0 -> 377 bytes .../textures/items/baseAlchemyItemOffensa.png | Bin 0 -> 367 bytes .../items/baseAlchemyItemOrbisTerrae.png | Bin 0 -> 425 bytes .../items/baseAlchemyItemPotentia.png | Bin 0 -> 433 bytes .../items/baseAlchemyItemPraesidium.png | Bin 0 -> 456 bytes .../items/baseAlchemyItemReductus.png | Bin 0 -> 429 bytes .../baseAlchemyItemStrengthenedCatalyst.png | Bin 0 -> 430 bytes .../textures/items/baseAlchemyItemVirtus.png | Bin 0 -> 417 bytes .../textures/items/baseItemCostCore.png | Bin 0 -> 471 bytes .../items/baseItemCrackedRunicPlate.png | Bin 522 -> 523 bytes .../textures/items/baseItemObsidianBrace.png | Bin 0 -> 325 bytes .../textures/items/baseItemPotencyCore.png | Bin 0 -> 378 bytes .../textures/items/baseItemPowerCore.png | Bin 0 -> 381 bytes .../textures/items/baseItemRunicPlate.png | Bin 420 -> 442 bytes .../items/baseItemScribedRunicPlate.png | Bin 481 -> 513 bytes .../textures/models/SpellEnhancementCost3.png | Bin 4025 -> 4021 bytes .../models/SpellEnhancementPotency3.png | Bin 3951 -> 3947 bytes .../models/SpellEnhancementPower3.png | Bin 4068 -> 4062 bytes .../AlchemicalWizardry.java | 68 ++++- .../BloodMagicConfiguration.java | 2 + .../alchemicalWizardry/ModBlocks.java | 2 + .../alchemicalWizardry/ModItems.java | 69 ++++- .../common/block/BlockBloodLightSource.java | 8 +- .../common/block/BlockSpectralContainer.java | 68 +++++ .../common/block/SpectralBlock.java | 38 +-- .../common/entity/mob/EntityElemental.java | 2 +- .../items/sigil/ItemSigilOfSupression.java | 252 ++++++++++++++++++ .../common/rituals/RitualEffectExpulsion.java | 230 ++++++++++++++++ .../rituals/RitualEffectSupression.java | 93 +++++++ .../tileEntity/TESpectralContainer.java | 142 ++++++++++ 76 files changed, 1789 insertions(+), 184 deletions(-) create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefaultFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefensiveFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeEnvironmentalFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeOffensiveFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java create mode 100644 1.7.2/resources/assets/alchemicalwizardry/gui/nei/altar.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/lang/de_DE.lang create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/ComplexCrystal.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemConcentratedCatalyst.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemFracturedBone.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOffensa.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOrbisTerrae.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPotentia.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPraesidium.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemReductus.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemStrengthenedCatalyst.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemCostCore.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemObsidianBrace.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemPotencyCore.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemPowerCore.png create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java create mode 100644 BM_src/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralContainer.java diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index ebcfbe95..ea2cfe79 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -100,7 +100,7 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; -@Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v1.0.0Beta") +@Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v1.0.0b") //@NetworkMod(clientSideRequired = true, serverSideRequired = false, channels = {"BloodAltar", "particle", "SetLifeEssence", "GetLifeEssence", "Ritual", "GetAltarEssence", "TESocket", "TEWritingTable", "CustomParticle", "SetPlayerVel", "SetPlayerPos", "TEPedestal", "TEPlinth", "TETeleposer", "InfiniteLPPath", "TEOrientor"}, packetHandler = PacketHandler.class) public class AlchemicalWizardry @@ -261,6 +261,7 @@ public class AlchemicalWizardry proxy.registerEntities(); proxy.registerEntityTrackers(); //ItemStacks used for crafting go here + ItemStack lapisStack = new ItemStack(Items.dye,1,4); ItemStack lavaBucketStack = new ItemStack(Items.lava_bucket); ItemStack cobblestoneStack = new ItemStack(Blocks.cobblestone); ItemStack glassStack = new ItemStack(Blocks.glass, 1, craftingConstant); @@ -438,6 +439,7 @@ public class AlchemicalWizardry customPotionFireFuse = (new PotionFireFuse(customPotionFireFuseID,true,0).setIconIndex(0, 0).setPotionName("Fire Fuse")); customPotionPlanarBinding = (new PotionPlanarBinding(customPotionPlanarBindingID,true,0).setIconIndex(0,0).setPotionName("Planar Binding")); + ItemStack masterBloodOrbStack = new ItemStack(ModItems.masterBloodOrb); //FluidStack lifeEssenceFluidStack = new FluidStack(lifeEssenceFluid, 1); //LiquidStack lifeEssence = new LiquidStack(lifeEssenceFlowing, 1); @@ -448,7 +450,7 @@ public class AlchemicalWizardry FluidContainerRegistry.registerFluidContainer(lifeEssenceFluid, new ItemStack(ModItems.bucketLife), FluidContainerRegistry.EMPTY_BUCKET); //lifeEssenceFluid.setUnlocalizedName("lifeEssence"); - //LiquidContainerRegistry.registerLiquid(new LiquidContainerData(LiquidDictionary.getLiquid("Life Essence", LiquidContainerRegistry.BUCKET_VOLUME), new ItemStack(AlchemicalWizardry.bucketLife), new ItemStack(Item.bucketEmpty))); + //LiquidContainerRegistry.registerLiquid(new LiquidContainerData(LiquidDictionary.getLiquid("Life Essence", LiquidContainerRegistry.BUCKET_VOLUME), new ItemStack(AlchemicalWizardry.bucketLife), new ItemStack(Items.bucketEmpty))); //GameRegistry.registerBlock(testingBlock, "testingBlock"); //LanguageRegistry.addName(testingBlock, "Testing Block"); //(testingBlock, "pickaxe", 0); @@ -513,11 +515,27 @@ public class AlchemicalWizardry // comp[i] = redstoneStack; // } // AlchemyRecipeRegistry.registerRecipe(glowstoneDustStack, 2, comp, 2); + + ItemStack gunpowderStack = new ItemStack(Items.gunpowder); + + ItemStack offensaStack = new ItemStack(ModItems.baseAlchemyItems,1,0); + ItemStack praesidiumStack = new ItemStack(ModItems.baseAlchemyItems,1,1); + ItemStack orbisTerraeStack = new ItemStack(ModItems.baseAlchemyItems,1,2); + ItemStack strengthenedCatalystStack = new ItemStack(ModItems.baseAlchemyItems,1,3); + ItemStack concentratedCatalystStack = new ItemStack(ModItems.baseAlchemyItems,1,4); + ItemStack fracturedBoneStack = new ItemStack(ModItems.baseAlchemyItems,1,5); + ItemStack virtusStack = new ItemStack(ModItems.baseAlchemyItems,1,6); + ItemStack reductusStack = new ItemStack(ModItems.baseAlchemyItems,1,7); + ItemStack potentiaStack = new ItemStack(ModItems.baseAlchemyItems,1,8); + + ItemStack strengthenedCatalystStackCrafted = new ItemStack(ModItems.baseAlchemyItems,2,3); + ItemStack fracturedBoneStackCrafted = new ItemStack(ModItems.baseAlchemyItems,4,5); + //TODO NEW RECIPES! AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.weakBindingAgent), 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Items.clay_ball)}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.standardBindingAgent), 15, new ItemStack[]{new ItemStack(ModItems.weakBindingAgent), sanctusStack, new ItemStack(ModItems.crystallos)}, 3); AlchemyRecipeRegistry.registerRecipe(simpleCatalystStack, 2, new ItemStack[]{sugarStack, redstoneStack, redstoneStack, glowstoneDustStack, new ItemStack(Items.gunpowder)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.incendium), 5, new ItemStack[]{lavaBucketStack, new ItemStack(Items.blaze_powder), new ItemStack(Items.blaze_powder), new ItemStack(Blocks.netherrack), simpleCatalystStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.incendium), 5, new ItemStack[]{lavaBucketStack, new ItemStack(Items.blaze_powder), new ItemStack(Items.blaze_powder), new ItemStack(Blocks.netherrack), simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aether), 5, new ItemStack[]{featherStack, featherStack, glowstoneDustStack, ghastTearStack, simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.sanctus), 5, new ItemStack[]{glowstoneDustStack, new ItemStack(Items.gold_nugget), glowstoneDustStack, glassStack, simpleCatalystStack}, 2); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crepitous), 5, new ItemStack[]{new ItemStack(Items.gunpowder), new ItemStack(Items.gunpowder), cobblestoneStack, cobblestoneStack, simpleCatalystStack}, 2); @@ -537,6 +555,21 @@ public class AlchemicalWizardry AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.enhancedFillingAgent), 25, new ItemStack[]{new ItemStack(ModItems.standardFillingAgent), new ItemStack(ModItems.aquasalus), new ItemStack(ModItems.magicales)}, 4); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(ModItems.demonBloodShard), incendiumStack, aquasalusStack, aetherStack}, 4); AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(Items.nether_star), incendiumStack, aquasalusStack, aetherStack}, 4); + + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.web),2,new ItemStack[]{new ItemStack(Items.string),new ItemStack(Items.string),new ItemStack(Items.string),new ItemStack(Items.string),new ItemStack(Items.string)},1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.gunpowder,2,0), 2, new ItemStack[]{gunpowderStack, new ItemStack(Items.coal), new ItemStack(Blocks.sand)}, 1); + + AlchemyRecipeRegistry.registerRecipe(strengthenedCatalystStackCrafted, 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Items.dye,1,15), new ItemStack(Items.nether_wart)}, 3); + AlchemyRecipeRegistry.registerRecipe(offensaStack,10, new ItemStack[]{strengthenedCatalystStack,incendiumStack, new ItemStack(Items.arrow), new ItemStack(Items.flint), new ItemStack(Items.arrow)},3); + AlchemyRecipeRegistry.registerRecipe(praesidiumStack, 10, new ItemStack[]{strengthenedCatalystStack,tennebraeStack,ironIngotStack,new ItemStack(Blocks.web),redstoneStack}, 3); + AlchemyRecipeRegistry.registerRecipe(orbisTerraeStack, 10, new ItemStack[]{strengthenedCatalystStack,terraeStack, gunpowderStack, new ItemStack(Blocks.netherrack), new ItemStack(Blocks.sand)}, 3); + AlchemyRecipeRegistry.registerRecipe(concentratedCatalystStack,10,new ItemStack[]{strengthenedCatalystStack,fracturedBoneStack,goldNuggetStack},4); + AlchemyRecipeRegistry.registerRecipe(fracturedBoneStackCrafted, 2, new ItemStack[]{new ItemStack(Items.bone), new ItemStack(Items.bone),new ItemStack(Items.bone),new ItemStack(Items.bone), gunpowderStack},1); + AlchemyRecipeRegistry.registerRecipe(virtusStack,20, new ItemStack[]{redstoneStack, new ItemStack(Items.coal),strengthenedCatalystStack,redstoneStack,gunpowderStack}, 3); + AlchemyRecipeRegistry.registerRecipe(reductusStack,20,new ItemStack[]{redstoneStack, goldIngotStack, strengthenedCatalystStack,new ItemStack(Blocks.soul_sand), new ItemStack(Items.carrot)},3); + AlchemyRecipeRegistry.registerRecipe(potentiaStack,20, new ItemStack[]{glowstoneDustStack,strengthenedCatalystStack,lapisStack,lapisStack,new ItemStack(Items.quartz)}, 3); + + HomSpellRegistry.registerBasicSpell(new ItemStack(Items.flint_and_steel), new SpellFireBurst()); HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.ice), new SpellFrozenWater()); HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.tnt), new SpellExplosions()); @@ -591,6 +624,7 @@ public class AlchemicalWizardry MeteorRegistry.registerMeteorParadigm(new ItemStack(Items.nether_star), this.netherStarMeteorArray, this.netherStarMeteorRadius); //Register spell component recipes + ItemStack complexSpellCrystalStack = new ItemStack(ModItems.itemComplexSpellCrystal); ItemStack quartzRodStack = new ItemStack(ModItems.baseItems,1,0); ItemStack emptyCoreStack = new ItemStack(ModItems.baseItems,1,1); ItemStack magicalesCableStack = new ItemStack(ModItems.baseItems,1,2); @@ -606,18 +640,32 @@ public class AlchemicalWizardry ItemStack windCoreStack = new ItemStack(ModItems.baseItems,1,12); ItemStack earthCoreStack = new ItemStack(ModItems.baseItems,1,13); ItemStack inputCableStack = new ItemStack(ModItems.baseItems,1,14); + ItemStack crackedRunicPlateStack = new ItemStack(ModItems.baseItems,1,15); + ItemStack runicPlateStack = new ItemStack(ModItems.baseItems,1,16); + ItemStack imbuedRunicPlateStack = new ItemStack(ModItems.baseItems,1,17); + ItemStack defaultCoreStack = new ItemStack(ModItems.baseItems,1,18); + ItemStack offenseCoreStack = new ItemStack(ModItems.baseItems,1,19); + ItemStack defensiveCoreStack = new ItemStack(ModItems.baseItems,1,20); + ItemStack environmentalCoreStack = new ItemStack(ModItems.baseItems,1,21); + ItemStack powerCoreStack = new ItemStack(ModItems.baseItems,1,22); + ItemStack costCoreStack = new ItemStack(ModItems.baseItems,1,23); + ItemStack potencyCoreStack = new ItemStack(ModItems.baseItems,1,24); + ItemStack obsidianBraceStack = new ItemStack(ModItems.baseItems,1,25); ItemStack magicalesCraftedCableStack = new ItemStack(ModItems.baseItems,5,2); + ItemStack crackedRunicPlateStackCrafted = new ItemStack(ModItems.baseItems,2,15); + ItemStack runicPlateStackCrafted = new ItemStack(ModItems.baseItems,2,16); GameRegistry.addRecipe(quartzRodStack, "qqq", 'q', new ItemStack(Items.quartz)); GameRegistry.addRecipe(emptyCoreStack,"gig","nrn","gig",'n',goldIngotStack,'i',ironIngotStack,'g',glassStack,'r',simpleCatalystStack); GameRegistry.addRecipe(magicalesCraftedCableStack,"sss","mmm","sss",'s',new ItemStack(Items.string),'m',magicalesStack); 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(projectileCoreStack, "mbm","aca","mom",'c', emptyCoreStack,'b',weakBloodShardStack,'m', magicalesStack,'o', magicianBloodOrbStack,'a',new ItemStack(Items.arrow)); GameRegistry.addRecipe(selfCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',sanctusStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',glowstoneDustStack); - GameRegistry.addRecipe(meleeCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',incendiumStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',new ItemStack(Items.flint_and_steel)); + GameRegistry.addRecipe(meleeCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',incendiumStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',new ItemStack(Items.fire_charge)); GameRegistry.addRecipe(paradigmBackPlateStack,"isi","rgr","isi",'i',ironIngotStack,'r',stoneStack,'g',goldIngotStack,'s',reinforcedSlateStack); GameRegistry.addRecipe(outputCableStack, " si","s c"," si",'s',stoneStack,'i',ironIngotStack,'c',simpleCatalystStack); @@ -628,6 +676,20 @@ public class AlchemicalWizardry GameRegistry.addRecipe(inputCableStack, "ws ","rcs","ws ",'w',blankSlateStack,'s',stoneStack,'r',imbuedSlateStack,'c',simpleCatalystStack); + GameRegistry.addRecipe(defaultCoreStack,"msm","geg","mom",'m', strengthenedCatalystStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(offenseCoreStack,"msm","geg","mom",'m', offensaStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(defensiveCoreStack,"msm","geg","mom",'m', praesidiumStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(environmentalCoreStack,"msm","geg","mom",'m', orbisTerraeStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + + GameRegistry.addRecipe(powerCoreStack,"msm","geg","mom",'m', virtusStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(costCoreStack,"msm","geg","mom",'m', reductusStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + GameRegistry.addRecipe(potencyCoreStack,"msm","geg","mom",'m', potentiaStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack); + + AlchemyRecipeRegistry.registerRecipe(crackedRunicPlateStackCrafted, 10, new ItemStack[]{imbuedSlateStack,imbuedSlateStack,concentratedCatalystStack}, 4); + 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); + 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); @@ -638,6 +700,38 @@ public class AlchemicalWizardry GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,1),"bgb","ico","bgb",'c',iceCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,2),"bgb","ico","bgb",'c',windCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,3),"bgb","ico","bgb",'c',earthCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); + + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,0),"bgb","ico","bgb",'c',defaultCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,1),"bgb","ico","bgb",'c',offenseCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,2),"bgb","ico","bgb",'c',defensiveCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); + GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,3),"bgb","ico","bgb",'c',environmentalCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); + + 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,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,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.addShapelessRecipe(new ItemStack(Items.dye,5,15),fracturedBoneStack); + + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.flint,2,0), 1, new ItemStack[]{new ItemStack(Blocks.gravel),new ItemStack(Items.flint)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.grass), 2, new ItemStack[]{new ItemStack(Blocks.dirt),new ItemStack(Items.dye,1,15),new ItemStack(Items.wheat_seeds),new ItemStack(Items.wheat_seeds)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.leather,3,0), 2, new ItemStack[]{new ItemStack(Items.rotten_flesh),new ItemStack(Items.rotten_flesh),new ItemStack(Items.rotten_flesh),waterBucketStack,new ItemStack(Items.flint)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.bread), 1, new ItemStack[]{new ItemStack(Items.wheat),new ItemStack(Items.sugar)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.fire_charge,5,0), 3, new ItemStack[]{new ItemStack(Items.coal),new ItemStack(Items.blaze_powder),gunpowderStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.sand,2,0), 1, new ItemStack[]{new ItemStack(Blocks.cobblestone),gunpowderStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.clay,4,0), 2, new ItemStack[]{new ItemStack(Blocks.hardened_clay,1,craftingConstant),new ItemStack(Blocks.hardened_clay,1,craftingConstant),new ItemStack(Blocks.hardened_clay,1,craftingConstant),new ItemStack(Blocks.hardened_clay,1,craftingConstant),waterBucketStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.string,4,0), 1, new ItemStack[]{new ItemStack(Blocks.wool,1,craftingConstant),new ItemStack(Items.flint)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.gravel,2,0), 1, new ItemStack[]{new ItemStack(Blocks.stone),gunpowderStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.obsidian), 1, new ItemStack[]{waterBucketStack,lavaBucketStack}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.paper), 1, new ItemStack[]{new ItemStack(Items.reeds)}, 1); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.soul_sand,3,0), 3, new ItemStack[]{new ItemStack(Blocks.sand),new ItemStack(Blocks.sand),new ItemStack(Blocks.sand),waterBucketStack,weakBloodShardStack}, 3); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.mycelium,1,0), 5, new ItemStack[]{new ItemStack(Blocks.grass),new ItemStack(Blocks.brown_mushroom), new ItemStack(Blocks.red_mushroom)}, 2); + AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.ice), 2, new ItemStack[]{waterBucketStack,new ItemStack(Items.snowball)}, 1); } @EventHandler diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java index 472d5302..a7739d1b 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java @@ -32,7 +32,7 @@ public class LifeBucketHandler if (block!=null && (block.equals(ModBlocks.blockLifeEssence)) && world.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ) == 0) { - world.setBlock(pos.blockX, pos.blockY, pos.blockZ, block); + world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ); return new ItemStack(ModItems.bucketLife); } else { diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/alchemy/AlchemicalPotionCreationHandler.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/alchemy/AlchemicalPotionCreationHandler.java index 55085785..86bf3f8f 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/alchemy/AlchemicalPotionCreationHandler.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/alchemy/AlchemicalPotionCreationHandler.java @@ -17,6 +17,7 @@ public class AlchemicalPotionCreationHandler addPotion(new ItemStack(Items.ghast_tear), Potion.regeneration.id, 450); addPotion(new ItemStack(Items.golden_carrot), Potion.nightVision.id, 2 * 60 * 20); addPotion(new ItemStack(Items.magma_cream), Potion.fireResistance.id, 2 * 60 * 20); + addPotion(new ItemStack(Items.water_bucket), Potion.waterBreathing.id, 2 * 60 * 20); addPotion(new ItemStack(Items.sugar), Potion.moveSpeed.id, 2 * 60 * 20); addPotion(new ItemStack(Items.speckled_melon), Potion.heal.id, 2 * 60 * 20); addPotion(new ItemStack(Items.spider_eye), Potion.poison.id, 450); @@ -35,6 +36,7 @@ public class AlchemicalPotionCreationHandler addPotion(new ItemStack(ModItems.terrae), AlchemicalWizardry.customPotionBoost.id, 1 * 60 * 20); addPotion(new ItemStack(Items.feather), AlchemicalWizardry.customPotionFlight.id, 1 * 60 * 20); addPotion(new ItemStack(Items.arrow), AlchemicalWizardry.customPotionReciprocation.id, 1 * 60 * 20); + addPotion(new ItemStack(Items.ender_pearl),AlchemicalWizardry.customPotionPlanarBinding.id,1*60*20); } public static void addPotion(ItemStack itemStack, int potionID, int tickDuration) diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java index cafe19bf..37b00765 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java @@ -60,9 +60,10 @@ public class EnergyItems extends Item implements IBindable //player.setEntityHealth((player.getHealth()-1)); player.setHealth((player.getHealth() - 1)); - if (player.getHealth() <= 0) + if (player.getHealth() <= 0.0005) { player.inventory.dropAllItems(); + break; } } } @@ -217,9 +218,10 @@ public class EnergyItems extends Item implements IBindable //player.setEntityHealth((player.getHealth()-1)); user.setHealth((user.getHealth() - 1)); - if (user.getHealth() <= 0.1f) + if (user.getHealth() <= 0.0005f) { user.onDeath(DamageSource.generic); + } } } else if (energySyphoned >= 100) @@ -231,9 +233,10 @@ public class EnergyItems extends Item implements IBindable //player.setEntityHealth((player.getHealth()-1)); user.setHealth((user.getHealth() - 1)); - if (user.getHealth() <= 0.1f) + if (user.getHealth() <= 0.0005f) { user.onDeath(DamageSource.generic); + break; } } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java index f7bcfabb..cdc33112 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java @@ -21,7 +21,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class ItemAlchemyBase extends Item { - private static final String[] ITEM_NAMES = new String[]{}; + private static final String[] ITEM_NAMES = new String[]{"Offensa","Praesidium","OrbisTerrae","StrengthenedCatalyst","ConcentratedCatalyst","FracturedBone","Virtus","Reductus","Potentia"}; @SideOnly(Side.CLIENT) private IIcon[] icons; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java index ff839d08..a885702e 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java @@ -21,7 +21,7 @@ import cpw.mods.fml.relauncher.SideOnly; 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"}; + 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"}; @SideOnly(Side.CLIENT) private IIcon[] icons; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java index 30103e0e..52965663 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java @@ -228,7 +228,7 @@ public class SigilOfGrowth extends EnergyItems implements ArmourUpgrade { if (!p_150919_1_.isRemote) { - p_150919_0_.stackSize--; + } return true; } @@ -246,7 +246,7 @@ public class SigilOfGrowth extends EnergyItems implements ArmourUpgrade igrowable.func_149853_b(p_150919_1_, p_150919_1_.rand, p_150919_2_, p_150919_3_, p_150919_4_); } - --p_150919_0_.stackSize; + } return true; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java index f1b410ef..9fc06bda 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java @@ -37,6 +37,7 @@ public class EntitySpellProjectile extends Entity implements IProjectile private int ticksInAir = 0; private int ricochetCounter = 0; private boolean scheduledForDeath = false; + private boolean isSilkTouch = false; //Custom variables private int maxRicochet = 0; @@ -316,6 +317,7 @@ public class EntitySpellProjectile extends Entity implements IProjectile par1NBTTagCompound.setTag("Effects", effectList); par1NBTTagCompound.setInteger("blocksBroken", blocksBroken); + par1NBTTagCompound.setBoolean("isSilkTouch", isSilkTouch); } /** @@ -331,6 +333,7 @@ public class EntitySpellProjectile extends Entity implements IProjectile inData = par1NBTTagCompound.getByte("inData") & 255; inGround = par1NBTTagCompound.getByte("inGround") == 1; blocksBroken = par1NBTTagCompound.getInteger("blocksBroken"); + isSilkTouch = par1NBTTagCompound.getBoolean("isSilkTouch"); NBTTagList tagList = par1NBTTagCompound.getTagList("Effects",Constants.NBT.TAG_COMPOUND); @@ -608,4 +611,14 @@ public class EntitySpellProjectile extends Entity implements IProjectile { this.blocksBroken = blocksBroken; } + + public boolean getIsSilkTouch() + { + return this.isSilkTouch; + } + + public void setIsSilkTouch(boolean bool) + { + this.isSilkTouch = bool; + } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java index 7c81d8aa..8bb44f6a 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java @@ -23,6 +23,7 @@ public class SpellParadigmProjectile extends SpellParadigm public List updateEffectList; public boolean penetration; public int ricochetMax; + public boolean isSilkTouch; public SpellParadigmProjectile() { @@ -33,6 +34,7 @@ public class SpellParadigmProjectile extends SpellParadigm this.updateEffectList = new ArrayList(); this.penetration = false; this.ricochetMax = 0; + this.isSilkTouch = false; } @Override @@ -71,6 +73,7 @@ public class SpellParadigmProjectile extends SpellParadigm proj.setUpdateEffectList(updateEffectList); proj.setPenetration(penetration); proj.setRicochetMax(ricochetMax); + proj.setIsSilkTouch(isSilkTouch); proj.setSpellEffectList(bufferedEffectList); } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java index 030abd06..a3c993c1 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java @@ -93,74 +93,73 @@ public class SpellEffectEarth extends SpellEffect @Override protected int getCostForDefaultProjectile() { - return (int)(10*Math.pow((0.5*(this.powerEnhancement)+1)*2 + 1,3)*Math.pow(0.8, costEnhancement)); + return (int)(10*Math.pow((0.5*(this.powerEnhancement)+1)*2 + 1,3)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseProjectile() { - return (int)(10*(1.5*this.potencyEnhancement+1)*(Math.pow(1*this.powerEnhancement+1,2))*Math.pow(0.8, costEnhancement)); + return (int)(10*(1.5*this.potencyEnhancement+1)*(Math.pow(1*this.powerEnhancement+1,2))*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseProjectile() { - return (int)(3*Math.pow((this.powerEnhancement*2+1),2)*(this.potencyEnhancement*2+1)*Math.pow(0.8, costEnhancement)); + return (int)(3*Math.pow((this.powerEnhancement*2+1),2)*(this.potencyEnhancement*2+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentProjectile() { - return (int)(10*2*(0.1d*(this.potencyEnhancement+1))*Math.pow(3.47,this.potencyEnhancement)*Math.pow(0.8, costEnhancement)); + return (int)(10*2*(0.1d*(this.potencyEnhancement+1))*Math.pow(3.47,this.potencyEnhancement)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefaultSelf() { - return (int)(20*Math.pow(1.5*powerEnhancement+1,2)*(2*this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(20*Math.pow(1.5*powerEnhancement+1,2)*(2*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseSelf() { - return (int)(10*Math.pow(2*this.powerEnhancement+1,2)*(this.potencyEnhancement+1)); + return (int)(10*Math.pow(2*this.powerEnhancement+1,2)*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseSelf() { - return (int)(750*(1.1*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(750*(1.1*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(250*(1.2*this.potencyEnhancement+1)*(3*this.powerEnhancement+2.5)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefaultMelee() { - return (int)(50*Math.pow(1.5*this.potencyEnhancement + 1,3)*(0.5*this.powerEnhancement + 1)*Math.pow(0.8, costEnhancement)); + return (int)(50*Math.pow(1.5*this.potencyEnhancement + 1,3)*(0.5*this.powerEnhancement + 1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseMelee() { - return (int)(20*Math.pow(1.5*this.powerEnhancement+1,3)*(0.25*this.powerEnhancement+1)); + return (int)(20*Math.pow(1.5*this.powerEnhancement+1,3)*(0.25*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseMelee() { - return (int)(5*(1.2*this.powerEnhancement+1)*(1.0f/3.0f*Math.pow(this.potencyEnhancement,2)+2+1.0f/2.0f*this.potencyEnhancement)*Math.pow(0.8, costEnhancement)); + return (int)(5*(1.2*this.powerEnhancement+1)*(1.0f/3.0f*Math.pow(this.potencyEnhancement,2)+2+1.0f/2.0f*this.potencyEnhancement)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentMelee() { - return (int)(500*Math.pow(2*this.potencyEnhancement+1, 3)*(0.25*this.powerEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(500*Math.pow(2*this.potencyEnhancement+1, 3)*(0.25*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java index 4800871f..edba6b15 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java @@ -3,6 +3,10 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeDefaultFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeDefensiveFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeEnvironmentalFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeOffensiveFire; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefaultFire; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefensiveFire; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileEnvironmentalFire; @@ -66,104 +70,96 @@ public class SpellEffectFire extends SpellEffect @Override public void defaultModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeDefaultFire(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); } @Override public void offensiveModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeOffensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defensiveModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addWorldEffect(new MeleeDefensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void environmentalModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addWorldEffect(new MeleeEnvironmentalFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override protected int getCostForDefaultProjectile() { - return (int)((5*Math.pow(1.5*this.powerEnhancement+1, 2)*(1.5*this.potencyEnhancement+1)+this.potencyEnhancement*15)*Math.pow(0.8, costEnhancement)); + return (int)((5*Math.pow(1.5*this.powerEnhancement+1, 2)*(1.5*this.potencyEnhancement+1)+this.potencyEnhancement*15)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseProjectile() { - return (int)(10*Math.pow((this.powerEnhancement)*1.3+1,2)*((1.5*this.potencyEnhancement+1))*Math.pow(0.8, costEnhancement)); + return (int)(10*Math.pow((this.powerEnhancement)*1.3+1,2)*((1.5*this.potencyEnhancement+1))*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseProjectile() { - return (int)(25*Math.pow(1*this.powerEnhancement+1,2)*(1*this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(25*Math.pow(1*this.powerEnhancement+1,2)*(1*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentProjectile() { - return (int)(75*(0.5*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(75*(0.5*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefaultSelf() { - return 10*(int)(10*Math.pow(1.5, this.powerEnhancement+1.5*this.potencyEnhancement)*Math.pow(0.8, costEnhancement)); + return 10*(int)(10*Math.pow(1.5, this.powerEnhancement+1.5*this.potencyEnhancement)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseSelf() { - return 500*(int)((this.powerEnhancement+1)*Math.pow(2, potencyEnhancement)*Math.pow(0.8, costEnhancement)); + return (int)(300*(3*powerEnhancement+1)*(2*potencyEnhancement + 1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseSelf() { - return (int)(25*(3*this.potencyEnhancement+1)*(2*this.powerEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(25*(3*this.potencyEnhancement+1)*(2*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentSelf() { - return (int) ((15*Math.pow(1.7, powerEnhancement)+10*Math.pow(potencyEnhancement,1.8))*Math.pow(0.8, costEnhancement)); + return (int)((15*Math.pow(1.7, powerEnhancement)+10*Math.pow(potencyEnhancement,1.8))*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefaultMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(25*(1.2*this.potencyEnhancement+1)*(2.5*this.powerEnhancement+2)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(500*(1+this.potencyEnhancement)*(this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(30*(1.5*potencyEnhancement+1)*(3*powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(25*Math.pow(1.5*this.powerEnhancement+1,3)*(0.25*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java index 0edb3596..91688c44 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java @@ -3,9 +3,17 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeDefaultWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeDefensiveWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeEnvironmentalWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeOffensiveWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileDefaultWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileEnvironmentalWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileOffensiveWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfDefaultWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfDefensiveWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfEnvironmentalWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfOffensiveWind; public class SpellEffectWind extends SpellEffect { @@ -24,7 +32,7 @@ public class SpellEffectWind extends SpellEffect @Override public void defensiveModificationProjectile(SpellParadigmProjectile parad) { - parad.ricochetMax+=this.potencyEnhancement; + parad.isSilkTouch = true; } @Override @@ -36,137 +44,120 @@ public class SpellEffectWind extends SpellEffect @Override public void defaultModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void offensiveModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defensiveModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfDefensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void environmentalModificationSelf(SpellParadigmSelf parad) { - // TODO Auto-generated method stub - + parad.addSelfSpellEffect(new SelfEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defaultModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void offensiveModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defensiveModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addEntityEffect(new MeleeDefensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void environmentalModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addWorldEffect(new MeleeEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override protected int getCostForDefaultProjectile() { - return (int)(100*(this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(100*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseProjectile() { - return (int)(100*(0.5*this.potencyEnhancement+1)*(this.powerEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(100*(0.5*this.potencyEnhancement+1)*(this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(100*(this.potencyEnhancement+1)); } @Override protected int getCostForEnvironmentProjectile() { - return (int)(50*(this.powerEnhancement+1)*(this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); + return (int)(50*(this.powerEnhancement+1)*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefaultSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(100*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(100*(0.5*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(500*(0.7d*this.powerEnhancement+1)*(0.8*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(500*(0.7d*this.powerEnhancement+1)*(0.2*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefaultMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(350*(1.0*this.potencyEnhancement+1)*(1.2*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForOffenseMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(250*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForDefenseMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(150*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } @Override protected int getCostForEnvironmentMelee() { - // TODO Auto-generated method stub - return 0; + return (int)(100*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java index 30cc07dd..0454570f 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -239,15 +239,17 @@ public class SpellHelper if(oreName.contains("ore")) { - String lowercaseOre = oreName; - lowercaseOre.toLowerCase(); + String lowercaseOre = oreName.toLowerCase(); boolean isAllowed = false; - + for(String str : AlchemicalWizardry.allowedCrushedOresArray) - { - if(lowercaseOre.contains(str)) + { + String testStr = str.toLowerCase(); + + if(lowercaseOre.contains(testStr)) { isAllowed = true; + break; } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java index aca6b077..7e48b5a8 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java @@ -45,7 +45,7 @@ public abstract class ExtrapolatedMeleeEntityEffect implements IMeleeSpellEntity { if(hit entities = SpellHelper.getEntitiesInRange(world, player.posX, player.posY, player.posZ, radius, radius); - int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.yCoord); - int posZ = (int)(blockVec.zCoord); - - for(int i=-horizRadius; i<=horizRadius; i++) + for(Entity entity : entities) { - for(int j=0; j0) { diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeEnvironmentalIce.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeEnvironmentalIce.java index 1399084f..fdde7eb2 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeEnvironmentalIce.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeEnvironmentalIce.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntitySnowball; import net.minecraft.world.World; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; @@ -16,8 +17,9 @@ public class MeleeEnvironmentalIce extends ExtrapolatedMeleeEntityEffect } @Override - protected boolean entityEffect(World world, Entity entity) + protected boolean entityEffect(World world, Entity entity, EntityPlayer entityPlayer) { + //TODO Change to an Ice Cage for(int i=0;i<=this.powerUpgrades;i++) { double randX = (world.rand.nextDouble()-world.rand.nextDouble())*3; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeOffensiveIce.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeOffensiveIce.java index 7688edf3..4f0e774d 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeOffensiveIce.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeOffensiveIce.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -18,7 +19,7 @@ public class MeleeOffensiveIce extends ExtrapolatedMeleeEntityEffect } @Override - protected boolean entityEffect(World world, Entity entity) + protected boolean entityEffect(World world, Entity entity, EntityPlayer entityPlayer) { Vec3 blockVector = SpellHelper.getEntityBlockVector(entity); diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileDefensiveIce.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileDefensiveIce.java index 72d2d0e4..438cff48 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileDefensiveIce.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileDefensiveIce.java @@ -1,6 +1,5 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; -import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; import net.minecraft.util.MovingObjectPosition; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfDefaultIce.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfDefaultIce.java index e96bf4cb..920698ea 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfDefaultIce.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfDefaultIce.java @@ -1,11 +1,9 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; -import ibxm.Player; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.Vec3; import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java new file mode 100644 index 00000000..31b324ef --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java @@ -0,0 +1,40 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; + +public class MeleeDefaultWind extends ExtrapolatedMeleeEntityEffect +{ + public MeleeDefaultWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(4+2.0f*potency); + this.setRadius(4+2.0f*potency); + this.setMaxNumberHit(potency+1); + } + + @Override + protected boolean entityEffect(World world, Entity entity, EntityPlayer player) + { + double wantedVel = -(0.5d+0.7d*this.powerUpgrades); + + if(entity instanceof EntityLiving) + { + double dist = Math.sqrt(entity.getDistanceToEntity(player)); + double xVel = wantedVel*(entity.posX - player.posX)/dist; + double yVel = wantedVel*(entity.posY - player.posY)/dist; + double zVel = wantedVel*(entity.posZ - player.posZ)/dist; + + entity.motionX = xVel; + entity.motionY = yVel; + entity.motionZ = zVel; + + return true; + } + + return false; + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java new file mode 100644 index 00000000..5f146e25 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java @@ -0,0 +1,33 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; + +public class MeleeDefensiveWind extends ExtrapolatedMeleeEntityEffect +{ + public MeleeDefensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(3+0.3f*potency); + this.setRadius(2+0.3f*potency); + this.setMaxNumberHit(potency+1); + } + + @Override + protected boolean entityEffect(World world, Entity entity, EntityPlayer player) + { + double wantedVel = 0.5d+0.5d*this.powerUpgrades; + + if(entity instanceof EntityLiving) + { + entity.motionY = wantedVel; + + return true; + } + + return false; + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java new file mode 100644 index 00000000..2eed2c73 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java @@ -0,0 +1,36 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.MeleeSpellCenteredWorldEffect; + +public class MeleeEnvironmentalWind extends MeleeSpellCenteredWorldEffect +{ + public MeleeEnvironmentalWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(5*power + 5); + } + + @Override + public void onCenteredWorldEffect(EntityPlayer player, World world, int posX, int posY, int posZ) + { + int radius = 5*this.potencyUpgrades + 3; + + List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); + + for(Entity entity : entities) + { + if(entity instanceof EntityItem) + { + ((EntityItem)entity).delayBeforeCanPickup = 0; + entity.onCollideWithPlayer((EntityPlayer)player); + } + } + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java new file mode 100644 index 00000000..dd283246 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java @@ -0,0 +1,40 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; + +public class MeleeOffensiveWind extends ExtrapolatedMeleeEntityEffect +{ + public MeleeOffensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(3+0.3f*potency); + this.setRadius(2+0.3f*potency); + this.setMaxNumberHit(potency+1); + } + + @Override + protected boolean entityEffect(World world, Entity entity, EntityPlayer player) + { + double wantedVel = 1.0d+1.0d*this.powerUpgrades; + + if(entity instanceof EntityLiving) + { + double dist = Math.sqrt(entity.getDistanceToEntity(player)); + double xVel = wantedVel*(entity.posX - player.posX)/dist; + double yVel = wantedVel*(entity.posY - player.posY+0.5f)/dist; + double zVel = wantedVel*(entity.posZ - player.posZ)/dist; + + entity.motionX = xVel; + entity.motionY = yVel; + entity.motionZ = zVel; + + return true; + } + + return false; + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java new file mode 100644 index 00000000..3e13568a --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java @@ -0,0 +1,27 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfDefaultWind extends SelfSpellEffect +{ + public SelfDefaultWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + player.extinguish(); + player.fallDistance = 0; + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java new file mode 100644 index 00000000..125ef17d --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java @@ -0,0 +1,39 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfDefensiveWind extends SelfSpellEffect +{ + public SelfDefensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + double radius = 1.5d*this.powerUpgrades+1.5d; + double posX = player.posX; + double posY = player.posY; + double posZ = player.posZ; + + List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); + + for(Entity entity: entities) + { + if((!entity.equals(player))&&entity instanceof EntityLiving) + { + ((EntityLiving)entity).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id,200,this.potencyUpgrades)); + } + } + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java new file mode 100644 index 00000000..3ea0f86b --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java @@ -0,0 +1,45 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfEnvironmentalWind extends SelfSpellEffect +{ + public SelfEnvironmentalWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + double radius = 1.5d*this.potencyUpgrades+1; + double posX = player.posX; + double posY = player.posY-0.7d; + double posZ = player.posZ; + double wantedVel = 0.7d+0.7d*this.powerUpgrades; + + List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); + + for(Entity entity: entities) + { + if((!entity.equals(player))&&entity instanceof EntityLiving) + { + double dist = Math.sqrt(entity.getDistanceToEntity(player)); + double xVel = wantedVel*(entity.posX - posX)/dist; + double yVel = wantedVel*(entity.posY - posY)/dist; + double zVel = wantedVel*(entity.posZ - posZ)/dist; + + entity.motionX = xVel; + entity.motionY = yVel; + entity.motionZ = zVel; + } + } + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java new file mode 100644 index 00000000..74dd6e13 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java @@ -0,0 +1,32 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; + +public class SelfOffensiveWind extends SelfSpellEffect +{ + public SelfOffensiveWind(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onSelfUse(World world, EntityPlayer player) + { + Vec3 vec = player.getLookVec(); + double wantedVelocity = 1.5 + this.powerUpgrades*0.4; + + SpellHelper.setPlayerSpeedFromServer(player, vec.xCoord * wantedVelocity, vec.yCoord * wantedVelocity, vec.zCoord * wantedVelocity); + + player.fallDistance = 0; + } +} diff --git a/1.7.2/resources/assets/alchemicalwizardry/gui/nei/altar.png b/1.7.2/resources/assets/alchemicalwizardry/gui/nei/altar.png new file mode 100644 index 0000000000000000000000000000000000000000..b1de616ac851daf73b82273aca4dbc6db7331e48 GIT binary patch literal 4204 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 ZTxVQJBnIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^0|O(Ir;B5V#p$J!ef~vC2yx-_HCvyWUqQdqV5<*vNmUw|$t{qH?d>>2jpd z`g___E{Oe_rBarTFaWHLCVhxHyEbW-8bkBJ zh7vvghQ}7iH15w4VP|3e^zk2)gVpr^!hJur_rhP4 z-TI+avDa=N$F(lg_|AiJC04OQp54Emi{JjO`c_UNaetxF`gI3pvVDFezP$TQAsGbEzKIX^cyHLnE7WngeFN=+qYZTFAU%(Aa{J({E9F)4-p#HKf29=}3y2B6R%PZ!4!i_=>t@AYDK6lvWryf{## z=f;w)K_8Bam@pm<3W|z|yzwJO%&w(XKslxK`;C~xr8C!bSQN}mJvS%++@Cc$pQm5@ zefCN5$(`&6%+ep+DG#ka=XKC5`GZC8bg?MSnCAS0<_}i)rD(}M3i%{w!2W85_=9uT z`r9og?va0{b%x>a1uI73lkACW8gdh~Uphb7#2U$@r_!HvG*U=A;rr`j4ZaUd9Dn_M zth|bS4SR;D~-mv_+eLo^=J{$MR?f<9jy$lQo22WQ% Jmvv4FO#ljslotR1 literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOrbisTerrae.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOrbisTerrae.png new file mode 100644 index 0000000000000000000000000000000000000000..33ffb99d7df2c9fd1a2a6ba78f69ccd8e6cb7665 GIT binary patch literal 425 zcmV;a0apHrP)#zsXS!TSAft(b zqP6Np*V7+GwWun;DZ?-8Z-IP}X+FsGM?i1Ct!Bj#Z(F`X76QG4Ov80cvTk^}sE9Y0 zBcFioUZz1Rv~tVjQHeJqsz<*RF&|&HZA02Ol=n4SDkv1UQ|c1JjwL^8A~M^9e2}Sk zLb_{k&&unKW2GCS3dRCf@TKAfaGtA^ku(z2CB&OTmQ|Wku8x6bM%ZH&RSwNVX#gmdxPhY%JA7jaW!`BGg0J5uVN`P=gzKYzotH z&DHUH{KgDs)jw=&T`0*`fUgt~{6tYzOiZJBAuzv%ZsTk_jYh;)W1r}xZ+`{o_6D}qJ|szU@?5ifa7^dy zW-dg`GdH&*jL~Rq2}2*HEJ`XqK3;jeyA%sQm|m7-sUirz*6CPc5wzNe{LIApY0gqf zX-ZbAK0-LeqXJoIJnu`o(~5{rrOi@N|DA7PfG7achk+tgr1c8fLhzL!}~!;}<;NiNJbr4Ww5_1u~I b{?2>?oh6k!r^M>F00000NkvXXu0mjfg#f)% literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPraesidium.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPraesidium.png new file mode 100644 index 0000000000000000000000000000000000000000..8bcc782c5b493ed89cece11842547f6d4cca8a17 GIT binary patch literal 456 zcmV;(0XP1MP)OkPkaL0;#e-h=Q;Lcdfx4Y(Y~6 z{iu5N`n3`f{w3c22K=Garwo9I@cxj$JCB$zFGPg8uBEPPdBlvdN<{cjiXWp4uv{)> zu~=ZO<$Arc*=*FSwbUyS*Xy+uMZsh;!CDLOWs@fno2HRG&$-=hSZgWEk}S(e)0C!Z z89zVC_S81MbSBuNtbzUO#6;=Mo*zfl^=V;rO zD2kX)r_Ul*Ri#d+6CnipzQ-6t6h&BT(OT1W9a?LQF`qPedd6Q$=Xp*Df%ExH2!XEa yNYj+o3rO) zrHK-vrTEn|KR#yQf2VP(v2m(#-i*v!-af1Y@Y>F~JuBtcz|OJ8bkpE1gaAUsJ_Wj0 zL4E{wPc&{Eqy&T{5d_F{Pl%CWyX4{gDHmHJ%Qe>X&#i1_pcsW62 zdU?0GL{*hh?&$Z&{Tt;dpav2nK%9Mp#!($r z!RC&qz9oAOcqhDdJhe^1xJd7M#to(sfW782)&|Pb6GCLrDgbC-%=yAB=p*0X_jmFR X^mUPs@aTw)00000NkvXXu0mjfG~u>9 literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemStrengthenedCatalyst.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemStrengthenedCatalyst.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc9c8aafc34c7bd8bd311131f9b1f135fc1b926 GIT binary patch literal 430 zcmV;f0a5;mP)C010qNS#tmY3ljhU3ljkVnw%H_000McNliru-UAQ}8ZjHN`85Cl0Xs=V zK~y-)rIS5N!%!54pOn(prfPAMIuwx#QaU=h6k4cD{+eB!{1;A|NYSB#xCjQpEM~M$ zwrP{J^yWBd9MVtqg$tK^cpuJr4_6Zr{-e~gV%yMY8`|FhmSq8mzEhI#`}%;`Ts%4@ ze^3Wl3=xr;W16O{^Clvs7qxbAekSSkS9v;}Qm#~gm4Q~SR8dNyl#0#TT7Y>*+LM8bZ<=>ErYwxH9_DrnT#2S6T)n`8W2P7 zyB$VDk4S{T4~ax5=!MyJB|np8SpwiXHpAhF&8-5xw|9HsvGO>HS435u08t^};B YPg^*}N6O9Z`~Uy|07*qoM6N<$f+o7J-T(jq literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fee0063dd8ab90fa81768b2258d4a0c3753ec4 GIT binary patch literal 417 zcmV;S0bc%zP)?=+3fG%`~cq|-bGJwhkM z))nzK1odM?z&Ef2CT0w(%C;7PsA?uybG^m;+@ik~#2V#zji!R|FZb0vnvrQ?)WI9O&oC6=p zFastbumVCGP`|Q4RoTRh2)M)&xDSEX)CC6)%aW-XSFLV%{ao9Su^FGhQH*#JJ)1E# z<1(3Rk4b7a*Na6%9=WRodMT~*)~&-lSFLTjunw~BWBt|GuHX3w(HIKydtBNj00000 LNkvXXu0mjf=~<&E literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemCostCore.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemCostCore.png new file mode 100644 index 0000000000000000000000000000000000000000..1fdfd2d42c57d7a144fcf36771e7b6e1799d5ff2 GIT binary patch literal 471 zcmV;|0Vw{7P)VGd000McNliru-UAR4IRXrEVK@K)0c1%; zK~y-)&5}KD6G0G$pSim|`+ULjhk~F$bg7`Fqv98&^G~Fprc9R}i6V%~fMhHr6mzz7 zd$+eU6p@VcrKBToHLKM;`_8)q|66kB&1`5_&hIOE7+^Lu@{IAD7huq}p0M8Hzf`w^ z2FdIA}ie6r$i0d zryA2OPExw(0nU@Ve<43Qz?B8DZjjFnm=RtYXvA72ehcuimYWXtlT9h!QX&UvUAcR2Q_l)BRK$@m_@3~&D%w{tH#&M)5 zieGKtZ8XNncDu!UkJcJ%EoqwKoFhpRvMj?|OIem!Yq8cU5qWMQNfH2Vw;Nh(x~^lj zS}~u`8HND>@BK8dX$JS|!!Ypq`F}|W0e~oqrgPi2L{UWBwlqznUR*ez&kVzW)|#rS z*lac^rRe*f5CU3j;y8Y>Q9Z75RaGJ)>~^~;*E9_xLQxc0YoDsW*l4X)k2d9bj#3Km zJTrTQIfJcysObUMt_%6NxVAaW}mI}oj00000Ne4wvM6N<$ Ef()IzxBvhE delta 409 zcmV;K0cQS-1d0TZQwR(J2s-A0D;kkoEPrlEL_t(I%cYasisC>JhQDq%2ML-46Ez~} zmG8ChE^}cDAtn%##;&>ApzEy5?ABFNG=Kl6Hmb`1jQwg^mZg?uss9XMt>thyP*s&~ zw_80Pk3ateU>+qHVk6%EPu%J zoG6M|uh%cqe*CUIO;gV2Gv0fa%O$Fca}Hw+RaH&*0P4CnPYk^GbX~_djsV1QjB}3L z?Z#|217I9SvMhV`pe#$>?RGflu+}0X#BogD_e4>|a=AoA$nzW#K}3wIK1+zA2!Q+j zj44aS%$LTfEy7{2d8Q534G?DzX=SJySFN|t4a$V(TVJP;A{7*m?27-MkG z(f9q|oA}kA00_g7zVEqSujX3-k3gzAG5j{byZHpmj?6UKVLRdg0000Zfeyyu8sd$2L(tMc2K<{7TD{Pm*Q RwSc~3@O1TaS?83{1OUTLdwc)@ literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemPotencyCore.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemPotencyCore.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d993e885cf8f138b93511e7303abbd072ac7ac GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)04gn7Q4@9w@?D;1OBO zz`%DHgc*6>*=4{rhMC3#++p#S@^Nc7eBh z_fZbkzaN|C&6%Do{h{UMhR=@`x32D=pH?W{ASAx=+1p3cm)}`e!Sj;$jmW>$JVGd000McNliru-UAR4I0cIi#o7P>0SZY( zK~y-)#nQb_0#OhJ;18l~#6N;2CSYPgZR?Bp0=}IUg|YG-q%rXcG$9&AY>>O_?pk=o zbqQK}ntSK(%*o8~-)O7~TvDbL`*cO_lJkmk6Fbp!mYiW9=atZc;J)3~ijF5tYsE!WH^W`4wXC2&n;CUF z+So->BM5lGZIU=lzxT8D^~o`qPTll+vOE{E%wRH6;5tdni$Z~u5Pqopv4tV!QDp|B zZ+ed~Q=5Sxmmk00000NkvXXu0mjfEn1=g literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemRunicPlate.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemRunicPlate.png index 1f1ed624ed757122da3135c7f70715cad8de4f4b..6f6a6e08593393d5131e4edc8569fac45c7d21f5 100644 GIT binary patch delta 328 zcmV-O0k{671G)o{QwR_eC^6u8BR-K^EPozJL_t(I%cYaes)H~TguevsuC$A0(LgC~ z`h>njY2Q+CQx}B_2BXPcC1{lE{W&`gerIMf3hzDt8M*dSDdm+?{?7m@CD-ef^ZC39 z5>pF82u`Pyzuj(FYss<VQ0q}agL<-2J58iuSw=I!Znt9`M~pE%9uLa01fVR-2`8091u}x+kY0$ zIjrl7JHUP4?~V=(k|crm9$M?$W@8MpEW1J^qEJ;8j4_Yo$8m&GN?aH)Grae=jmxrt znRi~h01<_0tSAbwyl%45dZ)H07*qoM6N<$ Ef>u_Dl>h($ diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png b/1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png index bd01c9b96e850de88cae7c55b017238717c659a7..81a8df869afc1077e9394600998779ea162d1fac 100644 GIT binary patch delta 440 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 b7g_!vH_LTG9beMv00000NkvXXu0mjfEJw{5 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency3.png b/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency3.png index 853997892763643893768dfcf34334d0e69bf201..d74001fe091c9ff81e4de2a5a5ae7e3e4725c78a 100644 GIT binary patch delta 3895 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 FV1oIfeA)m2 delta 3918 zcmV-U53%s;9`7EIDm9bQ&n zfH&WLD}?09(;q2X0tAS4n0n-uFqxIP{3-Kf*&0^6s4BN2%ZBSw`f`|S7a zJW-Mj>W%;uFJhzL*xHry32QJ@6Q2QX$pD!?dc2_$*yH&W9Y2}vLbRju~zJXhr^ z8@fRf|DFryTLF$f6!Cv1SUh7<0weAnPXI%%H=um#HrS!`fl~xs2L&|Z9p4A?-U={I{YHvfWJE?NQR=G_lqgZAOj*lZ1UX{n zimnAP(qPPiq+JjwH{6v^+WR@;VS!V|07O{P6$}h)?7p4HR-1nmDfb+D0WiRmr}q@f zpyE!XM1Z)r!YhE~9+Q}d{wvX zV@diK+2owJ^fShac<+?ZNKG9vkmHV5FJu(YCFq`~ID=gwiZUsal=~Q!lqg|hVqt&rPT!q>41mVH$uxioZ$;CBo0*y(HtrhNf^jz&9q}2y0tL#H0~capF)Op=$dT17CMI#>?6Mn- z`&Fi_t;T=Z*o?^-2~AL?8l30sDS)KBmA~&!F!hiX5chpad9NqDRbO()s_g;CF_0l3 z>$#7(_rKor_&!ID9o-35VMI`VE7*IEJiNIZlE7NrNm{qW@VO9Mgh1c*Ra)Y83xVB3{j$( zn67_crACDcIdZNKC&hbxPn2i_iPCGau*hqk6eqsc~q2|)Ud^-M2Q`C*k_+n86`$606+!?Ns>4?Y#*{!{4(R{ zhfG|1IWfK!x+{14_Q3Ypr$B*y_A!szOFMrr3ee1<8zETG{7`MRKjOlh8Mx*LlqMax zkbW|0%@(I$(#k@fYYgCK&WwcO{$`o*ey(w!A#aS$EGfQR-cYUA`KKRG%a_YJeSCjX zg6yG>#BRczJ3R(7W&>WKPx}ECtuP}qWHn3l(0e_HAn@BvUc(@+lawlV!asi9N{)Z? z{oP0yudL}>-yYZ&TUdHP6wwDfb1ERP8N~Ho)B5}Uf^bb-hOeI>aE2L7OdK5Iod3-r z^ZO-RQPC=rtwQKGzAa(BCLE}V?Qe3@~y?lFREtdS&1Qj#n$Rn*32ej(8lOHiap zl`1)M9`Ky#%LA)ZCq)VagE1L{a~^*Q7&Wb7iG?K=5h6J1U|})LaL+XSC@|S8@#)x2 z-Rx^ps32UGtHdRKA(BJQc3k^3iIagQDikOLq>|4GM2ULDQg6t}DVf5;qNcS_!e;Nq zcQZ+nUOwbGPYNw+k!hJ`RabFv7-K9zxAh)u=J?^@VT@usd6p^ZF1r{Q4I6(uKI7-_ z_|@11ASN-^b)En6cIjG=tpRR|x9{R!W*jY2Je1WG1owEQ;rMO_ZO3}1NuS-_K%WP& zu&7dP$fhxRusUaDmb~U$B6N2mhK~GvE2Ye9o*i~blB7&4Kjaq?8|?6p#YD6en;NqOc%qA+ea#%+3v<+>O>di$IHzK zy+p}-Fh|S$VlzlIaJh!CYl?&v$qBiYPR6?8T7m-87@_fgUPR0rd(`ox?ckYp0k+!g z(#Yibn?b#xItvs6>*6DHKVf26j+Zd?jYh5Q$bpPuUtnO@1`pWlB8o35iTLsIVF?q*Nh$x7PjPTCFfK%1Ue6+w)NKXO{7d<(zy6s5 z{PL?`NLvL^lqs2_Ou6S&=QPud$yftIH^pR6_l~_Q_?EW~zu)H5%h^A!3-BjnUDpY6 z;(ADR`tfp!5>cWQDKdY>6ft7n>g|37`?-JN+=bJY=b4(mN&XnL%&p>UUdL~MO!Md` zzX?|0a;DN%-o)%ecl#Nde;J&s-O3LXzy&`(s7d$y!5oxN`_^RS#IbX;yE+q$8U|<) zG~(_|%2klYt?($(t|Ev*By0s3;N_B|mbzfgzz7l^#~DYEmi~X+#6*yQFX$$lXkuZf zBMtpJ^H!&rVv|ii;gcY|d#$g7@b2r(Tb+@a24x5X!)F<{UeLsB2q&vlgYQU665IQS z!ibD;bHV9o<@@&z4v4Uw{5?+@hI#VzuFe&{RhxyC4?OfrATq)f7>dqjzHU9JZ!vfFH;Zlt-?t5xzx_#CZP=W%i!I<-dry(1|v z#eNjH?uLu%v>e;Xa~cS6yu%&6Dpz^0?-`b1#u;x2;Z}9kGu$Jt+0_lU*(Obzq$JtV z9gbqqdd-mi{oSF4srlFME7E){{9Y^hZKimnHF&s~VtIe5!u^Gziw^<;-s}5-sA-@t zbe}ZohV9!tc}z^M$Q4&fq%cs1?5N3YH}PSM(#&`^T9h?!HC}uLIG1$+PkuA22Su$B z++1~^iKMGDL}hj!Nb7ZsEm@=e2^(q zpwNc-gDu@UQJTq{9sbQsBwcn>tr`9gt2YCaHz3o`SM8>3~=Ggiji*LRAC_;=_LzBetrctYm+~!6K&7bdBoDGmNuaYk5G*|dv{=B$F zHu(kF#62FCa@^Wqak=)yRky7j#Rk%;A3J}BN0q|4<@G~{mcpHO8C}D*++8%~%jF$K zmB&9yO5^5CggZ=oud5;4SYVoHQ(?$6eSCjXZU?wB5$O9tE184O1N`!8%;vWRnRds8VH*z2N;l_PAekDc!JZ2=9Mb zc0&h`%Q(F*qG^byW|{Sy9B7!=$4hy(Fr+JNb9hyIL#l@zw72Gs_9c zXYv^+)Tn8ldQcbOD?le3B1g$LnN5G+6=+j}rWhDqfBzM&D!_(V((3oa-n*1TTtH20 z8t$>{sDmXI28OyI=VaZmCzwzlKsF_4s!K5sb@lztliF&MFDJeW1?YEOKs%({Dc}Aw z;{=fibl=D#wXiji2l`^Eu3NgrpDs?zi={f=>$A%QHuu;aV~hzVNRjGE!^MAgNVi)# zZX=69NlarwVM_S*nN@&x{Q*uYo%9OmRKk4#yA4AJCC`#~Sxx?-doAJwg(+v&1@yZv zz{YOKFg|YicDvlg!_v-8HN9ARP*$MqZcIUdd1k#F#xtn^{jLiLXBf9yrF4KXmNS*W zWrVNO#0+TDcf4bMA;GPWs)Bz9+tz)e@Qr6V(*fo=(=MPB-+Cg#L^ml=2+FtDSYw-Q z_SoyVrE90DTxUhX*K(Gwt2LuZf9nEF%p<#LcB%kpC5tv>m9$Km_2i!bBg_^41N9OK z^W-TmeXiN$ACSeuTKZK(3S778;i1p=2Ltr8E+E`Yp;d7R9juVEltq8*i=X0stMK30 z*i>35=Ul;UR#kATF7!YBu_<>i+dC(j)?9**}xX)$uMF9?)HH9B$@BCI` zVNDXDb>qs(i$hLdD%^jN8x6ITSt8zFQ!9FWL>+M46mQ)L0Pj(Cn5|0abDCpPCi`+1 zGQou37F~~OcV3}FC+*jZ6pw7_9vUlGAuP;cg}ynADlXl_?T%k`BTsx zCW`<05g(CF{uxl`R&lw3k2p(QhTP+xc9O%lqAMMzFm;*kbYV7b!rQ{lH42>;tqfY^ zp*+;GmMKvpLWCkkW@Lu4mT_>nB3Ibbt>AbkAy{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G` z2i^k{5DFXIj>A+chiJRpR4L_*>bi9Zq&4=ker@iGE2@P9bsX&#Uq#KR7PrRsF1 z44q6jO&TY5oY?Wddw++A>w9avPV6*x{&aexs*e4$eeds{d;WaS_ngQtEnlaXy#L9z zPKn?cgNX3R^GJvws#H~pi7;mjRuv0;=k;0P6yQDGmao!TQ(y(o_o2brX?Ny zo?R-R>Ukem%zr^IOo*^)EuzY%=TTK932ce5BSO9PW(Tlm;6xm8NRp&MgMIc#_B}CT z?CLJhiyWu`0=OdNRRMU#7~&$-tfk_4XxrK~-#_&eX=;;UqZ<+r~jzhe)?xD5JInJq{NPkLFs48~E_Gpt$n$l#AHDbhg z`FT|UAMjPF0IR+as>F@q8;*mh5*MMOiU(NLQ$LZ4R>(@0HC-F25>%<;;ekR-V$ZJ& zFd|He;9E;wm3hbEg5!_?;vyIke&YMgiV&C6kAoZ>R&^DF2`TNl!*;)!tG7>wiKweIkO?=z;#=c=Scm@Tj}2}@K6;8*cah{ ztYsT$7=tfDQz>EQo=4pn{<{?yEVwRPzRw-s=Yh3+39JK%u&2tHF^m}#q>!iN3NFj# z(PkVpDQIEj0q2P*fCGH4$|UgET4Jhv(r8e%mP9N@0>~JHr^*EpQmWi?9DX^G;Ab6& zD}O-ETCBB98^a^tr)Vv+A}78*iZUm2)ToU#2y}6Y6X&5mJogG9)l5bo0BbEXFV=F& z7*Zm*z!p%kmISb13<5k>WyTn0fQGerz_c+GfIVxuXbf?nrpntlGsiLncXCyokO`VJ zX=no%mnoUTw0;`eph%IVB)Q1NAXU>%>VMP+TKDp@l@Q@8Q>I2Oav^czT$QU7D6p;D zxVVfn&LHbNJZ5Bu37w!pBl?~*7X+@Wk~W5IReWo?<~Y=?r76OU2uUF3IM|j8Fd|F> z1#77RF=KFmrU+?ORD_4V&y2`WLb2}rzCeK;-HGnPl%za+6hE z#ls^dDYkW+H4xym%t z09=%dcI@0v4*EybR z1-O@MYH?*&>(u#NKc}iy=9y<#cd=NiRQXsxrbG!9r72B3@u*T|haL9WXMb9zNs^2L zAcJ9&Ni3Ek#hzb$KWBA4H?G6HFrgK?AvZ?0Vf*Y;rp!M3xCfU~&JzyMiJ_aeu%LTW zJ@uZ#!n+Z;?hQ(lj$Ftnk+g1$Gb-t2AH&4FvnY#f>ozgYe>E_&VgH#c zX?qYi2&F2x;7>p9CC~EtN0Ih;WkWYcwqaXr5!WXG5F?0ZP9+HJ4&sKdX`}soLAWRZ z!Z*qwaFIn^Tr8Gx&VMn;{dC1sH1PLTsw5>zj2I7Af@=56OUHvS?|6NT#!TEepq{!iQ@%L)G1SrK&229h!JZ6OTz&p=VhKa zahlp3DOodgGm}gP%zs(R=UV}~xpXtkMA2<%x{sSTcSq>$h+;pvldI}3yBJJIVJAfV z!iry$JOD{a@>n19qg+i7UfTo$ig)PZ?&qvls2qrD3PSLDz2o)W9NG`{Op`vl)xZ!3 zh!dwlqk~OjhH!UYm8+Dr)H6a4E=1zc_xDoDl9t$Ehe;;!@qejP?;vVsTK<2Kwb4d& zQOZI^u~^EK$x8On*AKFACrKT9_qRS%fZOj~mj?wmh~Z|vLlw{Mcj7RAtb+>kfup8|p$ z94^X5HrZrd*LhW5jZF7(B+Qo&B24fMT|6)G5*CZWJQuvYp=BtkYYL#H`||C#ep3NH z{NV4TuL3B_yv$RhHgu>nOO_d#>4?x>aoN+oXRZoGDiCBpZMv;6hUHV*LT z-&lz5z`MEnk$4kVmyTA?(9-?ryZYVvkpcw4PZ-pshrTgS+NVQnGIi|Sx!YZx2}BLU zW~oGWY=4Xb1v0f7`-#pBCr0c@8N^8twjxg8{S~Wm4T3d;i3pFg%pyon|Lx);NQ4(0 zg-w)M+8IbgKgxZf^URYc&lRpj>0N_Hl-?C7vM7rk%FrGd-pN(5SX|tWbh7<3CS?+@ z^@GBcO!4xP9q7&v&;5taCJ$7Z6d@6dG3|NGO@B@C8^sLQmW|xYHIKAU*Otu*C~laO zYco2i5bw^CWnSjFC>NP#nmOi}lR5Tuj~Fp7$))IyJSv;$DAL{P)r-)YurYc$`^aY=6J!+Clc|L;}a_T-OV7fk*m?F&Sf)*^U%$P1jn6 zdw(i0yShn{B5Bf0$|O6w!(j;8uo1E!+(>j>n!o+DF5R!SKi5lsoU0sa4c=T%ad)N8 z8%v4jKL`YPq>mz?rUSmvebS^m%C{v-xVS9HLZBp4K2e11u#4O8!na$LZp5?GqHMJ8 z#^+xF&ShV~pZ@QzmVBStFi2PY*sU0Ce#drFK7Wy* zDdtPQ?7H-6K3nm%y?wkrCg_)ibYl{?mM2E10RNTS(_pyblO~QhaV(Yw4QkY))X>K# z9Fn-tKI^*v6gR%CWh@p4hbB!Xn12Ymb|^&`Y)r;@+~OSe8?^ZQ_X;Y&?`{RA{a-GW z@fIwDw&i4Z?a>d~?VGIk7!+&O@(NVRW5n&wUUscS1^ z;gk;Tn$jVyVDQlQ|K7cVe(8DqW$6NYy2n4w)rpJnbNOIG#|Ig(B7gkR_G=U<@P4Mi znkqlo=ENp+9E48(T6R~P)jdAgy>w`PD8Qz~rPuEVJ@-NmZ~;wi>V!-n2n}rneE|~3U^EDFjyDZELq@{@vWuXp z0mPg*(&u+y)Ls|)#eaoAf&z@XFQ8wfJ1E|MKWC#%1dcw)BDJ)2A{+YIimzL`#m_8f z<+Bx^*5k8_1Xi@dluS{j8d0z_WJr-3%D}~bk?v9DSqE91lq5A7HKw#bKC=qYZ$7|r zWsq3`gG&1xz@w(2CnbMB|Co;!f?B>68#Sh!Sr;(sz5oxegMVTCtnJ(VxQhqT&Rum| zx%A0df$`RO{V?Xa+Tt*tNd*{nUqCy)pF z3a*{#hW=vSVt}7|jVR_h(=K2T-+C;-MDvs>NA24iY*3`g9(x0ibRCq+bylSPSkBUM z^+q%qZC`+kdw=LO%|R95tgvX?tdiEK@!`BB27EW4LR&<_5+y1tH}&5acF5ZuZm%qK zP~eVA4{v+#Xkvg-_64*LQ|Q$k!T@*3ps?vlN=Wg3J3rPUf;`;@|Lx7tf_75ij!F+7 zWrL~fsYg3~%qB?@zL!t&H*-6v7WoS@2gY0du#Ax?z>{H3?VC9~zcsP6Aro!)O(4f_4moX^ zG=|G^xucg-c}T`_XcExW<09-?OOqz!1b>VpjJFQz!|c^UU(f<`GB=X*kPMk{+_@e$ z?tIYk>wgt0gN}5U1zG4@3_7b)T$xpiC9ioBlAx;9j!Y+ z#`g~20`%+N4ac3Yvp(4Pbsc=9`x}d$$E?qJ`~Uy| M07*qoM6N<$f_`$mV*mgE delta 4064 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 Sm-d+e0000 expulsionRitual = new ArrayList(); + expulsionRitual.add(new RitualComponent(2,0,2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(2,0,1, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(1,0,2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(2,0,-2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(2,0,-1, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-1,0,2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-2,0,2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-2,0,1, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(1,0,-2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-2,0,-2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-2,0,-1, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-1,0,-2, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(4,0,2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(5,0,2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(4,0,-2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(5,0,-2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-4,0,2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-5,0,2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-4,0,-2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-5,0,-2, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(2,0,4, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(2,0,5, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-2,0,4, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-2,0,5, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(2,0,-4, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(2,0,-5, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-2,0,-4, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(-2,0,-5, RitualComponent.AIR)); + expulsionRitual.add(new RitualComponent(0,0,6, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(0,0,-6, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(6,0,0, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-6,0,0, RitualComponent.EARTH)); + expulsionRitual.add(new RitualComponent(-5,0,0, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(-6,0,1, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(-6,0,-1, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(5,0,0, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(6,0,1, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(6,0,-1, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(0,0,5, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(1,0,6, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(-1,0,6, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(0,0,-5, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(1,0,-6, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(-1,0,-6, RitualComponent.DUSK)); + expulsionRitual.add(new RitualComponent(4,0,4, RitualComponent.FIRE)); + expulsionRitual.add(new RitualComponent(4,0,-4, RitualComponent.FIRE)); + expulsionRitual.add(new RitualComponent(-4,0,4, RitualComponent.FIRE)); + expulsionRitual.add(new RitualComponent(-4,0,-4, RitualComponent.FIRE)); + + ArrayList supressionRitual = new ArrayList(); + supressionRitual.add(new RitualComponent(2,0,2, RitualComponent.WATER)); + supressionRitual.add(new RitualComponent(2,0,-2, RitualComponent.WATER)); + supressionRitual.add(new RitualComponent(-2,0,2, RitualComponent.WATER)); + supressionRitual.add(new RitualComponent(-2,0,-2, RitualComponent.WATER)); + Rituals.ritualList.add(new Rituals(waterRitual, 1, 500, new RitualEffectWater(), "Ritual of the Full Spring")); Rituals.ritualList.add(new Rituals(lavaRitual, 1, 10000, new RitualEffectLava(), "Serenade of the Nether")); @@ -1959,6 +2021,8 @@ public class AlchemicalWizardry Rituals.ritualList.add(new Rituals(flightRitual, 2, 1000000, new RitualEffectFlight(), "Reverence of the Condor")); Rituals.ritualList.add(new Rituals(meteorRitual, 2, 1000000, new RitualEffectSummonMeteor(), "Mark of the Falling Tower")); Rituals.ritualList.add(new Rituals(autoAlchemyRitual,1,20000,new RitualEffectAutoAlchemy(),"Ballad of Alchemy")); + Rituals.ritualList.add(new Rituals(expulsionRitual,1,1000000,new RitualEffectExpulsion(),"Aura of Expulsion")); + Rituals.ritualList.add(new Rituals(supressionRitual,1,1000,new RitualEffectSupression(),"Supression")); //Rituals.ritualList.add(new Rituals(apiaryRitual,1,100,new RitualEffectApiaryOverclock(),"Apiary Overclock")); } diff --git a/BM_src/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/BM_src/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java index 4a4b2288..cc12401a 100644 --- a/BM_src/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java +++ b/BM_src/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java @@ -93,6 +93,7 @@ public class BloodMagicConfiguration AlchemicalWizardry.blockSpellParadigmBlockID = config.getBlock("BlockSpellParadigm", 1427).getInt(); AlchemicalWizardry.blockSpellModifierBlockID = config.getBlock("BlockSpellModifier", 1428).getInt(); AlchemicalWizardry.blockSpellEnhancementBlockID = config.getBlock("BlockSpellEnhancement", 1429).getInt(); + AlchemicalWizardry.blockSpectralContainerBlockID = config.getBlock("BlockSpectralContainer", 1430).getInt(); //Items AlchemicalWizardry.weakBloodOrbItemID = config.getItem("WeakBloodOrb", 17000).getInt(); AlchemicalWizardry.energyBlasterItemID = config.getItem("EnergyBlaster", 17001).getInt(); @@ -183,6 +184,7 @@ public class BloodMagicConfiguration AlchemicalWizardry.itemBloodFrameItemID = config.getItem("BloodFrame", 17082).getInt(); AlchemicalWizardry.baseComponentsItemID = config.getItem("BaseComponents", 17083).getInt(); AlchemicalWizardry.baseAlchemyComponentsItemID = config.getItem("BaseAlchemyComponents", 17084).getInt(); + AlchemicalWizardry.itemSigilOfSupressionItemID = config.getItem("ItemSigilOfSupression", 17085).getInt(); } catch (Exception e) { diff --git a/BM_src/WayofTime/alchemicalWizardry/ModBlocks.java b/BM_src/WayofTime/alchemicalWizardry/ModBlocks.java index 8a123894..ccc36070 100644 --- a/BM_src/WayofTime/alchemicalWizardry/ModBlocks.java +++ b/BM_src/WayofTime/alchemicalWizardry/ModBlocks.java @@ -45,6 +45,7 @@ public class ModBlocks public static Block blockSpellParadigm; public static Block blockSpellModifier; public static Block blockSpellEnhancement; + public static Block blockSpectralContainer; public static void init() { @@ -79,5 +80,6 @@ public class ModBlocks blockSpellParadigm = new BlockSpellParadigm(AlchemicalWizardry.blockSpellParadigmBlockID); blockSpellModifier = new BlockSpellModifier(AlchemicalWizardry.blockSpellModifierBlockID); blockSpellEnhancement = new BlockSpellEnhancement(AlchemicalWizardry.blockSpellEnhancementBlockID); + blockSpectralContainer = new BlockSpectralContainer(AlchemicalWizardry.blockSpectralContainerBlockID); } } diff --git a/BM_src/WayofTime/alchemicalWizardry/ModItems.java b/BM_src/WayofTime/alchemicalWizardry/ModItems.java index 7a161e8b..2b0faf25 100644 --- a/BM_src/WayofTime/alchemicalWizardry/ModItems.java +++ b/BM_src/WayofTime/alchemicalWizardry/ModItems.java @@ -1,9 +1,70 @@ package WayofTime.alchemicalWizardry; -import WayofTime.alchemicalWizardry.common.items.*; -import WayofTime.alchemicalWizardry.common.items.potion.*; -import WayofTime.alchemicalWizardry.common.items.sigil.*; import net.minecraft.item.Item; +import WayofTime.alchemicalWizardry.common.items.AWBaseItems; +import WayofTime.alchemicalWizardry.common.items.ActivationCrystal; +import WayofTime.alchemicalWizardry.common.items.AirScribeTool; +import WayofTime.alchemicalWizardry.common.items.ApprenticeBloodOrb; +import WayofTime.alchemicalWizardry.common.items.ArchmageBloodOrb; +import WayofTime.alchemicalWizardry.common.items.ArmourInhibitor; +import WayofTime.alchemicalWizardry.common.items.BlankSpell; +import WayofTime.alchemicalWizardry.common.items.BloodShard; +import WayofTime.alchemicalWizardry.common.items.BoundArmour; +import WayofTime.alchemicalWizardry.common.items.BoundAxe; +import WayofTime.alchemicalWizardry.common.items.BoundPickaxe; +import WayofTime.alchemicalWizardry.common.items.BoundShovel; +import WayofTime.alchemicalWizardry.common.items.CheatyItem; +import WayofTime.alchemicalWizardry.common.items.DaggerOfSacrifice; +import WayofTime.alchemicalWizardry.common.items.DemonPlacer; +import WayofTime.alchemicalWizardry.common.items.DemonicTelepositionFocus; +import WayofTime.alchemicalWizardry.common.items.DuskScribeTool; +import WayofTime.alchemicalWizardry.common.items.EarthScribeTool; +import WayofTime.alchemicalWizardry.common.items.EnergyBattery; +import WayofTime.alchemicalWizardry.common.items.EnergyBazooka; +import WayofTime.alchemicalWizardry.common.items.EnergyBlast; +import WayofTime.alchemicalWizardry.common.items.EnergySword; +import WayofTime.alchemicalWizardry.common.items.FireScribeTool; +import WayofTime.alchemicalWizardry.common.items.ItemAlchemyBase; +import WayofTime.alchemicalWizardry.common.items.ItemComplexSpellCrystal; +import WayofTime.alchemicalWizardry.common.items.ItemComponents; +import WayofTime.alchemicalWizardry.common.items.ItemDiabloKey; +import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner; +import WayofTime.alchemicalWizardry.common.items.LavaCrystal; +import WayofTime.alchemicalWizardry.common.items.MagicianBloodOrb; +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.WaterScribeTool; +import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask; +import WayofTime.alchemicalWizardry.common.items.potion.AlchemyReagent; +import WayofTime.alchemicalWizardry.common.items.potion.AverageLengtheningCatalyst; +import WayofTime.alchemicalWizardry.common.items.potion.AveragePowerCatalyst; +import WayofTime.alchemicalWizardry.common.items.potion.EnhancedFillingAgent; +import WayofTime.alchemicalWizardry.common.items.potion.EnhancedTelepositionFocus; +import WayofTime.alchemicalWizardry.common.items.potion.GreaterLengtheningCatalyst; +import WayofTime.alchemicalWizardry.common.items.potion.GreaterPowerCatalyst; +import WayofTime.alchemicalWizardry.common.items.potion.MundaneLengtheningCatalyst; +import WayofTime.alchemicalWizardry.common.items.potion.MundanePowerCatalyst; +import WayofTime.alchemicalWizardry.common.items.potion.StandardBindingAgent; +import WayofTime.alchemicalWizardry.common.items.potion.StandardFillingAgent; +import WayofTime.alchemicalWizardry.common.items.potion.WeakBindingAgent; +import WayofTime.alchemicalWizardry.common.items.potion.WeakFillingAgent; +import WayofTime.alchemicalWizardry.common.items.sigil.AirSigil; +import WayofTime.alchemicalWizardry.common.items.sigil.DivinationSigil; +import WayofTime.alchemicalWizardry.common.items.sigil.ItemBloodLightSigil; +import WayofTime.alchemicalWizardry.common.items.sigil.ItemSigilOfSupression; +import WayofTime.alchemicalWizardry.common.items.sigil.LavaSigil; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfElementalAffinity; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfGrowth; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHaste; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHolding; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfMagnetism; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheBridge; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheFastMiner; +import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfWind; +import WayofTime.alchemicalWizardry.common.items.sigil.VoidSigil; +import WayofTime.alchemicalWizardry.common.items.sigil.WaterSigil; /** * Created with IntelliJ IDEA. @@ -108,6 +169,7 @@ public class ModItems public static Item itemBloodLightSigil; public static Item itemComplexSpellCrystal; public static Item itemBloodFrame; + public static Item itemSigilOfSupression; public static void init() { @@ -190,5 +252,6 @@ public class ModItems itemComplexSpellCrystal = new ItemComplexSpellCrystal(AlchemicalWizardry.itemComplexSpellCrystalItemID).setUnlocalizedName("itemComplexSpellCrystal"); baseItems = new ItemComponents(AlchemicalWizardry.baseComponentsItemID).setUnlocalizedName("baseItems"); baseAlchemyItems = new ItemAlchemyBase(AlchemicalWizardry.baseAlchemyComponentsItemID).setUnlocalizedName("baseAlchemyItems"); + itemSigilOfSupression = new ItemSigilOfSupression(AlchemicalWizardry.itemSigilOfSupressionItemID).setUnlocalizedName("itemSigilOfSupression"); } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java b/BM_src/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java index 71a89432..c0bbdc34 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java @@ -64,7 +64,7 @@ public class BlockBloodLightSource extends Block public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) { - this.setBlockBounds(0.40F, 0.40F, 0.40F, 0.60F, 0.60F, 0.60F); + this.setBlockBounds(0.4f,0.4f,0.4f,0.6f,0.6f,0.6f); //super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); } @@ -72,4 +72,10 @@ public class BlockBloodLightSource extends Block { return 0; } + + @Override + public boolean isAirBlock(World world, int x, int y, int z) + { + return true; + } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java b/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java new file mode 100644 index 00000000..60f66629 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java @@ -0,0 +1,68 @@ +package WayofTime.alchemicalWizardry.common.block; + +import java.util.List; +import java.util.Random; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BlockSpectralContainer extends BlockContainer +{ + public BlockSpectralContainer(int par1) + { + super(par1, Material.cloth); + //setCreativeTab(AlchemicalWizardry.tabBloodMagic); + this.setUnlocalizedName("blockSpectralContainer"); + this.setBlockBounds(0,0,0,0,0,0); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) + { + this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:BlockBloodLight"); + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) + { + + } + + public int quantityDropped(Random par1Random) + { + return 0; + } + + @Override + public TileEntity createNewTileEntity(World world) + { + return new TESpectralContainer(); + } + + @Override + public boolean isBlockReplaceable(World par1World, int par2, int par3, int par4) + { + return true; + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java b/BM_src/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java index ae072124..50a1357e 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java @@ -64,41 +64,15 @@ public class SpectralBlock extends Block return 1; } - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - //TEAltar tileEntity = (TEAltar)world.getBlockTileEntity(x, y, z); - if (player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem != null) - { - if (playerItem.getItem() instanceof ItemBlock) - { - world.setBlock(x, y, z, playerItem.itemID, playerItem.getItemDamage(), 3); - - if (!player.capabilities.isCreativeMode) - { - playerItem.stackSize--; - } - - return true; - } else - { - return false; - } - } - - return true; - } - @Override public void onBlockAdded(World par1World, int par2, int par3, int par4) { par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 100); } + + @Override + public boolean isBlockReplaceable(World par1World, int par2, int par3, int par4) + { + return true; + } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java b/BM_src/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java index caa3f0c4..821f4c40 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java @@ -706,7 +706,7 @@ public class EntityElemental extends EntityDemon { EntityLivingBase entityLiving1 = entities.get(i); - if (!(entityLiving1 instanceof EntityPlayer && ((EntityPlayer) entityLiving1).capabilities.disableDamage) && entityLiving1.isEntityAlive()) + if (!(entityLiving1 instanceof EntityPlayer && ((EntityPlayer) entityLiving1).capabilities.disableDamage) && entityLiving1.isEntityAlive() && !(entityLiving1 instanceof EntityElemental)) { double d5 = entityLiving1.getDistanceSq(par1, par3, par5); double d6 = par2; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java new file mode 100644 index 00000000..9e39876c --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java @@ -0,0 +1,252 @@ +package WayofTime.alchemicalWizardry.common.items.sigil; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Icon; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; +import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemSigilOfSupression extends EnergyItems implements ArmourUpgrade +{ + private static Icon activeIcon; + private static Icon passiveIcon; + private int tickDelay = 200; + private int radius = 5; + private int refresh = 100; + + public ItemSigilOfSupression(int id) + { + super(id); + this.maxStackSize = 1; + setEnergyUsed(200); + setCreativeTab(AlchemicalWizardry.tabBloodMagic); + } + + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) + { + par3List.add("I have a very magnetic personality!"); + + if (!(par1ItemStack.stackTagCompound == null)) + { + if (par1ItemStack.stackTagCompound.getBoolean("isActive")) + { + par3List.add("Activated"); + } else + { + par3List.add("Deactivated"); + } + + par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) + { + this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfMagnetism_deactivated"); + this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfMagnetism_activated"); + this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfMagnetism_deactivated"); + } + + @Override + public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) + { + if (stack.stackTagCompound == null) + { + stack.setTagCompound(new NBTTagCompound()); + } + + NBTTagCompound tag = stack.stackTagCompound; + + if (tag.getBoolean("isActive")) + { + return this.activeIcon; + } else + { + return this.passiveIcon; + } + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getIconFromDamage(int par1) + { + if (par1 == 1) + { + return this.activeIcon; + } else + { + return this.passiveIcon; + } + } + + @Override + public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + { + EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + + if (par3EntityPlayer.isSneaking()) + { + return par1ItemStack; + } + + if (par1ItemStack.stackTagCompound == null) + { + par1ItemStack.setTagCompound(new NBTTagCompound()); + } + + NBTTagCompound tag = par1ItemStack.stackTagCompound; + tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); + + if (tag.getBoolean("isActive")) + { + par1ItemStack.setItemDamage(1); + tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % tickDelay); + + if (!par3EntityPlayer.capabilities.isCreativeMode) + { + EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); + } + } else + { + par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); + } + + return par1ItemStack; + } + + @Override + public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) + { + if (!(par3Entity instanceof EntityPlayer)) + { + return; + } + + if(SpellHelper.isFakePlayer(par2World, (EntityPlayer)par3Entity)) + { + return; + } + + EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; + + if (par1ItemStack.stackTagCompound == null) + { + par1ItemStack.setTagCompound(new NBTTagCompound()); + } + + if (par1ItemStack.stackTagCompound.getBoolean("isActive")&&(!par2World.isRemote)) + { + Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); + int x = (int)blockVec.xCoord; + int y = (int)blockVec.yCoord; + int z = (int)blockVec.zCoord; + + for (int i = -radius; i <= radius; i++) + { + for (int j = -radius; j <= radius; j++) + { + for(int k = -radius; k <= radius; k++) + { + if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) + { + continue; + } + + Block block = Block.blocksList[par2World.getBlockId(x+i, y+j, z+k)]; + + + if(SpellHelper.isBlockFluid(block)) + { + TESpectralContainer.createSpectralBlockAtLocation(par2World, x+i, y+j, z+k, refresh); + } + else + { + TileEntity tile = par2World.getBlockTileEntity(x+i, y+j, z+k); + if(tile instanceof TESpectralContainer) + { + ((TESpectralContainer) tile).resetDuration(refresh); + } + } + } + } + } + } + + return; + } + + @Override + public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) + { + Vec3 blockVec = SpellHelper.getEntityBlockVector(player); + int x = (int)blockVec.xCoord; + int y = (int)blockVec.yCoord; + int z = (int)blockVec.zCoord; + + for (int i = -radius; i <= radius; i++) + { + for (int j = -radius; j <= radius; j++) + { + for(int k = -radius; k <= radius; k++) + { + if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) + { + continue; + } + + Block block = Block.blocksList[world.getBlockId(x+i, y+j, z+k)]; + + + if(SpellHelper.isBlockFluid(block)) + { + TESpectralContainer.createSpectralBlockAtLocation(world, x+i, y+j, z+k, refresh); + } + else + { + TileEntity tile = world.getBlockTileEntity(x+i, y+j, z+k); + if(tile instanceof TESpectralContainer) + { + ((TESpectralContainer) tile).resetDuration(refresh); + } + } + } + } + } + } + + @Override + public boolean isUpgrade() + { + return true; + } + + @Override + public int getEnergyForTenSeconds() + { + return 200; + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java b/BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java new file mode 100644 index 00000000..1ff660e6 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java @@ -0,0 +1,230 @@ +package WayofTime.alchemicalWizardry.common.rituals; + +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.EnderTeleportEvent; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; +import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; +import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; +import WayofTime.alchemicalWizardry.common.spell.simple.SpellTeleport; + +public class RitualEffectExpulsion extends RitualEffect +{ + @Override + public void performEffect(IMasterRitualStone ritualStone) + { + String owner = ritualStone.getOwner(); + World worldSave = MinecraftServer.getServer().worldServers[0]; + LifeEssenceNetwork data = (LifeEssenceNetwork) worldSave.loadItemData(LifeEssenceNetwork.class, owner); + + if (data == null) + { + data = new LifeEssenceNetwork(owner); + worldSave.setItemData(owner, data); + } + + int currentEssence = data.currentEssence; + World world = ritualStone.getWorldObj(); + int x = ritualStone.getXCoord(); + int y = ritualStone.getYCoord(); + int z = ritualStone.getZCoord(); + + if (currentEssence < this.getCostPerRefresh()) + { + EntityPlayer entityOwner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(owner); + + if (entityOwner == null) + { + return; + } + + entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); + } else + { + int d0 = 25; + AxisAlignedBB axisalignedbb = AxisAlignedBB.getAABBPool().getAABB((double) x, (double) y, (double) z, (double) (x + 1), (double) (y + 1), (double) (z + 1)).expand(d0, d0, d0); + axisalignedbb.maxY = Math.min((double) world.getHeight(), (double) (y + 1 + d0)); + List list = world.getEntitiesWithinAABB(EntityPlayer.class, axisalignedbb); + Iterator iterator = list.iterator(); + EntityPlayer entityplayer; + boolean flag = false; + + while (iterator.hasNext()) + { + entityplayer = (EntityPlayer) iterator.next(); + + if (!(entityplayer.getEntityName().equals(owner))) + { + if(entityplayer.isPotionActive(AlchemicalWizardry.customPotionPlanarBinding)||entityplayer.capabilities.isCreativeMode) + { + continue; + } + + teleportRandomly(entityplayer,100); + + flag = true; + } + } + + if (flag) + { + data.currentEssence = currentEssence - this.getCostPerRefresh(); + data.markDirty(); + } + } + } + + @Override + public int getCostPerRefresh() + { + return 1000; + } + + public boolean teleportRandomly(EntityLivingBase entityLiving, double distance) + { + double x = entityLiving.posX; + double y = entityLiving.posY; + double z = entityLiving.posZ; + Random rand = new Random(); + double d0 = x + (rand.nextDouble() - 0.5D) * distance; + double d1 = y + (double) (rand.nextInt((int) distance) - (distance) / 2); + double d2 = z + (rand.nextDouble() - 0.5D) * distance; + int i = 0; + + while (!teleportTo(entityLiving, d0, d1, d2, x, y, z) && i < 100) + { + d0 = x + (rand.nextDouble() - 0.5D) * distance; + d1 = y + (double) (rand.nextInt((int) distance) - (distance) / 2); + d2 = z + (rand.nextDouble() - 0.5D) * distance; + i++; + } + + if (i >= 100) + { + return false; + } + + return true; + //return SpellTeleport.teleportTo(entityLiving, d0, d1, d2,x,y,z); + } + + public boolean teleportTo(EntityLivingBase entityLiving, double par1, double par3, double par5, double lastX, double lastY, double lastZ) + { + EnderTeleportEvent event = new EnderTeleportEvent(entityLiving, par1, par3, par5, 0); + + if (MinecraftForge.EVENT_BUS.post(event)) + { + return false; + } + + double d3 = lastX; + double d4 = lastY; + double d5 = lastZ; + SpellTeleport.moveEntityViaTeleport(entityLiving, event.targetX, event.targetY, event.targetZ); + boolean flag = false; + int i = MathHelper.floor_double(entityLiving.posX); + int j = MathHelper.floor_double(entityLiving.posY); + int k = MathHelper.floor_double(entityLiving.posZ); + int l; + + if (entityLiving.worldObj.blockExists(i, j, k)) + { + boolean flag1 = false; + + while (!flag1 && j > 0) + { + l = entityLiving.worldObj.getBlockId(i, j - 1, k); + + if (l != 0 && Block.blocksList[l].blockMaterial.blocksMovement()) + { + flag1 = true; + } else + { + --entityLiving.posY; + --j; + } + } + + if (flag1) + { + SpellTeleport.moveEntityViaTeleport(entityLiving, entityLiving.posX, entityLiving.posY, entityLiving.posZ); + + if (entityLiving.worldObj.getCollidingBoundingBoxes(entityLiving, entityLiving.boundingBox).isEmpty() && !entityLiving.worldObj.isAnyLiquid(entityLiving.boundingBox)) + { + flag = true; + } + } + } + + if (!flag) + { + SpellTeleport.moveEntityViaTeleport(entityLiving, d3, d4, d5); + return false; + } else + { + short short1 = 128; + + for (l = 0; l < short1; ++l) + { + double d6 = (double) l / ((double) short1 - 1.0D); + float f = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; + float f1 = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; + float f2 = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; + double d7 = d3 + (entityLiving.posX - d3) * d6 + (entityLiving.worldObj.rand.nextDouble() - 0.5D) * (double) entityLiving.width * 2.0D; + double d8 = d4 + (entityLiving.posY - d4) * d6 + entityLiving.worldObj.rand.nextDouble() * (double) entityLiving.height; + double d9 = d5 + (entityLiving.posZ - d5) * d6 + (entityLiving.worldObj.rand.nextDouble() - 0.5D) * (double) entityLiving.width * 2.0D; + entityLiving.worldObj.spawnParticle("portal", d7, d8, d9, (double) f, (double) f1, (double) f2); + } + +// this.worldObj.playSoundEffect(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F); +// this.playSound("mob.endermen.portal", 1.0F, 1.0F); + return true; + } + } + + public void moveEntityViaTeleport(EntityLivingBase entityLiving, double x, double y, double z) + { + if (entityLiving instanceof EntityPlayer) + { + if (entityLiving != null && entityLiving instanceof EntityPlayerMP) + { + EntityPlayerMP entityplayermp = (EntityPlayerMP) entityLiving; + + if (!entityplayermp.playerNetServerHandler.connectionClosed && entityplayermp.worldObj == entityLiving.worldObj) + { + EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, x, y, z, 5.0F); + + if (!MinecraftForge.EVENT_BUS.post(event)) + { + if (entityLiving.isRiding()) + { + entityLiving.mountEntity((Entity) null); + } + + entityLiving.setPositionAndUpdate(event.targetX, event.targetY, event.targetZ); +// this.getThrower().fallDistance = 0.0F; +// this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage); + } + } + } + } else if (entityLiving != null) + { + entityLiving.setPosition(x, y, z); + } + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java b/BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java new file mode 100644 index 00000000..3c7c9a86 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java @@ -0,0 +1,93 @@ +package WayofTime.alchemicalWizardry.common.rituals; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.server.MinecraftServer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; +import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; +import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; + +public class RitualEffectSupression extends RitualEffect +{ + @Override + public void performEffect(IMasterRitualStone ritualStone) + { + String owner = ritualStone.getOwner(); + World worldSave = MinecraftServer.getServer().worldServers[0]; + LifeEssenceNetwork data = (LifeEssenceNetwork) worldSave.loadItemData(LifeEssenceNetwork.class, owner); + + if (data == null) + { + data = new LifeEssenceNetwork(owner); + worldSave.setItemData(owner, data); + } + + int currentEssence = data.currentEssence; + World world = ritualStone.getWorldObj(); + int x = ritualStone.getXCoord(); + int y = ritualStone.getYCoord(); + int z = ritualStone.getZCoord(); + + if (currentEssence < this.getCostPerRefresh()) + { + EntityPlayer entityOwner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(owner); + + if (entityOwner == null) + { + return; + } + + entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); + } else + { + int radius = 10; + + for (int i = -radius; i <= radius; i++) + { + for (int j = -radius; j <= radius; j++) + { + for(int k = -radius; k <= radius; k++) + { + if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) + { + continue; + } + + Block block = Block.blocksList[world.getBlockId(x+i, y+j, z+k)]; + + + if(SpellHelper.isBlockFluid(block)) + { + TESpectralContainer.createSpectralBlockAtLocation(world, x+i, y+j, z+k, 3); + } + else + { + TileEntity tile = world.getBlockTileEntity(x+i, y+j, z+k); + if(tile instanceof TESpectralContainer) + { + ((TESpectralContainer) tile).resetDuration(3); + } + } + } + } + } + + + data.currentEssence = currentEssence - this.getCostPerRefresh(); + data.markDirty(); + + } + } + + @Override + public int getCostPerRefresh() + { + return 1; + } +} diff --git a/BM_src/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralContainer.java b/BM_src/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralContainer.java new file mode 100644 index 00000000..de023a00 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralContainer.java @@ -0,0 +1,142 @@ +package WayofTime.alchemicalWizardry.common.tileEntity; + +import WayofTime.alchemicalWizardry.ModBlocks; +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class TESpectralContainer extends TileEntity +{ + private ItemStack[] inv; + + private int ticksRemaining; + + public TESpectralContainer() + { + this.inv = new ItemStack[1]; + + ticksRemaining = 0; + } + + @Override + public void readFromNBT(NBTTagCompound par1NBTTagCompound) + { + super.readFromNBT(par1NBTTagCompound); + NBTTagList tagList = par1NBTTagCompound.getTagList("Inventory"); + + for (int i = 0; i < tagList.tagCount(); i++) + { + NBTTagCompound tag = (NBTTagCompound) tagList.tagAt(i); + int slot = tag.getByte("Slot"); + + if (slot >= 0 && slot < inv.length) + { + inv[slot] = ItemStack.loadItemStackFromNBT(tag); + } + } + + ticksRemaining = par1NBTTagCompound.getInteger("ticksRemaining"); + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) + { + super.writeToNBT(par1NBTTagCompound); + NBTTagList itemList = new NBTTagList(); + + for (int i = 0; i < inv.length; i++) + { + ItemStack stack = inv[i]; + + if (inv[i] != null) + { + NBTTagCompound tag = new NBTTagCompound(); + tag.setByte("Slot", (byte) i); + inv[i].writeToNBT(tag); + itemList.appendTag(tag); + } + } + + par1NBTTagCompound.setTag("Inventory", itemList); + par1NBTTagCompound.setInteger("ticksRemaining", ticksRemaining); + } + + @Override + public void updateEntity() + { + super.updateEntity(); + + this.ticksRemaining--; + + if(this.ticksRemaining<=0) + { + this.returnContainedBlock(); + } + } + + public static boolean createSpectralBlockAtLocation(World world, int x, int y, int z, int duration) + { + if(world.getBlockTileEntity(x, y, z)==null) + { + Block block = Block.blocksList[world.getBlockId(x, y, z)]; + + if(block==null) + { + return false; + } + + int meta = world.getBlockMetadata(x, y, z); + ItemStack item = new ItemStack(block, 1, meta); + + world.setBlock(x, y, z, ModBlocks.blockSpectralContainer.blockID); + TileEntity tile = world.getBlockTileEntity(x, y, z); + if(tile instanceof TESpectralContainer) + { + ((TESpectralContainer) tile).setContainedItem(item); + ((TESpectralContainer) tile).setDuration(duration); + return true; + } + } + + return false; + } + + public void setDuration(int dur) + { + this.ticksRemaining = dur; + } + + public void resetDuration(int dur) + { + if(this.ticksRemaining