Skip to content

Commit c2540b2

Browse files
committed
fixed bug with meshed thrusters displaying flame when they werent supposed to
1 parent 8274721 commit c2540b2

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

src/main/java/dev/propulsionteam/propulsionsimulated/content/thruster/AbstractThrusterBlockEntity.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@ public float getThrottle() {
239239
return getPower();
240240
}
241241

242-
protected LerpedFloat interpolatedPower = LerpedFloat.linear().chase(0, 0.01, LerpedFloat.Chaser.LINEAR);
242+
@OnlyIn(Dist.CLIENT)
243+
//Used for client-side interpolation
244+
protected LerpedFloat interpolatedPlumePower = LerpedFloat.linear().chase(0, 0.01, LerpedFloat.Chaser.LINEAR);
243245

244246
public int getLegacyPowerInt() {
245247
return (int) Math.round(getPower() * 15);
@@ -279,8 +281,8 @@ public void tick() {
279281
BlockState currentBlockState = isOutsideWorldHeight ? getBlockState() : SimulatedThrustAdapter.getBlockStateSafe(level, worldPosition);
280282
if (level.isClientSide) {
281283
ThrusterSoundHooks.clientTick(this);
282-
interpolatedPower.updateChaseTarget(getPower());
283-
interpolatedPower.tickChaser();
284+
interpolatedPlumePower.updateChaseTarget(shouldEmitPlume() ? getPower() : 0);
285+
interpolatedPlumePower.tickChaser();
284286
return;
285287
}
286288

src/main/java/dev/propulsionteam/propulsionsimulated/content/thruster/MeshedThrusterFlameUtils.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public static void renderMeshFlame(AbstractThrusterBlockEntity be, float partial
8787
boolean soulFlame, int offsetX, int offsetY, int offsetZ, boolean crossed) {
8888
if (shader != null) {
8989
//Get the interpolated power
90-
float power = Mth.clamp(be.interpolatedPower.getValue(partialTicks), 0f, 1f);
90+
float power = Mth.clamp(be.interpolatedPlumePower.getValue(partialTicks), 0f, 1f);
9191
if (power < DISPLAY_THRESHOLD) return;
9292

9393
final var state = be.getBlockState();
@@ -103,8 +103,7 @@ public static void renderMeshFlame(AbstractThrusterBlockEntity be, float partial
103103
rotateTowardsFacing(ms, facing);
104104
ms.translate(offsetX, offsetY, offsetZ);
105105

106-
107-
float r = random01(hash(pos.getX(), pos.getY(), pos.getZ())); //Randomness of the flame to prevent flames next to each other from looking the same
106+
float r = random01((pos.getY() + offsetY + pos.getZ() + offsetZ * 31) * 31 + pos.getX() + offsetX); //Randomness of the flame to prevent flames next to each other from looking the same
108107
float shaderTime = r + (be.getLevel().getGameTime() + partialTicks) * 0.1f;
109108
shader.getUniformSafe("FlameRenderTime").setFloat(shaderTime);
110109
shader.getUniformSafe("Intensity").setFloat(Mth.clamp(power * 2f - .35f, 0.25f, 1.5f));
@@ -128,7 +127,7 @@ public static void renderMeshVectorFlame(AbstractThrusterBlockEntity be, float p
128127
ShaderProgram shader, boolean soulFlame) {
129128
if (shader != null) {
130129
//Get the interpolated power
131-
float power = Mth.clamp(be.interpolatedPower.getValue(partialTicks), 0f, 1f);
130+
float power = Mth.clamp(be.interpolatedPlumePower.getValue(partialTicks), 0f, 1f);
132131
if (power < DISPLAY_THRESHOLD) return;
133132

134133
final var pos = be.getBlockPos();
@@ -142,7 +141,8 @@ public static void renderMeshVectorFlame(AbstractThrusterBlockEntity be, float p
142141
var widthMultiplier = snapToFlamePixel((power * 1.5f + 1));
143142

144143
ms.mulPose(Axis.YP.rotation(getBillboardAngleV2(be, pos, ms, partialTicks)));
145-
float r = random01(hash(pos.getX(), pos.getY(), pos.getZ()));
144+
145+
float r = random01(pos.hashCode());
146146
float shaderTime = r + (be.getLevel().getGameTime() + partialTicks) * 0.1f;
147147
shader.getUniformSafe("FlameRenderTime").setFloat(shaderTime);
148148
shader.getUniformSafe("Intensity").setFloat(Mth.clamp(power * 2f - .35f, 0.25f, 1.5f));
@@ -170,9 +170,8 @@ private static float random01(int seed) {
170170
}
171171

172172

173-
174173
private static float getRenderBoxLength(AbstractThrusterBlockEntity be) {
175-
return (float) (Math.ceil(be.interpolatedPower.getValue() * 10) / 10 * RENDER_BOX_FLAME_LENGTH);
174+
return (float) (Math.ceil(be.interpolatedPlumePower.getValue() * 10) / 10 * RENDER_BOX_FLAME_LENGTH);
176175
}
177176

178177
/**

0 commit comments

Comments
 (0)