The great particle refactoring part 2: Splitting and Streamlining!
- Splits all particle textures into individual files intead of sprite sheets - Replaces arc and lightning pulse entities with particles - Pulls particle code up to the general ParticleWizardry so behaviours such as spin can be applied to all particle types - Renames a few ParticleBuilder methods for conciseness. - Adds a few new particle effects to various spells and entities, with a slight tweak to EntityMagicArrow#onBlockHit to facilitate impact effects
This commit is contained in:
@@ -30,11 +30,10 @@ public class Arc extends SpellRay {
|
||||
|
||||
if(WizardryUtilities.isLiving(target)){
|
||||
|
||||
if(!world.isRemote){
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(caster.posX, caster.posY + 1, caster.posZ, target.posX, target.posY + target.height / 2, target.posZ);
|
||||
world.spawnEntity(arc);
|
||||
}else{
|
||||
if(world.isRemote){
|
||||
// Rather neatly, the entity can be set here and if it's null nothing will happen.
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
ParticleBuilder.spawnShockParticles(world, target.posX, target.getEntityBoundingBox().minY + target.height/2, target.posZ);
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ public class ArcaneJammer extends SpellRay {
|
||||
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8)).colour(0.9f, 0.3f, 0.7f)
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8)).clr(0.9f, 0.3f, 0.7f)
|
||||
.spawn(world);
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ public class Banish extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
world.spawnParticle(EnumParticleTypes.PORTAL, x, y - 0.5, z, 0, 0, 0);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.2f, 0, 0.2f).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.2f, 0, 0.2f).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -102,12 +102,11 @@ public class ChainLightning extends SpellRay {
|
||||
target.attackEntityFrom(MagicDamage.causeDirectMagicDamage(caster, DamageType.SHOCK), damage);
|
||||
}
|
||||
|
||||
if(!world.isRemote){
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(caster.posX, caster.getEntityBoundingBox().minY + caster.height / 2, caster.posZ,
|
||||
target.posX, target.getEntityBoundingBox().minY + target.height / 2, target.posZ);
|
||||
world.spawnEntity(arc);
|
||||
}else{
|
||||
if(world.isRemote){
|
||||
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
|
||||
ParticleBuilder.spawnShockParticles(world, target.posX, target.getEntityBoundingBox().minY + target.height/2, target.posZ);
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ public class Clairvoyance extends Spell {
|
||||
(nextPoint.x - point.x) / (float)PARTICLE_MOVEMENT_INTERVAL,
|
||||
(nextPoint.y - point.y) / (float)PARTICLE_MOVEMENT_INTERVAL,
|
||||
(nextPoint.z - point.z) / (float)PARTICLE_MOVEMENT_INTERVAL)
|
||||
.lifetime((int)(1800 * durationMultiplier)).colour(0, 1, 0.3f).spawn(world);
|
||||
.time((int)(1800 * durationMultiplier)).clr(0, 1, 0.3f).spawn(world);
|
||||
|
||||
path.incrementPathIndex();
|
||||
path.incrementPathIndex();
|
||||
@@ -136,7 +136,7 @@ public class Clairvoyance extends Spell {
|
||||
point = path.getFinalPathPoint();
|
||||
|
||||
ParticleBuilder.create(Type.PATH).pos(point.x + 0.5, point.y + 0.5, point.z + 0.5)
|
||||
.lifetime((int)(1800 * durationMultiplier)).colour(1, 1, 1).spawn(world);
|
||||
.time((int)(1800 * durationMultiplier)).clr(1, 1, 1).spawn(world);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
||||
@@ -54,9 +54,9 @@ public class CurseOfSoulbinding extends SpellRay {
|
||||
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.4f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.1f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8)).colour(1, 0.8f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.4f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.1f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8)).clr(1, 0.8f, 1).spawn(world);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
||||
@@ -63,7 +63,7 @@ public class Entrapment extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
world.spawnParticle(EnumParticleTypes.PORTAL, x, y - 0.5, z, 0, 0, 0);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.1f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.1f, 0, 0).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class FlamingWeapon extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(0.9f, 0.7f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(0.9f, 0.7f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,11 +41,11 @@ public class Flight extends Spell {
|
||||
double x = caster.posX - 1 + world.rand.nextDouble() * 2;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ - 1 + world.rand.nextDouble() * 2;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).lifetime(15).colour(0.8f, 1, 0.5f).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).time(15).clr(0.8f, 1, 0.5f).spawn(world);
|
||||
x = caster.posX - 1 + world.rand.nextDouble() * 2;
|
||||
y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
z = caster.posZ - 1 + world.rand.nextDouble() * 2;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).lifetime(15).colour(1, 1, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).time(15).clr(1, 1, 1).spawn(world);
|
||||
}
|
||||
|
||||
if(ticksInUse % 24 == 0){
|
||||
|
||||
@@ -52,8 +52,8 @@ public class FontOfMana extends Spell {
|
||||
double y = caster.getEntityBoundingBox().minY;
|
||||
double z = caster.posZ + radius * Math.sin(angle);
|
||||
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.03, 0).lifetime(50)
|
||||
.colour(1, 1 - hue, 0.6f + hue).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.03, 0).time(50)
|
||||
.clr(1, 1 - hue, 0.6f + hue).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,13 +50,13 @@ public class ForestsCurse extends SpellAreaEffect {
|
||||
|
||||
float brightness = world.rand.nextFloat() / 4;
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).vel(0, -0.2, 0)
|
||||
.colour(0.05f + brightness, 0.2f + brightness, 0).spawn(world);
|
||||
.clr(0.05f + brightness, 0.2f + brightness, 0).spawn(world);
|
||||
|
||||
brightness = world.rand.nextFloat() / 4;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.05, 0).lifetime(50)
|
||||
.colour(0.1f + brightness, 0.2f + brightness, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.05, 0).time(50)
|
||||
.clr(0.1f + brightness, 0.2f + brightness, 0).spawn(world);
|
||||
|
||||
ParticleBuilder.create(Type.LEAF).pos(x, y, z).vel(0, -0.01, 0).lifetime(40 + world.rand.nextInt(12)).spawn(world);
|
||||
ParticleBuilder.create(Type.LEAF).pos(x, y, z).vel(0, -0.01, 0).time(40 + world.rand.nextInt(12)).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -87,8 +87,8 @@ public class Freeze extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
float brightness = 0.5f + (world.rand.nextFloat() / 2);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8))
|
||||
.colour(brightness, brightness + 0.1f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8))
|
||||
.clr(brightness, brightness + 0.1f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).spawn(world);
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ public class FreezingWeapon extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(0.9f, 0.7f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(0.9f, 0.7f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -104,9 +104,9 @@ public class FrostRay extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
float brightness = world.rand.nextFloat();
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(vx, vy, vz).lifetime(8 + world.rand.nextInt(12))
|
||||
.colour(0.4f + 0.6f * brightness, 0.6f + 0.4f*brightness, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).vel(vx, vy, vz).lifetime(8 + world.rand.nextInt(12)).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(vx, vy, vz).time(8 + world.rand.nextInt(12))
|
||||
.clr(0.4f + 0.6f * brightness, 0.6f + 0.4f*brightness, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).vel(vx, vy, vz).time(8 + world.rand.nextInt(12)).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,11 +35,11 @@ public class Glide extends Spell {
|
||||
double x = caster.posX - 0.25 + world.rand.nextDouble() / 2;
|
||||
double y = caster.getEntityBoundingBox().minY + world.rand.nextDouble();
|
||||
double z = caster.posZ - 0.25 + world.rand.nextDouble() / 2;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).lifetime(15).colour(1, 1, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).time(15).clr(1, 1, 1).spawn(world);
|
||||
x = caster.posX - 0.25 + world.rand.nextDouble() / 2;
|
||||
y = caster.getEntityBoundingBox().minY + world.rand.nextDouble();
|
||||
z = caster.posZ - 0.25 + world.rand.nextDouble() / 2;
|
||||
ParticleBuilder.create(Type.LEAF).pos(x, y, z).lifetime(20).spawn(world);
|
||||
ParticleBuilder.create(Type.LEAF).pos(x, y, z).time(20).spawn(world);
|
||||
}
|
||||
|
||||
if(ticksInUse % 24 == 0){
|
||||
|
||||
@@ -9,8 +9,8 @@ import electroblob.wizardry.constants.Tier;
|
||||
import electroblob.wizardry.entity.living.ISummonedCreature;
|
||||
import electroblob.wizardry.registry.WizardryItems;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.util.ParticleBuilder.Type;
|
||||
import electroblob.wizardry.util.ParticleBuilder;
|
||||
import electroblob.wizardry.util.ParticleBuilder.Type;
|
||||
import electroblob.wizardry.util.SpellModifiers;
|
||||
import electroblob.wizardry.util.WizardryUtilities;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@@ -49,10 +49,10 @@ public class GroupHeal extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(1, 1, 0.3f).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(1, 1, 0.3f).spawn(world);
|
||||
}
|
||||
|
||||
Wizardry.proxy.spawnEntityParticle(world, caster, 15, 1, 1, 0.3f);
|
||||
|
||||
ParticleBuilder.create(Type.BUFF).entity(caster).clr(1, 1, 0.3f).spawn(world);
|
||||
}
|
||||
|
||||
WizardryUtilities.playSoundAtPlayer(caster, WizardrySounds.SPELL_HEAL, 0.7F,
|
||||
@@ -78,10 +78,10 @@ public class GroupHeal extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(1, 1, 0.3f).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(1, 1, 0.3f).spawn(world);
|
||||
}
|
||||
|
||||
Wizardry.proxy.spawnEntityParticle(world, caster, 15, 1, 1, 0.3f);
|
||||
|
||||
ParticleBuilder.create(Type.BUFF).entity(caster).clr(1, 1, 0.3f).spawn(world);
|
||||
}
|
||||
|
||||
WizardryUtilities.playSoundAtPlayer(caster, WizardrySounds.SPELL_HEAL, 0.7F,
|
||||
|
||||
@@ -41,10 +41,10 @@ public class HealAlly extends SpellRay {
|
||||
double x1 = (double)((float)entity.posX + world.rand.nextFloat() * 2 - 1.0f);
|
||||
double y1 = (double)((float)entity.getEntityBoundingBox().minY + entity.getEyeHeight() - 0.5f + world.rand.nextFloat());
|
||||
double z1 = (double)((float)entity.posZ + world.rand.nextFloat() * 2 - 1.0f);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x1, y1, z1).vel(0, 0.1F, 0).colour(r, g, b).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x1, y1, z1).vel(0, 0.1F, 0).clr(r, g, b).spawn(world);
|
||||
}
|
||||
|
||||
Wizardry.proxy.spawnEntityParticle(world, entity, 15, r, g, b);
|
||||
|
||||
ParticleBuilder.create(Type.BUFF).entity(caster).clr(r, g, b).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,9 +55,9 @@ public class IceStatue extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
float brightness = 0.5f + world.rand.nextFloat() * 0.5f;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8))
|
||||
.colour(brightness, brightness + 0.1f, 1.0f).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).lifetime(20 + world.rand.nextInt(10)).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8))
|
||||
.clr(brightness, brightness + 0.1f, 1.0f).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).time(20 + world.rand.nextInt(10)).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public class ImbueWeapon extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(0.9f, 0.7f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(0.9f, 0.7f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ public class Intimidate extends Spell {
|
||||
double x = caster.posX - 1 + world.rand.nextDouble() * 2;
|
||||
double y = caster.getEntityBoundingBox().minY + 1.5 + world.rand.nextDouble() * 0.5;
|
||||
double z = caster.posZ - 1 + world.rand.nextDouble() * 2;
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.9f, 0.1f, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.9f, 0.1f, 0).spawn(world);
|
||||
}
|
||||
}
|
||||
WizardryUtilities.playSoundAtPlayer(caster, SoundEvents.ENTITY_ENDERDRAGON_GROWL, 1.0f, 1.0f);
|
||||
|
||||
@@ -53,7 +53,7 @@ public class InvigoratingPresence extends Spell {
|
||||
double y = caster.getEntityBoundingBox().minY;
|
||||
double z = caster.posZ + radius * Math.sin(angle);
|
||||
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.03, 0).lifetime(50).colour(1, 0.2f, 0.2f).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.03, 0).time(50).clr(1, 0.2f, 0.2f).spawn(world);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class InvokeWeather extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(0.5f, 0.7f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(0.5f, 0.7f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ public class Levitation extends Spell {
|
||||
double x = caster.posX - 0.25 + world.rand.nextDouble() * 0.5;
|
||||
double y = caster.getEntityBoundingBox().minY;
|
||||
double z = caster.posZ - 0.25 + world.rand.nextDouble() * 0.5;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).lifetime(15).colour(0.5f, 1, 0.7f).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, -0.1, 0).time(15).clr(0.5f, 1, 0.7f).spawn(world);
|
||||
}
|
||||
if(ticksInUse % 24 == 0 && world.isRemote){
|
||||
Wizardry.proxy.playMovingSound(caster, WizardrySounds.SPELL_LOOP_SPARKLE, 0.5f, 1, false);
|
||||
|
||||
@@ -89,10 +89,10 @@ public class LifeDrain extends SpellRay {
|
||||
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
if(world.rand.nextInt(5) == 0) ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.1f, 0, 0).spawn(world);
|
||||
if(world.rand.nextInt(5) == 0) ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.1f, 0, 0).spawn(world);
|
||||
// This used to multiply the velocity by the distance from the caster
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(vx, vy, vz).lifetime(8 + world.rand.nextInt(6))
|
||||
.colour(0.5f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(vx, vy, vz).time(8 + world.rand.nextInt(6))
|
||||
.clr(0.5f, 0, 0).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,11 +5,12 @@ import java.util.List;
|
||||
import electroblob.wizardry.constants.Element;
|
||||
import electroblob.wizardry.constants.SpellType;
|
||||
import electroblob.wizardry.constants.Tier;
|
||||
import electroblob.wizardry.entity.construct.EntityLightningPulse;
|
||||
import electroblob.wizardry.registry.WizardryItems;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
import electroblob.wizardry.util.ParticleBuilder;
|
||||
import electroblob.wizardry.util.ParticleBuilder.Type;
|
||||
import electroblob.wizardry.util.SpellModifiers;
|
||||
import electroblob.wizardry.util.WizardryUtilities;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@@ -72,14 +73,10 @@ public class LightningPulse extends Spell {
|
||||
}
|
||||
}
|
||||
|
||||
if(!world.isRemote){
|
||||
// Surely neither of the commented lines would have done anything?
|
||||
EntityLightningPulse lightningpulse = new EntityLightningPulse(world);
|
||||
lightningpulse.setPosition(caster.posX, caster.getEntityBoundingBox().minY, caster.posZ);
|
||||
//lightningpulse.setCaster(caster);
|
||||
lightningpulse.lifetime = 7;
|
||||
//lightningpulse.damageMultiplier = modifiers.get(SpellModifiers.POTENCY);
|
||||
world.spawnEntity(lightningpulse);
|
||||
if(world.isRemote){
|
||||
ParticleBuilder.create(Type.LIGHTNING_PULSE).pos(caster.posX, caster.getEntityBoundingBox().minY
|
||||
+ WizardryUtilities.ANTI_Z_FIGHTING_OFFSET, caster.posZ)
|
||||
.scale(modifiers.get(WizardryItems.blast_upgrade)).spawn(world);
|
||||
}
|
||||
|
||||
caster.swingArm(hand);
|
||||
|
||||
@@ -3,7 +3,6 @@ package electroblob.wizardry.spell;
|
||||
import electroblob.wizardry.constants.Element;
|
||||
import electroblob.wizardry.constants.SpellType;
|
||||
import electroblob.wizardry.constants.Tier;
|
||||
import electroblob.wizardry.entity.EntityArc;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
@@ -18,6 +17,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.text.TextComponentTranslation;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@@ -71,23 +71,18 @@ public class LightningRay extends SpellRay {
|
||||
BASE_DAMAGE * modifiers.get(SpellModifiers.POTENCY));
|
||||
}
|
||||
|
||||
if(!world.isRemote){
|
||||
if(world.isRemote){
|
||||
|
||||
if(ticksInUse % 3 == 0) ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
|
||||
if(ticksInUse % 2 == 0){
|
||||
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(caster.posX, caster.posY + 1.2, caster.posZ, target.posX,
|
||||
target.posY + target.height / 2, target.posZ);
|
||||
arc.lifetime = 1;
|
||||
world.spawnEntity(arc);
|
||||
}
|
||||
|
||||
}else{
|
||||
// Particle effect
|
||||
for(int i=0; i<5; i++){
|
||||
ParticleBuilder.create(Type.SPARK, target).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -101,21 +96,15 @@ public class LightningRay extends SpellRay {
|
||||
@Override
|
||||
protected boolean onMiss(World world, EntityLivingBase caster, int ticksInUse, SpellModifiers modifiers){
|
||||
// This is a nice example of when onMiss is used for more than just returning a boolean
|
||||
if(!world.isRemote){
|
||||
if(world.isRemote && ticksInUse % 4 == 0){
|
||||
|
||||
if(ticksInUse % 2 == 0){
|
||||
|
||||
double freeRange = 0.8 * baseRange; // The arc does not reach full range when it has a free end
|
||||
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(caster.posX, caster.posY + 1.2, caster.posZ,
|
||||
caster.posX + caster.getLookVec().x * freeRange,
|
||||
caster.posY + caster.getEyeHeight() + caster.getLookVec().y * freeRange,
|
||||
caster.posZ + caster.getLookVec().z * freeRange);
|
||||
arc.lifetime = 1;
|
||||
world.spawnEntity(arc);
|
||||
|
||||
}
|
||||
if(caster != null) origin = origin.subtract(0, Y_OFFSET, 0);
|
||||
|
||||
double freeRange = 0.8 * baseRange; // The arc does not reach full range when it has a free end
|
||||
Vec3d endpoint = origin.add(direction.scale(freeRange));
|
||||
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(endpoint).spawn(world);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -5,7 +5,6 @@ import java.util.List;
|
||||
import electroblob.wizardry.constants.Element;
|
||||
import electroblob.wizardry.constants.SpellType;
|
||||
import electroblob.wizardry.constants.Tier;
|
||||
import electroblob.wizardry.entity.EntityArc;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
@@ -20,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.text.TextComponentTranslation;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@@ -119,19 +119,20 @@ public class LightningWeb extends SpellRay {
|
||||
@Override
|
||||
protected boolean onMiss(World world, EntityLivingBase caster, int ticksInUse, SpellModifiers modifiers){
|
||||
// This is a nice example of when onMiss is used for more than just returning a boolean
|
||||
if(!world.isRemote){
|
||||
if(world.isRemote){
|
||||
|
||||
if(caster != null) origin = origin.subtract(0, Y_OFFSET, 0);
|
||||
|
||||
double freeRange = 0.8 * baseRange; // The arc does not reach full range when it has a free end
|
||||
Vec3d endpoint = origin.add(direction.scale(freeRange));
|
||||
|
||||
ParticleBuilder.create(Type.BEAM).entity(caster).clr(0.2f, 0.6f, 1)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(endpoint).spawn(world);
|
||||
|
||||
if(ticksInUse % 2 == 0){
|
||||
|
||||
double freeRange = 0.8 * baseRange; // The arc does not reach full range when it has a free end
|
||||
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(caster.posX, caster.posY + 1.2, caster.posZ,
|
||||
caster.posX + caster.getLookVec().x * freeRange,
|
||||
caster.posY + caster.getEyeHeight() + caster.getLookVec().y * freeRange,
|
||||
caster.posZ + caster.getLookVec().z * freeRange);
|
||||
arc.lifetime = 1;
|
||||
world.spawnEntity(arc);
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(endpoint).spawn(world);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -150,17 +151,16 @@ public class LightningWeb extends SpellRay {
|
||||
MagicDamage.causeDirectMagicDamage(caster, DamageType.SHOCK), damage);
|
||||
}
|
||||
|
||||
if(!world.isRemote){
|
||||
// Arc entity spawning
|
||||
if(ticksInUse % 2 == 0){
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(origin.posX, origin.posY + 1.2, origin.posZ, target.posX,
|
||||
target.posY + target.height / 2, target.posZ);
|
||||
arc.lifetime = 1;
|
||||
world.spawnEntity(arc);
|
||||
}
|
||||
if(world.isRemote){
|
||||
|
||||
}else{
|
||||
ParticleBuilder.create(Type.BEAM).entity(caster).clr(0.2f, 0.6f, 1)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
|
||||
if(ticksInUse % 3 == 0){
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(caster)
|
||||
.pos(caster != null ? origin.subtract(caster.getPositionVector()) : origin).target(target).spawn(world);
|
||||
}
|
||||
|
||||
// Particle effect
|
||||
for(int i=0; i<5; i++){
|
||||
ParticleBuilder.create(Type.SPARK, target).spawn(world);
|
||||
|
||||
@@ -34,6 +34,7 @@ import net.minecraft.entity.passive.EntityPig;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class Metamorphosis extends SpellRay {
|
||||
@@ -111,7 +112,7 @@ public class Metamorphosis extends SpellRay {
|
||||
|
||||
}else{
|
||||
for(int i=0; i<5; i++){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(xPos, yPos, zPos).colour(0.1f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(xPos, yPos, zPos).clr(0.1f, 0, 0).spawn(world);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,10 +76,10 @@ public class MindControl extends SpellRay {
|
||||
for(int i=0; i<10; i++){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC, world.rand, target.posX,
|
||||
target.getEntityBoundingBox().minY + target.getEyeHeight(), target.posZ, 0.25, false)
|
||||
.colour(0.8f, 0.2f, 1.0f).spawn(world);
|
||||
.clr(0.8f, 0.2f, 1.0f).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC, world.rand, target.posX,
|
||||
target.getEntityBoundingBox().minY + target.getEyeHeight(), target.posZ, 0.25, false)
|
||||
.colour(0.2f, 0.04f, 0.25f).spawn(world);
|
||||
.clr(0.2f, 0.04f, 0.25f).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public class MindTrick extends SpellRay {
|
||||
for(int i=0; i<10; i++){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC, world.rand, target.posX,
|
||||
target.getEntityBoundingBox().minY + target.getEyeHeight(), target.posZ, 0.25, false)
|
||||
.colour(0.8f, 0.2f, 1.0f).spawn(world);
|
||||
.clr(0.8f, 0.2f, 1.0f).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@ public class Petrify extends SpellRay {
|
||||
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8)).colour(0.2f, 0.2f, 0.2f).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.1f, 0.1f, 0.1f).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8)).clr(0.2f, 0.2f, 0.2f).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.1f, 0.1f, 0.1f).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -58,12 +58,12 @@ public class PlagueOfDarkness extends Spell {
|
||||
particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble();
|
||||
particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble();
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(particleX, caster.getEntityBoundingBox().minY, particleZ)
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).colour(0.1f, 0, 0).spawn(world);
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).clr(0.1f, 0, 0).spawn(world);
|
||||
|
||||
particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble();
|
||||
particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble();
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(particleX, caster.getEntityBoundingBox().minY, particleZ)
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).lifetime(30).colour(0.1f, 0, 0.05f).spawn(world);
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).time(30).clr(0.1f, 0, 0.05f).spawn(world);
|
||||
|
||||
particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble();
|
||||
particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble();
|
||||
|
||||
@@ -68,8 +68,8 @@ public class Poison extends SpellRay {
|
||||
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.3f, 0.7f, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8)).colour(0.1f, 0.4f, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.3f, 0.7f, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8)).clr(0.1f, 0.4f, 0).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ public class Shockwave extends Spell {
|
||||
particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble();
|
||||
particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble();
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(particleX, caster.getEntityBoundingBox().minY, particleZ)
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).lifetime(30).colour(0.8f, 0.8f, 1).spawn(world);
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).time(30).clr(0.8f, 0.8f, 1).spawn(world);
|
||||
|
||||
particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble();
|
||||
particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble();
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(particleX, caster.getEntityBoundingBox().minY, particleZ)
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).lifetime(30).colour(0.9f, 0.9f, 0.9f).spawn(world);
|
||||
.vel(particleX - caster.posX, 0, particleZ - caster.posZ).time(30).clr(0.9f, 0.9f, 0.9f).spawn(world);
|
||||
|
||||
particleX = caster.posX - 1.0d + 2 * world.rand.nextDouble();
|
||||
particleZ = caster.posZ - 1.0d + 2 * world.rand.nextDouble();
|
||||
|
||||
@@ -87,7 +87,7 @@ public class Slime extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
world.spawnParticle(EnumParticleTypes.SLIME, x, y, z, 0, 0, 0);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.2f, 0.8f, 0.1f).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.2f, 0.8f, 0.1f).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ public class Snare extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
float brightness = world.rand.nextFloat() * 0.25f;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(20 + world.rand.nextInt(8))
|
||||
.colour(brightness, brightness + 0.1f, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.LEAF).pos(x, y, z).vel(0, -0.01, 0).lifetime(40 + world.rand.nextInt(10)).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(20 + world.rand.nextInt(8))
|
||||
.clr(brightness, brightness + 0.1f, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.LEAF).pos(x, y, z).vel(0, -0.01, 0).time(40 + world.rand.nextInt(10)).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -144,10 +144,10 @@ public class SpellBuff extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(r, g, b).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(r, g, b).spawn(world);
|
||||
}
|
||||
|
||||
Wizardry.proxy.spawnEntityParticle(world, caster, 15, r, g, b);
|
||||
ParticleBuilder.create(Type.BUFF).entity(caster).clr(r, g, b).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ public class SpellConjuration extends Spell {
|
||||
double x = caster.posX + world.rand.nextDouble() * 2 - 1;
|
||||
double y = caster.getEntityBoundingBox().minY + caster.getEyeHeight() - 0.5 + world.rand.nextDouble();
|
||||
double z = caster.posZ + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(0.7f, 0.9f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(0.7f, 0.9f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ public class SummonIronGolem extends Spell {
|
||||
double x = pos.getX() + world.rand.nextDouble() * 2 - 1;
|
||||
double y = pos.getY() + 0.5 + world.rand.nextDouble();
|
||||
double z = pos.getZ() + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).colour(0.6f, 0.6f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).clr(0.6f, 0.6f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ public class SummonSnowGolem extends Spell {
|
||||
double x = pos.getX() + world.rand.nextDouble() * 2 - 1;
|
||||
double y = pos.getY() + 0.5 + world.rand.nextDouble();
|
||||
double z = pos.getZ() + world.rand.nextDouble() * 2 - 1;
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).colour(0.6f, 0.6f, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(0, 0.1, 0).clr(0.6f, 0.6f, 1).spawn(world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,12 @@ import java.util.List;
|
||||
import electroblob.wizardry.constants.Element;
|
||||
import electroblob.wizardry.constants.SpellType;
|
||||
import electroblob.wizardry.constants.Tier;
|
||||
import electroblob.wizardry.entity.EntityArc;
|
||||
import electroblob.wizardry.registry.WizardryItems;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import electroblob.wizardry.util.MagicDamage;
|
||||
import electroblob.wizardry.util.MagicDamage.DamageType;
|
||||
import electroblob.wizardry.util.ParticleBuilder;
|
||||
import electroblob.wizardry.util.ParticleBuilder.Type;
|
||||
import electroblob.wizardry.util.SpellModifiers;
|
||||
import electroblob.wizardry.util.WizardryUtilities;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
@@ -72,12 +72,10 @@ public class Thunderstorm extends Spell {
|
||||
|
||||
if(WizardryUtilities.isValidTarget(caster, secondaryTarget)){
|
||||
|
||||
if(!world.isRemote){
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(x, y + 1, z, secondaryTarget.posX,
|
||||
secondaryTarget.posY + secondaryTarget.height / 2, secondaryTarget.posZ);
|
||||
world.spawnEntity(arc);
|
||||
}else{
|
||||
if(world.isRemote){
|
||||
|
||||
ParticleBuilder.create(Type.LIGHTNING).pos(x, y, z).target(secondaryTarget).spawn(world);
|
||||
|
||||
ParticleBuilder.spawnShockParticles(world, secondaryTarget.posX,
|
||||
secondaryTarget.getEntityBoundingBox().minY + secondaryTarget.height / 2,
|
||||
secondaryTarget.posZ);
|
||||
@@ -102,14 +100,9 @@ public class Thunderstorm extends Spell {
|
||||
if(!secondaryTargets.contains(tertiaryTarget)
|
||||
&& WizardryUtilities.isValidTarget(caster, tertiaryTarget)){
|
||||
|
||||
if(!world.isRemote){
|
||||
EntityArc arc = new EntityArc(world);
|
||||
arc.setEndpointCoords(secondaryTarget.posX,
|
||||
secondaryTarget.posY + secondaryTarget.height / 2, secondaryTarget.posZ,
|
||||
tertiaryTarget.posX, tertiaryTarget.posY + tertiaryTarget.height / 2,
|
||||
tertiaryTarget.posZ);
|
||||
world.spawnEntity(arc);
|
||||
}else{
|
||||
if(world.isRemote){
|
||||
ParticleBuilder.create(Type.LIGHTNING).entity(secondaryTarget)
|
||||
.pos(0, secondaryTarget.height/2, 0).target(tertiaryTarget).spawn(world);
|
||||
ParticleBuilder.spawnShockParticles(world, tertiaryTarget.posX,
|
||||
tertiaryTarget.getEntityBoundingBox().minY + tertiaryTarget.height / 2,
|
||||
tertiaryTarget.posZ);
|
||||
|
||||
@@ -129,9 +129,9 @@ public class WallOfFrost extends SpellRay {
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
float brightness = world.rand.nextFloat();
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(vx, vy, vz).lifetime(8 + world.rand.nextInt(12))
|
||||
.colour(0.4f + 0.6f * brightness, 0.6f + 0.4f*brightness, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).vel(vx, vy, vz).lifetime(8 + world.rand.nextInt(12)).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).vel(vx, vy, vz).time(8 + world.rand.nextInt(12))
|
||||
.clr(0.4f + 0.6f * brightness, 0.6f + 0.4f*brightness, 1).spawn(world);
|
||||
ParticleBuilder.create(Type.SNOW).pos(x, y, z).vel(vx, vy, vz).time(8 + world.rand.nextInt(12)).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,8 +64,8 @@ public class Wither extends SpellRay {
|
||||
|
||||
@Override
|
||||
protected void spawnParticle(World world, double x, double y, double z, double vx, double vy, double vz){
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).colour(0.1f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).lifetime(12 + world.rand.nextInt(8)).colour(0.1f, 0, 0.05f).spawn(world);
|
||||
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.1f, 0, 0).spawn(world);
|
||||
ParticleBuilder.create(Type.SPARKLE).pos(x, y, z).time(12 + world.rand.nextInt(8)).clr(0.1f, 0, 0.05f).spawn(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user