PaperSpigot-Parent/CraftBukkit-Patches/0027-Remove-dependency-on-CraftPlayer.getBedSpawnLocation.patch

31 lines
1.7 KiB
Diff
Raw Normal View History

From 1a6442a6e1941f2732cef4e0d6aa7c2c6e4aaa64 Mon Sep 17 00:00:00 2001
From: EdGruberman <ed@rjump.com>
Date: Tue, 12 Feb 2013 16:17:31 -0700
Subject: [PATCH] Remove dependency on CraftPlayer.getBedSpawnLocation; Fixes
BUKKIT-3604
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
2013-06-11 04:10:31 +02:00
index 0e3a6a1..305855b 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
2013-05-04 01:24:15 +02:00
@@ -495,7 +495,14 @@ public abstract class PlayerList {
if (exitWorld != null) {
if ((cause == TeleportCause.END_PORTAL) && (i == 0)) {
2013-03-25 08:57:00 +01:00
// THE_END -> NORMAL; use bed if available, otherwise default spawn
- exit = ((org.bukkit.craftbukkit.entity.CraftPlayer) entityplayer.getBukkitEntity()).getBedSpawnLocation();
+ ChunkCoordinates chunkcoordinates = entityplayer.getBed();
+ CraftWorld spawnWorld = (CraftWorld) this.server.server.getWorld(entityplayer.spawnWorld);
+ if (spawnWorld != null && chunkcoordinates != null) {
+ ChunkCoordinates chunkcoordinates1 = EntityHuman.getBed(spawnWorld.getHandle(), chunkcoordinates, entityplayer.isRespawnForced());
+ if (chunkcoordinates1 != null) {
+ exit = new Location(spawnWorld, chunkcoordinates1.x + 0.5, chunkcoordinates1.y, chunkcoordinates1.z + 0.5);
+ }
+ }
if (exit == null || ((CraftWorld) exit.getWorld()).getHandle().dimension != 0) {
exit = exitWorld.getWorld().getSpawnLocation();
}
--
1.8.1.2