diff --git a/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 03c3d7a4..5f6c4435 100644 --- a/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/BM_src/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -713,6 +713,7 @@ public class AlchemicalWizardry GameRegistry.registerBlock(ModBlocks.blockSpellEffect, ItemSpellEffectBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEffect.getUnlocalizedName())); LanguageRegistry.addName(new ItemStack(ModBlocks.blockSpellEffect, 1, 0), "Crucible of Fire"); + LanguageRegistry.addName(new ItemStack(ModBlocks.blockSpellEffect, 1, 1), "Ice Maker"); GameRegistry.registerBlock(ModBlocks.speedRune, "speedRune"); LanguageRegistry.addName(ModBlocks.speedRune, "Speed Rune"); @@ -759,7 +760,7 @@ public class AlchemicalWizardry GameRegistry.registerBlock(ModBlocks.spectralBlock, "spectralBlock"); GameRegistry.registerBlock(ModBlocks.blockBloodLight, "bloodLight"); GameRegistry.registerBlock(ModBlocks.blockConduit,"blockConduit"); - GameRegistry.registerBlock(ModBlocks.blockSpellEffect,"blockSpellEffect"); + //GameRegistry.registerBlock(ModBlocks.blockSpellEffect,"blockSpellEffect"); MinecraftForge.setBlockHarvestLevel(ModBlocks.bloodRune, "pickaxe", 2); MinecraftForge.setBlockHarvestLevel(ModBlocks.speedRune, "pickaxe", 2); MinecraftForge.setBlockHarvestLevel(ModBlocks.efficiencyRune, "pickaxe", 2); diff --git a/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java b/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java index dd940132..e3efbe58 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java @@ -1,7 +1,14 @@ package WayofTime.alchemicalWizardry.common.block; +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.ModBlocks; import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; @@ -18,4 +25,19 @@ public class BlockSpellEffect extends BlockOrientable { return new TESpellEffectBlock(); } + + @SideOnly(Side.CLIENT) + public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) + { + if (this.blockID == ModBlocks.blockSpellEffect.blockID) + { + for(int i=0; i<2; i++) + { + par3List.add(new ItemStack(par1, 1, i)); + } + } else + { + super.getSubBlocks(par1, par2CreativeTabs, par3List); + } + } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java index 4f3b6f20..3b2a6bd9 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java @@ -28,16 +28,16 @@ public class ItemSpellEffectBlock extends ItemBlock case 1: { - name = "fill"; + name = "ice"; break; } case 2: - name = "empty"; + name = "wind"; break; case 3: - name = "test"; + name = "water"; break; default: diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java new file mode 100644 index 00000000..07348780 --- /dev/null +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java @@ -0,0 +1,177 @@ +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.ice.MeleeOffensiveIce; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.SelfDefaultIce; + +public class SpellEffectIce extends SpellEffect +{ + @Override + public void defaultModificationProjectile(SpellParadigmProjectile parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void offensiveModificationProjectile(SpellParadigmProjectile parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void defensiveModificationProjectile(SpellParadigmProjectile parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void environmentalModificationProjectile(SpellParadigmProjectile parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void defaultModificationSelf(SpellParadigmSelf parad) + { + parad.addSelfSpellEffect(new SelfDefaultIce(this.powerEnhancement,this.potencyEnhancement, this.costEnhancement)); + + } + + @Override + public void offensiveModificationSelf(SpellParadigmSelf parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void defensiveModificationSelf(SpellParadigmSelf parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void environmentalModificationSelf(SpellParadigmSelf parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void defaultModificationMelee(SpellParadigmMelee parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void offensiveModificationMelee(SpellParadigmMelee parad) + { + parad.addEntityEffect(new MeleeOffensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); + } + + @Override + public void defensiveModificationMelee(SpellParadigmMelee parad) + { + // TODO Auto-generated method stub + + } + + @Override + public void environmentalModificationMelee(SpellParadigmMelee parad) + { + // TODO Auto-generated method stub + + } + + @Override + protected int getCostForDefaultProjectile() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForOffenseProjectile() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForDefenseProjectile() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForEnvironmentProjectile() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForDefaultSelf() + { + return (int)(20*(this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); + } + + @Override + protected int getCostForOffenseSelf() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForDefenseSelf() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForEnvironmentSelf() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForDefaultMelee() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForOffenseMelee() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForDefenseMelee() + { + // TODO Auto-generated method stub + return 0; + } + + @Override + protected int getCostForEnvironmentMelee() + { + // TODO Auto-generated method stub + return 0; + } + +} 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 d9bf5e50..f7eda404 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -9,6 +9,7 @@ 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; public class SpellHelper @@ -43,4 +44,13 @@ public class SpellHelper { return d * ((rand.nextFloat() - 0.5D)); } + + public static Vec3 getEntityBlockVector(Entity entity) + { + int posX = (int) Math.round(entity.posX - 0.5f); + int posY = (int) entity.posY; + int posZ = (int) Math.round(entity.posZ - 0.5f); + + return entity.getLookVec().createVectorHelper(posX, posY, posZ); + } } diff --git a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java index fffd0f2b..2d21bba3 100644 --- a/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java +++ b/BM_src/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java @@ -13,11 +13,19 @@ public abstract class ExtrapolatedMeleeEntityEffect implements IMeleeSpellEntity { protected float range; protected float radius; + protected int powerUpgrades; + protected int potencyUpgrades; + protected int costUpgrades; + protected int maxHit; - public ExtrapolatedMeleeEntityEffect(int range, int radius) + public ExtrapolatedMeleeEntityEffect(int power, int potency, int cost) { - this.range = range; - this.radius = radius; + this.powerUpgrades = power; + this.potencyUpgrades = potency; + this.costUpgrades = cost; + this.range = 2; + this.radius = 2; + this.maxHit = 1; } @Override @@ -25,21 +33,29 @@ public abstract class ExtrapolatedMeleeEntityEffect implements IMeleeSpellEntity { Vec3 lookVec = entityPlayer.getLook(range); double x = entityPlayer.posX + lookVec.xCoord; - double y = entityPlayer.posY + entityPlayer.getEyeHeight() + lookVec.yCoord; + double y = entityPlayer.posY + lookVec.yCoord; double z = entityPlayer.posZ + lookVec.zCoord; List entities = world.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(x-0.5f, y-0.5f, z-0.5f, x + 0.5f, y + 0.5f, z + 0.5f).expand(radius, radius, radius)); + int hit = 0; if(entities!=null) { for(Entity entity : entities) { - this.entityEffect(world, entity); + if(hit