mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-15 10:23:42 +01:00
Early Departures
- Fixed "Station Powered" wait condition not working correctly in non-overworld dimensions
This commit is contained in:
parent
a4dc6bad54
commit
c571493ce4
2 changed files with 21 additions and 2 deletions
|
@ -5,20 +5,29 @@ import com.simibubi.create.content.logistics.trains.DimensionPalette;
|
|||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtUtils;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
public abstract class SingleTileEdgePoint extends TrackEdgePoint {
|
||||
|
||||
public ResourceKey<Level> tileDimension;
|
||||
public BlockPos tilePos;
|
||||
|
||||
public BlockPos getTilePos() {
|
||||
return tilePos;
|
||||
}
|
||||
|
||||
public ResourceKey<Level> getTileDimension() {
|
||||
return tileDimension;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tileAdded(BlockEntity tile, boolean front) {
|
||||
this.tilePos = tile.getBlockPos();
|
||||
this.tileDimension = tile.getLevel()
|
||||
.dimension();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -42,12 +51,14 @@ public abstract class SingleTileEdgePoint extends TrackEdgePoint {
|
|||
if (migration)
|
||||
return;
|
||||
tilePos = NbtUtils.readBlockPos(nbt.getCompound("TilePos"));
|
||||
tileDimension = dimensions.decode(nbt.contains("TileDimension") ? nbt.getInt("TileDimension") : -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(CompoundTag nbt, DimensionPalette dimensions) {
|
||||
super.write(nbt, dimensions);
|
||||
nbt.put("TilePos", NbtUtils.writeBlockPos(tilePos));
|
||||
nbt.putInt("TileDimension", dimensions.encode(tileDimension));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,7 +10,10 @@ import net.minecraft.core.BlockPos;
|
|||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
|
@ -26,9 +29,14 @@ public class StationPoweredCondition extends ScheduleWaitCondition {
|
|||
if (currentStation == null)
|
||||
return false;
|
||||
BlockPos stationPos = currentStation.getTilePos();
|
||||
if (!level.isLoaded(stationPos))
|
||||
ResourceKey<Level> stationDim = currentStation.getTileDimension();
|
||||
MinecraftServer server = level.getServer();
|
||||
if (server == null)
|
||||
return false;
|
||||
return level.hasNeighborSignal(stationPos);
|
||||
ServerLevel stationLevel = server.getLevel(stationDim);
|
||||
if (stationLevel == null || !stationLevel.isLoaded(stationPos))
|
||||
return false;
|
||||
return stationLevel.hasNeighborSignal(stationPos);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue