--- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java @@ -169,7 +169,27 @@ return k < this.generatingStep.directDependencies().size(); } + // Paper start - if loaded util + @Nullable @Override + public ChunkAccess getChunkIfLoadedImmediately(int x, int z) { + return this.getChunk(x, z, ChunkStatus.FULL, false); + } + + @Override + public final BlockState getBlockStateIfLoaded(BlockPos blockposition) { + ChunkAccess chunk = this.getChunkIfLoadedImmediately(blockposition.getX() >> 4, blockposition.getZ() >> 4); + return chunk == null ? null : chunk.getBlockState(blockposition); + } + + @Override + public final FluidState getFluidIfLoaded(BlockPos blockposition) { + ChunkAccess chunk = this.getChunkIfLoadedImmediately(blockposition.getX() >> 4, blockposition.getZ() >> 4); + return chunk == null ? null : chunk.getFluidState(blockposition); + } + // Paper end + + @Override public BlockState getBlockState(BlockPos pos) { return this.getChunk(SectionPos.blockToSectionCoord(pos.getX()), SectionPos.blockToSectionCoord(pos.getZ())).getBlockState(pos); } @@ -217,7 +237,7 @@ if (iblockdata.isAir()) { return false; } else { - if (drop) { + if (false) { // CraftBukkit - SPIGOT-6833: Do not drop during world generation BlockEntity tileentity = iblockdata.hasBlockEntity() ? this.getBlockEntity(pos) : null; Block.dropResources(iblockdata, this.level, pos, tileentity, breakingEntity, ItemStack.EMPTY); @@ -336,6 +356,13 @@ @Override public boolean addFreshEntity(Entity entity) { + // CraftBukkit start + return this.addFreshEntity(entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT); + } + + @Override + public boolean addFreshEntity(Entity entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) { + // CraftBukkit end int i = SectionPos.blockToSectionCoord(entity.getBlockX()); int j = SectionPos.blockToSectionCoord(entity.getBlockZ());