Fixed /lb tp to work with unloaded chunks

This commit is contained in:
Robin Kupper
2011-06-20 13:28:54 +02:00
parent e0d599c488
commit a87ede8f45
2 changed files with 29 additions and 14 deletions
+20
View File
@@ -7,7 +7,10 @@ import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Entity;
@@ -150,6 +153,23 @@ public class BukkitUtils
return item.getData() != null ? item.getData().getData() : 0;
}
public static int saveSpawnHeight(Location loc) {
final World world = loc.getWorld();
final Chunk chunk = world.getChunkAt(loc);
if (!world.isChunkLoaded(chunk))
world.loadChunk(chunk);
final int x = loc.getBlockX(), z = loc.getBlockZ();
int y = loc.getBlockY();
boolean lower = world.getBlockTypeIdAt(x, y, z) == 0, upper = world.getBlockTypeIdAt(x, y + 1, z) == 0;
while ((!lower || !upper) && y != 127) {
lower = upper;
upper = world.getBlockTypeIdAt(x, ++y, z) == 0;
}
while (world.getBlockTypeIdAt(x, y - 1, z) == 0 && y != 0)
y--;
return y;
}
public static class ItemStackComparator implements Comparator<ItemStack>
{
@Override