d91a3e056a
Adds ParticleBuilder to replace the particle spawning methods in the proxies, and changes all particle spawning to use the builder except for in the spell classes, which are to be reorganised first.
67 lines
1.8 KiB
Java
67 lines
1.8 KiB
Java
package electroblob.wizardry.client.particle;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import electroblob.wizardry.Wizardry;
|
|
import net.minecraft.client.renderer.GlStateManager;
|
|
import net.minecraft.client.renderer.OpenGlHelper;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
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){
|
|
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.shaded = false;
|
|
this.canCollide = false;
|
|
this.setLifetime(3); // Lifetime defaults to 3 (and is very unlikely to be changed)
|
|
}
|
|
|
|
@Override
|
|
public void onUpdate(){
|
|
super.onUpdate();
|
|
// Well this is handy! Looks like vanilla uses the texture index like this too.
|
|
this.nextTextureIndexX();
|
|
}
|
|
|
|
@Override
|
|
public ResourceLocation getTexture(){
|
|
return TEXTURE;
|
|
}
|
|
|
|
@Override
|
|
protected int getXFrames(){
|
|
return 4;
|
|
}
|
|
|
|
@Override
|
|
protected int getYFrames(){
|
|
return 8;
|
|
}
|
|
|
|
@Override
|
|
public void applyGLStateChanges(){
|
|
GlStateManager.enableBlend();
|
|
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
|
// TESTME: Are these two actually necessary?
|
|
GlStateManager.disableLighting();
|
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240, 240);
|
|
}
|
|
|
|
@Override
|
|
public void undoGLStateChanges(){
|
|
GlStateManager.disableBlend();
|
|
GlStateManager.enableLighting();
|
|
}
|
|
|
|
}
|