From f18b3cdc769e145c0823f4b43ff4f8271fdfb617 Mon Sep 17 00:00:00 2001
From: EdGruberman <ed@rjump.com>
Date: Sun, 9 Dec 2012 17:37:37 -0600
Subject: [PATCH] [Bleeding] Fix NPE with a null bedSpawnLocation. Fixes
 BUKKIT-1500

---
 src/main/java/net/minecraft/server/EntityHuman.java       | 1 +
 .../java/org/bukkit/craftbukkit/entity/CraftPlayer.java   | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 64abd7305b..1e5723d3b1 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -1094,6 +1094,7 @@ public abstract class EntityHuman extends EntityLiving implements ICommandListen
         } else {
             this.c = null;
             this.d = false;
+            this.spawnWorld = ""; // CraftBukkit
         }
     }
 
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index efa4e05aac..3c1ff7305b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -614,8 +614,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
     }
 
     public void setBedSpawnLocation(Location location, boolean override) {
-        getHandle().setRespawnPosition(new ChunkCoordinates(location.getBlockX(), location.getBlockY(), location.getBlockZ()), override);
-        getHandle().spawnWorld = location.getWorld().getName();
+        if (location == null) {
+            getHandle().setRespawnPosition(null, override);
+        } else {
+            getHandle().setRespawnPosition(new ChunkCoordinates(location.getBlockX(), location.getBlockY(), location.getBlockZ()), override);
+            getHandle().spawnWorld = location.getWorld().getName();
+        }
     }
 
     public void hidePlayer(Player player) {