From b34ff3c58ec01d3c6949f711215714eaae558a68 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 7 Mar 2014 07:02:18 -0500 Subject: [PATCH] Getting more spell stuff done --- .../AlchemicalWizardry.java | 42 ++++---- .../BloodMagicConfiguration.java | 2 + .../alchemicalWizardry/ModBlocks.java | 10 +- .../alchemicalWizardry/ModItems.java | 74 ++++++++++++- .../common/AlchemicalWizardryEventHooks.java | 33 +++++- .../AltarRecipeRegistry.java | 2 +- .../common/items/BoundAxe.java | 4 +- .../common/items/BoundPickaxe.java | 4 +- .../common/items/BoundShovel.java | 4 +- .../common/items/ItemComponents.java | 80 ++++++++++++++ .../common/{ => potion}/PotionBoost.java | 2 +- .../common/{ => potion}/PotionDrowning.java | 2 +- .../common/potion/PotionFireFuse.java | 18 ++++ .../common/{ => potion}/PotionFlameCloak.java | 2 +- .../common/{ => potion}/PotionFlight.java | 2 +- .../common/potion/PotionHeavyHeart.java | 18 ++++ .../common/{ => potion}/PotionIceCloak.java | 2 +- .../common/{ => potion}/PotionInhibit.java | 2 +- .../{ => potion}/PotionProjectileProtect.java | 2 +- .../{ => potion}/PotionReciprocation.java | 2 +- .../TESpellEnhancementBlockItemRenderer.java | 11 +- .../spell/complex/EntitySpellProjectile.java | 2 +- .../complex/effect/SpellEffectEarth.java | 29 +++--- .../spell/complex/effect/SpellEffectFire.java | 35 +++---- .../spell/complex/effect/SpellEffectWind.java | 21 ++-- .../spell/complex/effect/SpellHelper.java | 37 ++++++- .../IProjectileImpactEffect.java | 2 +- .../MeleeSpellCenteredWorldEffect.java | 34 ++++++ .../earth/MeleeDefaultEarth.java | 38 +++++++ .../earth/ProjectileDefaultEarth.java | 58 +++++++++++ .../earth/ProjectileDefensiveEarth.java | 66 ++++++++++++ .../earth/ProjectileEnvironmentalEarth.java | 2 +- .../earth/ProjectileOffensiveEarth.java | 98 ++++++++++++++++++ .../fire/ProjectileDefaultFire.java | 56 +++++++--- .../fire/ProjectileDefensiveFire.java | 47 +++++++++ .../fire/ProjectileEnvironmentalFire.java | 46 ++++++++ .../fire/ProjectileOffensiveFire.java | 88 ++++++++++++++++ .../impactEffects/fire/SelfDefensiveFire.java | 27 ++++- .../ice/ProjectileDefaultIce.java | 2 +- .../ice/ProjectileDefensiveIce.java | 2 +- .../ice/ProjectileOffensiveIce.java | 2 +- .../wind/ProjectileDefaultWind.java | 33 ++++++ .../wind/ProjectileOffensiveWind.java | 33 ++++++ .../common/tileEntity/TEPlinth.java | 4 + .../tileEntity/TESpellEnhancementBlock.java | 6 ++ .../common/tileEntity/TEWritingTable.java | 10 +- .../textures/items/baseItemQuartzRod.png | Bin 0 -> 251 bytes .../textures/models/SpellEnhancementCost1.png | Bin 0 -> 4871 bytes .../textures/models/SpellEnhancementCost2.png | Bin 0 -> 3603 bytes .../textures/models/SpellEnhancementCost3.png | Bin 0 -> 4025 bytes .../models/SpellEnhancementPotency1.png | Bin 0 -> 4329 bytes .../models/SpellEnhancementPotency2.png | Bin 0 -> 3539 bytes .../models/SpellEnhancementPotency3.png | Bin 0 -> 3951 bytes .../models/SpellEnhancementPower1.png | Bin 4387 -> 4449 bytes .../models/SpellEnhancementPower2.png | Bin 3718 -> 3738 bytes .../models/SpellEnhancementPower3.png | Bin 3718 -> 4068 bytes .../AlchemicalWizardry.java | 16 +-- .../common/items/ActivationCrystal.java | 7 ++ .../common/items/BlankSpell.java | 6 ++ .../common/items/BoundArmour.java | 19 ++-- .../common/items/DaggerOfSacrifice.java | 11 +- .../common/items/EnergyBattery.java | 5 +- .../common/items/EnergyBazooka.java | 6 ++ .../common/items/EnergyBlast.java | 6 ++ .../common/items/ItemDiabloKey.java | 7 +- .../common/items/ItemRitualDiviner.java | 7 ++ .../common/items/SacrificialDagger.java | 5 +- .../common/items/sigil/AirSigil.java | 6 ++ .../common/items/sigil/DivinationSigil.java | 6 ++ .../items/sigil/ItemBloodLightSigil.java | 7 ++ .../common/items/sigil/LavaSigil.java | 6 ++ .../common/items/sigil/SigilOfGrowth.java | 11 ++ .../common/items/sigil/SigilOfHaste.java | 11 ++ .../common/items/sigil/SigilOfMagnetism.java | 11 ++ .../common/items/sigil/VoidSigil.java | 6 ++ .../common/items/sigil/WaterSigil.java | 6 ++ .../common/rituals/Rituals.java | 2 +- .../spell/complex/effect/SpellHelper.java | 29 ++++++ 78 files changed, 1133 insertions(+), 159 deletions(-) create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionBoost.java (86%) rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionDrowning.java (86%) create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionFlameCloak.java (86%) rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionFlight.java (86%) create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionIceCloak.java (86%) rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionInhibit.java (86%) rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionProjectileProtect.java (86%) rename 1.7.2/java/WayofTime/alchemicalWizardry/common/{ => potion}/PotionReciprocation.java (86%) create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/MeleeSpellCenteredWorldEffect.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeDefaultEarth.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefaultEarth.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefensiveEarth.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileOffensiveEarth.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileDefensiveFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileEnvironmentalFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileOffensiveFire.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileDefaultWind.java create mode 100644 1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileOffensiveWind.java create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/items/baseItemQuartzRod.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost1.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost2.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost3.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency1.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency2.png create mode 100644 1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency3.png diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index c9da2243..62f88d07 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -4,7 +4,6 @@ import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.Modifier; -import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -23,27 +22,16 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.oredict.OreDictionary; import WayofTime.alchemicalWizardry.common.AlchemicalWizardryEventHooks; import WayofTime.alchemicalWizardry.common.AlchemicalWizardryFuelHandler; -import WayofTime.alchemicalWizardry.common.AlchemicalWizardryTickHandler; import WayofTime.alchemicalWizardry.common.CommonProxy; import WayofTime.alchemicalWizardry.common.EntityAirElemental; import WayofTime.alchemicalWizardry.common.LifeBucketHandler; import WayofTime.alchemicalWizardry.common.LifeEssence; import WayofTime.alchemicalWizardry.common.ModLivingDropsEvent; import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.PotionBoost; -import WayofTime.alchemicalWizardry.common.PotionDrowning; -import WayofTime.alchemicalWizardry.common.PotionFlameCloak; -import WayofTime.alchemicalWizardry.common.PotionFlight; -import WayofTime.alchemicalWizardry.common.PotionIceCloak; -import WayofTime.alchemicalWizardry.common.PotionInhibit; -import WayofTime.alchemicalWizardry.common.PotionProjectileProtect; -import WayofTime.alchemicalWizardry.common.PotionReciprocation; import WayofTime.alchemicalWizardry.common.alchemy.AlchemicalPotionCreationHandler; import WayofTime.alchemicalWizardry.common.alchemy.AlchemyRecipeRegistry; import WayofTime.alchemicalWizardry.common.altarRecipeRegistry.AltarRecipeRegistry; import WayofTime.alchemicalWizardry.common.block.ArmourForge; -import WayofTime.alchemicalWizardry.common.block.LifeEssenceBlock; import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars; import WayofTime.alchemicalWizardry.common.entity.mob.EntityBileDemon; import WayofTime.alchemicalWizardry.common.entity.mob.EntityBoulderFist; @@ -58,16 +46,18 @@ import WayofTime.alchemicalWizardry.common.entity.mob.EntityShadeElemental; import WayofTime.alchemicalWizardry.common.entity.mob.EntitySmallEarthGolem; import WayofTime.alchemicalWizardry.common.entity.mob.EntityWaterElemental; import WayofTime.alchemicalWizardry.common.entity.mob.EntityWingedFireDemon; -import WayofTime.alchemicalWizardry.common.items.ItemBloodRuneBlock; import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner; -import WayofTime.alchemicalWizardry.common.items.ItemSpellEffectBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellModifierBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellParadigmBlock; -import WayofTime.alchemicalWizardry.common.items.LifeBucket; -import WayofTime.alchemicalWizardry.common.items.forestry.ItemBloodFrame; import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHolding; -import WayofTime.alchemicalWizardry.common.items.thaumcraft.ItemSanguineArmour; +import WayofTime.alchemicalWizardry.common.potion.PotionBoost; +import WayofTime.alchemicalWizardry.common.potion.PotionDrowning; +import WayofTime.alchemicalWizardry.common.potion.PotionFireFuse; +import WayofTime.alchemicalWizardry.common.potion.PotionFlameCloak; +import WayofTime.alchemicalWizardry.common.potion.PotionFlight; +import WayofTime.alchemicalWizardry.common.potion.PotionHeavyHeart; +import WayofTime.alchemicalWizardry.common.potion.PotionIceCloak; +import WayofTime.alchemicalWizardry.common.potion.PotionInhibit; +import WayofTime.alchemicalWizardry.common.potion.PotionProjectileProtect; +import WayofTime.alchemicalWizardry.common.potion.PotionReciprocation; import WayofTime.alchemicalWizardry.common.rituals.Rituals; import WayofTime.alchemicalWizardry.common.spell.simple.HomSpellRegistry; import WayofTime.alchemicalWizardry.common.spell.simple.SpellEarthBender; @@ -97,7 +87,6 @@ import WayofTime.alchemicalWizardry.common.tileEntity.TESpellParadigmBlock; import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; import WayofTime.alchemicalWizardry.common.tileEntity.gui.GuiHandler; -import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; @@ -109,8 +98,6 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.Side; @Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v0.8.0") //@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) @@ -135,6 +122,8 @@ public class AlchemicalWizardry public static Potion customPotionReciprocation; public static Potion customPotionFlameCloak; public static Potion customPotionIceCloak; + public static Potion customPotionHeavyHeart; + public static Potion customPotionFireFuse; public static int customPotionDrowningID; public static int customPotionBoostID; @@ -144,6 +133,8 @@ public class AlchemicalWizardry public static int customPotionReciprocationID; public static int customPotionFlameCloakID; public static int customPotionIceCloakID; + public static int customPotionHeavyHeartID; + public static int customPotionFireFuseID; public static boolean isThaumcraftLoaded; public static boolean isForestryLoaded; @@ -438,7 +429,10 @@ public class AlchemicalWizardry customPotionReciprocation = (new PotionReciprocation(customPotionReciprocationID, false, 0xFFFFFF)).setIconIndex(0, 0).setPotionName("Reciprocation"); customPotionFlameCloak = (new PotionFlameCloak(customPotionFlameCloakID,false,0).setIconIndex(0,0).setPotionName("Flame Cloak")); customPotionIceCloak = (new PotionIceCloak(customPotionIceCloakID,false,0).setIconIndex(0,0).setPotionName("Ice Cloak")); - + customPotionHeavyHeart = (new PotionHeavyHeart(customPotionHeavyHeartID,true,0).setIconIndex(0, 0).setPotionName("Heavy Heart")); + customPotionFireFuse = (new PotionFireFuse(customPotionFireFuseID,true,0).setIconIndex(0, 0).setPotionName("Fire Fuse")); + + //FluidStack lifeEssenceFluidStack = new FluidStack(lifeEssenceFluid, 1); //LiquidStack lifeEssence = new LiquidStack(lifeEssenceFlowing, 1); //LiquidDictionary.getOrCreateLiquid("Life Essence", lifeEssence); diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/1.7.2/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java index 59b4e98a..88184381 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java @@ -46,6 +46,8 @@ public class BloodMagicConfiguration AlchemicalWizardry.customPotionReciprocationID = config.get("Potion ID", "Reciprocation", 105).getInt(); AlchemicalWizardry.customPotionFlameCloakID = config.get("Potion ID","FlameCloak",106).getInt(); AlchemicalWizardry.customPotionIceCloakID = config.get("Potion ID","IceCloak",107).getInt(); + AlchemicalWizardry.customPotionHeavyHeartID = config.get("Potion ID","HeavyHeart",108).getInt(); + AlchemicalWizardry.customPotionFireFuseID = config.get("Potion ID","FireFuse",109).getInt(); MeteorParadigm.maxChance = config.get("meteor", "maxChance", 1000).getInt(); AlchemicalWizardry.doMeteorsDestroyBlocks = config.get("meteor", "doMeteorsDestroyBlocks", true).getBoolean(true); diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/ModBlocks.java b/1.7.2/java/WayofTime/alchemicalWizardry/ModBlocks.java index 18cf8810..19a2a061 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/ModBlocks.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/ModBlocks.java @@ -90,10 +90,6 @@ public class ModBlocks GameRegistry.registerBlock(ModBlocks.blockAltar, "Altar"); GameRegistry.registerBlock(ModBlocks.bloodRune, ItemBloodRuneBlock.class, "AlchemicalWizardry" + (ModBlocks.bloodRune.getUnlocalizedName().substring(5))); GameRegistry.registerBlock(ModBlocks.blockLifeEssence, "lifeEssence"); - GameRegistry.registerBlock(ModBlocks.blockSpellParadigm, ItemSpellParadigmBlock.class, "AlchemicalWizardry" + (ModBlocks.blockSpellParadigm.getUnlocalizedName())); - GameRegistry.registerBlock(ModBlocks.blockSpellEnhancement, ItemSpellEnhancementBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEnhancement.getUnlocalizedName())); - GameRegistry.registerBlock(ModBlocks.blockSpellModifier, ItemSpellModifierBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellModifier.getUnlocalizedName())); - GameRegistry.registerBlock(ModBlocks.blockSpellEffect, ItemSpellEffectBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEffect.getUnlocalizedName())); GameRegistry.registerBlock(ModBlocks.speedRune, "speedRune"); GameRegistry.registerBlock(ModBlocks.efficiencyRune, "efficiencyRune"); GameRegistry.registerBlock(ModBlocks.runeOfSacrifice, "runeOfSacrifice"); @@ -114,7 +110,13 @@ public class ModBlocks GameRegistry.registerBlock(ModBlocks.blockTeleposer, "blockTeleposer"); GameRegistry.registerBlock(ModBlocks.spectralBlock, "spectralBlock"); GameRegistry.registerBlock(ModBlocks.blockBloodLight, "bloodLight"); + GameRegistry.registerBlock(ModBlocks.blockConduit,"blockConduit"); + GameRegistry.registerBlock(ModBlocks.blockSpellParadigm, ItemSpellParadigmBlock.class, "AlchemicalWizardry" + (ModBlocks.blockSpellParadigm.getUnlocalizedName())); + GameRegistry.registerBlock(ModBlocks.blockSpellEnhancement, ItemSpellEnhancementBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEnhancement.getUnlocalizedName())); + GameRegistry.registerBlock(ModBlocks.blockSpellModifier, ItemSpellModifierBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellModifier.getUnlocalizedName())); + GameRegistry.registerBlock(ModBlocks.blockSpellEffect, ItemSpellEffectBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEffect.getUnlocalizedName())); + } public static void registerBlocksInInit() diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/ModItems.java b/1.7.2/java/WayofTime/alchemicalWizardry/ModItems.java index f5c8bd83..ba96f5d8 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/ModItems.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/ModItems.java @@ -1,13 +1,72 @@ package WayofTime.alchemicalWizardry; -import cpw.mods.fml.common.event.FMLEvent; -import cpw.mods.fml.common.registry.GameRegistry; -import WayofTime.alchemicalWizardry.common.items.*; -import WayofTime.alchemicalWizardry.common.items.potion.*; -import WayofTime.alchemicalWizardry.common.items.sigil.*; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Items; 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.EnhancedTelepositionFocus; +import WayofTime.alchemicalWizardry.common.items.FireScribeTool; +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.LifeBucket; +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.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.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; +import cpw.mods.fml.common.registry.GameRegistry; /** * Created with IntelliJ IDEA. @@ -84,6 +143,8 @@ public class ModItems public static Item armourInhibitor; public static Item creativeFiller; public static Item demonPlacer; + + public static Item baseItems; public static Item weakFillingAgent; public static Item standardFillingAgent; @@ -182,6 +243,7 @@ public class ModItems itemBloodLightSigil = new ItemBloodLightSigil().setUnlocalizedName("bloodLightSigil"); itemComplexSpellCrystal = new ItemComplexSpellCrystal().setUnlocalizedName("itemComplexSpellCrystal"); bucketLife = (new LifeBucket(ModBlocks.blockLifeEssence)).setUnlocalizedName("bucketLife").setContainerItem(Items.bucket).setCreativeTab(CreativeTabs.tabMisc); + baseItems = new ItemComponents().setUnlocalizedName("baseItems"); } public static void registerItems() @@ -269,6 +331,8 @@ public class ModItems GameRegistry.registerItem(ModItems.itemBloodLightSigil, "itemBloodLightSigil"); GameRegistry.registerItem(ModItems.itemComplexSpellCrystal, "itemComplexSpellCrystal"); GameRegistry.registerItem(ModItems.bucketLife, "bucketLife"); + + GameRegistry.registerItem(ModItems.baseItems, "bloodMagicBaseItems"); //GameRegistry.registerItem(ModItems.itemBloodFrame, "itemBloodFrame"); } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java index 52a8e8a4..040af219 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java @@ -42,6 +42,11 @@ public class AlchemicalWizardryEventHooks { int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionBoost).getAmplifier(); event.entityLiving.motionY += (0.1f) * (2 + i); + } + + if(event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionHeavyHeart)) + { + event.entityLiving.motionY = 0; } } @@ -298,6 +303,32 @@ public class AlchemicalWizardryEventHooks } } } - } + } + + if(entityLiving.isPotionActive(AlchemicalWizardry.customPotionHeavyHeart)) + { + entityLiving.worldObj.spawnParticle("flame", x+SpellHelper.gaussian(1),y-1.3+SpellHelper.gaussian(0.3),z+SpellHelper.gaussian(1), 0, 0.06d, 0); + + int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionHeavyHeart).getAmplifier(); + double decrease = 0.025*(i+1); + + if(entityLiving.motionY>-0.5) + { + entityLiving.motionY-=decrease; + } + } + + if(entityLiving.isPotionActive(AlchemicalWizardry.customPotionFireFuse)) + { + entityLiving.worldObj.spawnParticle("flame", x+SpellHelper.gaussian(1),y-1.3+SpellHelper.gaussian(0.3),z+SpellHelper.gaussian(1), 0, 0.06d, 0); + + int r = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionFireFuse).getAmplifier(); + int radius = r+1; + + if(entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionFireFuse).getDuration()<=2) + { + entityLiving.worldObj.createExplosion(null, x, y, z, radius, false); + } + } } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/altarRecipeRegistry/AltarRecipeRegistry.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/altarRecipeRegistry/AltarRecipeRegistry.java index 88ef593b..2808aa54 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/altarRecipeRegistry/AltarRecipeRegistry.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/altarRecipeRegistry/AltarRecipeRegistry.java @@ -78,7 +78,7 @@ public class AltarRecipeRegistry { if(recipe.doesRequiredItemMatch(testItem, currentTierAltar)) { - return recipe.getResult(); + return ItemStack.copyItemStack(recipe.getResult()); } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java index c8b6524e..3af40dc7 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java @@ -142,8 +142,8 @@ public class BoundAxe extends ItemAxe implements IBindable Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.xCoord); - int posZ = (int)(blockVec.xCoord); + int posY = (int)(blockVec.yCoord); + int posZ = (int)(blockVec.zCoord); boolean silkTouch = false; int so = Enchantment.silkTouch.effectId; int fortune = Enchantment.fortune.effectId; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java index a0026c38..6d3f82f3 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java @@ -139,8 +139,8 @@ public class BoundPickaxe extends ItemPickaxe implements IBindable Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.xCoord); - int posZ = (int)(blockVec.xCoord); + int posY = (int)(blockVec.yCoord); + int posZ = (int)(blockVec.zCoord); boolean silkTouch = false; int so = Enchantment.silkTouch.effectId; int fortune = Enchantment.fortune.effectId; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java index 1aba8e0f..7c03848e 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java @@ -143,8 +143,8 @@ public class BoundShovel extends ItemSpade implements IBindable Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.xCoord); - int posZ = (int)(blockVec.xCoord); + int posY = (int)(blockVec.yCoord); + int posZ = (int)(blockVec.zCoord); boolean silkTouch = false; int so = Enchantment.silkTouch.effectId; int fortune = Enchantment.fortune.effectId; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java new file mode 100644 index 00000000..51b1e7d2 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java @@ -0,0 +1,80 @@ +package WayofTime.alchemicalWizardry.common.items; + +import java.util.List; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +import org.lwjgl.input.Keyboard; + +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.alchemy.AlchemyRecipeRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemComponents extends Item +{ + private static final String[] ITEM_NAMES = new String[]{"QuartzRod"}; + + @SideOnly(Side.CLIENT) + private IIcon[] icons; + + public ItemComponents() + { + super(); + this.maxStackSize = 1; + this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); + this.hasSubtypes = true; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + icons = new IIcon[ITEM_NAMES.length]; + + for (int i = 0; i < ITEM_NAMES.length; ++i) + { + icons[i] = iconRegister.registerIcon("AlchemicalWizardry:" + "baseItem" + ITEM_NAMES[i]); + } + } + + @Override + public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + { + return par1ItemStack; + } + + @Override + public String getUnlocalizedName(ItemStack itemStack) + { + //This is what will do all the localisation things on the alchemy components so you dont have to set it :D + int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, ITEM_NAMES.length - 1); + return ("" + "item.bloodMagicBaseItem." + ITEM_NAMES[meta]); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) + { + int j = MathHelper.clamp_int(meta, 0, ITEM_NAMES.length - 1); + return icons[j]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item id, CreativeTabs creativeTab, List list) + { + for (int meta = 0; meta < ITEM_NAMES.length; ++meta) + { + list.add(new ItemStack(id, 1, meta)); + } + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionBoost.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionBoost.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java index ce4de5f2..132205bb 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionBoost.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionDrowning.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionDrowning.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java index 26efc6af..87558f26 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionDrowning.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java new file mode 100644 index 00000000..8fe5d527 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java @@ -0,0 +1,18 @@ +package WayofTime.alchemicalWizardry.common.potion; + +import net.minecraft.potion.Potion; + +public class PotionFireFuse extends Potion +{ + public PotionFireFuse(int par1, boolean par2, int par3) + { + super(par1, par2, par3); + } + + @Override + public Potion setIconIndex(int par1, int par2) + { + super.setIconIndex(par1, par2); + return this; + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionFlameCloak.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionFlameCloak.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java index e25a7c06..b885d240 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionFlameCloak.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionFlight.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionFlight.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java index 9b7940d0..23e93e57 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionFlight.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java new file mode 100644 index 00000000..952fb59c --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java @@ -0,0 +1,18 @@ +package WayofTime.alchemicalWizardry.common.potion; + +import net.minecraft.potion.Potion; + +public class PotionHeavyHeart extends Potion +{ + public PotionHeavyHeart(int par1, boolean par2, int par3) + { + super(par1, par2, par3); + } + + @Override + public Potion setIconIndex(int par1, int par2) + { + super.setIconIndex(par1, par2); + return this; + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionIceCloak.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionIceCloak.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java index 18eba799..d169b4d9 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionIceCloak.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionInhibit.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionInhibit.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java index 0014b9c3..2214e105 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionInhibit.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionProjectileProtect.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionProjectileProtect.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java index b3c70c6b..317edd54 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionProjectileProtect.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionReciprocation.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java similarity index 86% rename from 1.7.2/java/WayofTime/alchemicalWizardry/common/PotionReciprocation.java rename to 1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java index 2f105b23..ddceed0b 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/PotionReciprocation.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java @@ -1,4 +1,4 @@ -package WayofTime.alchemicalWizardry.common; +package WayofTime.alchemicalWizardry.common.potion; import net.minecraft.potion.Potion; diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java index 76d1a176..a25da6d7 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java @@ -95,13 +95,20 @@ public class TESpellEnhancementBlockItemRenderer implements IItemRenderer } public String getResourceLocationForMeta(int meta) - { + { switch(meta) { case 0: return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; case 1: return "alchemicalwizardry:textures/models/SpellEnhancementPower2.png"; case 2: return "alchemicalwizardry:textures/models/SpellEnhancementPower3.png"; + case 5: return "alchemicalwizardry:textures/models/SpellEnhancementCost1.png"; + case 6: return "alchemicalwizardry:textures/models/SpellEnhancementCost2.png"; + case 7: return "alchemicalwizardry:textures/models/SpellEnhancementCost3.png"; + case 10: return "alchemicalwizardry:textures/models/SpellEnhancementPotency1.png"; + case 11: return "alchemicalwizardry:textures/models/SpellEnhancementPotency2.png"; + case 12: return "alchemicalwizardry:textures/models/SpellEnhancementPotency3.png"; + } return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; - } + } } 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 4af98379..f1b410ef 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 @@ -552,7 +552,7 @@ public class EntitySpellProjectile extends Entity implements IProjectile { for(IProjectileImpactEffect impactEffect : impactList) { - impactEffect.onEntityImpact(mop); + impactEffect.onEntityImpact(mop, this); } } } 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 fe71038c..c168d34b 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 @@ -3,36 +3,36 @@ 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.earth.MeleeDefaultEarth; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileDefaultEarth; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileDefensiveEarth; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileEnvironmentalEarth; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileOffensiveEarth; public class SpellEffectEarth extends SpellEffect { @Override public void defaultModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - + parad.addImpactEffect(new ProjectileDefaultEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); } @Override public void offensiveModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - + parad.addImpactEffect(new ProjectileOffensiveEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); } @Override public void defensiveModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - + parad.addImpactEffect(new ProjectileDefensiveEarth(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void environmentalModificationProjectile(SpellParadigmProjectile parad) { parad.addUpdateEffect(new ProjectileEnvironmentalEarth(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } @Override @@ -66,8 +66,7 @@ public class SpellEffectEarth extends SpellEffect @Override public void defaultModificationMelee(SpellParadigmMelee parad) { - // TODO Auto-generated method stub - + parad.addWorldEffect(new MeleeDefaultEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); } @Override @@ -94,28 +93,26 @@ public class SpellEffectEarth extends SpellEffect @Override protected int getCostForDefaultProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(10*Math.pow((0.5*(this.powerEnhancement)+1)*2 + 1,3)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForOffenseProjectile() { - // TODO Auto-generated method stub - return 0; + + return (int)(3*(1.5*this.potencyEnhancement+1)*(Math.pow(1*this.powerEnhancement+1,2))*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForDefenseProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(3*Math.pow((this.powerEnhancement*2+1),2)*(this.potencyEnhancement*2+1)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForEnvironmentProjectile() { - return (int)(10*2*(0.1d*(this.potencyEnhancement+1))*Math.pow(3.47,this.potencyEnhancement)); + return (int)(10*2*(0.1d*(this.potencyEnhancement+1))*Math.pow(3.47,this.potencyEnhancement)*Math.pow(0.8, costEnhancement)); } @Override 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 65fe51f7..4800871f 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 @@ -4,6 +4,9 @@ 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.ProjectileDefaultFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefensiveFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileEnvironmentalFire; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileOffensiveFire; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfDefaultFire; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfDefensiveFire; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfEnvironmentalFire; @@ -21,25 +24,19 @@ public class SpellEffectFire extends SpellEffect @Override public void offensiveModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - parad.addImpactEffect(new ProjectileDefaultFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - parad.damage+=this.potencyEnhancement; + parad.addImpactEffect(new ProjectileOffensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defensiveModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - parad.addImpactEffect(new ProjectileDefaultFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - parad.damage+=this.potencyEnhancement; + parad.addImpactEffect(new ProjectileDefensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void environmentalModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - parad.addImpactEffect(new ProjectileDefaultFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - parad.damage+=this.potencyEnhancement; + parad.addUpdateEffect(new ProjectileEnvironmentalFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override @@ -97,48 +94,43 @@ public class SpellEffectFire extends SpellEffect @Override protected int getCostForDefaultProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)((5*Math.pow(1.5*this.powerEnhancement+1, 2)*(1.5*this.potencyEnhancement+1)+this.potencyEnhancement*15)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForOffenseProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(10*Math.pow((this.powerEnhancement)*1.3+1,2)*((1.5*this.potencyEnhancement+1))*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForDefenseProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(25*Math.pow(1*this.powerEnhancement+1,2)*(1*this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForEnvironmentProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(75*(0.5*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForDefaultSelf() { - return 10*(int)(10*Math.pow(1.5, this.powerEnhancement+1.5*this.potencyEnhancement)); + return 10*(int)(10*Math.pow(1.5, this.powerEnhancement+1.5*this.potencyEnhancement)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForOffenseSelf() { - return 500*(int)((this.powerEnhancement+1)*Math.pow(2, potencyEnhancement)); + return 500*(int)((this.powerEnhancement+1)*Math.pow(2, potencyEnhancement)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForDefenseSelf() { - // TODO Auto-generated method stub - return 0; + return (int)(25*(3*this.potencyEnhancement+1)*(2*this.powerEnhancement+1)*Math.pow(0.8, costEnhancement)); } @Override @@ -174,5 +166,4 @@ public class SpellEffectFire extends SpellEffect // TODO Auto-generated method stub return 0; } - } 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 de3ca561..0edb3596 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,36 +3,34 @@ 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.ProjectileDefaultWind; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileEnvironmentalWind; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileOffensiveWind; public class SpellEffectWind extends SpellEffect { @Override public void defaultModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - + parad.addImpactEffect(new ProjectileDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void offensiveModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - + parad.addImpactEffect(new ProjectileOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); } @Override public void defensiveModificationProjectile(SpellParadigmProjectile parad) { - // TODO Auto-generated method stub - + parad.ricochetMax+=this.potencyEnhancement; } @Override public void environmentalModificationProjectile(SpellParadigmProjectile parad) { parad.addUpdateEffect(new ProjectileEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } @Override @@ -94,15 +92,13 @@ public class SpellEffectWind extends SpellEffect @Override protected int getCostForDefaultProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(100*(this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); } @Override protected int getCostForOffenseProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(100*(0.5*this.potencyEnhancement+1)*(this.powerEnhancement+1)*Math.pow(0.8, costEnhancement)); } @Override @@ -115,8 +111,7 @@ public class SpellEffectWind extends SpellEffect @Override protected int getCostForEnvironmentProjectile() { - // TODO Auto-generated method stub - return 0; + return (int)(50*(this.powerEnhancement+1)*(this.potencyEnhancement+1)*Math.pow(0.8, costEnhancement)); } @Override 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 ec812f42..d10a6494 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 @@ -3,8 +3,8 @@ package WayofTime.alchemicalWizardry.common.spell.complex.effect; import java.util.List; import java.util.Random; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -15,8 +15,8 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -import net.minecraft.world.WorldProvider; import net.minecraftforge.common.util.ForgeDirection; +import WayofTime.alchemicalWizardry.common.NewPacketHandler; public class SpellHelper { @@ -193,4 +193,37 @@ public class SpellHelper NewPacketHandler.INSTANCE.sendTo(NewPacketHandler.getVelSettingPacket(motionX, motionY, motionZ), (EntityPlayerMP) player); } } + + public static void smashBlock(World world, int posX, int posY, int posZ) + { + Block block = world.getBlock(posX, posY, posZ); + + if(block==Blocks.stone) + { + world.setBlock(posX, posY, posZ, Blocks.cobblestone); + } + else if(block==Blocks.cobblestone) + { + world.setBlock(posX, posY, posZ, Blocks.gravel); + } + else if(block==Blocks.gravel) + { + world.setBlock(posX, posY, posZ, Blocks.sand); + } + } + + public static boolean isBlockFluid(Block block) + { + return block instanceof BlockLiquid; + } + + public static void evaporateWaterBlock(World world, int posX, int posY, int posZ) + { + Block block = world.getBlock(posX, posY, posZ); + + if(block == Blocks.water || block == Blocks.flowing_water) + { + world.setBlockToAir(posX, posY, posZ); + } + } } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IProjectileImpactEffect.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IProjectileImpactEffect.java index 2f2cbf92..4f8cda7b 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IProjectileImpactEffect.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IProjectileImpactEffect.java @@ -6,6 +6,6 @@ import net.minecraft.world.World; public interface IProjectileImpactEffect { - public void onEntityImpact(Entity mop); + public void onEntityImpact(Entity mop, Entity projectile); public void onTileImpact(World world, MovingObjectPosition mop); } diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/MeleeSpellCenteredWorldEffect.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/MeleeSpellCenteredWorldEffect.java new file mode 100644 index 00000000..1ab9f89c --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/MeleeSpellCenteredWorldEffect.java @@ -0,0 +1,34 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public abstract class MeleeSpellCenteredWorldEffect extends MeleeSpellWorldEffect +{ + protected float range; + + public MeleeSpellCenteredWorldEffect(int power, int potency, int cost) + { + super(power, potency, cost); + range = 0; + } + + @Override + public void onWorldEffect(World world, EntityPlayer entityPlayer) + { + Vec3 lookVec = entityPlayer.getLook(range); + int x = (int)(entityPlayer.posX + lookVec.xCoord); + int y = (int)(entityPlayer.posY + entityPlayer.getEyeHeight() + lookVec.yCoord); + int z = (int)(entityPlayer.posZ + lookVec.zCoord); + + this.onCenteredWorldEffect(world, x, y, z); + } + + public void setRange(float range) + { + this.range = range; + } + + public abstract void onCenteredWorldEffect(World world, int posX, int posY, int posZ); +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeDefaultEarth.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeDefaultEarth.java new file mode 100644 index 00000000..bed566cc --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeDefaultEarth.java @@ -0,0 +1,38 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; + +import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityFallingBlock; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.MeleeSpellCenteredWorldEffect; + +public class MeleeDefaultEarth extends MeleeSpellCenteredWorldEffect +{ + public MeleeDefaultEarth(int power, int potency, int cost) + { + super(power, potency, cost); + this.setRange(2); + } + + @Override + public void onCenteredWorldEffect(World world, int posX, int posY, int posZ) + { + for(int i=-3; i<=3; i++) + { + for(int j=-3; j<=3; j++) + { + for(int k=-3; k<=3; k++) + { + if(!world.isAirBlock(posX + i, posY + j, posZ + k) && world.getTileEntity(posX + i, posY + j, posZ + k)==null) + { + Block block = world.getBlock(posX + i, posY + j, posZ + k); + int meta = world.getBlockMetadata(posX + i, posY + j, posZ + k); + + EntityFallingBlock entity = new EntityFallingBlock(world, posX + i + 0.5f, posY + j + 0.5f, posZ + k + 0.5f, block, meta); + world.spawnEntityInWorld(entity); + } + } + } + } + + } +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefaultEarth.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefaultEarth.java new file mode 100644 index 00000000..e0ff5554 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefaultEarth.java @@ -0,0 +1,58 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.fluids.BlockFluidBase; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ProjectileImpactEffect; + +public class ProjectileDefaultEarth extends ProjectileImpactEffect +{ + public ProjectileDefaultEarth(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onEntityImpact(Entity mop, Entity proj) + { + // TODO Auto-generated method stub + + } + + @Override + public void onTileImpact(World world, MovingObjectPosition mop) + { + int horizRange = (int)(0.5*(this.powerUpgrades)+1); + int vertRange = (int)(0.5*(this.powerUpgrades)+1); + + int posX = mop.blockX; + int posY = mop.blockY; + int posZ = mop.blockZ; + + for(int i=-horizRange; i<=horizRange; i++) + { + for(int j=-vertRange; j<=vertRange; j++) + { + for(int k=-horizRange; k<=horizRange; k++) + { + if(!world.isAirBlock(posX+i, posY+j, posZ+k)) + { + Block block = world.getBlock(posX+i, posY+j, posZ+k); + if(block == null || block.getBlockHardness(world, posX+i, posY+j, posZ+k)==-1 || SpellHelper.isBlockFluid(block)) + { + continue; + } + //block.breakBlock(world, posX+i, posY+j, posZ+k, block.blockID, world.getBlockMetadata(posX+i, posY+j, posZ+k)); + //world.destroyBlock(posX+i, posY+j, posZ+k, true); + world.func_147480_a(posX+i, posY+j, posZ+k, false); + } + } + } + } + + } + +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefensiveEarth.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefensiveEarth.java new file mode 100644 index 00000000..530e9e97 --- /dev/null +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefensiveEarth.java @@ -0,0 +1,66 @@ +package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; + +import java.util.ArrayList; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.common.spell.complex.EntitySpellProjectile; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ProjectileImpactEffect; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ProjectileUpdateEffect; + +public class ProjectileDefensiveEarth extends ProjectileImpactEffect +{ + public ProjectileDefensiveEarth(int power, int potency, int cost) + { + super(power, potency, cost); + } + + @Override + public void onEntityImpact(Entity mop, Entity proj) + { + // TODO Auto-generated method stub + } + + @Override + public void onTileImpact(World world, MovingObjectPosition mop) + { + int horizRange = (int)(this.powerUpgrades); + int vertRange = (int)(this.potencyUpgrades); + + int posX = mop.blockX; + int posY = mop.blockY; + int posZ = mop.blockZ; + + for(int i=-horizRange; i<=horizRange; i++) + { + for(int j=-vertRange; j<=vertRange; j++) + { + for(int k=-horizRange; k<=horizRange; k++) + { + if(!world.isAirBlock(posX+i, posY+j, posZ+k)) + { + Block block = world.getBlock(posX+i, posY+j, posZ+k); + if(block == null || block.getBlockHardness(world, posX+i, posY+j, posZ+k)==-1) + { + continue; + } + //block.breakBlock(world, posX+i, posY+j, posZ+k, block.blockID, world.getBlockMetadata(posX+i, posY+j, posZ+k)); + //world.destroyBlock(posX+i, posY+j, posZ+k, true); + if(world.rand.nextFloat()<0.6f) + { + SpellHelper.smashBlock(world, posX+i, posY+j, posZ+k); + } + } + } + } + } + + } + +} diff --git a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileEnvironmentalEarth.java b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileEnvironmentalEarth.java index da958d8b..09ee4efe 100644 --- a/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileEnvironmentalEarth.java +++ b/1.7.2/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileEnvironmentalEarth.java @@ -52,7 +52,7 @@ public class ProjectileEnvironmentalEarth extends ProjectileUpdateEffect if(!worldObj.isAirBlock(posX+i, posY+j, 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 literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost2.png b/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a340ef754b97c9b9be376f9c2e8d0faabd8734b GIT binary patch literal 3603 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 literal 0 HcmV?d00001 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency1.png b/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency1.png new file mode 100644 index 0000000000000000000000000000000000000000..1266816fb829c147baa4ba7fa95222e322e9fe37 GIT binary patch literal 4329 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 XI*x2&VGd000McNliru-U1pE8Vc_mJ%|7R4PZ$` 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 diff --git a/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower3.png b/1.7.2/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower3.png index e1be8bf69744c7d4fb9ce000cb39831ca6efb1b8..e2b6fd536d7e18b2643c559e1f7c2f32b369971c 100644 GIT binary patch delta 4064 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 diff --git a/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 55d672ab..cd8a55ac 100644 --- a/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -946,14 +946,14 @@ public class AlchemicalWizardry { this.isForestryLoaded = true; - ModItems.itemBloodFrame = new ItemBloodFrame(this.itemBloodFrameItemID).setUnlocalizedName("bloodFrame"); - - ItemStack provenFrame = GameRegistry.findItemStack("Forestry", "frameImpregnated", 1); - - if(provenFrame !=null) - { - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.itemBloodFrame), provenFrame, 3, 30000, 20, 20, false); - } +// ModItems.itemBloodFrame = new ItemBloodFrame(this.itemBloodFrameItemID).setUnlocalizedName("bloodFrame"); +// +// ItemStack provenFrame = GameRegistry.findItemStack("Forestry", "frameImpregnated", 1); +// +// if(provenFrame !=null) +// { +// AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.itemBloodFrame), provenFrame, 3, 30000, 20, 20, false); +// } }else { this.isForestryLoaded = false; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java index 9692d179..f62c4043 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java @@ -2,6 +2,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.alchemy.AlchemyRecipeRegistry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -95,6 +96,12 @@ public class ActivationCrystal extends EnergyItems public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + return par1ItemStack; } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/BlankSpell.java b/BM_src/WayofTime/alchemicalWizardry/common/items/BlankSpell.java index ee56fd6e..84f46e63 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/BlankSpell.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/BlankSpell.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEHomHeart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -54,6 +55,11 @@ public class BlankSpell extends EnergyItems { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/BoundArmour.java b/BM_src/WayofTime/alchemicalWizardry/common/items/BoundArmour.java index 43e88c6d..d646fc00 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/BoundArmour.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/BoundArmour.java @@ -1,11 +1,7 @@ package WayofTime.alchemicalWizardry.common.items; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.IBindable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; + import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -22,9 +18,16 @@ import net.minecraft.world.World; import net.minecraftforge.common.ISpecialArmor; import thaumcraft.api.IGoggles; import thaumcraft.api.nodes.IRevealer; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.ModItems; +import WayofTime.alchemicalWizardry.common.ArmourUpgrade; +import WayofTime.alchemicalWizardry.common.IBindable; +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.common.Optional.Interface; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; -import java.util.List; - +@Optional.InterfaceList(value = {@Interface(iface="IRevealer", modid = "Thaumcraft"), @Interface(iface="IGoggles", modid = "Thaumcraft")}) public class BoundArmour extends ItemArmor implements ISpecialArmor, IRevealer, IGoggles, IBindable { private static int invSize = 9; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java b/BM_src/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java index bf9d6ffa..1011ac20 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; import com.google.common.collect.Multimap; @@ -55,10 +56,18 @@ public class DaggerOfSacrifice extends EnergyItems @Override public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) { - if (par3EntityLivingBase == null || par2EntityLivingBase == null || par3EntityLivingBase.worldObj.isRemote || !(par3EntityLivingBase.getClass().equals(EntityPlayerMP.class))) + if (par3EntityLivingBase == null || par2EntityLivingBase == null || par3EntityLivingBase.worldObj.isRemote) { return false; } + + if(par3EntityLivingBase instanceof EntityPlayer) + { + if(SpellHelper.isFakePlayer(par3EntityLivingBase.worldObj, (EntityPlayer)par3EntityLivingBase)) + { + return false; + } + } //EntityWither d; if (par2EntityLivingBase.isChild() || par2EntityLivingBase instanceof EntityWither || par2EntityLivingBase instanceof EntityDragon || par2EntityLivingBase instanceof EntityPlayer || par2EntityLivingBase instanceof IBossDisplayData) diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java b/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java index 3bc4b51b..729b9ec1 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java @@ -2,6 +2,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.*; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.relauncher.Side; @@ -68,9 +69,9 @@ public class EnergyBattery extends Item implements ArmourUpgrade, IBindable EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); World world = par3EntityPlayer.worldObj; - if (par3EntityPlayer instanceof FakePlayer || par3EntityPlayer instanceof EntityPlayerMP) + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) { - return par1ItemStack; + return par1ItemStack; } if (world != null) diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java b/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java index 93cc8a0b..6af3d045 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java @@ -2,6 +2,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.entity.projectile.EntityEnergyBazookaMainProjectile; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -68,6 +69,11 @@ public class EnergyBazooka extends EnergyItems { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java b/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java index 71926ea3..8392bacc 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java @@ -2,6 +2,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjectile; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -68,6 +69,11 @@ public class EnergyBlast extends EnergyItems { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemDiabloKey.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemDiabloKey.java index 69b02f2a..3a46f278 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemDiabloKey.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemDiabloKey.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.ModItems; import WayofTime.alchemicalWizardry.common.IBindable; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.relauncher.Side; @@ -59,11 +60,11 @@ public class ItemDiabloKey extends EnergyItems EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); World world = par3EntityPlayer.worldObj; - if (par3EntityPlayer instanceof FakePlayer || par3EntityPlayer instanceof EntityPlayerMP) + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) { - return par1ItemStack; + return par1ItemStack; } - + if (world != null) { double posX = par3EntityPlayer.posX; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java index 449a0900..01eea34f 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java @@ -5,6 +5,7 @@ import WayofTime.alchemicalWizardry.ModBlocks; import WayofTime.alchemicalWizardry.ModItems; import WayofTime.alchemicalWizardry.common.rituals.RitualComponent; import WayofTime.alchemicalWizardry.common.rituals.Rituals; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -125,6 +126,12 @@ public class ItemRitualDiviner extends EnergyItems public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); + + if(SpellHelper.isFakePlayer(par2EntityPlayer.worldObj, par2EntityPlayer)) + { + return false; + } + ItemStack[] playerInventory = par2EntityPlayer.inventory.mainInventory; TileEntity tileEntity = par3World.getBlockTileEntity(par4, par5, par6); diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java b/BM_src/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java index 2168064a..0e23d9f3 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java @@ -1,6 +1,7 @@ package WayofTime.alchemicalWizardry.common.items; import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -46,9 +47,9 @@ public class SacrificialDagger extends Item par3EntityPlayer.setHealth(par3EntityPlayer.getHealth() - 2); } - if (par3EntityPlayer instanceof FakePlayer) + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) { - return par1ItemStack; + return par1ItemStack; } double posX = par3EntityPlayer.posX; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java index a9b4ee95..0850c947 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -49,6 +50,11 @@ public class AirSigil extends EnergyItems implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java index c51786da..66fd6c60 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java @@ -4,6 +4,7 @@ import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.PacketHandler; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -52,6 +53,11 @@ public class DivinationSigil extends Item implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (!par3EntityPlayer.worldObj.isRemote) { return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java index bf7db13f..9f76a671 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java @@ -4,6 +4,7 @@ import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.ModBlocks; import WayofTime.alchemicalWizardry.common.entity.projectile.EntityBloodLightProjectile; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -51,6 +52,12 @@ public class ItemBloodLightSigil extends EnergyItems public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); + + if(SpellHelper.isFakePlayer(par2EntityPlayer.worldObj, par2EntityPlayer)) + { + return false; + } + EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); if (par3World.isRemote) diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java index e18894d6..9b4a7939 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java @@ -4,6 +4,7 @@ import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyBattery; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -72,6 +73,11 @@ public class LavaSigil extends ItemBucket implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java index b7b693a5..09252937 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.*; @@ -103,6 +104,11 @@ public class SigilOfGrowth extends EnergyItems implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); + if(SpellHelper.isFakePlayer(par2EntityPlayer.worldObj, par2EntityPlayer)) + { + return false; + } + if (applyBonemeal(par1ItemStack, par3World, par4, par5, par6, par2EntityPlayer)) { EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); @@ -161,6 +167,11 @@ public class SigilOfGrowth extends EnergyItems implements ArmourUpgrade { return; } + + if(SpellHelper.isFakePlayer(par3Entity.worldObj, (EntityPlayer)par3Entity)) + { + return; + } EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java index ff56bd33..4e8a98b2 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -97,6 +98,11 @@ public class SigilOfHaste extends EnergyItems implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; @@ -141,6 +147,11 @@ public class SigilOfHaste extends EnergyItems implements ArmourUpgrade return; } + if(SpellHelper.isFakePlayer(par2World,(EntityPlayer) par3Entity)) + { + return; + } + EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; if (par1ItemStack.stackTagCompound == null) diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java index c0925457..45c4a8a1 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; @@ -116,6 +117,11 @@ public class SigilOfMagnetism extends EnergyItems implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; @@ -153,6 +159,11 @@ public class SigilOfMagnetism extends EnergyItems implements ArmourUpgrade { return; } + + if(SpellHelper.isFakePlayer(par2World, (EntityPlayer)par3Entity)) + { + return; + } EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java index 4fe816aa..563db7d7 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java @@ -4,6 +4,7 @@ import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyBattery; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.MaterialLiquid; @@ -145,6 +146,11 @@ public class VoidSigil extends ItemBucket implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java index bba0ee01..78b03075 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java @@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.ArmourUpgrade; import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -79,6 +80,11 @@ public class WaterSigil extends ItemBucket implements ArmourUpgrade { EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); + if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + { + return par1ItemStack; + } + if (par3EntityPlayer.isSneaking()) { return par1ItemStack; diff --git a/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java b/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java index dea3acc6..e434f776 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/rituals/Rituals.java @@ -900,7 +900,7 @@ public class Rituals ritualList.add(new Rituals(biomeChangerRitual, 2, 1000000, new RitualEffectBiomeChanger(), "Ritual of Gaia's Transformation")); ritualList.add(new Rituals(flightRitual, 2, 1000000, new RitualEffectFlight(), "Reverence of the Condor")); ritualList.add(new Rituals(meteorRitual, 2, 1000000, new RitualEffectSummonMeteor(), "Mark of the Falling Tower")); - ritualList.add(new Rituals(apiaryRitual,1,100,new RitualEffectApiaryOverclock(),"Apiary Overclock")); + //ritualList.add(new Rituals(apiaryRitual,1,100,new RitualEffectApiaryOverclock(),"Apiary Overclock")); } public static int getCostForActivation(int ritualID) diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java index fba4bbb6..9925e9d1 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -5,12 +5,15 @@ import java.util.Random; import net.minecraft.block.Block; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraftforge.common.FakePlayer; import net.minecraftforge.common.ForgeDirection; public class SpellHelper @@ -105,4 +108,30 @@ public class SpellHelper world.setBlock(posX, posY, posZ, Block.ice.blockID); } } + + public static boolean isFakePlayer(World world, EntityPlayer player) + { + if(world.isRemote) + { + return false; + } + + if(player instanceof FakePlayer) + { + return true; + } + + String str = player.getClass().getCanonicalName(); + if(str.contains("GCEntityPlayerMP")) + { + return false; + } + + if(player.getClass().equals(EntityPlayerMP.class)) + { + return false; + } + + return true; + } }