Skip to content

Commit a1a7a2c

Browse files
author
Julia
committed
Allow deployers to give schedules to trains
1 parent 1b5271d commit a1a7a2c

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

common/src/main/java/com/railwayteam/railways/mixin/MixinStationBlock.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,23 @@
2323
import com.railwayteam.railways.mixin_interfaces.ICarriageConductors;
2424
import com.railwayteam.railways.registry.CRBlocks;
2525
import com.railwayteam.railways.registry.CREntities;
26+
import com.simibubi.create.AllItems;
2627
import com.simibubi.create.Create;
28+
import com.simibubi.create.content.contraptions.Contraption;
2729
import com.simibubi.create.content.kinetics.deployer.DeployerFakePlayer;
2830
import com.simibubi.create.content.trains.entity.Carriage;
31+
import com.simibubi.create.content.trains.entity.CarriageContraption;
32+
import com.simibubi.create.content.trains.entity.CarriageContraptionEntity;
2933
import com.simibubi.create.content.trains.entity.Train;
3034
import com.simibubi.create.content.trains.schedule.Schedule;
3135
import com.simibubi.create.content.trains.schedule.ScheduleEntry;
36+
import com.simibubi.create.content.trains.schedule.ScheduleItem;
3237
import com.simibubi.create.content.trains.schedule.condition.ScheduledDelay;
3338
import com.simibubi.create.content.trains.schedule.destination.DestinationInstruction;
3439
import com.simibubi.create.content.trains.station.GlobalStation;
3540
import com.simibubi.create.content.trains.station.StationBlock;
3641
import com.simibubi.create.content.trains.station.StationBlockEntity;
42+
import net.createmod.catnip.data.Couple;
3743
import net.createmod.catnip.math.VecHelper;
3844
import net.minecraft.core.BlockPos;
3945
import net.minecraft.nbt.CompoundTag;
@@ -45,6 +51,7 @@
4551
import net.minecraft.world.InteractionHand;
4652
import net.minecraft.world.InteractionResult;
4753
import net.minecraft.world.entity.Entity;
54+
import net.minecraft.world.entity.LivingEntity;
4855
import net.minecraft.world.entity.item.ItemEntity;
4956
import net.minecraft.world.entity.player.Player;
5057
import net.minecraft.world.item.ItemStack;
@@ -58,6 +65,7 @@
5865
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
5966

6067
import java.util.ArrayList;
68+
import java.util.List;
6169
import java.util.UUID;
6270
import java.util.concurrent.atomic.AtomicBoolean;
6371

@@ -231,6 +239,29 @@ private void deployersAssemble(BlockState pState, Level pLevel, BlockPos pPos, P
231239
}
232240
}
233241

242+
@Inject(method = "use", at = @At("HEAD"), cancellable = true, remap = true)
243+
private void deployerGiveSchedule(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit, CallbackInfoReturnable<InteractionResult> cir) {
244+
ItemStack item = pPlayer.getItemInHand(pHand);
245+
if (!pLevel.isClientSide && pPlayer instanceof DeployerFakePlayer && pLevel.getBlockEntity(pPos) instanceof StationBlockEntity stationBe) {
246+
if (stationBe.getStation() != null && stationBe.getStation().getPresentTrain() != null) {
247+
Train train = stationBe.getStation().getPresentTrain();
248+
if (train.runtime.getSchedule() == null) {
249+
Schedule schedule = ScheduleItem.getSchedule(item);
250+
if(schedule == null || schedule.entries.isEmpty())
251+
return;
252+
253+
train.runtime.setSchedule(schedule, false);
254+
item.shrink(1);
255+
pPlayer.setItemInHand(pHand, item.isEmpty() ? ItemStack.EMPTY : item);
256+
cir.setReturnValue(InteractionResult.SUCCESS);
257+
} else if(item.isEmpty()) {
258+
pPlayer.setItemInHand(pHand, train.runtime.returnSchedule());
259+
cir.setReturnValue(InteractionResult.SUCCESS);
260+
}
261+
}
262+
}
263+
}
264+
234265
private boolean disassembleAndEnterMode(ServerPlayer sender, StationBlockEntity te) {
235266
GlobalStation station = te.getStation();
236267
if (station != null) {

0 commit comments

Comments
 (0)