--- a/net/minecraft/server/commands/CommandSpreadPlayers.java +++ b/net/minecraft/server/commands/CommandSpreadPlayers.java @@ -90,7 +90,7 @@ if (entity instanceof EntityHuman) { set.add(entity.getTeam()); } else { - set.add((Object) null); + set.add((ScoreboardTeamBase) null); // CraftBukkit - decompile error } } @@ -299,7 +299,7 @@ for (boolean flag2 = iblockaccess.getBlockState(blockposition_mutableblockposition).isAir(); blockposition_mutableblockposition.getY() > iblockaccess.getMinBuildHeight(); flag2 = flag1) { blockposition_mutableblockposition.move(EnumDirection.DOWN); - flag1 = iblockaccess.getBlockState(blockposition_mutableblockposition).isAir(); + flag1 = getBlockState(iblockaccess, blockposition_mutableblockposition).isAir(); // CraftBukkit if (!flag1 && flag2 && flag) { return blockposition_mutableblockposition.getY() + 1; } @@ -312,7 +312,7 @@ public boolean isSafe(IBlockAccess iblockaccess, int i) { BlockPosition blockposition = new BlockPosition(this.x, (double) (this.getSpawnY(iblockaccess, i) - 1), this.z); - IBlockData iblockdata = iblockaccess.getBlockState(blockposition); + IBlockData iblockdata = getBlockState(iblockaccess, blockposition); // CraftBukkit Material material = iblockdata.getMaterial(); return blockposition.getY() < i && !material.isLiquid() && material != Material.FIRE; @@ -322,5 +322,12 @@ this.x = MathHelper.nextDouble(randomsource, d0, d2); this.z = MathHelper.nextDouble(randomsource, d1, d3); } + + // CraftBukkit start - add a version of getBlockState which force loads chunks + private static IBlockData getBlockState(IBlockAccess iblockaccess, BlockPosition position) { + ((WorldServer) iblockaccess).getChunkSource().getChunk(position.getX() >> 4, position.getZ() >> 4, true); + return iblockaccess.getBlockState(position); + } + // CraftBukkit end } }