mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
Re-add the teleport passenger/vehicel with player patch from 1.7.10
This commit is contained in:
parent
233814297b
commit
9ac5394f72
@ -0,0 +1,101 @@
|
||||
From e70c96da4657c54e7792c134b1ca6f7fe34f2249 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
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 79837ef..8925697 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -41,6 +41,15 @@ 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;
|
||||
@@ -1953,7 +1962,7 @@ 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");
|
||||
@@ -1961,6 +1970,12 @@ 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 ae75b36..f12cf8a 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -448,7 +448,27 @@ 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();
|
||||
@@ -469,6 +489,16 @@ 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;
|
||||
}
|
||||
|
||||
--
|
||||
2.4.1.windows.1
|
||||
|
Loading…
Reference in New Issue
Block a user