mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-11-14 06:24:29 +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
@ -5,20 +5,29 @@ import com.simibubi.create.content.logistics.trains.DimensionPalette;
|
|||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.nbt.NbtUtils;
|
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.LevelAccessor;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
public abstract class SingleTileEdgePoint extends TrackEdgePoint {
|
public abstract class SingleTileEdgePoint extends TrackEdgePoint {
|
||||||
|
|
||||||
|
public ResourceKey<Level> tileDimension;
|
||||||
public BlockPos tilePos;
|
public BlockPos tilePos;
|
||||||
|
|
||||||
public BlockPos getTilePos() {
|
public BlockPos getTilePos() {
|
||||||
return tilePos;
|
return tilePos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ResourceKey<Level> getTileDimension() {
|
||||||
|
return tileDimension;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tileAdded(BlockEntity tile, boolean front) {
|
public void tileAdded(BlockEntity tile, boolean front) {
|
||||||
this.tilePos = tile.getBlockPos();
|
this.tilePos = tile.getBlockPos();
|
||||||
|
this.tileDimension = tile.getLevel()
|
||||||
|
.dimension();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -42,12 +51,14 @@ public abstract class SingleTileEdgePoint extends TrackEdgePoint {
|
|||||||
if (migration)
|
if (migration)
|
||||||
return;
|
return;
|
||||||
tilePos = NbtUtils.readBlockPos(nbt.getCompound("TilePos"));
|
tilePos = NbtUtils.readBlockPos(nbt.getCompound("TilePos"));
|
||||||
|
tileDimension = dimensions.decode(nbt.contains("TileDimension") ? nbt.getInt("TileDimension") : -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(CompoundTag nbt, DimensionPalette dimensions) {
|
public void write(CompoundTag nbt, DimensionPalette dimensions) {
|
||||||
super.write(nbt, dimensions);
|
super.write(nbt, dimensions);
|
||||||
nbt.put("TilePos", NbtUtils.writeBlockPos(tilePos));
|
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.nbt.CompoundTag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
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.item.ItemStack;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
@ -26,9 +29,14 @@ public class StationPoweredCondition extends ScheduleWaitCondition {
|
|||||||
if (currentStation == null)
|
if (currentStation == null)
|
||||||
return false;
|
return false;
|
||||||
BlockPos stationPos = currentStation.getTilePos();
|
BlockPos stationPos = currentStation.getTilePos();
|
||||||
if (!level.isLoaded(stationPos))
|
ResourceKey<Level> stationDim = currentStation.getTileDimension();
|
||||||
|
MinecraftServer server = level.getServer();
|
||||||
|
if (server == null)
|
||||||
return false;
|
return false;
|
||||||
return level.hasNeighborSignal(stationPos);
|
ServerLevel stationLevel = server.getLevel(stationDim);
|
||||||
|
if (stationLevel == null || !stationLevel.isLoaded(stationPos))
|
||||||
|
return false;
|
||||||
|
return stationLevel.hasNeighborSignal(stationPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user