generated from MrSphay/codex-agent-repository-kit
124 lines
6.3 KiB
Java
124 lines
6.3 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*/
|
|
package com.vinlanx.explosionoverhaul.client;
|
|
|
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
import net.minecraft.client.Camera;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.multiplayer.ClientLevel;
|
|
import net.minecraft.client.particle.ParticleRenderType;
|
|
import net.minecraft.client.particle.SpriteSet;
|
|
import net.minecraft.client.particle.TextureSheetParticle;
|
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
import net.minecraft.util.Mth;
|
|
import net.minecraft.world.phys.Vec3;
|
|
import org.joml.Vector3f;
|
|
import org.joml.Vector3fc;
|
|
|
|
public class LineSparkParticle
|
|
extends TextureSheetParticle {
|
|
private final SpriteSet spriteSet;
|
|
private float length;
|
|
private float width;
|
|
private final float initialLength;
|
|
private static final Vec3 UP = new Vec3(0.0, 1.0, 0.0);
|
|
|
|
public LineSparkParticle(ClientLevel pLevel, double pX, double pY, double pZ, double pXSpeed, double pYSpeed, double pZSpeed, SpriteSet pSpriteSet) {
|
|
super(pLevel, pX, pY, pZ, pXSpeed, pYSpeed, pZSpeed);
|
|
float baseSize;
|
|
this.f_107215_ = pXSpeed;
|
|
this.f_107216_ = pYSpeed;
|
|
this.f_107217_ = pZSpeed;
|
|
this.spriteSet = pSpriteSet;
|
|
this.f_172258_ = 0.97f;
|
|
this.f_107226_ = 0.4f;
|
|
this.f_107225_ = 250 + this.f_107223_.m_188503_(150);
|
|
this.initialLength = baseSize = (this.f_107223_.m_188501_() * 0.4f + 0.5f) * 1.2f;
|
|
this.length = 0.1f;
|
|
this.width = baseSize * 0.125f;
|
|
this.m_108337_(this.spriteSet.m_5819_(0, 1));
|
|
}
|
|
|
|
public void m_5989_() {
|
|
float stretchFactor;
|
|
super.m_5989_();
|
|
float lifeProgress = (float)this.f_107224_ / (float)this.f_107225_;
|
|
if (lifeProgress < 0.2f) {
|
|
t = lifeProgress / 0.2f;
|
|
stretchFactor = 1.0f - (1.0f - t) * (1.0f - t);
|
|
} else if (lifeProgress < 0.7f) {
|
|
stretchFactor = 1.0f;
|
|
} else {
|
|
t = (lifeProgress - 0.7f) / 0.3f;
|
|
stretchFactor = 1.0f - t * t;
|
|
}
|
|
stretchFactor = Mth.m_14036_((float)stretchFactor, (float)0.0f, (float)1.0f);
|
|
float distanceScale = 1.0f;
|
|
Minecraft mc = Minecraft.m_91087_();
|
|
if (mc.f_91074_ != null) {
|
|
double distSqr = mc.f_91074_.m_20275_(this.f_107212_, this.f_107213_, this.f_107214_);
|
|
double dist = Math.sqrt(distSqr);
|
|
if (dist > 171.0) {
|
|
distanceScale = 2.5f;
|
|
} else if (dist > 141.0) {
|
|
distanceScale = 2.2f;
|
|
} else if (dist > 101.0) {
|
|
distanceScale = 2.0f;
|
|
} else if (dist > 71.0) {
|
|
distanceScale = 1.7f;
|
|
} else if (dist > 50.0) {
|
|
distanceScale = 1.5f;
|
|
}
|
|
}
|
|
this.length = this.initialLength * stretchFactor * distanceScale;
|
|
this.width = this.initialLength * 0.125f * distanceScale;
|
|
if (this.length < 0.01f) {
|
|
this.length = 0.01f;
|
|
}
|
|
this.f_107230_ = Mth.m_14089_((float)((float)this.f_107224_ / (float)this.f_107225_ * (float)Math.PI / 2.0f));
|
|
if (this.f_107218_) {
|
|
this.m_107274_();
|
|
}
|
|
}
|
|
|
|
public ParticleRenderType m_7556_() {
|
|
return ParticleRenderType.f_107431_;
|
|
}
|
|
|
|
public void m_5744_(VertexConsumer buffer, Camera camera, float partialTicks) {
|
|
Vec3 camPos = camera.m_90583_();
|
|
float x = (float)(Mth.m_14139_((double)partialTicks, (double)this.f_107209_, (double)this.f_107212_) - camPos.m_7096_());
|
|
float y = (float)(Mth.m_14139_((double)partialTicks, (double)this.f_107210_, (double)this.f_107213_) - camPos.m_7098_());
|
|
float z = (float)(Mth.m_14139_((double)partialTicks, (double)this.f_107211_, (double)this.f_107214_) - camPos.m_7094_());
|
|
Vec3 velocity = new Vec3(this.f_107215_, this.f_107216_, this.f_107217_).m_82541_();
|
|
if (velocity.m_82556_() < 1.0E-4) {
|
|
return;
|
|
}
|
|
Vec3 viewVector = new Vec3((double)x, (double)y, (double)z).m_82541_();
|
|
Vec3 rightVector = velocity.m_82537_(viewVector).m_82541_();
|
|
if (rightVector.m_82556_() < 1.0E-4 && (rightVector = velocity.m_82537_(UP).m_82541_()).m_82556_() < 1.0E-4) {
|
|
rightVector = velocity.m_82537_(new Vec3(1.0, 0.0, 0.0)).m_82541_();
|
|
}
|
|
Vec3 upVector = rightVector.m_82537_(velocity).m_82541_();
|
|
Vector3f[] vertices = new Vector3f[]{new Vector3f(x, y, z).add((Vector3fc)upVector.m_82490_((double)(-this.length / 2.0f)).m_82549_(rightVector.m_82490_((double)(this.width / 2.0f))).m_252839_()), new Vector3f(x, y, z).add((Vector3fc)upVector.m_82490_((double)(this.length / 2.0f)).m_82549_(rightVector.m_82490_((double)(this.width / 2.0f))).m_252839_()), new Vector3f(x, y, z).add((Vector3fc)upVector.m_82490_((double)(this.length / 2.0f)).m_82549_(rightVector.m_82490_((double)(-this.width / 2.0f))).m_252839_()), new Vector3f(x, y, z).add((Vector3fc)upVector.m_82490_((double)(-this.length / 2.0f)).m_82549_(rightVector.m_82490_((double)(-this.width / 2.0f))).m_252839_())};
|
|
int worldLight = this.m_6355_(partialTicks);
|
|
this.renderQuad(buffer, vertices, this.f_108321_, this.f_107227_, this.f_107228_, this.f_107229_, this.f_107230_, worldLight);
|
|
TextureAtlasSprite emissiveSprite = this.spriteSet.m_5819_(1, 1);
|
|
int fullBright = 240;
|
|
this.renderQuad(buffer, vertices, emissiveSprite, 1.0f, 1.0f, 1.0f, this.f_107230_, fullBright);
|
|
}
|
|
|
|
private void renderQuad(VertexConsumer buffer, Vector3f[] vertices, TextureAtlasSprite sprite, float r, float g, float b, float a, int light) {
|
|
float u0 = sprite.m_118409_();
|
|
float u1 = sprite.m_118410_();
|
|
float v0 = sprite.m_118411_();
|
|
float v1 = sprite.m_118412_();
|
|
buffer.m_5483_((double)vertices[0].x(), (double)vertices[0].y(), (double)vertices[0].z()).m_7421_(u1, v1).m_85950_(r, g, b, a).m_85969_(light).m_5752_();
|
|
buffer.m_5483_((double)vertices[1].x(), (double)vertices[1].y(), (double)vertices[1].z()).m_7421_(u1, v0).m_85950_(r, g, b, a).m_85969_(light).m_5752_();
|
|
buffer.m_5483_((double)vertices[2].x(), (double)vertices[2].y(), (double)vertices[2].z()).m_7421_(u0, v0).m_85950_(r, g, b, a).m_85969_(light).m_5752_();
|
|
buffer.m_5483_((double)vertices[3].x(), (double)vertices[3].y(), (double)vertices[3].z()).m_7421_(u0, v1).m_85950_(r, g, b, a).m_85969_(light).m_5752_();
|
|
}
|
|
}
|
|
|