Implement Player.setBedSpawnLocation(Location). Thanks md_5

This commit is contained in:
Erik Broes 2012-01-17 22:35:31 +01:00
parent b22e727cda
commit f5f268f939
2 changed files with 22 additions and 4 deletions

View File

@ -7,6 +7,7 @@ import net.minecraft.server.EntityPlayer;
import net.minecraft.server.NBTTagCompound;
import net.minecraft.server.WorldNBTStorage;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
@ -185,4 +186,16 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
public boolean hasPlayedBefore() {
return getData() != null;
}
public Location getBedSpawnLocation() {
NBTTagCompound data = getData();
if (data.hasKey("SpawnX") && data.hasKey("SpawnY") && data.hasKey("SpawnZ")) {
String spawnWorld = data.getString("SpawnWorld");
if (spawnWorld.equals("")) {
spawnWorld = server.getWorlds().get(0).getName();
}
return new Location(server.getWorld(spawnWorld), data.getInt("SpawnX"), data.getInt("SpawnY"), data.getInt("SpawnZ"));
}
return null;
}
}

View File

@ -11,6 +11,7 @@ import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.minecraft.server.ChunkCoordinates;
import net.minecraft.server.EntityPlayer;
import net.minecraft.server.NBTTagCompound;
import net.minecraft.server.Packet131ItemData;
@ -545,18 +546,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean getAllowFlight() {
return getHandle().itemInWorldManager.player.abilities.canFly;
}
public void setAllowFlight(boolean flight) {
getHandle().itemInWorldManager.player.abilities.canFly = flight;
}
public Location getBedSpawnLocation() {
World world = getServer().getWorld(getHandle().spawnWorld);
if ((world != null) && (getHandle().getBed() != null)) {
return new Location(world, getHandle().getBed().x, getHandle().getBed().y, getHandle().getBed().z);
} else {
return null;
}
return null;
}
public void setBedSpawnLocation(Location location) {
getHandle().a(new ChunkCoordinates(location.getBlockX(), location.getBlockY(), location.getBlockZ()));
getHandle().spawnWorld = location.getWorld().getName();
}
public Map<String, Object> serialize() {