mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-11-10 12:02:48 +01:00
Fix schematic deployment crash caused by some Mekanism blocks
This commit is contained in:
parent
51c0e347b8
commit
2bedc94bc6
2 changed files with 105 additions and 3 deletions
|
@ -1,20 +1,40 @@
|
||||||
package com.simibubi.create.foundation.utility.worldWrappers;
|
package com.simibubi.create.foundation.utility.worldWrappers;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.simibubi.create.foundation.utility.worldWrappers.chunk.EmptierChunk;
|
||||||
import com.simibubi.create.foundation.utility.worldWrappers.chunk.WrappedChunk;
|
import com.simibubi.create.foundation.utility.worldWrappers.chunk.WrappedChunk;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.fluid.FluidState;
|
||||||
|
import net.minecraft.fluid.Fluids;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.Util;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.ChunkPos;
|
import net.minecraft.util.math.ChunkPos;
|
||||||
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.world.IBlockReader;
|
import net.minecraft.world.IBlockReader;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.biome.Biome;
|
||||||
|
import net.minecraft.world.biome.BiomeContainer;
|
||||||
|
import net.minecraft.world.biome.BiomeRegistry;
|
||||||
import net.minecraft.world.chunk.AbstractChunkProvider;
|
import net.minecraft.world.chunk.AbstractChunkProvider;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
import net.minecraft.world.chunk.ChunkStatus;
|
import net.minecraft.world.chunk.ChunkStatus;
|
||||||
|
import net.minecraft.world.chunk.EmptyChunk;
|
||||||
import net.minecraft.world.chunk.IChunk;
|
import net.minecraft.world.chunk.IChunk;
|
||||||
import net.minecraft.world.lighting.WorldLightManager;
|
import net.minecraft.world.lighting.WorldLightManager;
|
||||||
|
import net.minecraft.world.server.ChunkHolder;
|
||||||
|
|
||||||
public class WrappedChunkProvider extends AbstractChunkProvider {
|
public class WrappedChunkProvider extends AbstractChunkProvider {
|
||||||
private PlacementSimulationWorld world;
|
private PlacementSimulationWorld world;
|
||||||
|
@ -52,11 +72,11 @@ public class WrappedChunkProvider extends AbstractChunkProvider {
|
||||||
return getChunk(x, z);
|
return getChunk(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WrappedChunk getChunk(int x, int z) {
|
public IChunk getChunk(int x, int z) {
|
||||||
long pos = ChunkPos.asLong(x, z);
|
long pos = ChunkPos.asLong(x, z);
|
||||||
|
|
||||||
if (chunks == null)
|
if (chunks == null)
|
||||||
return null;
|
return new EmptierChunk();
|
||||||
|
|
||||||
return chunks.computeIfAbsent(pos, $ -> new WrappedChunk(world, x, z));
|
return chunks.computeIfAbsent(pos, $ -> new WrappedChunk(world, x, z));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
package com.simibubi.create.foundation.utility.worldWrappers.chunk;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.fluid.FluidState;
|
||||||
|
import net.minecraft.fluid.Fluids;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
import net.minecraft.world.lighting.WorldLightManager;
|
||||||
|
import net.minecraft.world.server.ChunkHolder;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
public class EmptierChunk extends Chunk {
|
||||||
|
|
||||||
|
public EmptierChunk() {
|
||||||
|
super(null, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlockState getBlockState(BlockPos p_180495_1_) {
|
||||||
|
return Blocks.VOID_AIR.getDefaultState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FluidState getFluidState(BlockPos p_204610_1_) {
|
||||||
|
return Fluids.EMPTY.getDefaultState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public WorldLightManager getWorldLightManager() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLightValue(BlockPos p_217298_1_) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEntity(Entity p_76612_1_) { }
|
||||||
|
|
||||||
|
public void removeEntity(Entity p_76622_1_) { }
|
||||||
|
|
||||||
|
public void removeEntityAtIndex(Entity p_76608_1_, int p_76608_2_) { }
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public TileEntity getTileEntity(BlockPos p_177424_1_, Chunk.CreateEntityType p_177424_2_) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTileEntity(TileEntity p_150813_1_) { }
|
||||||
|
|
||||||
|
public void addTileEntity(BlockPos p_177426_1_, TileEntity p_177426_2_) { }
|
||||||
|
|
||||||
|
public void removeTileEntity(BlockPos p_177425_1_) { }
|
||||||
|
|
||||||
|
public void markDirty() { }
|
||||||
|
|
||||||
|
public void getEntitiesWithinAABBForEntity(@Nullable Entity p_177414_1_, AxisAlignedBB p_177414_2_, List<Entity> p_177414_3_, Predicate<? super Entity> p_177414_4_) { }
|
||||||
|
|
||||||
|
public <T extends Entity> void getEntitiesOfTypeWithinAABB(Class<? extends T> p_177430_1_, AxisAlignedBB p_177430_2_, List<T> p_177430_3_, Predicate<? super T> p_177430_4_) { }
|
||||||
|
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEmptyBetween(int p_76606_1_, int p_76606_2_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChunkHolder.LocationType getLocationType() {
|
||||||
|
return ChunkHolder.LocationType.BORDER;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue