diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java index db77c3496..2812f2d35 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Random; +import net.minecraft.core.BlockPosition; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.level.RegionLimitedWorldAccess; import net.minecraft.world.entity.EntityTypes; @@ -119,6 +120,22 @@ public class CraftLimitedRegion extends CraftRegionAccessor implements LimitedRe return region.contains(x, y, z); } + @Override + public List getTileEntities() { + List blockStates = new ArrayList<>(); + + for (int x = -(buffer >> 4); x <= (buffer >> 4); x++) { + for (int z = -(buffer >> 4); z <= (buffer >> 4); z++) { + ProtoChunk chunk = (ProtoChunk) getHandle().getChunkAt(centerChunkX + x, centerChunkZ + z); + for (BlockPosition position : chunk.c()) { // PAIL rename getTilePositions + blockStates.add(getBlockState(position.getX(), position.getY(), position.getZ())); + } + } + } + + return blockStates; + } + @Override public Biome getBiome(int x, int y, int z) { Preconditions.checkArgument(isInRegion(x, y, z), "Coordinates %s, %s, %s are not in the region", x, y, z);