From 10822d49742914fff7c04a8a0ec08b2a22f46422 Mon Sep 17 00:00:00 2001 From: Robotia Date: Mon, 1 Feb 2016 09:13:13 -0500 Subject: [PATCH] KC Official Fix (https://gitlab.prok.pw/KCauldron/KCauldron/commit/07698c433a3681f916b18c7e3c1bb878a47fc062) --- .../ServerConfigurationManager.java.patch | 6 +++--- .../event/player/PlayerTeleportEvent.java.patch | 13 ++++++++++--- .../org/bukkit/craftbukkit/entity/CraftPlayer.java | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/patches/net/minecraft/server/management/ServerConfigurationManager.java.patch b/patches/net/minecraft/server/management/ServerConfigurationManager.java.patch index 686c61a..d8c8ab5 100644 --- a/patches/net/minecraft/server/management/ServerConfigurationManager.java.patch +++ b/patches/net/minecraft/server/management/ServerConfigurationManager.java.patch @@ -443,10 +443,10 @@ + // Cauldron start - refactor entire method for sanity. + public EntityPlayerMP respawnPlayer(EntityPlayerMP par1EntityPlayerMP, int par2, boolean par3) + { -+ return this.respawnPlayer(par1EntityPlayerMP, par2, par3, null); ++ return this.respawnPlayer(par1EntityPlayerMP, par2, par3, null, TeleportCause.DEATH); + } + -+ public EntityPlayerMP respawnPlayer(EntityPlayerMP par1EntityPlayerMP, int targetDimension, boolean returnFromEnd, Location location) ++ public EntityPlayerMP respawnPlayer(EntityPlayerMP par1EntityPlayerMP, int targetDimension, boolean returnFromEnd, Location location, TeleportCause cause) + { + // Phase 1 - check if the player is allowed to respawn in same dimension + World world = mcServer.worldServerForDimension(targetDimension); @@ -504,7 +504,7 @@ + par1EntityPlayerMP.dimension = targetDimension; + // CraftBukkit start + EntityPlayerMP entityplayermp1 = par1EntityPlayerMP; -+ entityplayermp1.clonePlayer(par1EntityPlayerMP, returnFromEnd); // KCauldron - clone player ++ entityplayermp1.clonePlayer(par1EntityPlayerMP, cause != TeleportCause.DEATH); // KCauldron - clone player + entityplayermp1.setWorld(this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension)); // make sure to update reference for bed spawn logic + entityplayermp1.playerConqueredTheEnd = false; ChunkCoordinates chunkcoordinates1; diff --git a/patches/org/bukkit/event/player/PlayerTeleportEvent.java.patch b/patches/org/bukkit/event/player/PlayerTeleportEvent.java.patch index 68dc6d0..a2f953d 100644 --- a/patches/org/bukkit/event/player/PlayerTeleportEvent.java.patch +++ b/patches/org/bukkit/event/player/PlayerTeleportEvent.java.patch @@ -1,17 +1,18 @@ --- ../src-base/minecraft/org/bukkit/event/player/PlayerTeleportEvent.java +++ ../src-work/minecraft/org/bukkit/event/player/PlayerTeleportEvent.java -@@ -55,11 +55,27 @@ +@@ -55,11 +55,28 @@ * portal */ END_PORTAL, + // Cauldron start - added cause for mods - /** ++ /** + * Indicates the teleportation was caused by a player entering a + * Mod portal + */ + MOD, + // Cauldron end -+ /** ++ DEATH, // KCauldron + /** * Indicates the teleportation was caused by an event not covered by * this enum */ @@ -28,3 +29,9 @@ } @Override +@@ -70,4 +87,4 @@ + public static HandlerList getHandlerList() { + return handlers; + } +-} ++} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 5b3e16a..4bbfbd8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -503,7 +503,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (fromWorld == toWorld) { entity.playerNetServerHandler.teleport(to); } else { - server.getHandle().respawnPlayer(entity, toWorld.dimension, false, to); // Cauldron + server.getHandle().respawnPlayer(entity, toWorld.dimension, false, to, cause); // Cauldron } return true; } @@ -1340,4 +1340,4 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return spigot; } // Spigot end -} \ No newline at end of file +}