From 200f3c922268bf3efba5c6e7bc328bf6b8d2e0b1 Mon Sep 17 00:00:00 2001 From: ProgrammerLP Date: Fri, 18 Apr 2025 14:42:59 +0200 Subject: [PATCH 1/4] all actors on a train now can be controlled with one single contraption control --- .../ContraptionControlsMovingInteraction.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java index 8c5700c37f..1c211efee3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java @@ -3,6 +3,10 @@ import java.util.Iterator; import java.util.List; +import com.simibubi.create.content.trains.entity.Carriage; +import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; +import com.simibubi.create.content.trains.entity.Train; + import org.apache.commons.lang3.tuple.MutablePair; import com.simibubi.create.AllPackets; @@ -95,6 +99,21 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand ContraptionControlsBlockEntity.sendStatus(player, filter, !disable); send(contraptionEntity, filter, disable); + if (contraptionEntity instanceof CarriageContraptionEntity cce) { + Carriage carriage = cce.getCarriage(); + Train train = carriage.train; + for (Carriage c : train.carriages) { + Contraption cpt = c.anyAvailableEntity().getContraption(); + + cpt.setActorsActive(filter, !disable); + ContraptionControlsBlockEntity.sendStatus(player, filter, !disable); + send(cpt.entity, filter, disable); + + AllSoundEvents.CONTROLLER_CLICK.play(player.level(), null, + BlockPos.containing(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)), 1, disable ? 0.8f : 1.5f); + } + } + AllSoundEvents.CONTROLLER_CLICK.play(player.level(), null, BlockPos.containing(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)), 1, disable ? 0.8f : 1.5f); From 30d9c36da19fdd8138c423cc006d1177c3c2b850 Mon Sep 17 00:00:00 2001 From: ProgrammerLP Date: Mon, 19 May 2025 20:47:14 +0200 Subject: [PATCH 2/4] Contraption controls with a "TRAIN_CONTROL" tagged block as their target now affect all carriages of a train --- .../create/tags/items/train_controlled.json | 5 ++++ .../java/com/simibubi/create/AllTags.java | 1 + .../ContraptionControlsMovingInteraction.java | 29 ++++--------------- 3 files changed, 12 insertions(+), 23 deletions(-) create mode 100644 src/generated/resources/data/create/tags/items/train_controlled.json diff --git a/src/generated/resources/data/create/tags/items/train_controlled.json b/src/generated/resources/data/create/tags/items/train_controlled.json new file mode 100644 index 0000000000..487405bb87 --- /dev/null +++ b/src/generated/resources/data/create/tags/items/train_controlled.json @@ -0,0 +1,5 @@ +{ + "values": [ + + ] +} diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index f421cf960d..6aed2202e0 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -180,6 +180,7 @@ public enum AllItemTags { BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"), CASING, CONTRAPTION_CONTROLLED, + TRAIN_CONTROLLED, CREATE_INGOTS, CRUSHED_RAW_MATERIALS, INVALID_FOR_TRACK_PAVING, diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java index b0f8d0d017..4584b99d71 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java @@ -3,9 +3,7 @@ import java.util.Iterator; import java.util.List; -import com.simibubi.create.content.trains.entity.Carriage; -import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; -import com.simibubi.create.content.trains.entity.Train; +import com.simibubi.create.AllTags.AllItemTags; import org.apache.commons.lang3.tuple.MutablePair; @@ -37,7 +35,7 @@ public class ContraptionControlsMovingInteraction extends MovingInteractionBehav @Override public boolean handlePlayerInteraction(Player player, InteractionHand activeHand, BlockPos localPos, - AbstractContraptionEntity contraptionEntity) { + AbstractContraptionEntity contraptionEntity) { Contraption contraption = contraptionEntity.getContraption(); MutablePair actor = contraption.getActorAt(localPos); @@ -102,30 +100,15 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand ContraptionControlsBlockEntity.sendStatus(player, filter, !disable); send(contraptionEntity, filter, disable); - if (contraptionEntity instanceof CarriageContraptionEntity cce) { - Carriage carriage = cce.getCarriage(); - Train train = carriage.train; - for (Carriage c : train.carriages) { - Contraption cpt = c.anyAvailableEntity().getContraption(); - - cpt.setActorsActive(filter, !disable); - ContraptionControlsBlockEntity.sendStatus(player, filter, !disable); - send(cpt.entity, filter, disable); - - AllSoundEvents.CONTROLLER_CLICK.play(player.level(), null, - BlockPos.containing(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)), 1, disable ? 0.8f : 1.5f); - } - } - AllSoundEvents.CONTROLLER_CLICK.play(player.level(), null, BlockPos.containing(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)), 1, disable ? 0.8f : 1.5f); if (!(contraptionEntity instanceof CarriageContraptionEntity cce)) return true; - if (!filter.is(ItemTags.DOORS)) + if (!(filter.is(ItemTags.DOORS) || filter.is(AllItemTags.TRAIN_CONTROLLED.tag))) return true; - - // Special case: Doors are toggled on all carriages of a train + + // Special case: Doors and "TRAIN_CONTROLLED" tagged blocks are toggled on all carriages of a train Carriage carriage = cce.getCarriage(); Train train = carriage.train; for (Carriage c : train.carriages) { @@ -147,7 +130,7 @@ private void send(AbstractContraptionEntity contraptionEntity, ItemStack filter, } private boolean elevatorInteraction(BlockPos localPos, AbstractContraptionEntity contraptionEntity, - ElevatorContraption contraption, MovementContext ctx) { + ElevatorContraption contraption, MovementContext ctx) { Level level = contraptionEntity.level(); if (!level.isClientSide()) { BlockPos pos = BlockPos.containing(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)); From 5d69bfb4ed4319338a09359b2ad0d0e811c05ae9 Mon Sep 17 00:00:00 2001 From: ProgrammerLP Date: Tue, 20 May 2025 12:28:20 +0200 Subject: [PATCH 3/4] doors are now included in the "TRAIN_CONTROLLED" tag. --- .../data/create/tags/items/train_controlled.json | 8 ++++++-- .../ContraptionControlsMovingInteraction.java | 4 ++-- .../create/foundation/data/BuilderTransformers.java | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/generated/resources/data/create/tags/items/train_controlled.json b/src/generated/resources/data/create/tags/items/train_controlled.json index 487405bb87..a1f766933b 100644 --- a/src/generated/resources/data/create/tags/items/train_controlled.json +++ b/src/generated/resources/data/create/tags/items/train_controlled.json @@ -1,5 +1,9 @@ { "values": [ - + "create:andesite_door", + "create:brass_door", + "create:copper_door", + "create:train_door", + "create:framed_glass_door" ] -} +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java index 4584b99d71..c3a95aba99 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java @@ -105,10 +105,10 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand if (!(contraptionEntity instanceof CarriageContraptionEntity cce)) return true; - if (!(filter.is(ItemTags.DOORS) || filter.is(AllItemTags.TRAIN_CONTROLLED.tag))) + if (!filter.is(AllItemTags.TRAIN_CONTROLLED.tag)) return true; - // Special case: Doors and "TRAIN_CONTROLLED" tagged blocks are toggled on all carriages of a train + // Special case: "TRAIN_CONTROLLED" tagged blocks are toggled on all carriages of a train Carriage carriage = cce.getCarriage(); Train train = carriage.train; for (Carriage c : train.carriages) { diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 3643c038c9..71f92f944a 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -173,6 +173,7 @@ public static NonNullUnaryOperator lr.add(block, lr.createDoorTable(block))) .item() .tag(ItemTags.DOORS) + .tag(AllItemTags.TRAIN_CONTROLLED.tag) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .model((c, p) -> p.blockSprite(c, p.modLoc("item/" + type + "_door"))) .build(); From 73e06779c15d78a937b5e84c5b64aac84982958e Mon Sep 17 00:00:00 2001 From: ProgrammerLP Date: Fri, 13 Jun 2025 14:44:18 +0200 Subject: [PATCH 4/4] fixed misleading comment --- .../ContraptionControlsMovingInteraction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java index c3a95aba99..afe1446c8c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java @@ -108,7 +108,7 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand if (!filter.is(AllItemTags.TRAIN_CONTROLLED.tag)) return true; - // Special case: "TRAIN_CONTROLLED" tagged blocks are toggled on all carriages of a train + // Special case: "TRAIN_CONTROLLED" tagged block items are toggled on all carriages of a train Carriage carriage = cce.getCarriage(); Train train = carriage.train; for (Carriage c : train.carriages) {