diff --git a/src/main/java/org/dimdev/dimdoors/pockets/generator/ChunkGenerator.java b/src/main/java/org/dimdev/dimdoors/pockets/generator/ChunkGenerator.java index 356fd27c..bef7495a 100644 --- a/src/main/java/org/dimdev/dimdoors/pockets/generator/ChunkGenerator.java +++ b/src/main/java/org/dimdev/dimdoors/pockets/generator/ChunkGenerator.java @@ -9,11 +9,13 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.world.ServerLightingProvider; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; +import net.minecraft.util.Util; import net.minecraft.util.math.*; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.ChunkRegion; +import net.minecraft.world.HeightLimitView; import net.minecraft.world.Heightmap; import net.minecraft.world.chunk.*; import net.minecraft.world.gen.GenerationStep; @@ -32,6 +34,7 @@ import org.dimdev.dimdoors.world.pocket.VirtualLocation; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; public class ChunkGenerator extends PocketGenerator { @@ -95,7 +98,7 @@ public class ChunkGenerator extends PocketGenerator { ArrayList protoChunks = new ArrayList<>(); for (int z = 0; z < chunkSizeZ; z++) { for (int x = 0; x < chunkSizeX; x++) { - ProtoChunk protoChunk = new ProtoChunk(new ChunkPos(pocket.getOrigin().add(x * 16, 0, z * 16)), UpgradeData.NO_UPGRADE_DATA); + ProtoChunk protoChunk = new ProtoChunk(new ChunkPos(pocket.getOrigin().add(x * 16, 0, z * 16)), UpgradeData.NO_UPGRADE_DATA, world); protoChunk.setLightingProvider(genWorld.getLightingProvider()); protoChunks.add(protoChunk); } @@ -114,7 +117,11 @@ public class ChunkGenerator extends PocketGenerator { ((ProtoChunk) protoChunk).setStatus(ChunkStatus.BIOMES); } for (Chunk protoChunk : protoChunks) { - genWorldChunkGenerator.populateNoise(genWorld, genWorld.getStructureAccessor().forRegion(protoRegion), protoChunk); + try { + genWorldChunkGenerator.populateNoise(Util.getMainWorkerExecutor(), genWorld.getStructureAccessor().forRegion(protoRegion), protoChunk).get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } ((ProtoChunk) protoChunk).setStatus(ChunkStatus.NOISE); } for (Chunk protoChunk : protoChunks) { @@ -199,15 +206,15 @@ public class ChunkGenerator extends PocketGenerator { @Override public Chunk getChunk(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) { Chunk chunk = super.getChunk(chunkX, chunkZ, leastStatus, false); - return chunk == null ? new ProtoChunkHack(new ChunkPos(chunkX, chunkZ), UpgradeData.NO_UPGRADE_DATA) : chunk; + return chunk == null ? new ProtoChunkHack(new ChunkPos(chunkX, chunkZ), UpgradeData.NO_UPGRADE_DATA, this) : chunk; } // TODO: Override getSeed() } private static class ProtoChunkHack extends ProtoChunk { // exists solely to make some calls in the non utilized chunks faster - public ProtoChunkHack(ChunkPos pos, UpgradeData upgradeData) { - super(pos, upgradeData); + public ProtoChunkHack(ChunkPos pos, UpgradeData upgradeData, HeightLimitView world) { + super(pos, upgradeData, world); } @Override diff --git a/src/main/java/org/dimdev/dimdoors/rift/registry/PocketEntrancePointer.java b/src/main/java/org/dimdev/dimdoors/rift/registry/PocketEntrancePointer.java index 860b337f..dda64207 100644 --- a/src/main/java/org/dimdev/dimdoors/rift/registry/PocketEntrancePointer.java +++ b/src/main/java/org/dimdev/dimdoors/rift/registry/PocketEntrancePointer.java @@ -11,18 +11,6 @@ import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; public class PocketEntrancePointer extends RegistryVertex { // TODO: PocketRiftPointer superclass? - public static final Codec CODEC = RecordCodecBuilder.create(instance -> { - return instance.group( - DynamicSerializableUuid.CODEC.fieldOf("id").forGetter(a -> a.id), - World.CODEC.fieldOf("pocketDim").forGetter(a -> a.world), - Codec.INT.fieldOf("pocketId").forGetter(a -> a.pocketId) - ).apply(instance, (id, pocketDim, pocketId) -> { - PocketEntrancePointer pointer = new PocketEntrancePointer(pocketDim, pocketId); - pointer.id = id; - return pointer; - }); - }); - public int pocketId; public PocketEntrancePointer(RegistryKey pocketDim, int pocketId) { diff --git a/src/main/java/org/dimdev/dimdoors/rift/targets/LimboTarget.java b/src/main/java/org/dimdev/dimdoors/rift/targets/LimboTarget.java index 8d6cdc70..6e3e21a4 100644 --- a/src/main/java/org/dimdev/dimdoors/rift/targets/LimboTarget.java +++ b/src/main/java/org/dimdev/dimdoors/rift/targets/LimboTarget.java @@ -16,7 +16,6 @@ public class LimboTarget extends VirtualTarget implements EntityTarget { @Override public boolean receiveEntity(Entity entity, float yawOffset) { TeleportUtil.teleport(entity, ModDimensions.LIMBO_DIMENSION, entity.getPos(), yawOffset); - //FabricDimensions.teleport(entity, entity.getServer().getWorld(LIMBO)); return true; } diff --git a/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketExitTarget.java b/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketExitTarget.java index 222711d2..12815e83 100644 --- a/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketExitTarget.java +++ b/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketExitTarget.java @@ -52,9 +52,9 @@ public class PrivatePocketExitTarget extends VirtualTarget implements EntityTarg @Override public void register() { super.register(); - PocketDirectory privatePocketRegistry = DimensionalRegistry.instance().getPocketDirectory(this.location.world); + PocketDirectory privatePocketRegistry = DimensionalRegistry.getPocketDirectory(this.location.world); Pocket pocket = privatePocketRegistry.getPocketAt(this.location.pos); - DimensionalRegistry.instance().getRiftRegistry().addPocketEntrance(pocket, this.location); + DimensionalRegistry.getRiftRegistry().addPocketEntrance(pocket, this.location); } @Override diff --git a/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketTarget.java b/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketTarget.java index 6c11f208..c42565e8 100644 --- a/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketTarget.java +++ b/src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketTarget.java @@ -66,7 +66,7 @@ public class PrivatePocketTarget extends VirtualTarget implements EntityTarget { if (item instanceof DyeItem) { if (pocket.addDye(EntityUtils.getOwner(entity), ((DyeItem) item).getColor())) { - entity.remove(); + entity.remove(Entity.RemovalReason.DISCARDED); } else { ((EntityTarget) blockEntity).receiveEntity(entity, relativeYaw); }