Skip to content

Commit 185d558

Browse files
committed
feat: crossing gates
1 parent 9fa660d commit 185d558

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1828
-34
lines changed

src/client/java/me/znepb/roadworks/mixin/DebugScreenMixin.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import me.znepb.roadworks.RoadworksRegistry;
44
import me.znepb.roadworks.attachment.LinkableAttachment;
55
import me.znepb.roadworks.container.PostContainerBlockEntity;
6+
import me.znepb.roadworks.train.CrossingGateAttachment;
67
import net.minecraft.client.MinecraftClient;
78
import net.minecraft.client.gui.hud.DebugHud;
89
import net.minecraft.util.Formatting;
@@ -44,6 +45,12 @@ public void getRightText(CallbackInfoReturnable<List<String>> cir) {
4445
value.add("Link position: " + ((LinkableAttachment) attachment).getLinkPosition());
4546
}
4647
}
48+
49+
if(attachment instanceof CrossingGateAttachment) {
50+
value.add("Gate progress: " + ((CrossingGateAttachment) attachment).getProgress());
51+
value.add("Active: " + ((CrossingGateAttachment) attachment).isActive());
52+
value.add("In motion: " + ((CrossingGateAttachment) attachment).isInMotion());
53+
}
4754
}
4855
}
4956
}

src/client/kotlin/me/znepb/roadworks/RoadworksClient.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ object RoadworksClient : ClientModInitializer {
6565
if(screenHandler is SignEditorScreenHandler) {
6666
screenHandler.setBlockPosition(syncData.pos)
6767
screenHandler.setAttachmentUUID(syncData.uuid)
68-
RoadworksMain.logger.info("Synced blockpos and signuuid: data $syncData")
6968
}
7069
}
7170
}
@@ -85,6 +84,7 @@ object RoadworksClient : ClientModInitializer {
8584
AttachmentRendererFactories.register(RoadworksRegistry.ModAttachments.FIVE_HEAD_TRAFFIC_SIGNAL_ATTACHMENT_LEFT_RIGHT, ::FiveHeadSignalAttachmentRenderer)
8685
AttachmentRendererFactories.register(RoadworksRegistry.ModAttachments.TRAIN_BELL, ::TrainBellAttachmentRenderer)
8786
AttachmentRendererFactories.register(RoadworksRegistry.ModAttachments.TRAIN_SIGNAL, ::TrainSignalAttachmentRenderer)
87+
AttachmentRendererFactories.register(RoadworksRegistry.ModAttachments.CROSSING_GATE, ::CrossingGateAttachmentRenderer)
8888

8989
logger.info("Registering attachment renderers")
9090
attachmentRenderers = AttachmentRendererFactories.reload()

src/client/kotlin/me/znepb/roadworks/init/ModelLoader.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ class ModelLoader {
3636
TrainSignalAttachmentRenderer.BEACON_BASE,
3737
TrainSignalAttachmentRenderer.BEACON_BACKBEAM,
3838
TrainSignalAttachmentRenderer.BEACON_OFF,
39-
TrainSignalAttachmentRenderer.BEACON_ON
39+
TrainSignalAttachmentRenderer.BEACON_ON,
40+
CrossingGateAttachmentRenderer.HINGE,
41+
CrossingGateAttachmentRenderer.GATE_ARM
4042
)
4143

4244
init {
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package me.znepb.roadworks.render.attachments
2+
3+
import me.znepb.roadworks.RoadworksMain
4+
import me.znepb.roadworks.RoadworksMain.logger
5+
import me.znepb.roadworks.container.AttachmentContainerBlockEntity
6+
import me.znepb.roadworks.train.CrossingGateAttachment
7+
import me.znepb.roadworks.util.RenderUtils
8+
import net.minecraft.client.render.TexturedRenderLayers
9+
import net.minecraft.client.render.VertexConsumer
10+
import net.minecraft.client.render.VertexConsumerProvider
11+
import net.minecraft.client.util.math.MatrixStack
12+
import org.joml.Vector3d
13+
14+
class CrossingGateAttachmentRenderer : AttachmentRenderer<CrossingGateAttachment> {
15+
companion object {
16+
val HINGE = RoadworksMain.ModId("block/crossing_arm_hinge")
17+
val GATE_ARM = RoadworksMain.ModId("block/crossing_gate_arm_extension")
18+
}
19+
20+
21+
override fun render(
22+
attachment: CrossingGateAttachment,
23+
blockEntity: AttachmentContainerBlockEntity,
24+
tickDelta: Float,
25+
matrices: MatrixStack,
26+
vertexConsumers: VertexConsumerProvider,
27+
light: Int,
28+
overlay: Int,
29+
offset: Vector3d
30+
) {
31+
val buffer: VertexConsumer = vertexConsumers.getBuffer(TexturedRenderLayers.getEntityTranslucentCull())
32+
val facing = attachment.facing.opposite
33+
val progress = attachment.getProgress(tickDelta)
34+
35+
matrices.push()
36+
matrices.translate(0.5F, 0.5F, 0.5F)
37+
matrices.multiply(
38+
facing.rotationQuaternion.rotateXYZ(
39+
(Math.PI / 2).toFloat(),
40+
Math.PI.toFloat(),
41+
Math.PI.toFloat() + (Math.PI.toFloat() * progress * 0.5F)
42+
)
43+
)
44+
matrices.translate(-0.5F, -0.5F, -0.5F)
45+
matrices.translate(offset.x, offset.y, -offset.z - 1.0 / 16.0)
46+
RenderUtils.renderModel(matrices, buffer, light, overlay, HINGE, null)
47+
matrices.pop()
48+
49+
if(progress > 0 && progress < 1) {
50+
for (i in 0..<attachment.getExtensionCount()) {
51+
matrices.push()
52+
matrices.translate(0.5F, 0.5F, 0.5F)
53+
matrices.multiply(
54+
facing.rotationQuaternion.rotateXYZ(
55+
(Math.PI / 2).toFloat(),
56+
Math.PI.toFloat(),
57+
Math.PI.toFloat() + (Math.PI.toFloat() * progress * 0.5F)
58+
)
59+
)
60+
matrices.translate(-0.5F, -0.5F, -0.5F)
61+
matrices.translate(offset.x + i + 1, offset.y, -offset.z - 1.0 / 16.0)
62+
RenderUtils.renderModel(matrices, buffer, light, overlay, GATE_ARM, null)
63+
matrices.pop()
64+
}
65+
}
66+
}
67+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
// 1.20.1 2024-11-30T23:34:42.8879925 Roadworks/Language (en_us)
2-
6de2595bf04ff168897bf61e169809136e8d538f assets\roadworks\lang\en_us.json
1+
// 1.20.1 2025-02-09T23:55:42.8428079 Roadworks/Language (en_us)
2+
3b586695f0127d407aa4fcb65300c35028dca239 assets\roadworks\lang\en_us.json
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// 1.20.1 2024-11-30T23:34:42.8874916 Roadworks/Tags for minecraft:block
1+
// 1.20.1 2025-02-09T23:55:42.8418073 Roadworks/Tags for minecraft:block
22
d3aacdd06358cd6ffd273e2db8516b719fc0deb2 data\roadworks\tags\blocks\standalone_markings.json
33
b007ad12c3c45db36f651fa35b4b78b2ae28ad59 data\roadworks\tags\blocks\marking.json

0 commit comments

Comments
 (0)