From 45fc70b6fc5f70d2e4106445c31dda4d0bb89d48 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Sun, 31 May 2015 01:52:17 -0500 Subject: [PATCH] Re-add the teleport passenger/vehicel with player patch from 1.7.10 --- ...leport-passenger-vehicle-with-player.patch | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Spigot-Server-Patches/Teleport-passenger-vehicle-with-player.patch diff --git a/Spigot-Server-Patches/Teleport-passenger-vehicle-with-player.patch b/Spigot-Server-Patches/Teleport-passenger-vehicle-with-player.patch new file mode 100644 index 000000000..7acce93ac --- /dev/null +++ b/Spigot-Server-Patches/Teleport-passenger-vehicle-with-player.patch @@ -0,0 +1,99 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Sun, 31 May 2015 01:44:02 -0500 +Subject: [PATCH] Teleport passenger/vehicle with player + + +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { + } + // CraftBukikt end + ++ // PaperSpigot start - Teleport passenger/vehicle with player ++ public void retrack() { ++ final EntityTracker entityTracker = ((WorldServer) world).getTracker(); ++ entityTracker.untrackEntity(this); ++ entityTracker.track(this); ++ ++ } ++ // PaperSpigot end ++ + private static final AxisAlignedBB a = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D); + private static int entityCount; + private int id; +@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { + // minecraftserver.getPlayerList().changeWorld(this, j, worldserver, worldserver1); + boolean before = worldserver1.chunkProviderServer.forceChunkLoad; + worldserver1.chunkProviderServer.forceChunkLoad = true; +- worldserver1.getMinecraftServer().getPlayerList().repositionEntity(this, exit, portal); ++ //worldserver1.getMinecraftServer().getPlayerList().repositionEntity(this, exit, portal); // PaperSpigot - Teleport passenger/vehicle with player, no... this entity is dead; + worldserver1.chunkProviderServer.forceChunkLoad = before; + // CraftBukkit end + this.world.methodProfiler.c("reloading"); +@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { + + if (entity != null) { + entity.n(this); ++ ++ // PaperSpigot start - Teleport passenger/vehicle with player, move entity to new location ++ exit.getBlock(); // force load ++ entity.setLocation(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch()); ++ // PaperSpigot end ++ + /* CraftBukkit start - We need to do this... + if (j == 1 && i == 1) { + BlockPosition blockposition = this.world.r(worldserver1.getSpawn()); +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + } + + // If this player is riding another entity, we must dismount before teleporting. +- entity.mount(null); ++ // PaperSpigot start - Teleport passenger/vehicle with player ++ //entity.mount(null); ++ ++ Entity vehicle = entity.vehicle; ++ Entity passenger = entity.passenger; ++ if (vehicle != null) { ++ vehicle.passenger = null; ++ vehicle.teleportTo(location, false); ++ vehicle = vehicle.getBukkitEntity().getHandle(); ++ entity.vehicle = vehicle; ++ vehicle.passenger = entity; ++ } ++ ++ if (passenger != null) { ++ passenger.vehicle = null; ++ passenger.teleportTo(location, false); ++ passenger = passenger.getBukkitEntity().getHandle(); ++ entity.passenger = passenger; ++ passenger.vehicle = entity; ++ } ++ // PaperSpigot end + + // Update the From Location + from = event.getFrom(); +@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + } else { + server.getHandle().moveToWorld(entity, toWorld.dimension, true, to, true); + } ++ ++ // PaperSpigot start - Teleport passenger/vehicle with player ++ if (vehicle != null) { ++ vehicle.retrack(); ++ //entity.retrack(); ++ } ++ if (passenger != null) { ++ passenger.retrack(); ++ } ++ // PaperSpigot end + return true; + } + +-- \ No newline at end of file