Skip to content

Commit 20ac7bf

Browse files
committed
Visual improvements (trust me this is really important)
1 parent 127e40e commit 20ac7bf

File tree

5 files changed

+41
-3
lines changed

5 files changed

+41
-3
lines changed

Diff for: src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/ClientPastelNetworkManager.java

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.jgrapht.*;
1111
import org.jgrapht.graph.*;
1212
import org.joml.*;
13+
import org.joml.Math;
1314

1415
import java.util.*;
1516

@@ -46,6 +47,10 @@ public void renderLines(WorldRenderContext context) {
4647
final Vec3d pos = context.camera().getPos();
4748
matrices.push();
4849
matrices.translate(-pos.x, -pos.y, -pos.z);
50+
var cross = source.crossProduct(target);
51+
var interval = (cross.getX() + cross.getY() + cross.getZ() + network.world.getTime()) % 1000000F;
52+
var alpha = 1 - (Math.max(Math.sin((interval / 17F)) * 2.5 - 2, 0));
53+
colors[0] = (float) alpha;
4954
PastelRenderHelper.renderLineTo(context.matrixStack(), context.consumers(), colors, source, target);
5055

5156
if (client.options.debugEnabled) {

Diff for: src/main/java/de/dafuqs/spectrum/blocks/pastel_network/nodes/PastelNodeBlockEntityRenderer.java

+24-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import de.dafuqs.spectrum.*;
44
import de.dafuqs.spectrum.api.pastel.*;
5+
import de.dafuqs.spectrum.blocks.pastel_network.*;
6+
import de.dafuqs.spectrum.blocks.pastel_network.network.*;
57
import de.dafuqs.spectrum.helpers.*;
8+
import de.dafuqs.spectrum.helpers.ColorHelper;
69
import de.dafuqs.spectrum.registries.*;
710
import net.minecraft.client.*;
811
import net.minecraft.client.model.*;
@@ -135,17 +138,35 @@ public void render(PastelNodeBlockEntity node, float tickDelta, MatrixStack matr
135138
} else {
136139
matrices.multiply(RotationAxis.POSITIVE_Y.rotation(node.crystalRotation));
137140
}
141+
142+
var color = ColorHelper.colorIntToVec(node.networkUUID.flatMap(id -> Pastel.getClientInstance().getNetwork(id)).map(PastelNetwork::getColor).orElse(0xFFFFFF));
143+
color = ColorHelper.colorIntToVec(ColorHelper.interpolate(color, ColorHelper.WASH, 0.2125F));
138144

139145
var ringHeight = node.crystalHeight - 0.3F;
140146
var innerRing = vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(node.getInnerRing().map(PastelUpgradeSignature::innerRing).orElse(INNER_RING)));
141-
RenderHelper.renderFlatTransWithZYOffset(matrices, innerRing, true, 3.75F + ringHeight / 2F, 7F, node.ringAlpha, 1F, overlay);
147+
if (node.getInnerRing().isPresent()) {
148+
RenderHelper.renderFlatTransWithZYOffset(matrices, innerRing, true, 3.75F + ringHeight / 2F, 7F, node.ringAlpha, 1F, overlay);
149+
}
150+
else {
151+
RenderHelper.renderFlatTransWithZYOffsetAndColor(matrices, innerRing, true, 3.75F + ringHeight / 2F, 7F, node.ringAlpha, 1F, overlay, color.x, color.y, color.z);
152+
}
142153

143154
var redstoneRing = vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(node.getRedstoneRing().map(PastelUpgradeSignature::outerRing).orElse(REDSTONE_RING)));
144-
RenderHelper.renderFlatTransWithZYOffset(matrices, redstoneRing, true, 5F + ringHeight, 15F, node.ringAlpha * node.getRedstoneAlphaMult(), 1F, overlay);
155+
if (node.getRedstoneRing().isPresent()) {
156+
RenderHelper.renderFlatTransWithZYOffset(matrices, redstoneRing, true, 5F + ringHeight, 15F, node.ringAlpha * node.getRedstoneAlphaMult(), 1F, overlay);
157+
}
158+
else {
159+
RenderHelper.renderFlatTransWithZYOffsetAndColor(matrices, redstoneRing, true, 5F + ringHeight, 15F, node.ringAlpha * node.getRedstoneAlphaMult(), 1F, overlay, color.x, color.y, color.z);
160+
}
145161

146162
if (crystal.hasOuterRing()) {
147163
var outerRing = vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(node.getOuterRing().map(PastelUpgradeSignature::outerRing).orElse(OUTER_RING)));
148-
RenderHelper.renderFlatTransWithZYOffset(matrices, outerRing, true, 5.75F + ringHeight * 2, 11F, node.ringAlpha, 1F, overlay);
164+
if (node.getOuterRing().isPresent()) {
165+
RenderHelper.renderFlatTransWithZYOffset(matrices, outerRing, true, 5.75F + ringHeight * 2, 11F, node.ringAlpha, 1F, overlay);
166+
}
167+
else {
168+
RenderHelper.renderFlatTransWithZYOffsetAndColor(matrices, outerRing, true, 5.75F + ringHeight * 2, 11F, node.ringAlpha, 1F, overlay, color.x, color.y, color.z);
169+
}
149170
}
150171

151172
matrices.translate(0.0, node.crystalHeight + crystal.yOffset, 0.0);

Diff for: src/main/java/de/dafuqs/spectrum/helpers/ColorHelper.java

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class ColorHelper {
2020
* In case a mod extends the DyeColor enum
2121
*/
2222
public static List<DyeColor> VANILLA_DYE_COLORS = Arrays.stream(DyeColor.values()).filter(dyeColor -> dyeColor.getId() < 16).toList();
23+
public static final Vector3f WASH = new Vector3f(1F, 1F, 1F);
2324

2425
public static Vector3f getRGBVec(DyeColor dyeColor) {
2526
return InkColor.ofDyeColor(dyeColor).getColorVec();

Diff for: src/main/java/de/dafuqs/spectrum/helpers/RenderHelper.java

+11
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@ public static void renderFlatTransWithZYOffset(MatrixStack matrices, VertexConsu
7676
matrices.translate(size / 2F, -height, size / 2F);
7777
}
7878

79+
public static void renderFlatTransWithZYOffsetAndColor(MatrixStack matrices, VertexConsumer vertices, boolean altAxis, float height, float scale, float alpha, float uvOffset, int overlay, float r, float g, float b) {
80+
height /= 16F;
81+
var size = scale / 16F;
82+
matrices.translate(-size / 2F, height, -size / 2F);
83+
84+
var peek = matrices.peek();
85+
var model = peek.getPositionMatrix();
86+
renderSide(model, vertices, altAxis, alpha, uvOffset, scale, scale, 0, size, 0, size, r, g, b, overlay);
87+
matrices.translate(size / 2F, -height, size / 2F);
88+
}
89+
7990
public static void renderSide(Matrix4f model, VertexConsumer vertices, boolean altAxis, float alpha, float uvOffset, float u, float v, float x1, float x2, float y1, float y2, float r, float g, float b, int overlay) {
8091
float u1 = uvOffset / 16F, v1 = uvOffset / 16F;
8192
float u2 = u1 + u / 16F, v2 = v1 + v / 16F;
Loading

0 commit comments

Comments
 (0)