diff --git a/src/main/java/electroblob/wizardry/CommonProxy.java b/src/main/java/electroblob/wizardry/CommonProxy.java index acaf16ed..b8ef9d67 100644 --- a/src/main/java/electroblob/wizardry/CommonProxy.java +++ b/src/main/java/electroblob/wizardry/CommonProxy.java @@ -1,5 +1,6 @@ package electroblob.wizardry; +import electroblob.wizardry.client.particle.ParticleWizardry; import electroblob.wizardry.item.ItemSpectralBow; import electroblob.wizardry.packet.PacketCastContinuousSpell; import electroblob.wizardry.packet.PacketCastSpell; @@ -11,7 +12,7 @@ import electroblob.wizardry.packet.PacketTransportation; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.spell.Spell; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; @@ -56,75 +57,20 @@ public class CommonProxy { // SECTION Particles // =============================================================================================================== - /** - * Spawns a custom particle of the specified type. - * - * @param type EnumParticleType of the particle - * @param world Reference to the World object - * @param x Particle x position - * @param y Particle y position - * @param z Particle z position - * @param velX Particle x velocity - * @param velY Particle y velocity - * @param velZ Particle z velocity - * @param maxAge Lifetime of the particle in ticks - * @param r Red component of particle colour; will be clamped to between 0 and 1 - * @param g Red component of particle colour; will be clamped to between 0 and 1 - * @param b Red component of particle colour; will be clamped to between 0 and 1 - * @param doGravity Whether the particle is affected by gravity (only affects SPARKLE at the moment) - * @param radius The radius of the particle's motion, for cirular motion particles - */ - public void spawnParticle(WizardryParticleType type, World world, double x, double y, double z, double velX, - double velY, double velZ, int maxAge, float r, float g, float b, boolean doGravity, double radius){ - // Does nothing since particles are client-side only - } + /** Called from init() in the main mod class to initialise the particle factories. */ + public void initParticleFactories(){} // Does nothing since particles are client-side only - /** - * Spawns a custom particle of the specified type. doGravity defaults to false and radius defaults to 0. Note that - * some of these settings may not affect the particle; some particles are always affected by gravity, for instance. - * - * @param type EnumParticleType of the particle - * @param world Reference to the World object - * @param x Particle x position - * @param y Particle y position - * @param z Particle z position - * @param velX Particle x velocity - * @param velY Particle y velocity - * @param velZ Particle z velocity - * @param maxAge Lifetime of the particle in ticks - * @param r Red component of particle colour; will be clamped to between 0 and 1 (unless this is a MAGIC_FIRE - * particle, in which case this is the scale) - * @param g Red component of particle colour; will be clamped to between 0 and 1 - * @param b Red component of particle colour; will be clamped to between 0 and 1 - */ - public void spawnParticle(WizardryParticleType type, World world, double x, double y, double z, double velX, - double velY, double velZ, int maxAge, float r, float g, float b){ - this.spawnParticle(type, world, x, y, z, velX, velY, velZ, maxAge, r, g, b, false, 0); - } - - /** - * Spawns a custom particle of the specified type. Colour defaults to white, doGravity defaults to false and radius - * defaults to 0. Note that some of these settings may not affect the particle; some particles are always affected - * by gravity, for instance. - * - * @param type EnumParticleType of the particle - * @param world Reference to the World object - * @param x Particle x position - * @param y Particle y position - * @param z Particle z position - * @param velX Particle x velocity - * @param velY Particle y velocity - * @param velZ Particle z velocity - * @param maxAge Lifetime of the particle in ticks - */ - public void spawnParticle(WizardryParticleType type, World world, double x, double y, double z, double velX, - double velY, double velZ, int maxAge){ - this.spawnParticle(type, world, x, y, z, velX, velY, velZ, maxAge, 1, 1, 1, false, 0); + /** Creates a new particle of the specified type from the appropriate particle factory. Does not actually spawn the + * particle; use {@link electroblob.wizardry.util.ParticleBuilder ParticleBuilder} to spawn particles. */ + public ParticleWizardry createParticle(Type type, World world, double x, double y, double z){ + return null; } public void spawnTornadoParticle(World world, double x, double y, double z, double velX, double velZ, double radius, int maxAge, IBlockState block, BlockPos pos){ } + + public void spawnEntityParticle(World world, Entity entity, int maxAge, float r, float g, float b){} // SECTION Items // =============================================================================================================== diff --git a/src/main/java/electroblob/wizardry/Wizardry.java b/src/main/java/electroblob/wizardry/Wizardry.java index 99f2766f..996258b9 100644 --- a/src/main/java/electroblob/wizardry/Wizardry.java +++ b/src/main/java/electroblob/wizardry/Wizardry.java @@ -156,6 +156,7 @@ public class Wizardry { WizardryPacketHandler.initPackets(); proxy.initGuiBits(); + proxy.initParticleFactories(); } @EventHandler diff --git a/src/main/java/electroblob/wizardry/WizardryEventHandler.java b/src/main/java/electroblob/wizardry/WizardryEventHandler.java index b3799275..a46d2730 100644 --- a/src/main/java/electroblob/wizardry/WizardryEventHandler.java +++ b/src/main/java/electroblob/wizardry/WizardryEventHandler.java @@ -20,9 +20,10 @@ import electroblob.wizardry.spell.Spell; import electroblob.wizardry.util.IElementalDamage; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.WandHelper; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLiving; @@ -213,10 +214,9 @@ public final class WizardryEventHandler { world.spawnEntity(arc); }else{ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - attacker.posX + world.rand.nextFloat() - 0.5, attacker.getEntityBoundingBox().minY - + attacker.height / 2 + world.rand.nextFloat() * 2 - 1, - attacker.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK).pos(attacker.posX + world.rand.nextFloat() - 0.5, + attacker.getEntityBoundingBox().minY + attacker.height / 2 + world.rand.nextFloat() * 2 - 1, + attacker.posZ + world.rand.nextFloat() - 0.5).spawn(world); world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, attacker.posX + world.rand.nextFloat() - 0.5, attacker.getEntityBoundingBox().minY + attacker.height / 2 + world.rand.nextFloat() * 2 - 1, diff --git a/src/main/java/electroblob/wizardry/block/BlockCrystalFlower.java b/src/main/java/electroblob/wizardry/block/BlockCrystalFlower.java index 1ca537ea..27bc7046 100644 --- a/src/main/java/electroblob/wizardry/block/BlockCrystalFlower.java +++ b/src/main/java/electroblob/wizardry/block/BlockCrystalFlower.java @@ -2,9 +2,9 @@ package electroblob.wizardry.block; import java.util.Random; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryBlocks; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.block.BlockBush; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -41,10 +41,10 @@ public class BlockCrystalFlower extends BlockBush { @Override public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random random){ if(world.isRemote && random.nextBoolean()){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, pos.getX() + random.nextDouble(), - pos.getY() + random.nextDouble() / 2 + 0.5, pos.getZ() + random.nextDouble(), 0d, 0.01, 0d, - 20 + random.nextInt(10), 0.5f + (random.nextFloat() / 2), 0.5f + (random.nextFloat() / 2), - 0.5f + (random.nextFloat() / 2)); + ParticleBuilder.create(Type.SPARKLE) + .pos(pos.getX() + random.nextDouble(), pos.getY() + random.nextDouble() / 2 + 0.5, pos.getZ() + random.nextDouble()).vel(0, 0.01, 0) + .lifetime(20 + random.nextInt(10)).colour(0.5f + (random.nextFloat() / 2), 0.5f + (random.nextFloat() / 2), + 0.5f + (random.nextFloat() / 2)).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/block/BlockSpectral.java b/src/main/java/electroblob/wizardry/block/BlockSpectral.java index d4c91f1a..99d1ee17 100644 --- a/src/main/java/electroblob/wizardry/block/BlockSpectral.java +++ b/src/main/java/electroblob/wizardry/block/BlockSpectral.java @@ -61,18 +61,22 @@ public class BlockSpectral extends BlockContainer { @Override public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random random){ + // Middle of block - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, pos.getX() + random.nextDouble(), - pos.getY() + random.nextDouble(), pos.getZ() + random.nextDouble(), 0, 0, 0, - (int)(16.0D / (Math.random() * 0.8D + 0.2D)), 0.4f + random.nextFloat() * 0.2f, - 0.6f + random.nextFloat() * 0.4f, 0.6f + random.nextFloat() * 0.4f); + ParticleBuilder.create(Type.DUST) + .pos(pos.getX() + random.nextDouble(), pos.getY() + random.nextDouble(), pos.getZ() + random.nextDouble()) + .lifetime((int)(16.0D / (Math.random() * 0.8D + 0.2D))) + .colour(0.4f + random.nextFloat() * 0.2f, 0.6f + random.nextFloat() * 0.4f, 0.6f + random.nextFloat() * 0.4f) + .shaded(true).spawn(world); + // Top surface - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, pos.getX() + random.nextDouble(), pos.getY() + 1, - pos.getZ() + random.nextDouble(), 0, 0, 0, (int)(16.0D / (Math.random() * 0.8D + 0.2D)), - 0.4f + random.nextFloat() * 0.2f, 0.6f + random.nextFloat() * 0.4f, 0.6f + random.nextFloat() * 0.4f); - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, pos.getX() + random.nextDouble(), pos.getY() + 1, - pos.getZ() + random.nextDouble(), 0, 0, 0, (int)(16.0D / (Math.random() * 0.8D + 0.2D)), - 0.4f + random.nextFloat() * 0.2f, 0.6f + random.nextFloat() * 0.4f, 0.6f + random.nextFloat() * 0.4f); + for(int i=0; i<2; i++){ + ParticleBuilder.create(Type.DUST) + .pos(pos.getX() + random.nextDouble(), pos.getY() + 1, pos.getZ() + random.nextDouble()) + .lifetime((int)(16.0D / (Math.random() * 0.8D + 0.2D))) + .colour(0.4f + random.nextFloat() * 0.2f, 0.6f + random.nextFloat() * 0.4f, 0.6f + random.nextFloat() * 0.4f) + .shaded(true).spawn(world); + } } // Overriden to make the block always look full brightness despite not emitting diff --git a/src/main/java/electroblob/wizardry/client/ClientProxy.java b/src/main/java/electroblob/wizardry/client/ClientProxy.java index 4adcb7ac..411fdc59 100644 --- a/src/main/java/electroblob/wizardry/client/ClientProxy.java +++ b/src/main/java/electroblob/wizardry/client/ClientProxy.java @@ -2,6 +2,7 @@ package electroblob.wizardry.client; import java.lang.ref.WeakReference; import java.util.HashMap; +import java.util.Map; import org.lwjgl.input.Keyboard; @@ -11,11 +12,13 @@ import electroblob.wizardry.WizardData; import electroblob.wizardry.Wizardry; import electroblob.wizardry.client.model.ModelWizardArmour; import electroblob.wizardry.client.particle.ParticleBlizzard; +import electroblob.wizardry.client.particle.ParticleBuff; import electroblob.wizardry.client.particle.ParticleDarkMagic; import electroblob.wizardry.client.particle.ParticleDust; -import electroblob.wizardry.client.particle.ParticleGiantBubble; +import electroblob.wizardry.client.particle.ParticleFlash; import electroblob.wizardry.client.particle.ParticleIce; import electroblob.wizardry.client.particle.ParticleLeaf; +import electroblob.wizardry.client.particle.ParticleMagicBubble; import electroblob.wizardry.client.particle.ParticleMagicFlame; import electroblob.wizardry.client.particle.ParticlePath; import electroblob.wizardry.client.particle.ParticleRotatingSparkle; @@ -23,6 +26,8 @@ import electroblob.wizardry.client.particle.ParticleSnow; import electroblob.wizardry.client.particle.ParticleSpark; import electroblob.wizardry.client.particle.ParticleSparkle; import electroblob.wizardry.client.particle.ParticleTornado; +import electroblob.wizardry.client.particle.ParticleWizardry; +import electroblob.wizardry.client.particle.ParticleWizardry.IWizardryParticleFactory; import electroblob.wizardry.client.renderer.LayerStone; import electroblob.wizardry.client.renderer.RenderArc; import electroblob.wizardry.client.renderer.RenderArcaneWorkbench; @@ -114,8 +119,9 @@ import electroblob.wizardry.spell.Spell; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import electroblob.wizardry.tileentity.TileEntityMagicLight; import electroblob.wizardry.tileentity.TileEntityStatue; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WandHelper; -import electroblob.wizardry.util.WizardryParticleType; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -135,7 +141,6 @@ import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundEvent; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Property; @@ -154,6 +159,9 @@ public class ClientProxy extends CommonProxy { /** Static instance of the mixed font renderer */ public static MixedFontRenderer mixedFontRenderer; + /** Static particle factory map */ + private static Map factories; + // Key Bindings public static final KeyBinding NEXT_SPELL = new KeyBinding("key." + Wizardry.MODID + ".next_spell", Keyboard.KEY_N, "key.categories." + Wizardry.MODID); public static final KeyBinding PREVIOUS_SPELL = new KeyBinding("key." + Wizardry.MODID + ".previous_spell", Keyboard.KEY_B, "key.categories." + Wizardry.MODID); @@ -265,67 +273,44 @@ public class ClientProxy extends CommonProxy { // =============================================================================================================== @Override - public void spawnParticle(WizardryParticleType type, World world, double x, double y, double z, double velX, double velY, double velZ, int maxAge, - float r, float g, float b, boolean doGravity, double radius){ + public void initParticleFactories(){ - // Colour values are now automatically clamped to between 0 and 1, as values outside this range seem to - // cause strange effects in 1.10 (or more specifically, particles that are bright pink!) - // TODO: This is a terrible dirty fix, but it'll do for now. Find a nicer way in future. - if(type != WizardryParticleType.MAGIC_FIRE) r = MathHelper.clamp(r, 0, 1); - g = MathHelper.clamp(g, 0, 1); - b = MathHelper.clamp(b, 0, 1); - - switch(type){ - - case BLIZZARD: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleBlizzard(world, maxAge, x, z, radius, y)); - break; - case BRIGHT_DUST: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDust(world, x, y, z, velX, velY, velZ, r, g, b, false)); - break; - case DARK_MAGIC: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDarkMagic(world, x, y, z, velX, velY, velZ, r, g, b)); - break; - case DUST: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDust(world, x, y, z, velX, velY, velZ, r, g, b, true)); - break; - case ICE: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleIce(world, x, y, z, velX, velY, velZ, maxAge)); - break; - case LEAF: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleLeaf(world, x, y, z, velX, velY, velZ, maxAge)); - break; - case MAGIC_BUBBLE: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleGiantBubble(world, x, y, z, velX, velY, velZ)); - break; - case MAGIC_FIRE: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleMagicFlame(world, x, y, z, velX, velY, velZ, maxAge, r == 0 ? 1 + world.rand.nextFloat() : r)); - break; - case PATH: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticlePath(world, x, y, z, velX, velY, velZ, r, g, b, maxAge)); - break; - case SNOW: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSnow(world, x, y, z, velX, velY, velZ)); - break; - case SPARK: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, velX, velY, velZ)); - break; - case SPARKLE: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSparkle(world, x, y, z, velX, velY, velZ, r, g, b, maxAge, doGravity)); - break; - case SPARKLE_ROTATING: - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRotatingSparkle(world, maxAge, x, z, radius, y, r, g, b)); - break; - default: - break; + factories = new HashMap<>(); + + factories.put(Type.BLIZZARD, (world, x, y, z) -> new ParticleBlizzard(world, x, y, z)); + factories.put(Type.DARK_MAGIC, (world, x, y, z) -> new ParticleDarkMagic(world, x, y, z)); + factories.put(Type.DUST, (world, x, y, z) -> new ParticleDust(world, x, y, z)); + factories.put(Type.FLASH, (world, x, y, z) -> new ParticleFlash(world, x, y, z)); + factories.put(Type.ICE, (world, x, y, z) -> new ParticleIce(world, x, y, z)); + factories.put(Type.LEAF, (world, x, y, z) -> new ParticleLeaf(world, x, y, z)); + factories.put(Type.MAGIC_BUBBLE, (world, x, y, z) -> new ParticleMagicBubble(world, x, y, z)); + factories.put(Type.MAGIC_FIRE, (world, x, y, z) -> new ParticleMagicFlame(world, x, y, z)); + factories.put(Type.PATH, (world, x, y, z) -> new ParticlePath(world, x, y, z)); + factories.put(Type.SNOW, (world, x, y, z) -> new ParticleSnow(world, x, y, z)); + factories.put(Type.SPARK, (world, x, y, z) -> new ParticleSpark(world, x, y, z)); + factories.put(Type.SPARKLE, (world, x, y, z) -> new ParticleSparkle(world, x, y, z)); + factories.put(Type.SPARKLE_ROTATING, (world, x, y, z) -> new ParticleRotatingSparkle(world, x, y, z)); + } + + @Override + public ParticleWizardry createParticle(Type type, World world, double x, double y, double z){ + IWizardryParticleFactory factory = factories.get(type); + if(factory == null){ + Wizardry.logger.warn("Unrecognised particle type %s! Ensure the particle is properly registered.", type); + return null; } + return factory.createParticle(world, x, y, z); } @Override public void spawnTornadoParticle(World world, double x, double y, double z, double velX, double velZ, double radius, int maxAge, IBlockState block, BlockPos pos){ - Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleTornado(world, maxAge, x, z, radius, y, velX, velZ, block).setBlockPos(pos));// , - // world.rand.nextInt(6))); + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleTornado(world, maxAge, x, z, radius, y, velX, velZ, block).setBlockPos(pos));// , world.rand.nextInt(6))); + } + + @Override + public void spawnEntityParticle(World world, Entity entity, int maxAge, float r, float g, float b){ + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleBuff(world, entity, maxAge, r, g, b, world.rand.nextBoolean())); } // SECTION Packet Handlers @@ -431,8 +416,8 @@ public class ClientProxy extends CommonProxy { double x = caster.posX + radius * Math.cos(angle); double y = caster.getEntityBoundingBox().minY + world.rand.nextDouble() * 2; double z = caster.posZ + radius * Math.sin(angle); - Minecraft.getMinecraft().effectRenderer - .addEffect(new ParticleSparkle(world, x, y, z, 0, 0.02, 0, 0.6f, 1.0f, 0.6f, 80 + world.rand.nextInt(10))); + ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.02, 0).colour(0.6f, 1, 0.6f) + .lifetime(80 + world.rand.nextInt(10)).spawn(world); } for(int i = 0; i < 20; i++){ double radius = 1; diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleBlizzard.java b/src/main/java/electroblob/wizardry/client/particle/ParticleBlizzard.java index 58e84e48..9f7c2828 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleBlizzard.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleBlizzard.java @@ -11,15 +11,14 @@ public class ParticleBlizzard extends ParticleSnow { private double radius; private double speed; - public ParticleBlizzard(World world, int maxAge, double originX, double originZ, double radius, double yPos){ - super(world, 0, 0, 0, 0, 0, 0, maxAge); + public ParticleBlizzard(World world, double ox, double y, double oz){ + super(world, ox, y, oz); this.angle = this.rand.nextDouble() * Math.PI * 2; - double x = originX - Math.cos(angle) * radius; - double z = originZ + radius * Math.sin(angle); - this.radius = radius; - this.setPosition(x, yPos, z); + double x = ox - Math.cos(angle) * radius; + double z = oz + radius * Math.sin(angle); + this.setPosition(x, y, z); this.prevPosX = x; - this.prevPosY = yPos; + this.prevPosY = y; this.prevPosZ = z; if(rand.nextBoolean()){ speed = rand.nextDouble() * 2 + 1; @@ -29,12 +28,6 @@ public class ParticleBlizzard extends ParticleSnow { this.multipleParticleScaleBy(1.5f); } - @Override - public void init(){ - super.init(); - this.fullBrightness = true; - } - // @Override // public void renderParticle(VertexBuffer buffer, Entity entity, float partialTicks, float rotationX, float // rotationZ, float rotationYZ, float rotationXY, float rotationXZ){ diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleCustomTexture.java b/src/main/java/electroblob/wizardry/client/particle/ParticleCustomTexture.java index 090ea7c9..46f33ad4 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleCustomTexture.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleCustomTexture.java @@ -13,43 +13,14 @@ import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -/** - * Abstract superclass for all particles that use custom textures. This is intended to centralise as much code as - * possible; all subclasses need to do is to define the texture to use, how the frames are arranged (and which to - * choose), and any properties like gravity and collisions. - * - * @author Electroblob - * @since Wizardry 1.2 - */ -@SideOnly(Side.CLIENT) -public abstract class ParticleCustomTexture extends Particle { +@Deprecated +public abstract class ParticleCustomTexture extends ParticleWizardry { - /** True if the particle always renders at full brightness. Defaults to false. */ - protected boolean fullBrightness = false; - - public ParticleCustomTexture(World world, double x, double y, double z, double vx, double vy, double vz){ - super(world, x, y, z, vx, vy, vz); - this.motionX = vx; - this.motionY = vy; - this.motionZ = vz; - this.init(); + public ParticleCustomTexture(World world, double x, double y, double z){ + super(world, x, y, z); } - public ParticleCustomTexture(World world, double x, double y, double z, double vx, double vy, double vz, - int maxAge){ - this(world, x, y, z, vx, vy, vz); - this.particleMaxAge = maxAge; - } - - /** - * Called from both constructors to set constants, avoiding duplicate code. Common fields to set here include: - * particleScale, particleGravity, canCollide, fullBrightness and setting the texture index. - */ - public abstract void init(); - /** * Returns a ResourceLocation for the particle's texture sheet. Do not create a new ResourceLocation in this method, * only return a constant. @@ -83,59 +54,6 @@ public abstract class ParticleCustomTexture extends Particle { this.particleTextureIndexY = index / getYFrames(); } - // Overridden to fix the bug with vanilla that makes particles frictionless. (y != y... seriously, Mojang?) - // TESTME: Probably no longer necessary. - // @Override - // public void move(double x, double y, double z){ - // - // double d0 = y; - // - // if (this.canCollide) - // { - // List list = this.world.getCollisionBoxes((Entity)null, this.getBoundingBox().addCoord(x, y, z)); - // - // for (AxisAlignedBB axisalignedbb : list) - // { - // y = axisalignedbb.calculateYOffset(this.getBoundingBox(), y); - // } - // - // this.setBoundingBox(this.getBoundingBox().offset(0.0D, y, 0.0D)); - // - // for (AxisAlignedBB axisalignedbb1 : list) - // { - // x = axisalignedbb1.calculateXOffset(this.getBoundingBox(), x); - // } - // - // this.setBoundingBox(this.getBoundingBox().offset(x, 0.0D, 0.0D)); - // - // for (AxisAlignedBB axisalignedbb2 : list) - // { - // z = axisalignedbb2.calculateZOffset(this.getBoundingBox(), z); - // } - // - // this.setBoundingBox(this.getBoundingBox().offset(0.0D, 0.0D, z)); - // } - // else - // { - // this.setBoundingBox(this.getBoundingBox().offset(x, y, z)); - // } - // - // this.resetPositionToBB(); - // this.onGround = d0 != y && d0 < 0.0D; - // - // /* Can never be true! - But this doesn't seem to make any difference anyway. - // if (x != x) - // { - // this.motionX = 0.0D; - // } - // - // if (z != z) - // { - // this.motionZ = 0.0D; - // } - // */ - // } - // Overridden to bind the new texture. I think this can be done with TextureAtlasSprite, but this works as it is // so I'm not changing it for the time being. @Override @@ -211,9 +129,4 @@ public abstract class ParticleCustomTexture extends Particle { */ public void undoGLStateChanges(){ } - - @Override - public int getBrightnessForRender(float partialTick){ - return fullBrightness ? 15728880 : super.getBrightnessForRender(partialTick); - } } diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleDarkMagic.java b/src/main/java/electroblob/wizardry/client/particle/ParticleDarkMagic.java index 9c962a00..b4bc8710 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleDarkMagic.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleDarkMagic.java @@ -1,6 +1,5 @@ package electroblob.wizardry.client.particle; -import net.minecraft.client.particle.Particle; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.entity.Entity; import net.minecraft.world.World; @@ -8,20 +7,16 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class ParticleDarkMagic extends Particle { +public class ParticleDarkMagic extends ParticleWizardry { /** Base spell texture index */ private int baseSpellTextureIndex = 128; - public ParticleDarkMagic(World par1World, double par2, double par4, double par6, double par8, double par10, - double par12, float r, float g, float b){ - super(par1World, par2, par4, par6, par8, par10, par12); + public ParticleDarkMagic(World world, double x, double y, double z){ + super(world, x, y, z); + this.motionY *= 0.20000000298023224D; - - this.particleRed = r; - this.particleGreen = g; - this.particleBlue = b; - + this.setRBGColorF(1, 1, 1); this.particleScale *= 0.75F; this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); this.canCollide = true; @@ -43,9 +38,7 @@ public class ParticleDarkMagic extends Particle { super.renderParticle(buffer, entity, partialTicks, rotationX, rotationZ, rotationYZ, rotationXY, rotationXZ); } - /** - * Called to update the entity's position/logic. - */ + @Override public void onUpdate(){ this.prevPosX = this.posX; this.prevPosY = this.posY; diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleDust.java b/src/main/java/electroblob/wizardry/client/particle/ParticleDust.java index c37dbb51..3a7f70fd 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleDust.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleDust.java @@ -1,34 +1,25 @@ package electroblob.wizardry.client.particle; -import net.minecraft.client.particle.Particle; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class ParticleDust extends Particle { +public class ParticleDust extends ParticleWizardry { - private final boolean shaded; - - public ParticleDust(World par1World, double x, double y, double z, double par8, double par10, double par12, float r, - float g, float b, boolean shaded){ - super(par1World, x, y, z, par8, par10, par12); - this.particleRed = r; - this.particleGreen = g; - this.particleBlue = b; + public ParticleDust(World world, double x, double y, double z){ + super(world, x, y, z); + this.setParticleTextureIndex(0); this.setSize(0.01F, 0.01F); + + // Defaults this.particleScale *= this.rand.nextFloat() + 0.2F; - this.motionX = par8; - this.motionY = par10; - this.motionZ = par12; this.particleMaxAge = (int)(16.0D / (Math.random() * 0.8D + 0.2D)); - this.shaded = shaded; + this.setRBGColorF(1, 1, 1); } - /** - * Called to update the entity's position/logic. - */ + @Override public void onUpdate(){ this.prevPosX = this.posX; this.prevPosY = this.posY; @@ -39,10 +30,4 @@ public class ParticleDust extends Particle { this.setExpired(); } } - - @Override - public int getBrightnessForRender(float par1){ - return shaded ? super.getBrightnessForRender(par1) : 15728880; - } - /* @Override public float getBrightness(float par1) { return shaded ? super.getBrightness(par1) : 1.0F; } */ } diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleIce.java b/src/main/java/electroblob/wizardry/client/particle/ParticleIce.java index dd548900..7c703f7c 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleIce.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleIce.java @@ -9,26 +9,20 @@ import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ParticleIce extends ParticleCustomTexture { - private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, - "textures/particle/ice_particles.png"); + private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/particle/ice_particles.png"); - public ParticleIce(World world, double x, double y, double z, double vx, double vy, double vz){ - super(world, x, y, z, vx, vy, vz); - } - - public ParticleIce(World world, double x, double y, double z, double vx, double vy, double vz, int maxAge){ - super(world, x, y, z, vx, vy, vz, maxAge); - } - - @Override - public void init(){ + public ParticleIce(World world, double x, double y, double z){ + super(world, x, y, z); + this.setParticleTextureIndex(rand.nextInt(8)); - this.particleScale *= 0.75f; - this.particleGravity = 1; this.canCollide = true; - this.fullBrightness = true; + + // Defaults + this.particleScale *= 0.75f; + this.setGravity(true); + this.shaded = false; } - + @Override public ResourceLocation getTexture(){ return TEXTURE; diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleLeaf.java b/src/main/java/electroblob/wizardry/client/particle/ParticleLeaf.java index e2610a3d..11efd7bb 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleLeaf.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleLeaf.java @@ -12,16 +12,10 @@ public class ParticleLeaf extends ParticleCustomTexture { private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/particle/leaf_particles.png"); - public ParticleLeaf(World world, double x, double y, double z, double vx, double vy, double vz){ - super(world, x, y, z, vx, vy, vz); - } - - public ParticleLeaf(World world, double x, double y, double z, double vx, double vy, double vz, int maxAge){ - super(world, x, y, z, vx, vy, vz, maxAge); - } - - @Override - public void init(){ + public ParticleLeaf(World world, double x, double y, double z){ + super(world, x, y, z); + this.setVelocity(0, -0.03, 0); + this.setLifetime(10 + rand.nextInt(5)); this.setParticleTextureIndex(rand.nextInt(16)); this.particleScale *= 1.4f; this.particleGravity = 0; diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleMagicFlame.java b/src/main/java/electroblob/wizardry/client/particle/ParticleMagicFlame.java index d16a53b3..8a1051e0 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleMagicFlame.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleMagicFlame.java @@ -8,24 +8,21 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class ParticleMagicFlame extends Particle { +public class ParticleMagicFlame extends ParticleWizardry { /** The scale of the flame particle */ private float flameScale; - public ParticleMagicFlame(World par1World, double par2, double par4, double par6, double par8, double par10, - double par12, int maxAge, float scale){ - super(par1World, par2, par4, par6, par8, par10, par12); - this.motionX = this.motionX * 0.009999999776482582D + par8; - this.motionY = this.motionY * 0.009999999776482582D + par10; - this.motionZ = this.motionZ * 0.009999999776482582D + par12; - this.flameScale = scale; - this.particleRed = this.particleGreen = this.particleBlue = 1.0F; - if(maxAge == 0){ - this.particleMaxAge = (int)(2.0D / (Math.random() * 0.8D + 0.2D)); - }else{ - this.particleMaxAge = maxAge; - } + public ParticleMagicFlame(World world, double x, double y, double z){ + super(world, x, y, z); + // Not sure what these did but they sure as heck won't do anything now... + // TESTME: If it looks the same as before, delete these. +// this.motionX = this.motionX * 0.009999999776482582D + par8; +// this.motionY = this.motionY * 0.009999999776482582D + par10; +// this.motionZ = this.motionZ * 0.009999999776482582D + par12; + this.flameScale = 1 + world.rand.nextFloat(); + this.setRBGColorF(1, 1, 1); + this.particleMaxAge = (int)(2.0D / (Math.random() * 0.8D + 0.2D)); // IDEA: Make the particles for ray spells collide properly and not spawn on the other side of stuff. this.canCollide = false; this.setParticleTextureIndex(48); @@ -43,4 +40,10 @@ public class ParticleMagicFlame extends Particle { public int getBrightnessForRender(float par1){ return 256; } + + @Override + public Particle multipleParticleScaleBy(float scale){ + this.flameScale *= scale; + return super.multipleParticleScaleBy(scale); + } } diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticlePath.java b/src/main/java/electroblob/wizardry/client/particle/ParticlePath.java index 4db78d66..189cb962 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticlePath.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticlePath.java @@ -19,32 +19,20 @@ public class ParticlePath extends ParticleCustomTexture { private final double originX, originY, originZ; - public ParticlePath(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g, - float b){ - super(world, x, y, z, vx, vy, vz); - this.setRBGColorF(r, g, b); + public ParticlePath(World world, double x, double y, double z){ + super(world, x, y, z); + this.originX = x; this.originY = y; this.originZ = z; - } - - public ParticlePath(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g, - float b, int maxAge){ - super(world, x, y, z, vx, vy, vz, maxAge); - this.setRBGColorF(r, g, b); - this.originX = x; - this.originY = y; - this.originZ = z; - } - - @Override - public void init(){ + this.setParticleTextureIndex(0); // Set to a constant to remove the randomness from Particle. this.particleScale = 1.25f; this.particleGravity = 0; - this.fullBrightness = true; + this.shaded = false; this.canCollide = false; + this.setRBGColorF(1, 1, 1); } @Override diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleRotatingSparkle.java b/src/main/java/electroblob/wizardry/client/particle/ParticleRotatingSparkle.java index 498bb038..ba804d58 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleRotatingSparkle.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleRotatingSparkle.java @@ -11,16 +11,15 @@ public class ParticleRotatingSparkle extends ParticleSparkle { private double radius; private double speed; - public ParticleRotatingSparkle(World world, int maxAge, double originX, double originZ, double radius, double yPos, - float r, float g, float b){ - super(world, 0, 0, 0, 0, 0, 0, r, g, b, maxAge); + public ParticleRotatingSparkle(World world, double ox, double y, double oz){ + super(world, ox, y, oz); this.angle = this.rand.nextDouble() * Math.PI * 2; - double x = originX - Math.cos(angle) * radius; - double z = originZ + radius * Math.sin(angle); - this.radius = radius; - this.setPosition(x, yPos, z); + double x = ox - Math.cos(angle) * radius; + double z = oz + radius * Math.sin(angle); + this.radius = 1; // TODO: Find a suitable default value + this.setPosition(x, y, z); this.prevPosX = x; - this.prevPosY = yPos; + this.prevPosY = y; this.prevPosZ = z; if(rand.nextBoolean()){ speed = rand.nextDouble() * 2 + 1; diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleSnow.java b/src/main/java/electroblob/wizardry/client/particle/ParticleSnow.java index e0d5250d..a18ff4d9 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleSnow.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleSnow.java @@ -12,22 +12,16 @@ public class ParticleSnow extends ParticleCustomTexture { private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/particle/snow_particles.png"); - public ParticleSnow(World world, double x, double y, double z, double vx, double vy, double vz){ - super(world, x, y, z, vx, vy, vz); - } - - public ParticleSnow(World world, double x, double y, double z, double vx, double vy, double vz, int maxAge){ - super(world, x, y, z, vx, vy, vz, maxAge); - } - - @Override - public void init(){ + public ParticleSnow(World world, double x, double y, double z){ + super(world, x, y, z); this.setParticleTextureIndex(rand.nextInt(8)); + this.setVelocity(0, -0.02, 0); this.particleScale *= 0.6f; this.particleGravity = 0; this.canCollide = true; + this.setLifetime(40 + rand.nextInt(10)); } - + @Override public ResourceLocation getTexture(){ return TEXTURE; diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleSpark.java b/src/main/java/electroblob/wizardry/client/particle/ParticleSpark.java index 201d2373..a94103f1 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleSpark.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleSpark.java @@ -16,18 +16,14 @@ public class ParticleSpark extends ParticleCustomTexture { private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/particle/lightning_particles.png"); - public ParticleSpark(World world, double x, double y, double z, double vx, double vy, double vz){ - // Max age is always 3. - super(world, x, y, z, vx, vy, vz, 3); - } - - @Override - public void init(){ + public ParticleSpark(World world, double x, double y, double z){ + super(world, x, y, z); // Multiplied by 4 because the index works slightly differently for spark particles. this.setParticleTextureIndex(rand.nextInt(8) * 4); this.particleScale *= 1.4f; - this.fullBrightness = true; + this.shaded = false; this.canCollide = false; + this.setLifetime(3); // Lifetime defaults to 3 (and is very unlikely to be changed) } @Override diff --git a/src/main/java/electroblob/wizardry/client/particle/ParticleSparkle.java b/src/main/java/electroblob/wizardry/client/particle/ParticleSparkle.java index fdbd553c..f63bfcfb 100644 --- a/src/main/java/electroblob/wizardry/client/particle/ParticleSparkle.java +++ b/src/main/java/electroblob/wizardry/client/particle/ParticleSparkle.java @@ -9,66 +9,33 @@ import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ParticleSparkle extends ParticleCustomTexture { - /* I have now figured out what particle factories are for: they separate out the individual uses of the varargs - * parameter in spawnParticle so they are kept with the particle class. For my purposes, it would be easier to do - * that in the particle spawning method itself. */ - private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/particle/sparkle_particles.png"); - // NOTE: Uncomment once 2.1.0 is released - // private final float initialRed; - // private final float initialGreen; - // private final float initialBlue; + // Implementation of colour fading (perhaps these belong in ParticleWizardry?) + private float initialRed; + private float initialGreen; + private float initialBlue; - // TODO: Assign these via the constructors, as part of the refactoring for particle parameters. - // NOTE: Uncomment once 2.1.0 is released - // private final float fadeRed = 1; - // private final float fadeGreen = 1; - // private final float fadeBlue = 0; - - public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g, - float b){ - super(world, x, y, z, vx, vy, vz); - this.setRBGColorF(r, g, b); - // NOTE: Uncomment once 2.1.0 is released - // initialRed = r; - // initialGreen = g; - // initialBlue = b; + public ParticleSparkle(World world, double x, double y, double z){ + super(world, x, y, z); + this.setRBGColorF(1, 1, 1); this.particleMaxAge = 48 + this.rand.nextInt(12); - } - - public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g, - float b, int maxAge){ - super(world, x, y, z, vx, vy, vz, maxAge); - this.setRBGColorF(r, g, b); - // NOTE: Uncomment once 2.1.0 is released - // initialRed = r; - // initialGreen = g; - // initialBlue = b; - } - - public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g, - float b, boolean doGravity){ - this(world, x, y, z, vx, vy, vz, r, g, b); - this.particleGravity = doGravity ? 1 : 0; - } - - public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g, - float b, int maxAge, boolean doGravity){ - this(world, x, y, z, vx, vy, vz, r, g, b, maxAge); - this.particleGravity = doGravity ? 1 : 0; - } - - @Override - public void init(){ - this.setParticleTextureIndex(rand.nextInt(16)); this.particleScale *= 0.75f; this.particleGravity = 0; this.canCollide = false; - this.fullBrightness = true; + this.shaded = false; } + // Overridden to set the initial colour values + @Override + public void setRBGColorF(float r, float g, float b){ + super.setRBGColorF(r, g, b); + initialRed = r; + initialGreen = g; + initialBlue = b; + } + @Override public ResourceLocation getTexture(){ return TEXTURE; @@ -88,17 +55,20 @@ public class ParticleSparkle extends ParticleCustomTexture { public void onUpdate(){ super.onUpdate(); + // Fading if(this.particleAge > this.particleMaxAge / 2){ this.setAlphaF( 1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / (float)this.particleMaxAge); } - // Colour fading TODO Uncomment once 2.1.0 is released - // float ageFraction = (float)this.particleAge / (float)this.particleMaxAge; - // this.setRBGColorF(this.initialRed + (this.fadeRed - this.initialRed)*ageFraction, - // this.initialGreen + (this.fadeGreen - this.initialGreen)*ageFraction, - // this.initialBlue + (this.fadeBlue - this.initialBlue)*ageFraction); + // Colour fading + float ageFraction = (float)this.particleAge / (float)this.particleMaxAge; + // No longer uses setRBGColorF because that method now also sets the initial values + this.particleRed = this.initialRed + (this.fadeRed - this.initialRed)*ageFraction; + this.particleGreen = this.initialGreen + (this.fadeGreen - this.initialGreen)*ageFraction; + this.particleBlue = this.initialBlue + (this.fadeBlue - this.initialBlue)*ageFraction; + this.setParticleTextureIndex((this.particleAge * 11)/this.particleMaxAge); } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityBlizzard.java b/src/main/java/electroblob/wizardry/entity/construct/EntityBlizzard.java index 50ecabd4..358eb4a6 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityBlizzard.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityBlizzard.java @@ -2,12 +2,12 @@ package electroblob.wizardry.entity.construct; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.potion.PotionEffect; @@ -61,16 +61,23 @@ public class EntityBlizzard extends EntityMagicConstruct { target.addPotionEffect(new PotionEffect(WizardryPotions.frost, 20, 0)); } }else{ - // For some reason this number of particles now causes the game to lag significantly, despite it being fine - // in 1.7.10. I thought particles were supposed to be LESS laggy now... - for(int i = 1; i < 6; i++){ + for(int i=1; i<6; i++){ + float brightness = 0.5f + (rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.BLIZZARD, world, this.posX, - this.posY + rand.nextDouble() * 3, this.posZ, 0, 0, 0, 100, brightness, brightness + 0.1f, 1.0f, - false, rand.nextDouble() * 2.5d + 0.5d); - Wizardry.proxy.spawnParticle(WizardryParticleType.BLIZZARD, world, this.posX, - this.posY + rand.nextDouble() * 3, this.posZ, 0, 0, 0, 100, 1.0f, 1.0f, 1.0f, false, - rand.nextDouble() * 2.5d + 0.5d); + + ParticleBuilder.create(Type.BLIZZARD) + .pos(this.posX, this.posY + rand.nextDouble() * 3, this.posZ) + .lifetime(100) + .colour(brightness, brightness + 0.1f, 1.0f) + .radius(rand.nextDouble() * 2.5d + 0.5d) + .spawn(world); + + ParticleBuilder.create(Type.BLIZZARD) + .pos(this.posX, this.posY + rand.nextDouble() * 3, this.posZ) + .lifetime(100) + .colour(1, 1, 1) + .radius(rand.nextDouble() * 2.5d + 0.5d) + .spawn(world); } } } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityDecay.java b/src/main/java/electroblob/wizardry/entity/construct/EntityDecay.java index a2835764..19b150d6 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityDecay.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityDecay.java @@ -2,9 +2,9 @@ package electroblob.wizardry.entity.construct; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; @@ -53,12 +53,17 @@ public class EntityDecay extends EntityMagicConstruct { target.addPotionEffect(new PotionEffect(WizardryPotions.decay, LIFETIME, 0)); } } + }else if(this.rand.nextInt(15) == 0){ + double radius = rand.nextDouble() * 0.8; double angle = rand.nextDouble() * Math.PI * 2; float brightness = rand.nextFloat() * 0.4f; - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, this.posX + radius * Math.cos(angle), - this.posY, this.posZ + radius * Math.sin(angle), 0, 0, 0, 0, brightness, 0, brightness + 0.1f); + + ParticleBuilder.create(Type.DARK_MAGIC) + .pos(this.posX + radius * Math.cos(angle), this.posY, this.posZ + radius * Math.sin(angle)) + .colour(brightness, 0, brightness + 0.1f) + .spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityForcefield.java b/src/main/java/electroblob/wizardry/entity/construct/EntityForcefield.java index f26c8a95..8717ccaa 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityForcefield.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityForcefield.java @@ -2,9 +2,9 @@ package electroblob.wizardry.entity.construct; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardrySounds; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -62,15 +62,18 @@ public class EntityForcefield extends EntityMagicConstruct { } }else{ for(int i = 1; i < 40; i++){ + + // Generates a spherical pattern of particles float brightness = 0.5f + (rand.nextFloat() * 0.5f); double radius = 3; double yaw = rand.nextDouble() * Math.PI * 2; double pitch = (rand.nextDouble() - 0.5) * Math.PI; - // Generates a spherical pattern of particles - Wizardry.proxy.spawnParticle(WizardryParticleType.BRIGHT_DUST, world, - this.posX + radius * Math.cos(yaw) * Math.cos(pitch), this.posY + 3 + radius * Math.sin(pitch), - this.posZ + radius * Math.sin(yaw) * Math.cos(pitch), 0, 0, 0, 48 + this.rand.nextInt(12), - brightness, brightness, 1.0f); + + ParticleBuilder.create(Type.DUST) + .pos(this.posX + radius * Math.cos(yaw) * Math.cos(pitch), this.posY + 3 + radius * Math.sin(pitch), + this.posZ + radius * Math.sin(yaw) * Math.cos(pitch)) + .lifetime(48 + this.rand.nextInt(12)) + .colour(brightness, brightness, 1.0f); } } } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityFrostSigil.java b/src/main/java/electroblob/wizardry/entity/construct/EntityFrostSigil.java index 7812ca96..cb29f67e 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityFrostSigil.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityFrostSigil.java @@ -2,12 +2,12 @@ package electroblob.wizardry.entity.construct; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.potion.PotionEffect; @@ -74,8 +74,10 @@ public class EntityFrostSigil extends EntityMagicConstruct { }else if(this.rand.nextInt(15) == 0){ double radius = 0.5 + rand.nextDouble() * 0.3; double angle = rand.nextDouble() * Math.PI * 2; - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, this.posX + radius * Math.cos(angle), - this.posY + 0.1, this.posZ + radius * Math.sin(angle), 0, 0, 0, 40 + rand.nextInt(10)); + ParticleBuilder.create(Type.SNOW) + .pos(this.posX + radius * Math.cos(angle), this.posY + 0.1, this.posZ + radius * Math.sin(angle)) + .vel(0, 0, 0) // Required since default for snow is not stationary + .spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityHammer.java b/src/main/java/electroblob/wizardry/entity/construct/EntityHammer.java index 13225ca7..a66fb43c 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityHammer.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityHammer.java @@ -7,7 +7,8 @@ import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -69,8 +70,9 @@ public class EntityHammer extends EntityMagicConstruct { } if(this.world.isRemote && this.ticksExisted % 3 == 0){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX - 0.5d + rand.nextDouble(), - this.posY + 2 * rand.nextDouble(), this.posZ - 0.5d + rand.nextDouble(), 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK) + .pos(this.posX - 0.5d + rand.nextDouble(), this.posY + 2 * rand.nextDouble(), this.posZ - 0.5d + rand.nextDouble()) + .spawn(world); } if(!this.world.isRemote){ @@ -109,12 +111,14 @@ public class EntityHammer extends EntityMagicConstruct { target.posY + target.height / 2, target.posZ); world.spawnEntity(arc); }else{ - for(int j = 0; j < 8; j++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - target.posX + world.rand.nextFloat() - 0.5, - target.getEntityBoundingBox().minY + target.height / 2 - + world.rand.nextFloat() * 2 - 1, - target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); + // TODO: Move all the arc particle (and sound?) stuff into a method in WizardryUtilities + for(int j=0; j<8; j++){ + ParticleBuilder.create(Type.SPARK) + .pos(target.posX + world.rand.nextFloat() - 0.5, + target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, + target.posZ + world.rand.nextFloat() - 0.5) + .spawn(world); + world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, target.posX + rand.nextFloat(), target.getEntityBoundingBox().minY + target.height / 2 + rand.nextFloat(), target.posZ + rand.nextFloat(), 0, 0, 0); diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityHealAura.java b/src/main/java/electroblob/wizardry/entity/construct/EntityHealAura.java index 25f93849..8ca40faa 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityHealAura.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityHealAura.java @@ -2,11 +2,11 @@ package electroblob.wizardry.entity.construct; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.DamageSource; @@ -69,13 +69,16 @@ public class EntityHealAura extends EntityMagicConstruct { } } }else{ - for(int i = 1; i < 3; i++){ + for(int i=1; i<3; i++){ float brightness = 0.5f + (rand.nextFloat() * 0.5f); double radius = rand.nextDouble() * 2.0; double angle = rand.nextDouble() * Math.PI * 2; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, this.posX + radius * Math.cos(angle), - this.posY, this.posZ + radius * Math.sin(angle), 0, 0.05f, 0, 48 + this.rand.nextInt(12), 1.0f, - 1.0f, brightness); + ParticleBuilder.create(Type.SPARKLE) + .pos(this.posX + radius * Math.cos(angle), this.posY, this.posZ + radius * Math.sin(angle)) + .vel(0, 0.05, 0) + .lifetime(48 + this.rand.nextInt(12)) + .colour(1.0f, 1.0f, brightness) + .spawn(world); } } } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityLightningSigil.java b/src/main/java/electroblob/wizardry/entity/construct/EntityLightningSigil.java index 7e427637..0c2bb112 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityLightningSigil.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityLightningSigil.java @@ -2,12 +2,12 @@ package electroblob.wizardry.entity.construct; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.DamageSource; @@ -44,8 +44,6 @@ public class EntityLightningSigil extends EntityMagicConstruct { this.setDead(); } - // if(!this.world.isRemote){ - List targets = WizardryUtilities.getEntitiesWithinRadius(1.0d, this.posX, this.posY, this.posZ, this.world); @@ -90,11 +88,11 @@ public class EntityLightningSigil extends EntityMagicConstruct { world.spawnEntity(arc); }else{ for(int k = 0; k < 8; k++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - secondaryTarget.posX + world.rand.nextFloat() - 0.5, - secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2 - + world.rand.nextFloat() * 2 - 1, - secondaryTarget.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK) + .pos(secondaryTarget.posX + world.rand.nextFloat() - 0.5, + secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, + secondaryTarget.posZ + world.rand.nextFloat() - 0.5) + .spawn(world); world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, secondaryTarget.posX + world.rand.nextFloat() - 0.5, secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2 @@ -116,13 +114,13 @@ public class EntityLightningSigil extends EntityMagicConstruct { } } } - // } if(this.world.isRemote && this.rand.nextInt(15) == 0){ double radius = 0.5 + rand.nextDouble() * 0.3; double angle = rand.nextDouble() * Math.PI * 2; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX + radius * Math.cos(angle), - this.posY + 0.1, this.posZ + radius * Math.sin(angle), 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK) + .pos(this.posX + radius * Math.cos(angle), this.posY + 0.1, this.posZ + radius * Math.sin(angle)) + .spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityTornado.java b/src/main/java/electroblob/wizardry/entity/construct/EntityTornado.java index 5f8abcb0..908ac574 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityTornado.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityTornado.java @@ -7,7 +7,8 @@ import electroblob.wizardry.registry.WizardryAdvancementTriggers; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import io.netty.buffer.ByteBuf; import net.minecraft.block.material.Material; @@ -133,24 +134,22 @@ public class EntityTornado extends EntityMagicConstruct { yPos / 3 + 0.5d, 100, block, pos1); Wizardry.proxy.spawnTornadoParticle(world, this.posX, this.posY + yPos, this.posZ, this.velX, this.velZ, yPos / 3 + 0.5d, 100, block, pos1); + + // Sometimes spawns leaf particles if the block is leaves, or snow particles if the block is snow + if(this.rand.nextInt(3) == 0){ - // Sometimes spawns leaf particles if the block is leaves - if(block.getMaterial() == Material.LEAVES && this.rand.nextInt(3) == 0){ + Type type = null; + + if(block.getMaterial() == Material.LEAVES) type = Type.LEAF; + if(block.getMaterial() == Material.SNOW || block.getMaterial() == Material.CRAFTED_SNOW) + type = Type.SNOW; + double yPos1 = rand.nextDouble() * 8; - Wizardry.proxy.spawnParticle(WizardryParticleType.LEAF, world, - this.posX + (rand.nextDouble() * 2 - 1) * (yPos1 / 3 + 0.5d), this.posY + yPos1, - this.posZ + (rand.nextDouble() * 2 - 1) * (yPos1 / 3 + 0.5d), 0, -0.05, 0, - 40 + rand.nextInt(10)); - } - - // Sometimes spawns snow particles if the block is snow - if(block.getMaterial() == Material.SNOW - || block.getMaterial() == Material.CRAFTED_SNOW && this.rand.nextInt(3) == 0){ - double yPos1 = rand.nextDouble() * 8; - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, - this.posX + (rand.nextDouble() * 2 - 1) * (yPos1 / 3 + 0.5d), this.posY + yPos1, - this.posZ + (rand.nextDouble() * 2 - 1) * (yPos1 / 3 + 0.5d), 0, -0.02, 0, - 40 + rand.nextInt(10)); + ParticleBuilder.create(type) + .pos(this.posX + (rand.nextDouble() * 2 - 1) * (yPos1 / 3 + 0.5d), this.posY + yPos1, + this.posZ + (rand.nextDouble() * 2 - 1) * (yPos1 / 3 + 0.5d)) + .lifetime(40 + rand.nextInt(10)) + .spawn(world); } } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityDecoy.java b/src/main/java/electroblob/wizardry/entity/living/EntityDecoy.java index dfe9c44f..5ec8aa58 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityDecoy.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityDecoy.java @@ -2,8 +2,8 @@ package electroblob.wizardry.entity.living; import java.lang.ref.WeakReference; -import electroblob.wizardry.Wizardry; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import io.netty.buffer.ByteBuf; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -40,10 +40,13 @@ public class EntityDecoy extends EntitySummonedCreature { public void onDespawn(){ super.onDespawn(); for(int i = 0; i < 20; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, - this.posX + (this.rand.nextDouble() - 0.5) * this.width, - this.getEntityBoundingBox().minY + this.rand.nextDouble() * this.height, - this.posZ + (this.rand.nextDouble() - 0.5) * this.width, 0, 0, 0, 40, 0.2f, 1.0f, 0.8f); + ParticleBuilder.create(Type.DUST) + .pos(this.posX + (this.rand.nextDouble() - 0.5) * this.width, this.getEntityBoundingBox().minY + + this.rand.nextDouble() * this.height, this.posZ + (this.rand.nextDouble() - 0.5) * this.width) + .lifetime(40) + .colour(0.2f, 1.0f, 0.8f) + .shaded(true) + .spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityEvilWizard.java b/src/main/java/electroblob/wizardry/entity/living/EntityEvilWizard.java index 30cb09d8..eab20b1c 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityEvilWizard.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityEvilWizard.java @@ -16,8 +16,9 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.spell.Spell; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -200,20 +201,19 @@ public class EntityEvilWizard extends EntityMob implements ISpellCaster, IEntity // deathTime == 0 checks the wizard isn't currently dying }else if(healCooldown == -1 && this.deathTime == 0){ - // Heal particles + // Heal particles TODO: Change this so it uses the heal spell directly if(world.isRemote){ - for(int i = 0; i < 10; i++){ - double d0 = (double)((float)this.posX + rand.nextFloat() * 2 - 1.0F); + for(int i=0; i<10; i++){ + double x = (double)((float)this.posX + rand.nextFloat() * 2 - 1.0F); // Apparently the client side spawns the particles 1 block higher than it should... hence the - // 0.5F. - double d1 = (double)((float)this.posY - 0.5F + rand.nextFloat()); - double d2 = (double)((float)this.posZ + rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, - 48 + rand.nextInt(12), 1.0f, 1.0f, 0.3f); + double y = (double)((float)this.posY - 0.5F + rand.nextFloat()); + double z = (double)((float)this.posZ + rand.nextFloat() * 2 - 1.0F); + ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1F, 0).colour(1, 1, 0.3f).spawn(world); } }else{ if(this.getHealth() < 10){ - // Wizard heals himself more often if he has low health + // Wizards heal themseselves more often if they have low health this.setHealCooldown(150); }else{ this.setHealCooldown(400); diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityIceGiant.java b/src/main/java/electroblob/wizardry/entity/living/EntityIceGiant.java index 423b42e0..ebc34fdb 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityIceGiant.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityIceGiant.java @@ -6,7 +6,8 @@ import java.util.UUID; import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityFlying; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIAttackMelee; @@ -144,10 +145,12 @@ public class EntityIceGiant extends EntityIronGolem implements ISummonedCreature if(this.world.isRemote){ for(int i = 0; i < 30; i++){ float brightness = 0.5f + (rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, this.world, - this.posX - 1 + rand.nextDouble() * 2, this.posY + rand.nextDouble() * 3, - this.posZ - 1 + rand.nextDouble() * 2, 0, -0.02, 0, 12 + rand.nextInt(8), brightness, - brightness + 0.1f, 1.0f); + ParticleBuilder.create(Type.SPARKLE) + .pos(this.posX - 1 + rand.nextDouble() * 2, this.posY + rand.nextDouble() * 3, this.posZ - 1 + rand.nextDouble() * 2) + .vel(0, -0.02, 0) + .lifetime(12 + rand.nextInt(8)) + .colour(brightness, brightness + 0.1f, 1.0f) + .spawn(world); } } } @@ -158,9 +161,9 @@ public class EntityIceGiant extends EntityIronGolem implements ISummonedCreature super.onLivingUpdate(); if(this.world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, this.world, this.posX - 1 + rand.nextDouble() * 2, - this.posY + rand.nextDouble() * 3, this.posZ - 1 + rand.nextDouble() * 2, 0, -0.02, 0, - 40 + rand.nextInt(10)); + ParticleBuilder.create(Type.SNOW) + .pos(this.posX - 1 + rand.nextDouble() * 2, this.posY + rand.nextDouble() * 3, this.posZ - 1 + rand.nextDouble() * 2) + .spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityIceWraith.java b/src/main/java/electroblob/wizardry/entity/living/EntityIceWraith.java index e1d9caa1..e9ad7d34 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityIceWraith.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityIceWraith.java @@ -1,10 +1,10 @@ package electroblob.wizardry.entity.living; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.WizardrySounds; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityAILookIdle; @@ -50,9 +50,13 @@ public class EntityIceWraith extends EntityBlazeMinion { if(this.world.isRemote){ for(int i = 0; i < 15; i++){ float brightness = 0.5f + (rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, this.posX - 0.5d + rand.nextDouble(), - this.posY + this.height / 2 - 0.5d + rand.nextDouble(), this.posZ - 0.5d + rand.nextDouble(), 0, - 0.05f, 0, 20 + rand.nextInt(10), brightness, brightness + 0.1f, 1.0f); + ParticleBuilder.create(Type.SPARKLE) + .pos(this.posX - 0.5d + rand.nextDouble(), this.posY + this.height / 2 - 0.5d + rand.nextDouble(), + this.posZ - 0.5d + rand.nextDouble()) + .vel(0, 0.05f, 0) + .lifetime(20 + rand.nextInt(10)) + .colour(brightness, brightness + 0.1f, 1.0f) + .spawn(world); } } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityLightningWraith.java b/src/main/java/electroblob/wizardry/entity/living/EntityLightningWraith.java index ba613e14..3c90a171 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityLightningWraith.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityLightningWraith.java @@ -1,9 +1,9 @@ package electroblob.wizardry.entity.living; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.Spells; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityAILookIdle; @@ -44,9 +44,12 @@ public class EntityLightningWraith extends EntityBlazeMinion { if(this.world.isRemote){ for(int i = 0; i < 15; i++){ float brightness = 0.3f + (rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, this.posX - 0.5d + rand.nextDouble(), - this.posY + this.height / 2 - 0.5d + rand.nextDouble(), this.posZ - 0.5d + rand.nextDouble(), 0, - 0.05f, 0, 20 + rand.nextInt(10), brightness, brightness + 0.2f, 1.0f); + ParticleBuilder.create(Type.SPARKLE) + .pos(this.posX - 0.5d + rand.nextDouble(), this.posY + this.height / 2 - 0.5d + rand.nextDouble(), this.posZ - 0.5d + rand.nextDouble()) + .vel(0, 0.05, 0) + .lifetime(20 + rand.nextInt(10)) + .colour(brightness, brightness + 0.2f, 1.0f) + .spawn(world); } } } @@ -56,10 +59,7 @@ public class EntityLightningWraith extends EntityBlazeMinion { // Fortunately, lightning wraiths don't replace any of blazes' particle effects or the fire sound, they only // add the sparks, so it's fine to call super here. if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, - this.posY + this.rand.nextDouble() * (double)this.height, - this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK, this).spawn(world); } super.onLivingUpdate(); } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityShadowWraith.java b/src/main/java/electroblob/wizardry/entity/living/EntityShadowWraith.java index 48f78093..9b03593b 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityShadowWraith.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityShadowWraith.java @@ -3,11 +3,11 @@ package electroblob.wizardry.entity.living; import java.util.Collections; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.spell.Spell; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackMelee; @@ -128,9 +128,13 @@ public class EntityShadowWraith extends EntitySummonedCreature implements ISpell if(this.world.isRemote){ for(int i = 0; i < 15; i++){ float brightness = rand.nextFloat() * 0.4f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, this.posX - 0.5d + rand.nextDouble(), - this.posY + this.height / 2 - 0.5d + rand.nextDouble(), this.posZ - 0.5d + rand.nextDouble(), 0, - 0.05f, 0, 20 + rand.nextInt(10), brightness, 0.0f, brightness); + ParticleBuilder.create(Type.SPARKLE) + .pos(this.posX - 0.5d + rand.nextDouble(), this.posY + this.height / 2 - 0.5d + rand.nextDouble(), + this.posZ - 0.5d + rand.nextDouble()) + .vel(0, 0.05, 0) + .lifetime(20 + rand.nextInt(10)) + .colour(brightness, 0.0f, brightness) + .spawn(world); } } } @@ -149,26 +153,25 @@ public class EntityShadowWraith extends EntitySummonedCreature implements ISpell } if(world.isRemote){ - for(int i = 0; i < 2; i++){ + + for(int i=0; i<2; i++){ + world.spawnParticle(EnumParticleTypes.PORTAL, this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, this.posY + this.rand.nextDouble() * (double)this.height, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0, 0, 0); + world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, this.posY + this.rand.nextDouble() * (double)this.height, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0, 0, 0); + float brightness = rand.nextFloat() * 0.2f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, - this.posY + this.rand.nextDouble() * (double)this.height, - this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0, 0.05f, 0, - 20 + rand.nextInt(10), brightness, 0.0f, brightness); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, - this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, - this.posY + this.rand.nextDouble() * (double)this.height, - this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0.0d, 0.0d, 0.0d, 0, 0.1f, - 0.0f, 0.0f); + + ParticleBuilder.create(Type.SPARKLE, this).vel(0, 0.05, 0).lifetime(20 + rand.nextInt(10)) + .colour(brightness, 0.0f, brightness).spawn(world); + + ParticleBuilder.create(Type.DARK_MAGIC, this).colour(0.1f, 0.0f, 0.0f).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntitySilverfishMinion.java b/src/main/java/electroblob/wizardry/entity/living/EntitySilverfishMinion.java index 4cff78eb..a1a79b4d 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntitySilverfishMinion.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntitySilverfishMinion.java @@ -4,7 +4,8 @@ import java.lang.ref.WeakReference; import java.util.UUID; import electroblob.wizardry.Wizardry; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityFlying; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIAttackMelee; @@ -119,9 +120,10 @@ public class EntitySilverfishMinion extends EntitySilverfish implements ISummone private void spawnParticleEffect(){ if(this.world.isRemote){ for(int i = 0; i < 15; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, this.posX + this.rand.nextFloat(), - this.posY + this.rand.nextFloat(), this.posZ + this.rand.nextFloat(), 0.0d, 0.0d, 0.0d, 0, 0.3f, - 0.3f, 0.3f); + ParticleBuilder.create(Type.DARK_MAGIC) + .pos(this.posX + this.rand.nextFloat(), this.posY + this.rand.nextFloat(), this.posZ + this.rand.nextFloat()) + .colour(0.3f, 0.3f, 0.3f) + .spawn(world); } } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntitySpiderMinion.java b/src/main/java/electroblob/wizardry/entity/living/EntitySpiderMinion.java index ea9d3cb3..4a979455 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntitySpiderMinion.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntitySpiderMinion.java @@ -4,7 +4,8 @@ import java.lang.ref.WeakReference; import java.util.UUID; import electroblob.wizardry.Wizardry; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityFlying; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; @@ -147,9 +148,10 @@ public class EntitySpiderMinion extends EntityCaveSpider implements ISummonedCre private void spawnParticleEffect(){ if(this.world.isRemote){ for(int i = 0; i < 15; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, this.posX + this.rand.nextFloat(), - this.posY + this.rand.nextFloat(), this.posZ + this.rand.nextFloat(), 0.0d, 0.0d, 0.0d, 0, 0.1f, - 0.2f, 0.0f); + ParticleBuilder.create(Type.DARK_MAGIC) + .pos(this.posX + this.rand.nextFloat(), this.posY + this.rand.nextFloat(), this.posZ + this.rand.nextFloat()) + .colour(0.1f, 0.2f, 0.0f) + .spawn(world); } } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntitySpiritHorse.java b/src/main/java/electroblob/wizardry/entity/living/EntitySpiritHorse.java index 227b713a..82fa9ce4 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntitySpiritHorse.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntitySpiritHorse.java @@ -4,7 +4,8 @@ import electroblob.wizardry.WizardData; import electroblob.wizardry.Wizardry; import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.registry.WizardrySounds; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -85,17 +86,15 @@ public class EntitySpiritHorse extends EntityHorse { if(itemstack.getItem() instanceof ItemWand && this.getOwner() == player && player.isSneaking()){ // Prevents accidental double clicking. if(this.ticksExisted > 20){ - for(int i = 0; i < 15; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, - 48 + this.rand.nextInt(12), 0.8f, 0.8f, 1.0f); - } + + this.spawnAppearParticles(); + this.setDead(); + if(WizardData.get(player) != null){ WizardData.get(player).hasSpiritHorse = false; } + this.playSound(WizardrySounds.SPELL_HEAL, 0.7F, rand.nextFloat() * 0.4F + 1.0F); // This is necessary to prevent the wand's spell being cast when performing this action. return true; @@ -105,6 +104,15 @@ public class EntitySpiritHorse extends EntityHorse { return super.processInteract(player, hand); } + + private void spawnAppearParticles(){ + for(int i=0; i<15; i++){ + double x = this.posX - this.width / 2 + this.rand.nextFloat() * width; + double y = this.posY + this.height * this.rand.nextFloat() + 0.2f; + double z = this.posZ - this.width / 2 + this.rand.nextFloat() * width; + ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).colour(0.8f, 0.8f, 1.0f).spawn(world); + } + } @Override public void onDeath(DamageSource par1DamageSource){ @@ -137,10 +145,10 @@ public class EntitySpiritHorse extends EntityHorse { // Adds a dust particle effect if(this.world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, 0, 0.8f, 0.8f, 1.0f); + double x = this.posX - this.width / 2 + this.rand.nextFloat() * width; + double y = this.posY + this.height * this.rand.nextFloat() + 0.2f; + double z = this.posZ - this.width / 2 + this.rand.nextFloat() * width; + ParticleBuilder.create(Type.DUST).pos(x, y, z).colour(0.8f, 0.8f, 1.0f).shaded(true).spawn(world); } // Spirit horse disappears a short time after being dismounted. @@ -151,20 +159,17 @@ public class EntitySpiritHorse extends EntityHorse { } if(this.idleTimer > 200){ + if(this.world.isRemote){ - for(int i = 0; i < 15; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, - 48 + this.rand.nextInt(12), 0.8f, 0.8f, 1.0f); - } + this.spawnAppearParticles(); } + this.playSound(WizardrySounds.SPELL_HEAL, 0.7F, rand.nextFloat() * 0.4F + 1.0F); // Allows player to summon another spirit horse once this one has disappeared. if(this.getOwner() instanceof EntityPlayer && WizardData.get((EntityPlayer)this.getOwner()) != null){ WizardData.get((EntityPlayer)this.getOwner()).hasSpiritHorse = false; } + this.setDead(); } } @@ -179,13 +184,7 @@ public class EntitySpiritHorse extends EntityHorse { // Adds Particles on spawn. Due to client/server differences this cannot be done in the item. if(this.world.isRemote){ - for(int i = 0; i < 15; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, 48 + this.rand.nextInt(12), - 0.8f, 0.8f, 1.0f); - } + this.spawnAppearParticles(); } return super.onInitialSpawn(difficulty, data); diff --git a/src/main/java/electroblob/wizardry/entity/living/EntitySpiritWolf.java b/src/main/java/electroblob/wizardry/entity/living/EntitySpiritWolf.java index 9fd953d3..abc4dc07 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntitySpiritWolf.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntitySpiritWolf.java @@ -4,7 +4,8 @@ import electroblob.wizardry.WizardData; import electroblob.wizardry.Wizardry; import electroblob.wizardry.item.ItemWand; import electroblob.wizardry.registry.WizardrySounds; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.ai.EntityAIAttackMelee; @@ -81,18 +82,21 @@ public class EntitySpiritWolf extends EntityWolf { // Adds Particles on spawn. Due to client/server differences this cannot be done // in the item. if(this.world.isRemote){ - for(int i = 0; i < 15; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, 48 + this.rand.nextInt(12), - 0.8f, 0.8f, 1.0f); - } + this.spawnAppearParticles(); } return livingdata; } + private void spawnAppearParticles(){ + for(int i=0; i<15; i++){ + double x = this.posX - this.width / 2 + this.rand.nextFloat() * width; + double y = this.posY + this.height * this.rand.nextFloat() + 0.2f; + double z = this.posZ - this.width / 2 + this.rand.nextFloat() * width; + ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).colour(0.8f, 0.8f, 1.0f).spawn(world); + } + } + @Override public void onUpdate(){ @@ -100,10 +104,10 @@ public class EntitySpiritWolf extends EntityWolf { // Adds a dust particle effect if(this.world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, 0, 0.8f, 0.8f, 1.0f); + double x = this.posX - this.width / 2 + this.rand.nextFloat() * width; + double y = this.posY + this.height * this.rand.nextFloat() + 0.2f; + double z = this.posZ - this.width / 2 + this.rand.nextFloat() * width; + ParticleBuilder.create(Type.DUST).pos(x, y, z).colour(0.8f, 0.8f, 1.0f).shaded(true).spawn(world); } } @@ -119,17 +123,17 @@ public class EntitySpiritWolf extends EntityWolf { if(stack.getItem() instanceof ItemWand && this.getOwner() == player && player.isSneaking()){ // Prevents accidental double clicking. if(this.ticksExisted > 20){ - for(int i = 0; i < 10; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX - this.width / 2 + this.rand.nextFloat() * width, - this.posY + this.height * this.rand.nextFloat() + 0.2f, - this.posZ - this.width / 2 + this.rand.nextFloat() * width, 0, 0, 0, - 48 + this.rand.nextInt(12), 0.8f, 0.8f, 1.0f); + + if(this.world.isRemote){ + this.spawnAppearParticles(); } + this.setDead(); + if(WizardData.get(player) != null){ WizardData.get(player).hasSpiritWolf = false; } + this.playSound(WizardrySounds.SPELL_HEAL, 0.7F, rand.nextFloat() * 0.4F + 1.0F); // This is necessary to prevent the wand's spell being cast when performing this // action. diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityStormElemental.java b/src/main/java/electroblob/wizardry/entity/living/EntityStormElemental.java index 29e2c061..6991713a 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityStormElemental.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityStormElemental.java @@ -3,12 +3,12 @@ package electroblob.wizardry.entity.living; import java.util.Collections; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.spell.Spell; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackMelee; @@ -135,22 +135,23 @@ public class EntityStormElemental extends EntitySummonedCreature implements ISpe if(world.isRemote){ - for(int i = 0; i < 2; ++i){ + for(int i=0; i<2; ++i){ + world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, this.posY + this.rand.nextDouble() * (double)this.height, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0, 0, 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, - this.posY + this.rand.nextDouble() * (double)this.height, - this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0.0d, 0.0d, 0.0d, 0, 0, 0, 0); + + ParticleBuilder.create(Type.SPARK, this).spawn(world); } - for(int i = 0; i < 10; i++){ + for(int i=0; i<10; i++){ + float brightness = rand.nextFloat() * 0.2f; double dy = this.rand.nextDouble() * (double)this.height; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE_ROTATING, world, this.posX, this.posY + dy, - this.posZ, 0, 0, 0, 20 + rand.nextInt(10), 0, brightness, brightness, false, 0.2f + 0.5f * dy); + + ParticleBuilder.create(Type.SPARKLE_ROTATING).pos(this.posX, this.posY + dy, this.posZ) + .lifetime(20 + rand.nextInt(10)).colour(0, brightness, brightness).radius(0.2f + 0.5f * dy).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java b/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java index b34c5a5f..b686924c 100644 --- a/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java +++ b/src/main/java/electroblob/wizardry/entity/living/EntityWizard.java @@ -21,10 +21,11 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.spell.Spell; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.WandHelper; import electroblob.wizardry.util.WildcardTradeList; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -245,20 +246,19 @@ public class EntityWizard extends EntityVillager implements ISpellCaster, IEntit // deathTime == 0 checks the wizard isn't currently dying }else if(healCooldown == -1 && this.deathTime == 0){ - // Heal particles + // Heal particles TODO: Change this so it uses the heal spell directly if(world.isRemote){ - for(int i = 0; i < 10; i++){ - double d0 = (double)((float)this.posX + rand.nextFloat() * 2 - 1.0F); + for(int i=0; i<10; i++){ + double x = (double)((float)this.posX + rand.nextFloat() * 2 - 1.0F); // Apparently the client side spawns the particles 1 block higher than it should... hence the - // 0.5F. - double d1 = (double)((float)this.posY - 0.5F + rand.nextFloat()); - double d2 = (double)((float)this.posZ + rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, - 48 + rand.nextInt(12), 1.0f, 1.0f, 0.3f); + double y = (double)((float)this.posY - 0.5F + rand.nextFloat()); + double z = (double)((float)this.posZ + rand.nextFloat() * 2 - 1.0F); + ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1F, 0).colour(1, 1, 0.3f).spawn(world); } }else{ if(this.getHealth() < 10){ - // Wizard heals himself more often if he has low health + // Wizards heal themseselves more often if they have low health this.setHealCooldown(150); }else{ this.setHealCooldown(400); diff --git a/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java b/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java index e441ae67..85b4bdaf 100644 --- a/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java +++ b/src/main/java/electroblob/wizardry/entity/living/ISummonedCreature.java @@ -16,7 +16,8 @@ import electroblob.wizardry.util.IElementalDamage; import electroblob.wizardry.util.IndirectMinionDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.MinionDamage; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -288,9 +289,10 @@ public interface ISummonedCreature extends IEntityAdditionalSpawnData { } if(this.hasParticleEffect() && thisEntity.world.isRemote && thisEntity.world.rand.nextInt(8) == 0) - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, thisEntity.world, thisEntity.posX, - thisEntity.posY + thisEntity.world.rand.nextDouble() * 1.5, thisEntity.posZ, 0.0d, 0.0d, 0.0d, 0, - 0.1f, 0.0f, 0.0f); + ParticleBuilder.create(Type.DARK_MAGIC) + .pos(thisEntity.posX, thisEntity.posY + thisEntity.world.rand.nextDouble() * 1.5, thisEntity.posZ) + .colour(0.1f, 0.0f, 0.0f) + .spawn(thisEntity.world); } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityDarknessOrb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityDarknessOrb.java index 90292a5f..6fb6f290 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityDarknessOrb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityDarknessOrb.java @@ -1,9 +1,9 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.MobEffects; @@ -13,6 +13,7 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; public class EntityDarknessOrb extends EntityMagicProjectile { + public EntityDarknessOrb(World par1World){ super(par1World); } @@ -59,17 +60,13 @@ public class EntityDarknessOrb extends EntityMagicProjectile { super.onUpdate(); if(world.isRemote){ + float brightness = rand.nextFloat() * 0.2f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, - this.posY + this.rand.nextDouble() * (double)this.height, - this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0, 0, 0, 20 + rand.nextInt(10), - brightness, 0.0f, brightness); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, - this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, - this.posY + this.rand.nextDouble() * (double)this.height, - this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, - 0.0f); + + ParticleBuilder.create(Type.SPARKLE, this).lifetime(20 + rand.nextInt(10)) + .colour(brightness, 0.0f, brightness).spawn(world); + + ParticleBuilder.create(Type.DARK_MAGIC, this).colour(0.1f, 0.0f, 0.0f).spawn(world); } if(this.ticksExisted > 150){ diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityDart.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityDart.java index 0d51c5df..7208a8f0 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityDart.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityDart.java @@ -1,8 +1,8 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.MobEffects; @@ -56,10 +56,8 @@ public class EntityDart extends EntityMagicArrow { @Override public void tickInAir(){ - if(this.world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.LEAF, world, this.posX, this.posY, this.posZ, 0, -0.03, 0, - 10 + rand.nextInt(5)); + ParticleBuilder.create(Type.LEAF).pos(this.posX, this.posY, this.posZ).lifetime(10 + rand.nextInt(5)); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityFirebomb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityFirebomb.java index 296af6ff..b181ab2b 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityFirebomb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityFirebomb.java @@ -2,10 +2,10 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -33,10 +33,9 @@ public class EntityFirebomb extends EntityBomb { super(par1World, par2, par4, par6); } - /** - * Called when this EntityThrowable hits a block or entity. - */ + @Override protected void onImpact(RayTraceResult par1RayTraceResult){ + Entity entityHit = par1RayTraceResult.entityHit; if(entityHit != null){ @@ -52,21 +51,16 @@ public class EntityFirebomb extends EntityBomb { // Particle effect if(world.isRemote){ + this.world.spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 0, 0, 0); + for(int i = 0; i < 60 * blastMultiplier; i++){ - // this.world.spawnParticle(EnumParticleTypes.FLAME, this.posX + (this.rand.nextDouble()*4 - - // 2)*blastMultiplier, this.posY + (this.rand.nextDouble()*4 - 2)*blastMultiplier, this.posZ + - // (this.rand.nextDouble()*4 - 2)*blastMultiplier, 0, 0, 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0, 0, 0, 15 + rand.nextInt(5), - 2 + rand.nextFloat(), 0, 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0.0d, 0.0d, 0.0d, 0, 1.0f, - 0.2f + rand.nextFloat() * 0.4f, 0.0f); + + ParticleBuilder.create(Type.MAGIC_FIRE, rand, posX, posY, posZ, 2*blastMultiplier, false) + .lifetime(15 + rand.nextInt(5)).scale(2 + rand.nextFloat()).spawn(world); + + ParticleBuilder.create(Type.DARK_MAGIC, rand, posX, posY, posZ, 2*blastMultiplier, false) + .colour(1.0f, 0.2f + rand.nextFloat() * 0.4f, 0.0f).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityForceOrb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityForceOrb.java index 825db7fc..d7edcb12 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityForceOrb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityForceOrb.java @@ -2,10 +2,10 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; @@ -54,11 +54,8 @@ public class EntityForceOrb extends EntityMagicProjectile { if(this.world.isRemote){ for(int j = 0; j < 20; j++){ float brightness = 0.5f + (rand.nextFloat() / 2); - double x = this.posX - 0.25d + (rand.nextDouble() / 2); - double y = this.posY - 0.25d + (rand.nextDouble() / 2); - double z = this.posZ - 0.25d + (rand.nextDouble() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x, y, z, (x - this.posX) * 2, - (y - this.posY) * 2, (z - this.posZ) * 2, 6, brightness, 1.0f, brightness + 0.2f); + ParticleBuilder.create(Type.SPARKLE, rand, posX, posY, posZ, 0.25, true).lifetime(6) + .colour(brightness, 1.0f, brightness + 0.2f).spawn(world); } this.world.spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 0, 0, 0); } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityIceCharge.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityIceCharge.java index 3288e4fa..a6768266 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityIceCharge.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityIceCharge.java @@ -2,12 +2,12 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -60,16 +60,13 @@ public class EntityIceCharge extends EntityBomb { if(world.isRemote){ this.world.spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 0, 0, 0); for(int i = 0; i < 30 * blastMultiplier; i++){ + + ParticleBuilder.create(Type.ICE, rand, this.posX, this.posY, this.posZ, 2 * blastMultiplier, false) + .lifetime(35).spawn(world); + float brightness = 0.4f + rand.nextFloat() * 0.5f; - Wizardry.proxy.spawnParticle(WizardryParticleType.ICE, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0.0d, 0.0d, 0.0d, 35); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0.0d, 0.0d, 0.0d, 0, brightness, - brightness + 0.1f, 1.0f); + ParticleBuilder.create(Type.DARK_MAGIC, rand, this.posX, this.posY, this.posZ, 2 * blastMultiplier, false) + .colour(brightness, brightness + 0.1f, 1.0f).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityIceLance.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityIceLance.java index afbfa94c..f8cb6ee3 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityIceLance.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityIceLance.java @@ -1,10 +1,10 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; @@ -68,11 +68,8 @@ public class EntityIceLance extends EntityMagicArrow { // Adds a particle effect when the ice lance hits a block. if(this.world.isRemote){ for(int j = 0; j < 10; j++){ - double x = this.posX - 0.25d + (rand.nextDouble() / 2); - double y = this.posY - 0.25d + (rand.nextDouble() / 2); - double z = this.posZ - 0.25d + (rand.nextDouble() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.ICE, world, x, y, z, x - this.posX, y - this.posY, - z - this.posZ, 20 + rand.nextInt(10)); + ParticleBuilder.create(Type.ICE, this.rand, this.posX, this.posY, this.posZ, 0.5, true) + .lifetime(20 + rand.nextInt(10)).spawn(world); } } // Parameters for sound: sound event name, volume, pitch. diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityIceShard.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityIceShard.java index 2d5e2f39..19e72bb6 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityIceShard.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityIceShard.java @@ -1,10 +1,10 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; @@ -64,11 +64,8 @@ public class EntityIceShard extends EntityMagicArrow { // Adds a particle effect when the ice shard hits a block. if(this.world.isRemote){ for(int j = 0; j < 10; j++){ - double x = this.posX - 0.25d + (rand.nextDouble() / 2); - double y = this.posY - 0.25d + (rand.nextDouble() / 2); - double z = this.posZ - 0.25d + (rand.nextDouble() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.ICE, world, x, y, z, x - this.posX, y - this.posY, - z - this.posZ, 20 + rand.nextInt(10)); + ParticleBuilder.create(Type.ICE, this.rand, this.posX, this.posY, this.posZ, 0.5, true) + .lifetime(20 + rand.nextInt(10)).spawn(world); } } // Parameters for sound: sound event name, volume, pitch. diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningArrow.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningArrow.java index f19c4dc2..4da5d2d0 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningArrow.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningArrow.java @@ -1,9 +1,9 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; @@ -46,15 +46,10 @@ public class EntityLightningArrow extends EntityMagicArrow { if(world.isRemote){ for(int j = 0; j < 8; j++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX + rand.nextFloat() - 0.5, - this.posY + this.height / 2 + rand.nextFloat() - 0.5, this.posZ + rand.nextFloat() - 0.5, 0, 0, - 0, 3); + ParticleBuilder.create(Type.SPARK, rand, posX, posY + height / 2, posZ, 1, false).spawn(world); } } - /* Pretty sure this needn't be here, probably missed it when I implemented the damage type system. if(entityHit - * instanceof EntityCreeper && !((EntityCreeper)entityHit).getPowered()){ - * entityHit.getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); if(this.getShootingEntity() instanceof - * EntityPlayer) ((EntityPlayer)this.getShootingEntity()).addStat(Wizardry.chargeCreeper); } */ + this.playSound(WizardrySounds.SPELL_SPARK, 1.0F, 1.0F); } @@ -66,8 +61,7 @@ public class EntityLightningArrow extends EntityMagicArrow { } if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX, this.posY, this.posZ, 0, 0, 0, - 3); + ParticleBuilder.create(Type.SPARK).pos(posX, posY, posZ).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningDisc.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningDisc.java index 6340f99f..988fd2ba 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningDisc.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityLightningDisc.java @@ -2,11 +2,11 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -14,6 +14,7 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; public class EntityLightningDisc extends EntityMagicProjectile { + public EntityLightningDisc(World par1World){ super(par1World); } @@ -38,8 +39,9 @@ public class EntityLightningDisc extends EntityMagicProjectile { } @Override - protected void onImpact(RayTraceResult mop){ - Entity entityHit = mop.entityHit; + protected void onImpact(RayTraceResult result){ + + Entity entityHit = result.entityHit; if(entityHit != null){ float damage = 12 * damageMultiplier; @@ -50,7 +52,7 @@ public class EntityLightningDisc extends EntityMagicProjectile { this.playSound(WizardrySounds.SPELL_SPARK, 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); - if(mop.typeOfHit == RayTraceResult.Type.BLOCK) this.setDead(); + if(result.typeOfHit == RayTraceResult.Type.BLOCK) this.setDead(); } @Override @@ -61,10 +63,9 @@ public class EntityLightningDisc extends EntityMagicProjectile { // Particle effect if(world.isRemote){ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX + rand.nextFloat() * 2 - 1, - this.posY, this.posZ + rand.nextFloat() - 0.5, 0, 0, 0, 3); - // world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, this.posX + rand.nextFloat() - 0.5, this.posY + - // this.height/2 + rand.nextFloat() - 0.5, this.posZ + rand.nextFloat() - 0.5, 0, 0, 0); + // TODO: Why are the x and z parameters different? + ParticleBuilder.create(Type.SPARK).pos(this.posX + rand.nextFloat() * 2 - 1, + this.posY, this.posZ + rand.nextFloat() - 0.5).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java index 41351d98..9acce846 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityMagicMissile.java @@ -1,7 +1,7 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; @@ -53,16 +53,8 @@ public class EntityMagicMissile extends EntityMagicArrow { } if(this.world.isRemote){ - - if(this.ticksExisted % 2 == 1){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, this.posX, this.posY, this.posZ, 0, 0, - 0, 20 + rand.nextInt(10), 0.5f + (rand.nextFloat() / 2), 0.5f + (rand.nextFloat() / 2), - 0.5f + (rand.nextFloat() / 2)); - }else{ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, this.posX, this.posY, this.posZ, 0, 0, - 0, 20 + rand.nextInt(10), 0.5f + (rand.nextFloat() / 2), 0.5f + (rand.nextFloat() / 2), - 0.5f + (rand.nextFloat() / 2)); - } + ParticleBuilder.create(Type.SPARKLE).pos(this.posX, this.posY, this.posZ).lifetime(20 + rand.nextInt(10)) + .colour(0.5f + (rand.nextFloat() / 2), 0.5f + (rand.nextFloat() / 2), 0.5f + (rand.nextFloat() / 2)).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityPoisonBomb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityPoisonBomb.java index af033b37..94f739f8 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityPoisonBomb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityPoisonBomb.java @@ -2,10 +2,10 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -54,16 +54,12 @@ public class EntityPoisonBomb extends EntityBomb { // Particle effect if(world.isRemote){ for(int i = 0; i < 60 * blastMultiplier; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0.0d, 0.0d, 0.0d, 35, - 0.2f + rand.nextFloat() * 0.3f, 0.6f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0.0d, 0.0d, 0.0d, 0, - 0.2f + rand.nextFloat() * 0.2f, 0.8f, 0.0f); + + ParticleBuilder.create(Type.SPARKLE, rand, posX, posY, posZ, 2*blastMultiplier, false).lifetime(35) + .colour(0.2f + rand.nextFloat() * 0.3f, 0.6f, 0.0f).spawn(world); + + ParticleBuilder.create(Type.DARK_MAGIC, rand, posX, posY, posZ, 2*blastMultiplier, false) + .colour(0.2f + rand.nextFloat() * 0.2f, 0.8f, 0.0f).spawn(world); } // Spawning this after the other particles fixes the rendering colour bug. It's a bit of a cheat, but it // works pretty well. diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java index d2491481..5d6a432d 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntitySmokeBomb.java @@ -2,9 +2,9 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardryPotions; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -42,16 +42,15 @@ public class EntitySmokeBomb extends EntityBomb { if(world.isRemote){ this.world.spawnParticle(EnumParticleTypes.EXPLOSION_LARGE, this.posX, this.posY, this.posZ, 0, 0, 0); for(int i = 0; i < 60 * blastMultiplier; i++){ + this.world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0, 0, 0); + float brightness = rand.nextFloat() * 0.3f; - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, - this.posX + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posY + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, - this.posZ + (this.rand.nextDouble() * 4 - 2) * blastMultiplier, 0.0d, 0.0d, 0.0d, 0, brightness, - brightness, brightness); + ParticleBuilder.create(Type.DARK_MAGIC, rand, posX, posY, posZ, 2*blastMultiplier, false) + .colour(brightness, brightness, brightness).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntitySpark.java b/src/main/java/electroblob/wizardry/entity/projectile/EntitySpark.java index d05d4878..8415bbee 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntitySpark.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntitySpark.java @@ -2,11 +2,11 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -55,9 +55,10 @@ public class EntitySpark extends EntityMagicProjectile { // Particle effect if(world.isRemote){ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX + rand.nextFloat() - 0.5, - this.posY + this.height / 2 + rand.nextFloat() - 0.5, this.posZ + rand.nextFloat() - 0.5, 0, 0, - 0, 3); + double x = this.posX + rand.nextDouble() - 0.5; + double y = this.posY + this.height / 2 + rand.nextDouble() - 0.5; + double z = this.posZ + rand.nextDouble() - 0.5; + ParticleBuilder.create(Type.SPARK).pos(x, y, z).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntitySparkBomb.java b/src/main/java/electroblob/wizardry/entity/projectile/EntitySparkBomb.java index e854cea2..d6cac02d 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntitySparkBomb.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntitySparkBomb.java @@ -2,12 +2,12 @@ package electroblob.wizardry.entity.projectile; import java.util.List; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.entity.EntityArc; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; @@ -63,9 +63,10 @@ public class EntitySparkBomb extends EntityBomb { // Particle effect if(world.isRemote){ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX + rand.nextFloat() - 0.5, - this.posY + this.height / 2 + rand.nextFloat() - 0.5, this.posZ + rand.nextFloat() - 0.5, 0, 0, - 0, 3); + double x = this.posX + rand.nextDouble() - 0.5; + double y = this.posY + this.height / 2 + rand.nextDouble() - 0.5; + double z = this.posZ + rand.nextDouble() - 0.5; + ParticleBuilder.create(Type.SPARK).pos(x, y, z).spawn(world); world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, this.posX + rand.nextFloat() - 0.5, this.posY + this.height / 2 + rand.nextFloat() - 0.5, this.posZ + rand.nextFloat() - 0.5, 0, 0, 0); @@ -106,10 +107,10 @@ public class EntitySparkBomb extends EntityBomb { }else{ // Particle effect for(int j = 0; j < 8; j++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, - target.posX + rand.nextFloat() - 0.5, - target.getEntityBoundingBox().minY + target.height * rand.nextFloat(), - target.posZ + rand.nextFloat() - 0.5, 0, 0, 0, 3); + double x = target.posX + rand.nextFloat() - 0.5; + double y = target.getEntityBoundingBox().minY + target.height * rand.nextFloat(); + double z = target.posZ + rand.nextFloat() - 0.5; + ParticleBuilder.create(Type.SPARK).pos(x, y, z).spawn(world); world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, target.posX + rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height * rand.nextFloat(), target.posZ + rand.nextFloat() - 0.5, 0, 0, 0); diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityThunderbolt.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityThunderbolt.java index 48e2a4d0..d38bcfce 100644 --- a/src/main/java/electroblob/wizardry/entity/projectile/EntityThunderbolt.java +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityThunderbolt.java @@ -1,9 +1,9 @@ package electroblob.wizardry.entity.projectile; -import electroblob.wizardry.Wizardry; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; @@ -68,9 +68,7 @@ public class EntityThunderbolt extends EntityMagicProjectile { super.onUpdate(); if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, this.posX + rand.nextFloat() * 0.2 - 0.1, - this.posY + this.height / 2 + rand.nextFloat() * 0.2 - 0.1, - this.posZ + rand.nextFloat() * 0.2 - 0.1, 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK, rand, posX, posY + height/2, posZ, 0.1, false).spawn(world); for(int i = 0; i < 4; i++){ world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, this.posX + rand.nextFloat() * 0.2 - 0.1, this.posY + this.height / 2 + rand.nextFloat() * 0.2 - 0.1, diff --git a/src/main/java/electroblob/wizardry/potion/PotionFrost.java b/src/main/java/electroblob/wizardry/potion/PotionFrost.java index 6f267755..7cb709e2 100644 --- a/src/main/java/electroblob/wizardry/potion/PotionFrost.java +++ b/src/main/java/electroblob/wizardry/potion/PotionFrost.java @@ -3,7 +3,8 @@ package electroblob.wizardry.potion; import electroblob.wizardry.Wizardry; import electroblob.wizardry.constants.Constants; import electroblob.wizardry.registry.WizardryPotions; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -39,8 +40,7 @@ public class PotionFrost extends Potion implements ICustomPotionParticles { @Override public void spawnCustomParticle(World world, double x, double y, double z){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, x, y, z, 0, -0.02, 0, - 15 + world.rand.nextInt(5)); + ParticleBuilder.create(Type.SNOW).pos(x, y, z).lifetime(15 + world.rand.nextInt(5)).spawn(world); } @Override diff --git a/src/main/java/electroblob/wizardry/registry/WizardryPotions.java b/src/main/java/electroblob/wizardry/registry/WizardryPotions.java index 681c26f7..60f43f9d 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryPotions.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryPotions.java @@ -5,7 +5,8 @@ import electroblob.wizardry.potion.PotionDecay; import electroblob.wizardry.potion.PotionFrost; import electroblob.wizardry.potion.PotionMagicEffect; import electroblob.wizardry.potion.PotionMagicEffectParticles; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder; +import electroblob.wizardry.util.ParticleBuilder.Type; import net.minecraft.entity.EntityLivingBase; import net.minecraft.potion.Potion; import net.minecraft.util.EnumParticleTypes; @@ -36,8 +37,7 @@ public final class WizardryPotions { public static final Potion transience = new PotionMagicEffectParticles(false, 0, 0){ @Override public void spawnCustomParticle(World world, double x, double y, double z){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DUST, world, x, y, z, 0, 0, 0, - (int)(16.0D / (Math.random() * 0.8D + 0.2D)), 0.8f, 0.8f, 1.0f); + ParticleBuilder.create(Type.DUST).pos(x, y, z).colour(0.8f, 0.8f, 1.0f).shaded(true).spawn(world); } }.setBeneficial(); // 0xffe89b @@ -58,17 +58,15 @@ public final class WizardryPotions { @Override public void spawnCustomParticle(World world, double x, double y, double z){ float brightness = 0.5f + (world.rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x, y, z, 0, 0, 0, - 48 + world.rand.nextInt(12), brightness, brightness + 0.1f, 1.0f, true, 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, x, y, z, 0, -0.02, 0, - 40 + world.rand.nextInt(10)); + ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).colour(brightness, brightness + 0.1f, 1.0f).gravity(true).spawn(world); + ParticleBuilder.create(Type.SNOW).pos(x, y, z).spawn(world); } }.setBeneficial(); // 0x52f1ff public static final Potion static_aura = new PotionMagicEffectParticles(false, 0, 3){ @Override public void spawnCustomParticle(World world, double x, double y, double z){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, x, y, z, 0, 0, 0, 3); + ParticleBuilder.create(Type.SPARK).pos(x, y, z).spawn(world); } }.setBeneficial(); // 0x0070ff diff --git a/src/main/java/electroblob/wizardry/spell/Agility.java b/src/main/java/electroblob/wizardry/spell/Agility.java index cdd36fb3..4f6b0587 100644 --- a/src/main/java/electroblob/wizardry/spell/Agility.java +++ b/src/main/java/electroblob/wizardry/spell/Agility.java @@ -6,8 +6,9 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; +import electroblob.wizardry.util.ParticleBuilder; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -31,13 +32,13 @@ public class Agility extends Spell { caster.addPotionEffect(new PotionEffect(MobEffects.JUMP_BOOST, (int)(600 * modifiers.get(WizardryItems.duration_upgrade)), 1, false, false)); - for(int i = 0; i < 10; i++){ - double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); - double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); - double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, - 48 + world.rand.nextInt(12), 0.6f, 0.6f, 1.0f); + if(world.isRemote){ + for(int i = 0; i < 10; i++){ + double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); + double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); + double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); + ParticleBuilder.create(Type.SPARKLE).pos(x1, y1, z1).vel(0, 0.1F, 0) + .lifetime(48 + world.rand.nextInt(12)).colour(0.4f, 1.0f, 0.8f).spawn(world); } } diff --git a/src/main/java/electroblob/wizardry/spell/Arc.java b/src/main/java/electroblob/wizardry/spell/Arc.java index d2065b15..56335ed2 100644 --- a/src/main/java/electroblob/wizardry/spell/Arc.java +++ b/src/main/java/electroblob/wizardry/spell/Arc.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; @@ -48,7 +48,7 @@ public class Arc extends Spell { world.spawnEntity(arc); }else{ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, target.posX + world.rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); @@ -88,7 +88,7 @@ public class Arc extends Spell { world.spawnEntity(arc); }else{ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, target.posX + world.rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); diff --git a/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java b/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java index 102fa9c5..6316b0f1 100644 --- a/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java +++ b/src/main/java/electroblob/wizardry/spell/ArcaneJammer.java @@ -11,7 +11,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -56,7 +56,7 @@ public class ArcaneJammer extends Spell { double y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.9f, 0.3f, 0.7f); } } @@ -89,7 +89,7 @@ public class ArcaneJammer extends Spell { - 0.1f; double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.9f, 0.3f, 0.7f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Banish.java b/src/main/java/electroblob/wizardry/spell/Banish.java index 5d49397c..01b01c73 100644 --- a/src/main/java/electroblob/wizardry/spell/Banish.java +++ b/src/main/java/electroblob/wizardry/spell/Banish.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -87,7 +87,7 @@ public class Banish extends Spell { double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.PORTAL, x1, y1 - 0.5, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.2f, 0.0f, 0.2f); } } @@ -125,7 +125,7 @@ public class Banish extends Spell { double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.PORTAL, x1, y1 - 0.5, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.2f, 0.0f, 0.2f); } diff --git a/src/main/java/electroblob/wizardry/spell/Bubble.java b/src/main/java/electroblob/wizardry/spell/Bubble.java index 3886ee36..7a9c5ff2 100644 --- a/src/main/java/electroblob/wizardry/spell/Bubble.java +++ b/src/main/java/electroblob/wizardry/spell/Bubble.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -59,7 +59,7 @@ public class Bubble extends Spell { double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.WATER_SPLASH, x1, y1, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_BUBBLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0); + Wizardry.proxy.spawnParticle(Type.MAGIC_BUBBLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0); } } caster.swingArm(hand); @@ -102,7 +102,7 @@ public class Bubble extends Spell { double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.WATER_SPLASH, x1, y1, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_BUBBLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.MAGIC_BUBBLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0); } } diff --git a/src/main/java/electroblob/wizardry/spell/ChainLightning.java b/src/main/java/electroblob/wizardry/spell/ChainLightning.java index fcaea29f..78422b25 100644 --- a/src/main/java/electroblob/wizardry/spell/ChainLightning.java +++ b/src/main/java/electroblob/wizardry/spell/ChainLightning.java @@ -12,7 +12,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -55,7 +55,7 @@ public class ChainLightning extends Spell { world.spawnEntity(arc); }else{ for(int i = 0; i < 8; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, target.posX + world.rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); @@ -97,7 +97,7 @@ public class ChainLightning extends Spell { world.spawnEntity(arc); }else{ for(int j = 0; j < 8; j++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, secondaryTarget.posX + world.rand.nextFloat() - 0.5, secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, @@ -144,7 +144,7 @@ public class ChainLightning extends Spell { world.spawnEntity(arc); }else{ for(int k = 0; k < 8; k++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, tertiaryTarget.posX + world.rand.nextFloat() - 0.5, tertiaryTarget.getEntityBoundingBox().minY + tertiaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, diff --git a/src/main/java/electroblob/wizardry/spell/Clairvoyance.java b/src/main/java/electroblob/wizardry/spell/Clairvoyance.java index 8b6fa959..5f648b1c 100644 --- a/src/main/java/electroblob/wizardry/spell/Clairvoyance.java +++ b/src/main/java/electroblob/wizardry/spell/Clairvoyance.java @@ -13,7 +13,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.WandHelper; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryPathFinder; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.SharedMonsterAttributes; @@ -123,7 +123,7 @@ public class Clairvoyance extends Spell { nextPoint = path.getCurrentPathLength() - path.getCurrentPathIndex() <= 2 ? path.getFinalPathPoint() : path.getPathPointFromIndex(path.getCurrentPathIndex() + 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.PATH, world, point.x + 0.5, point.y + 0.5, point.z + 0.5, + Wizardry.proxy.spawnParticle(Type.PATH, world, point.x + 0.5, point.y + 0.5, point.z + 0.5, (nextPoint.x - point.x) / (float)PARTICLE_MOVEMENT_INTERVAL, (nextPoint.y - point.y) / (float)PARTICLE_MOVEMENT_INTERVAL, (nextPoint.z - point.z) / (float)PARTICLE_MOVEMENT_INTERVAL, (int)(1800 * durationMultiplier), 0, 1, 0.3f); @@ -133,7 +133,7 @@ public class Clairvoyance extends Spell { point = path.getFinalPathPoint(); - Wizardry.proxy.spawnParticle(WizardryParticleType.PATH, world, point.x + 0.5, point.y + 0.5, point.z + 0.5, 0, 0, 0, + Wizardry.proxy.spawnParticle(Type.PATH, world, point.x + 0.5, point.y + 0.5, point.z + 0.5, 0, 0, 0, (int)(1800 * durationMultiplier), 1, 1, 1); } diff --git a/src/main/java/electroblob/wizardry/spell/ConjureArmour.java b/src/main/java/electroblob/wizardry/spell/ConjureArmour.java index 74f5e238..7a9f14a1 100644 --- a/src/main/java/electroblob/wizardry/spell/ConjureArmour.java +++ b/src/main/java/electroblob/wizardry/spell/ConjureArmour.java @@ -8,7 +8,7 @@ import electroblob.wizardry.item.IConjuredItem; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; @@ -54,7 +54,7 @@ public class ConjureArmour extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.7f, 0.9f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/ConjureBow.java b/src/main/java/electroblob/wizardry/spell/ConjureBow.java index c03f2d2a..488327bd 100644 --- a/src/main/java/electroblob/wizardry/spell/ConjureBow.java +++ b/src/main/java/electroblob/wizardry/spell/ConjureBow.java @@ -8,7 +8,7 @@ import electroblob.wizardry.item.IConjuredItem; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -36,7 +36,7 @@ public class ConjureBow extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.7f, 0.9f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/ConjurePickaxe.java b/src/main/java/electroblob/wizardry/spell/ConjurePickaxe.java index ae4a192c..9e51ef3a 100644 --- a/src/main/java/electroblob/wizardry/spell/ConjurePickaxe.java +++ b/src/main/java/electroblob/wizardry/spell/ConjurePickaxe.java @@ -8,7 +8,7 @@ import electroblob.wizardry.item.IConjuredItem; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -37,7 +37,7 @@ public class ConjurePickaxe extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.7f, 0.9f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/ConjureSword.java b/src/main/java/electroblob/wizardry/spell/ConjureSword.java index cefd59c9..a9876cfa 100644 --- a/src/main/java/electroblob/wizardry/spell/ConjureSword.java +++ b/src/main/java/electroblob/wizardry/spell/ConjureSword.java @@ -8,7 +8,7 @@ import electroblob.wizardry.item.IConjuredItem; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -36,7 +36,7 @@ public class ConjureSword extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.7f, 0.9f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/CureEffects.java b/src/main/java/electroblob/wizardry/spell/CureEffects.java index 82051fb3..6597a7a6 100644 --- a/src/main/java/electroblob/wizardry/spell/CureEffects.java +++ b/src/main/java/electroblob/wizardry/spell/CureEffects.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -29,7 +29,7 @@ public class CureEffects extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.6f, 0.6f, 1.0f); } } @@ -58,7 +58,7 @@ public class CureEffects extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.6f, 0.6f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/CurseOfSoulbinding.java b/src/main/java/electroblob/wizardry/spell/CurseOfSoulbinding.java index e2494bce..8baa67aa 100644 --- a/src/main/java/electroblob/wizardry/spell/CurseOfSoulbinding.java +++ b/src/main/java/electroblob/wizardry/spell/CurseOfSoulbinding.java @@ -8,7 +8,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.IElementalDamage; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -52,11 +52,11 @@ public class CurseOfSoulbinding extends Spell { + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.4f, 0.0f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 1.0f, 0.8f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Darkvision.java b/src/main/java/electroblob/wizardry/spell/Darkvision.java index d9e8d7c1..40b829e8 100644 --- a/src/main/java/electroblob/wizardry/spell/Darkvision.java +++ b/src/main/java/electroblob/wizardry/spell/Darkvision.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -33,7 +33,7 @@ public class Darkvision extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.0f, 0.4f, 0.7f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Diamondflesh.java b/src/main/java/electroblob/wizardry/spell/Diamondflesh.java index 32175e6a..848f4a68 100644 --- a/src/main/java/electroblob/wizardry/spell/Diamondflesh.java +++ b/src/main/java/electroblob/wizardry/spell/Diamondflesh.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -33,13 +33,13 @@ public class Diamondflesh extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.0f, 0.5f, 1.0f); x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.6f, 0.7f, 0.9f); } diff --git a/src/main/java/electroblob/wizardry/spell/Entrapment.java b/src/main/java/electroblob/wizardry/spell/Entrapment.java index 44436b4b..db7503a0 100644 --- a/src/main/java/electroblob/wizardry/spell/Entrapment.java +++ b/src/main/java/electroblob/wizardry/spell/Entrapment.java @@ -9,7 +9,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -57,7 +57,7 @@ public class Entrapment extends Spell { double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.PORTAL, x1, y1 - 0.5, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); } } @@ -99,7 +99,7 @@ public class Entrapment extends Spell { double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.PORTAL, x1, y1 - 0.5, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/FireResistance.java b/src/main/java/electroblob/wizardry/spell/FireResistance.java index d4c85af3..42596b3b 100644 --- a/src/main/java/electroblob/wizardry/spell/FireResistance.java +++ b/src/main/java/electroblob/wizardry/spell/FireResistance.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -35,7 +35,7 @@ public class FireResistance extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 0.5f, 0.0f); } } @@ -59,7 +59,7 @@ public class FireResistance extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 0.5f, 0.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Firestorm.java b/src/main/java/electroblob/wizardry/spell/Firestorm.java index 4717aab2..baf1d219 100644 --- a/src/main/java/electroblob/wizardry/spell/Firestorm.java +++ b/src/main/java/electroblob/wizardry/spell/Firestorm.java @@ -9,7 +9,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -70,11 +70,11 @@ public class Firestorm extends Spell { double y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() * 0.4f - 0.2f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() * 0.6f - 0.3f; - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.MAGIC_FIRE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 0, 3 + world.rand.nextFloat(), 0, 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.MAGIC_FIRE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 0, 3 + world.rand.nextFloat(), 0, 0); diff --git a/src/main/java/electroblob/wizardry/spell/FlameRay.java b/src/main/java/electroblob/wizardry/spell/FlameRay.java index f2384b74..7a41edbb 100644 --- a/src/main/java/electroblob/wizardry/spell/FlameRay.java +++ b/src/main/java/electroblob/wizardry/spell/FlameRay.java @@ -9,7 +9,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -58,11 +58,11 @@ public class FlameRay extends Spell { double y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.MAGIC_FIRE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.MAGIC_FIRE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 0); @@ -94,11 +94,11 @@ public class FlameRay extends Spell { double y1 = caster.posY + caster.getEyeHeight() - 0.4f + vec.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + vec.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.MAGIC_FIRE, world, x1, y1, z1, vec.x * modifiers.get(WizardryItems.range_upgrade), vec.y * modifiers.get(WizardryItems.range_upgrade), vec.z * modifiers.get(WizardryItems.range_upgrade), 0); - Wizardry.proxy.spawnParticle(WizardryParticleType.MAGIC_FIRE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.MAGIC_FIRE, world, x1, y1, z1, vec.x * modifiers.get(WizardryItems.range_upgrade), vec.y * modifiers.get(WizardryItems.range_upgrade), vec.z * modifiers.get(WizardryItems.range_upgrade), 0); diff --git a/src/main/java/electroblob/wizardry/spell/FlamingWeapon.java b/src/main/java/electroblob/wizardry/spell/FlamingWeapon.java index f347d6e5..b70f491a 100644 --- a/src/main/java/electroblob/wizardry/spell/FlamingWeapon.java +++ b/src/main/java/electroblob/wizardry/spell/FlamingWeapon.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryEnchantments; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -54,7 +54,7 @@ public class FlamingWeapon extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.9f, 0.7f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Flight.java b/src/main/java/electroblob/wizardry/spell/Flight.java index 2a79a85b..97db2f9c 100644 --- a/src/main/java/electroblob/wizardry/spell/Flight.java +++ b/src/main/java/electroblob/wizardry/spell/Flight.java @@ -5,7 +5,7 @@ import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; @@ -37,11 +37,11 @@ public class Flight extends Spell { caster.fallDistance = 0.0f; } if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX - 1 + world.rand.nextDouble() * 2, WizardryUtilities.getPlayerEyesPos(caster) - 0.5f + world.rand.nextDouble(), caster.posZ - 1 + world.rand.nextDouble() * 2, 0, -0.1F, 0, 15, 0.8f, 1.0f, 0.5f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX - 1 + world.rand.nextDouble() * 2, WizardryUtilities.getPlayerEyesPos(caster) - 0.5f + world.rand.nextDouble(), caster.posZ - 1 + world.rand.nextDouble() * 2, 0, -0.1F, 0, 15, 1.0f, 1.0f, 1.0f); diff --git a/src/main/java/electroblob/wizardry/spell/FontOfMana.java b/src/main/java/electroblob/wizardry/spell/FontOfMana.java index cbe2ef35..3915ae6d 100644 --- a/src/main/java/electroblob/wizardry/spell/FontOfMana.java +++ b/src/main/java/electroblob/wizardry/spell/FontOfMana.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -46,7 +46,7 @@ public class FontOfMana extends Spell { double radius = (1 + world.rand.nextDouble() * 4) * modifiers.get(WizardryItems.blast_upgrade); double angle = world.rand.nextDouble() * Math.PI * 2; float hue = world.rand.nextFloat() * 0.4f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + radius * Math.cos(angle), caster.getEntityBoundingBox().minY, caster.posZ + radius * Math.sin(angle), 0, 0.03, 0, 50, 1, 1 - hue, 0.6f + hue); diff --git a/src/main/java/electroblob/wizardry/spell/FontOfVitality.java b/src/main/java/electroblob/wizardry/spell/FontOfVitality.java index e951008c..88f4cec7 100644 --- a/src/main/java/electroblob/wizardry/spell/FontOfVitality.java +++ b/src/main/java/electroblob/wizardry/spell/FontOfVitality.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -36,14 +36,14 @@ public class FontOfVitality extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 0.6f, 0.7f); x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 0.8f, 0.3f); } diff --git a/src/main/java/electroblob/wizardry/spell/ForestsCurse.java b/src/main/java/electroblob/wizardry/spell/ForestsCurse.java index 33487073..44b7a30e 100644 --- a/src/main/java/electroblob/wizardry/spell/ForestsCurse.java +++ b/src/main/java/electroblob/wizardry/spell/ForestsCurse.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -52,16 +52,16 @@ public class ForestsCurse extends Spell { double radius = (1 + world.rand.nextDouble() * 4) * modifiers.get(WizardryItems.blast_upgrade); double angle = world.rand.nextDouble() * Math.PI * 2; float brightness = world.rand.nextFloat() / 4; - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, caster.posX + radius * Math.cos(angle), WizardryUtilities.getPlayerEyesPos(caster) + 0.5, caster.posZ + radius * Math.sin(angle), 0, -0.2, 0, 0, 0.05f + brightness, 0.2f + brightness, 0.0f); brightness = world.rand.nextFloat() / 4; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + radius * Math.cos(angle), WizardryUtilities.getPlayerEyesPos(caster) + 0.5, caster.posZ + radius * Math.sin(angle), 0, -0.05, 0, 50, 0.1f + brightness, 0.2f + brightness, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.LEAF, world, caster.posX + radius * Math.cos(angle), + Wizardry.proxy.spawnParticle(Type.LEAF, world, caster.posX + radius * Math.cos(angle), WizardryUtilities.getPlayerEyesPos(caster) + 0.5, caster.posZ + radius * Math.sin(angle), 0, -0.01, 0, 40 + world.rand.nextInt(12)); diff --git a/src/main/java/electroblob/wizardry/spell/Freeze.java b/src/main/java/electroblob/wizardry/spell/Freeze.java index 500d5c79..2f9a2790 100644 --- a/src/main/java/electroblob/wizardry/spell/Freeze.java +++ b/src/main/java/electroblob/wizardry/spell/Freeze.java @@ -11,7 +11,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -71,12 +71,12 @@ public class Freeze extends Spell { double dz = target.posZ - caster.posZ; for(int i = 1; i < 5; i++){ float brightness = 0.5f + (world.rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, WizardryUtilities.getPlayerEyesPos(caster) + (i * (dy / 5)) + world.rand.nextFloat() / 5, caster.posZ + (i * (dz / 5)) + world.rand.nextFloat() / 5, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), brightness, brightness + 0.1f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, + Wizardry.proxy.spawnParticle(Type.SNOW, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, WizardryUtilities.getPlayerEyesPos(caster) + (i * (dy / 5)) + world.rand.nextFloat() / 5, caster.posZ + (i * (dz / 5)) + world.rand.nextFloat() / 5, 0, -0.02, 0, @@ -117,13 +117,13 @@ public class Freeze extends Spell { for(int i = 1; i < 5; i++){ float brightness = 0.5f + (world.rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, WizardryUtilities.getPlayerEyesPos(caster) + (i * (dy / 5)) + world.rand.nextFloat() / 5, caster.posZ + (i * (dz / 5)) + world.rand.nextFloat() / 5, 0.0d, 0.0d, 0.0d, 20 + world.rand.nextInt(8), brightness, brightness + 0.1f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, WizardryUtilities.getPlayerEyesPos(caster) + (i * (dy / 5)) + world.rand.nextFloat() / 5, @@ -169,12 +169,12 @@ public class Freeze extends Spell { double dz = target.posZ - caster.posZ; for(int i = 1; i < 5; i++){ float brightness = 0.5f + (world.rand.nextFloat() / 2); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, caster.posY + caster.getEyeHeight() + (i * (dy / 5)) + world.rand.nextFloat() / 5, caster.posZ + (i * (dz / 5)) + world.rand.nextFloat() / 5, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), brightness, brightness + 0.1f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, + Wizardry.proxy.spawnParticle(Type.SNOW, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, caster.posY + caster.getEyeHeight() + (i * (dy / 5)) + world.rand.nextFloat() / 5, caster.posZ + (i * (dz / 5)) + world.rand.nextFloat() / 5, 0, -0.02, 0, diff --git a/src/main/java/electroblob/wizardry/spell/FreezingWeapon.java b/src/main/java/electroblob/wizardry/spell/FreezingWeapon.java index 3c85b63d..765d8df6 100644 --- a/src/main/java/electroblob/wizardry/spell/FreezingWeapon.java +++ b/src/main/java/electroblob/wizardry/spell/FreezingWeapon.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryEnchantments; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -60,7 +60,7 @@ public class FreezingWeapon extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.9f, 0.7f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/FrostAxe.java b/src/main/java/electroblob/wizardry/spell/FrostAxe.java index c997425a..0daffc81 100644 --- a/src/main/java/electroblob/wizardry/spell/FrostAxe.java +++ b/src/main/java/electroblob/wizardry/spell/FrostAxe.java @@ -8,7 +8,7 @@ import electroblob.wizardry.item.IConjuredItem; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -38,7 +38,7 @@ public class FrostAxe extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, x1, y1, z1, 0, -0.02d, 0, + Wizardry.proxy.spawnParticle(Type.SNOW, world, x1, y1, z1, 0, -0.02d, 0, 40 + world.rand.nextInt(10)); } } diff --git a/src/main/java/electroblob/wizardry/spell/FrostRay.java b/src/main/java/electroblob/wizardry/spell/FrostRay.java index b7b3d942..4f560b6e 100644 --- a/src/main/java/electroblob/wizardry/spell/FrostRay.java +++ b/src/main/java/electroblob/wizardry/spell/FrostRay.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -69,7 +69,7 @@ public class FrostRay extends Spell { double y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 8 + world.rand.nextInt(12), 0.4f, @@ -79,7 +79,7 @@ public class FrostRay extends Spell { y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 8 + world.rand.nextInt(12), 1.0f, @@ -125,7 +125,7 @@ public class FrostRay extends Spell { double y1 = caster.posY + caster.getEyeHeight() - 0.4f + vec.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + vec.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, vec.x * modifiers.get(WizardryItems.range_upgrade), vec.y * modifiers.get(WizardryItems.range_upgrade), vec.z * modifiers.get(WizardryItems.range_upgrade), 8 + world.rand.nextInt(12), 0.4f, @@ -135,7 +135,7 @@ public class FrostRay extends Spell { y1 = caster.posY + caster.getEyeHeight() - 0.4f + vec.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; z1 = caster.posZ + vec.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, vec.x * modifiers.get(WizardryItems.range_upgrade), vec.y * modifiers.get(WizardryItems.range_upgrade), vec.z * modifiers.get(WizardryItems.range_upgrade), 8 + world.rand.nextInt(12), 1.0f, diff --git a/src/main/java/electroblob/wizardry/spell/Glide.java b/src/main/java/electroblob/wizardry/spell/Glide.java index bab250b9..9878e3ac 100644 --- a/src/main/java/electroblob/wizardry/spell/Glide.java +++ b/src/main/java/electroblob/wizardry/spell/Glide.java @@ -5,7 +5,7 @@ import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; @@ -32,11 +32,11 @@ public class Glide extends Spell { } if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX - 0.25d + world.rand.nextDouble() / 2, WizardryUtilities.getPlayerEyesPos(caster) - 1.5f + world.rand.nextDouble(), caster.posZ - 0.25d + world.rand.nextDouble() / 2, 0, -0.1F, 0, 15, 1.0f, 1.0f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.LEAF, world, + Wizardry.proxy.spawnParticle(Type.LEAF, world, caster.posX - 0.25d + world.rand.nextDouble() / 2, WizardryUtilities.getPlayerEyesPos(caster) - 1.5f + world.rand.nextDouble(), caster.posZ - 0.25d + world.rand.nextDouble() / 2, 0, -0.03, 0, 20); diff --git a/src/main/java/electroblob/wizardry/spell/GreaterHeal.java b/src/main/java/electroblob/wizardry/spell/GreaterHeal.java index 5664cb3b..1173dc11 100644 --- a/src/main/java/electroblob/wizardry/spell/GreaterHeal.java +++ b/src/main/java/electroblob/wizardry/spell/GreaterHeal.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -32,7 +32,7 @@ public class GreaterHeal extends Spell { double dy = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double dz = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, dx, dy, dz, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, dx, dy, dz, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } @@ -54,7 +54,7 @@ public class GreaterHeal extends Spell { double dx = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double dy = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double dz = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, dx, dy, dz, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, dx, dy, dz, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } diff --git a/src/main/java/electroblob/wizardry/spell/GroupHeal.java b/src/main/java/electroblob/wizardry/spell/GroupHeal.java index 2324a906..fe25fbff 100644 --- a/src/main/java/electroblob/wizardry/spell/GroupHeal.java +++ b/src/main/java/electroblob/wizardry/spell/GroupHeal.java @@ -10,7 +10,7 @@ import electroblob.wizardry.entity.living.ISummonedCreature; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -48,7 +48,7 @@ public class GroupHeal extends Spell { double d1 = (double)((float)WizardryUtilities.getPlayerEyesPos((EntityPlayer)target) - 0.5F + world.rand.nextFloat()); double d2 = (double)((float)target.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, d0, d1, d2, 0, 0.1F, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } @@ -77,7 +77,7 @@ public class GroupHeal extends Spell { double d1 = (double)((float)WizardryUtilities.getPlayerEyesPos((EntityPlayer)target) - 0.5F + world.rand.nextFloat()); double d2 = (double)((float)target.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, d0, d1, d2, 0, 0.1F, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Heal.java b/src/main/java/electroblob/wizardry/spell/Heal.java index f3bdad94..5fa338b3 100644 --- a/src/main/java/electroblob/wizardry/spell/Heal.java +++ b/src/main/java/electroblob/wizardry/spell/Heal.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -31,12 +31,11 @@ public class Heal extends Spell { if(world.isRemote){ for(int i = 0; i < 10; i++){ double d0 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); - // Apparently the client side spawns the particles 1 block higher than it should... hence the - - // 0.5F. + // Apparently the client side spawns the particles 1 block higher than it should... hence the -0.5F. double d1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double d2 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } @@ -59,7 +58,7 @@ public class Heal extends Spell { double dx = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double dy = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double dz = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, dx, dy, dz, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, dx, dy, dz, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } diff --git a/src/main/java/electroblob/wizardry/spell/HealAlly.java b/src/main/java/electroblob/wizardry/spell/HealAlly.java index 9f824bfb..d8f3edc4 100644 --- a/src/main/java/electroblob/wizardry/spell/HealAlly.java +++ b/src/main/java/electroblob/wizardry/spell/HealAlly.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -41,7 +41,7 @@ public class HealAlly extends Spell { double d1 = (double)((float)target.getEntityBoundingBox().minY + target.height - 0.5f + world.rand.nextFloat()); double d2 = (double)((float)target.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, d0, d1, d2, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 1.0f, 0.3f); } } diff --git a/src/main/java/electroblob/wizardry/spell/IceStatue.java b/src/main/java/electroblob/wizardry/spell/IceStatue.java index 59938921..c32cfc6d 100644 --- a/src/main/java/electroblob/wizardry/spell/IceStatue.java +++ b/src/main/java/electroblob/wizardry/spell/IceStatue.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.tileentity.TileEntityStatue; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.monster.EntityBlaze; @@ -115,9 +115,9 @@ public class IceStatue extends Spell { + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), brightness, brightness + 0.1f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SNOW, world, x1, y1, z1, 0.0d, -0.02d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SNOW, world, x1, y1, z1, 0.0d, -0.02d, 0.0d, 20 + world.rand.nextInt(10)); } diff --git a/src/main/java/electroblob/wizardry/spell/ImbueWeapon.java b/src/main/java/electroblob/wizardry/spell/ImbueWeapon.java index 88e8b5b5..66f7ea82 100644 --- a/src/main/java/electroblob/wizardry/spell/ImbueWeapon.java +++ b/src/main/java/electroblob/wizardry/spell/ImbueWeapon.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryEnchantments; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; @@ -69,7 +69,7 @@ public class ImbueWeapon extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.9f, 0.7f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Intimidate.java b/src/main/java/electroblob/wizardry/spell/Intimidate.java index ba78e956..5cbabdff 100644 --- a/src/main/java/electroblob/wizardry/spell/Intimidate.java +++ b/src/main/java/electroblob/wizardry/spell/Intimidate.java @@ -9,7 +9,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; @@ -62,7 +62,7 @@ public class Intimidate extends Spell { }else{ for(int i = 0; i < 30; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, caster.posX - 1 + world.rand.nextDouble() * 2, caster.getEntityBoundingBox().minY + 1.5 + world.rand.nextDouble() * 0.5, caster.posZ - 1 + world.rand.nextDouble() * 2, 0, 0, 0, 0, 0.9f, 0.1f, 0.0f); diff --git a/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java b/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java index 71cf0216..a8ede484 100644 --- a/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java +++ b/src/main/java/electroblob/wizardry/spell/InvigoratingPresence.java @@ -9,7 +9,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -44,7 +44,7 @@ public class InvigoratingPresence extends Spell { for(int i = 0; i < 50 * modifiers.get(WizardryItems.blast_upgrade); i++){ double radius = (1 + world.rand.nextDouble() * 4) * modifiers.get(WizardryItems.blast_upgrade); double angle = world.rand.nextDouble() * Math.PI * 2; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + radius * Math.cos(angle), caster.getEntityBoundingBox().minY, caster.posZ + radius * Math.sin(angle), 0, 0.03, 0, 50, 1, 0.2f, 0.2f); diff --git a/src/main/java/electroblob/wizardry/spell/Invisibility.java b/src/main/java/electroblob/wizardry/spell/Invisibility.java index ed70f40c..0fe1caba 100644 --- a/src/main/java/electroblob/wizardry/spell/Invisibility.java +++ b/src/main/java/electroblob/wizardry/spell/Invisibility.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -35,7 +35,7 @@ public class Invisibility extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.7f, 1.0f, 1.0f); } } @@ -58,7 +58,7 @@ public class Invisibility extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.7f, 1.0f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/InvokeWeather.java b/src/main/java/electroblob/wizardry/spell/InvokeWeather.java index edf5f0d6..9046e787 100644 --- a/src/main/java/electroblob/wizardry/spell/InvokeWeather.java +++ b/src/main/java/electroblob/wizardry/spell/InvokeWeather.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; @@ -54,7 +54,7 @@ public class InvokeWeather extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.5f, 0.7f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Ironflesh.java b/src/main/java/electroblob/wizardry/spell/Ironflesh.java index acbbff3c..7828b4d0 100644 --- a/src/main/java/electroblob/wizardry/spell/Ironflesh.java +++ b/src/main/java/electroblob/wizardry/spell/Ironflesh.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -35,7 +35,7 @@ public class Ironflesh extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.4f, 0.5f, 0.6f); } } @@ -59,7 +59,7 @@ public class Ironflesh extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.4f, 0.5f, 0.6f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Levitation.java b/src/main/java/electroblob/wizardry/spell/Levitation.java index 03907a3a..1879e9bc 100644 --- a/src/main/java/electroblob/wizardry/spell/Levitation.java +++ b/src/main/java/electroblob/wizardry/spell/Levitation.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -27,7 +27,7 @@ public class Levitation extends Spell { caster.motionY = caster.motionY < 0.5d ? caster.motionY + 0.1d : caster.motionY; if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX - 0.25d + world.rand.nextDouble() / 2, WizardryUtilities.getPlayerEyesPos(caster) - 1.5f, caster.posZ - 0.25d + world.rand.nextDouble() / 2, 0, -0.1F, 0, 15, 0.5f, 1.0f, 0.7f); diff --git a/src/main/java/electroblob/wizardry/spell/LifeDrain.java b/src/main/java/electroblob/wizardry/spell/LifeDrain.java index 818cc010..909c9ad2 100644 --- a/src/main/java/electroblob/wizardry/spell/LifeDrain.java +++ b/src/main/java/electroblob/wizardry/spell/LifeDrain.java @@ -9,7 +9,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -54,10 +54,10 @@ public class LifeDrain extends Spell { double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); if(i % 5 == 0){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); } - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, -0.05 * look.x * i, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, -0.05 * look.x * i, -0.05 * look.y * i, -0.05 * look.z * i, 8 + world.rand.nextInt(6), 0.5f, 0.0f, 0.0f); } } @@ -92,10 +92,10 @@ public class LifeDrain extends Spell { double z1 = caster.posZ + vec.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); if(i % 5 == 0){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); } - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, -0.05 * vec.x * i, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, -0.05 * vec.x * i, -0.05 * vec.y * i, -0.05 * vec.z * i, 8 + world.rand.nextInt(6), 0.5f, 0.0f, 0.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/LightningRay.java b/src/main/java/electroblob/wizardry/spell/LightningRay.java index ced7a07c..0d7236b2 100644 --- a/src/main/java/electroblob/wizardry/spell/LightningRay.java +++ b/src/main/java/electroblob/wizardry/spell/LightningRay.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; @@ -63,7 +63,7 @@ public class LightningRay extends Spell { }else{ for(int i = 0; i < 5; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, target.posX + world.rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); @@ -132,7 +132,7 @@ public class LightningRay extends Spell { }else{ for(int i = 0; i < 5; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, target.posX + world.rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); diff --git a/src/main/java/electroblob/wizardry/spell/LightningWeb.java b/src/main/java/electroblob/wizardry/spell/LightningWeb.java index 3a86a31f..7bc5519b 100644 --- a/src/main/java/electroblob/wizardry/spell/LightningWeb.java +++ b/src/main/java/electroblob/wizardry/spell/LightningWeb.java @@ -12,7 +12,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -71,7 +71,7 @@ public class LightningWeb extends Spell { } }else{ for(int i = 0; i < 5; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, target.posX + world.rand.nextFloat() - 0.5, target.getEntityBoundingBox().minY + target.height / 2 + world.rand.nextFloat() * 2 - 1, target.posZ + world.rand.nextFloat() - 0.5, 0, 0, 0, 3); @@ -121,7 +121,7 @@ public class LightningWeb extends Spell { } }else{ for(int i = 0; i < 5; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, secondaryTarget.posX + world.rand.nextFloat() - 0.5, secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, @@ -173,7 +173,7 @@ public class LightningWeb extends Spell { } }else{ for(int i = 0; i < 5; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, tertiaryTarget.posX + world.rand.nextFloat() - 0.5, tertiaryTarget.getEntityBoundingBox().minY + tertiaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, diff --git a/src/main/java/electroblob/wizardry/spell/Metamorphosis.java b/src/main/java/electroblob/wizardry/spell/Metamorphosis.java index 12975e93..5489e28d 100644 --- a/src/main/java/electroblob/wizardry/spell/Metamorphosis.java +++ b/src/main/java/electroblob/wizardry/spell/Metamorphosis.java @@ -12,7 +12,7 @@ import electroblob.wizardry.entity.living.EntityWitherSkeletonMinion; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -121,11 +121,11 @@ public class Metamorphosis extends Spell { + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.2f, 0.0f, 0.1f); } for(int i = 0; i < 5; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, xPos, yPos, zPos, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, xPos, yPos, zPos, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/MindControl.java b/src/main/java/electroblob/wizardry/spell/MindControl.java index 3edff448..527ca68b 100644 --- a/src/main/java/electroblob/wizardry/spell/MindControl.java +++ b/src/main/java/electroblob/wizardry/spell/MindControl.java @@ -11,7 +11,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; @@ -76,12 +76,12 @@ public class MindControl extends Spell { } }else{ for(int i = 0; i < 10; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, target.posX - 0.25 + world.rand.nextDouble() * 0.5, target.getEntityBoundingBox().minY + target.getEyeHeight() - 0.25 + world.rand.nextDouble() * 0.5, target.posZ - 0.25 + world.rand.nextDouble() * 0.5, 0, 0, 0, 0, 0.8f, 0.2f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, target.posX - 0.25 + world.rand.nextDouble() * 0.5, target.getEntityBoundingBox().minY + target.getEyeHeight() - 0.25 + world.rand.nextDouble() * 0.5, @@ -116,12 +116,12 @@ public class MindControl extends Spell { } }else{ for(int i = 0; i < 10; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, target.posX - 0.25 + world.rand.nextDouble() * 0.5, target.getEntityBoundingBox().minY + target.getEyeHeight() - 0.25 + world.rand.nextDouble() * 0.5, target.posZ - 0.25 + world.rand.nextDouble() * 0.5, 0, 0, 0, 0, 0.8f, 0.2f, 1.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, target.posX - 0.25 + world.rand.nextDouble() * 0.5, target.getEntityBoundingBox().minY + target.getEyeHeight() - 0.25 + world.rand.nextDouble() * 0.5, diff --git a/src/main/java/electroblob/wizardry/spell/MindTrick.java b/src/main/java/electroblob/wizardry/spell/MindTrick.java index d2f5dae2..9f4f0dab 100644 --- a/src/main/java/electroblob/wizardry/spell/MindTrick.java +++ b/src/main/java/electroblob/wizardry/spell/MindTrick.java @@ -8,7 +8,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardryPotions; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -56,7 +56,7 @@ public class MindTrick extends Spell { } }else{ for(int i = 0; i < 10; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, target.posX - 0.25 + world.rand.nextDouble() * 0.5, target.getEntityBoundingBox().minY + target.getEyeHeight() - 0.25 + world.rand.nextDouble() * 0.5, @@ -91,7 +91,7 @@ public class MindTrick extends Spell { } }else{ for(int i = 0; i < 10; i++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, target.posX - 0.25 + world.rand.nextDouble() * 0.5, target.getEntityBoundingBox().minY + target.getEyeHeight() - 0.25 + world.rand.nextDouble() * 0.5, diff --git a/src/main/java/electroblob/wizardry/spell/Oakflesh.java b/src/main/java/electroblob/wizardry/spell/Oakflesh.java index 0f35c253..21488735 100644 --- a/src/main/java/electroblob/wizardry/spell/Oakflesh.java +++ b/src/main/java/electroblob/wizardry/spell/Oakflesh.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -35,7 +35,7 @@ public class Oakflesh extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.6f, 0.5f, 0.4f); } } @@ -59,7 +59,7 @@ public class Oakflesh extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)caster.posY + caster.getEyeHeight() - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.6f, 0.5f, 0.4f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Petrify.java b/src/main/java/electroblob/wizardry/spell/Petrify.java index b207fd34..7b1f1a6a 100644 --- a/src/main/java/electroblob/wizardry/spell/Petrify.java +++ b/src/main/java/electroblob/wizardry/spell/Petrify.java @@ -8,7 +8,7 @@ import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.tileentity.TileEntityStatue; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; @@ -112,9 +112,9 @@ public class Petrify extends Spell { + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.1f, 0.1f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.2f, 0.2f, 0.2f); } } diff --git a/src/main/java/electroblob/wizardry/spell/PlagueOfDarkness.java b/src/main/java/electroblob/wizardry/spell/PlagueOfDarkness.java index 4559ca53..03d4ba9e 100644 --- a/src/main/java/electroblob/wizardry/spell/PlagueOfDarkness.java +++ b/src/main/java/electroblob/wizardry/spell/PlagueOfDarkness.java @@ -10,7 +10,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -50,12 +50,12 @@ public class PlagueOfDarkness extends Spell { for(int i = 0; i < 40 * modifiers.get(WizardryItems.blast_upgrade); i++){ particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble(); particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble(); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, particleX, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, particleX, WizardryUtilities.getPlayerEyesPos(caster) - 1.5, particleZ, particleX - caster.posX, 0, particleZ - caster.posZ, 0, 0.1f, 0.0f, 0.0f); particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble(); particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble(); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, particleX, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, particleX, WizardryUtilities.getPlayerEyesPos(caster) - 1.5, particleZ, particleX - caster.posX, 0, particleZ - caster.posZ, 30, 0.1f, 0.0f, 0.05f); particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble(); diff --git a/src/main/java/electroblob/wizardry/spell/Poison.java b/src/main/java/electroblob/wizardry/spell/Poison.java index 630c0a3e..8fd97d21 100644 --- a/src/main/java/electroblob/wizardry/spell/Poison.java +++ b/src/main/java/electroblob/wizardry/spell/Poison.java @@ -9,7 +9,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -59,9 +59,9 @@ public class Poison extends Spell { + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.3f, 0.7f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.1f, 0.4f, 0.0f); } } @@ -99,9 +99,9 @@ public class Poison extends Spell { - 0.1f; double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.3f, 0.7f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.1f, 0.4f, 0.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/ReplenishHunger.java b/src/main/java/electroblob/wizardry/spell/ReplenishHunger.java index e9939d35..0af5b579 100644 --- a/src/main/java/electroblob/wizardry/spell/ReplenishHunger.java +++ b/src/main/java/electroblob/wizardry/spell/ReplenishHunger.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -32,7 +32,7 @@ public class ReplenishHunger extends Spell { double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 1.0f, 0.7f, 0.3f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Shockwave.java b/src/main/java/electroblob/wizardry/spell/Shockwave.java index 60d2fedc..e1a63679 100644 --- a/src/main/java/electroblob/wizardry/spell/Shockwave.java +++ b/src/main/java/electroblob/wizardry/spell/Shockwave.java @@ -11,7 +11,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -71,12 +71,12 @@ public class Shockwave extends Spell { for(int i = 0; i < 40; i++){ particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble(); particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble(); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, particleX, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, particleX, WizardryUtilities.getPlayerEyesPos(caster) - 1.5, particleZ, particleX - caster.posX, 0, particleZ - caster.posZ, 30, 0.8f, 0.8f, 1.0f); particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble(); particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble(); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, particleX, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, particleX, WizardryUtilities.getPlayerEyesPos(caster) - 1.5, particleZ, particleX - caster.posX, 0, particleZ - caster.posZ, 30, 0.9f, 0.9f, 0.9f); particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble(); diff --git a/src/main/java/electroblob/wizardry/spell/Slime.java b/src/main/java/electroblob/wizardry/spell/Slime.java index 6ba62b8e..b1569eab 100644 --- a/src/main/java/electroblob/wizardry/spell/Slime.java +++ b/src/main/java/electroblob/wizardry/spell/Slime.java @@ -9,7 +9,7 @@ import electroblob.wizardry.registry.WizardryAdvancementTriggers; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -66,7 +66,7 @@ public class Slime extends Spell { double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.SLIME, x1, y1, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.2f, 0.8f, 0.1f); } } @@ -103,7 +103,7 @@ public class Slime extends Spell { double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; world.spawnParticle(EnumParticleTypes.SLIME, x1, y1, z1, 0.0d, 0.0d, 0.0d); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.2f, 0.8f, 0.1f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Snare.java b/src/main/java/electroblob/wizardry/spell/Snare.java index d8a5f262..64fb6f55 100644 --- a/src/main/java/electroblob/wizardry/spell/Snare.java +++ b/src/main/java/electroblob/wizardry/spell/Snare.java @@ -8,7 +8,7 @@ import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.tileentity.TileEntityPlayerSave; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; @@ -51,13 +51,13 @@ public class Snare extends Spell { if(world.isRemote){ for(int i = 1; i < 5; i++){ float brightness = world.rand.nextFloat() / 4; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, WizardryUtilities.getPlayerEyesPos(caster) + (i * (dy / 5)) + world.rand.nextFloat() / 5, caster.posZ + (i * (dz / 5)) + world.rand.nextFloat() / 5, 0.0d, 0.0d, 0.0d, 20 + world.rand.nextInt(8), brightness, brightness + 0.1f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.LEAF, world, + Wizardry.proxy.spawnParticle(Type.LEAF, world, caster.posX + (i * (dx / 5)) + world.rand.nextFloat() / 5, WizardryUtilities.getPlayerEyesPos(caster) + (i * (dy / 5)) + world.rand.nextFloat() / 5, diff --git a/src/main/java/electroblob/wizardry/spell/SummonIceGiant.java b/src/main/java/electroblob/wizardry/spell/SummonIceGiant.java index 00fdc4bf..87d30b8d 100644 --- a/src/main/java/electroblob/wizardry/spell/SummonIceGiant.java +++ b/src/main/java/electroblob/wizardry/spell/SummonIceGiant.java @@ -8,7 +8,7 @@ import electroblob.wizardry.entity.living.EntityIceGiant; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -40,7 +40,7 @@ public class SummonIceGiant extends Spell { double x1 = (double)((float)pos.getX() + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)pos.getY() + 0.5F + world.rand.nextFloat()); double z1 = (double)((float)pos.getZ() + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0, 0, 48 + world.rand.nextInt(12), 0.6f, 0.6f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/SummonIronGolem.java b/src/main/java/electroblob/wizardry/spell/SummonIronGolem.java index d7f48844..fa2a0759 100644 --- a/src/main/java/electroblob/wizardry/spell/SummonIronGolem.java +++ b/src/main/java/electroblob/wizardry/spell/SummonIronGolem.java @@ -5,7 +5,7 @@ import electroblob.wizardry.constants.Element; import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.monster.EntityIronGolem; import net.minecraft.entity.player.EntityPlayer; @@ -38,7 +38,7 @@ public class SummonIronGolem extends Spell { double y1 = (double)((float)pos.getY() + 0.5F + world.rand.nextFloat()); double z1 = (double)((float)pos.getZ() + world.rand.nextFloat() * 2 - 1.0F); if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0, 0, 48 + world.rand.nextInt(12), 0.6f, 0.6f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java b/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java index 06c71eee..d50da8c1 100644 --- a/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java +++ b/src/main/java/electroblob/wizardry/spell/SummonSnowGolem.java @@ -6,7 +6,7 @@ import electroblob.wizardry.constants.SpellType; import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.monster.EntitySnowman; import net.minecraft.entity.player.EntityPlayer; @@ -37,7 +37,7 @@ public class SummonSnowGolem extends Spell { double y1 = (double)((float)pos.getY() + 0.5F + world.rand.nextFloat()); double z1 = (double)((float)pos.getZ() + world.rand.nextFloat() * 2 - 1.0F); if(world.isRemote){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.6f, 0.6f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Thunderstorm.java b/src/main/java/electroblob/wizardry/spell/Thunderstorm.java index 3a3e88a5..cb533a50 100644 --- a/src/main/java/electroblob/wizardry/spell/Thunderstorm.java +++ b/src/main/java/electroblob/wizardry/spell/Thunderstorm.java @@ -12,7 +12,7 @@ import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.effect.EntityLightningBolt; @@ -70,7 +70,7 @@ public class Thunderstorm extends Spell { world.spawnEntity(arc); }else{ for(int j = 0; j < 8; j++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, secondaryTarget.posX + world.rand.nextFloat() - 0.5, secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, @@ -111,7 +111,7 @@ public class Thunderstorm extends Spell { world.spawnEntity(arc); }else{ for(int k = 0; k < 8; k++){ - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARK, world, + Wizardry.proxy.spawnParticle(Type.SPARK, world, tertiaryTarget.posX + world.rand.nextFloat() - 0.5, tertiaryTarget.getEntityBoundingBox().minY + tertiaryTarget.height / 2 + world.rand.nextFloat() * 2 - 1, diff --git a/src/main/java/electroblob/wizardry/spell/WallOfFrost.java b/src/main/java/electroblob/wizardry/spell/WallOfFrost.java index 4220fdde..98907300 100644 --- a/src/main/java/electroblob/wizardry/spell/WallOfFrost.java +++ b/src/main/java/electroblob/wizardry/spell/WallOfFrost.java @@ -8,7 +8,7 @@ import electroblob.wizardry.registry.WizardryBlocks; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -74,7 +74,7 @@ public class WallOfFrost extends Spell { double y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 8 + world.rand.nextInt(12), 0.4f, @@ -84,7 +84,7 @@ public class WallOfFrost extends Spell { y1 = WizardryUtilities.getPlayerEyesPos(caster) - 0.4f + look.y * i / 2 + world.rand.nextFloat() / 5 - 0.1f; z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, look.x * modifiers.get(WizardryItems.range_upgrade), look.y * modifiers.get(WizardryItems.range_upgrade), look.z * modifiers.get(WizardryItems.range_upgrade), 8 + world.rand.nextInt(12), 1.0f, diff --git a/src/main/java/electroblob/wizardry/spell/WaterBreathing.java b/src/main/java/electroblob/wizardry/spell/WaterBreathing.java index 8effe686..4b2462eb 100644 --- a/src/main/java/electroblob/wizardry/spell/WaterBreathing.java +++ b/src/main/java/electroblob/wizardry/spell/WaterBreathing.java @@ -7,7 +7,7 @@ import electroblob.wizardry.constants.Tier; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -32,7 +32,7 @@ public class WaterBreathing extends Spell { double x1 = (double)((float)caster.posX + world.rand.nextFloat() * 2 - 1.0F); double y1 = (double)((float)WizardryUtilities.getPlayerEyesPos(caster) - 0.5F + world.rand.nextFloat()); double z1 = (double)((float)caster.posZ + world.rand.nextFloat() * 2 - 1.0F); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0, 0.1F, 0, 48 + world.rand.nextInt(12), 0.3f, 0.3f, 1.0f); } } diff --git a/src/main/java/electroblob/wizardry/spell/Wither.java b/src/main/java/electroblob/wizardry/spell/Wither.java index 88712ceb..9234756d 100644 --- a/src/main/java/electroblob/wizardry/spell/Wither.java +++ b/src/main/java/electroblob/wizardry/spell/Wither.java @@ -8,7 +8,7 @@ import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.util.MagicDamage; import electroblob.wizardry.util.MagicDamage.DamageType; import electroblob.wizardry.util.SpellModifiers; -import electroblob.wizardry.util.WizardryParticleType; +import electroblob.wizardry.util.ParticleBuilder.Type; import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -65,9 +65,9 @@ public class Wither extends Spell { + world.rand.nextFloat() / 5 - 0.1f; double z1 = caster.posZ + look.z * i / 2 + world.rand.nextFloat() / 5 - 0.1f; // world.spawnParticle("mobSpell", x1, y1, z1, -1*look.xCoord, -1*look.yCoord, -1*look.zCoord); - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.1f, 0.0f, 0.05f); } } @@ -103,9 +103,9 @@ public class Wither extends Spell { - 0.1f; double z1 = caster.posZ + dz * i / 2 + world.rand.nextFloat() / 5 - 0.1f; - Wizardry.proxy.spawnParticle(WizardryParticleType.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.DARK_MAGIC, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 0, 0.1f, 0.0f, 0.0f); - Wizardry.proxy.spawnParticle(WizardryParticleType.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, + Wizardry.proxy.spawnParticle(Type.SPARKLE, world, x1, y1, z1, 0.0d, 0.0d, 0.0d, 12 + world.rand.nextInt(8), 0.1f, 0.0f, 0.05f); } } diff --git a/src/main/java/electroblob/wizardry/util/WizardryParticleType.java b/src/main/java/electroblob/wizardry/util/WizardryParticleType.java deleted file mode 100644 index 2be30685..00000000 --- a/src/main/java/electroblob/wizardry/util/WizardryParticleType.java +++ /dev/null @@ -1,9 +0,0 @@ -package electroblob.wizardry.util; - -/** - * Enum constants representing the different types of particle added by wizardry. This was renamed from the previous - * EnumParticleType in the 1.10.2 port to avoid confusion with the vanilla version, EnumParticleTypes. - */ -public enum WizardryParticleType { - BLIZZARD, BRIGHT_DUST, DARK_MAGIC, DUST, ICE, LEAF, MAGIC_BUBBLE, MAGIC_FIRE, PATH, SNOW, SPARK, SPARKLE, SPARKLE_ROTATING -}