SPIGOT-1903, MC-98153: Portal Location Sync Issues

This commit is contained in:
md_5 2016-10-23 14:00:35 +11:00
parent d86d282f63
commit 2e39de698d
3 changed files with 21 additions and 8 deletions

View File

@ -189,17 +189,17 @@
+ }
+ }
+ }
+
+ IChatBaseComponent chatmessage = this.getCombatTracker().getDeathMessage();
+
+ String deathmessage = chatmessage.toPlainText();
+ org.bukkit.event.entity.PlayerDeathEvent event = CraftEventFactory.callPlayerDeathEvent(this, loot, deathmessage, keepInventory);
- if (scoreboardteambase != null && scoreboardteambase.getDeathMessageVisibility() != ScoreboardTeamBase.EnumNameTagVisibility.ALWAYS) {
- if (scoreboardteambase.getDeathMessageVisibility() == ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OTHER_TEAMS) {
- this.server.getPlayerList().a((EntityHuman) this, this.getCombatTracker().getDeathMessage());
- } else if (scoreboardteambase.getDeathMessageVisibility() == ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OWN_TEAM) {
- this.server.getPlayerList().b((EntityHuman) this, this.getCombatTracker().getDeathMessage());
+ IChatBaseComponent chatmessage = this.getCombatTracker().getDeathMessage();
+
+ String deathmessage = chatmessage.toPlainText();
+ org.bukkit.event.entity.PlayerDeathEvent event = CraftEventFactory.callPlayerDeathEvent(this, loot, deathmessage, keepInventory);
+
+ String deathMessage = event.getDeathMessage();
+
+ if (deathMessage != null && deathMessage.length() > 0 && flag) { // TODO: allow plugins to override?
@ -512,7 +512,7 @@
}
public void a(EnumHand enumhand) {
@@ -955,11 +1161,139 @@
@@ -955,11 +1161,145 @@
}
public void M() {
@ -615,6 +615,12 @@
+ return super.toString() + "(" + this.getName() + " at " + this.locX + "," + this.locY + "," + this.locZ + ")";
+ }
+
+ // SPIGOT-1903, MC-98153
+ public void forceSetPositionRotation(double x, double y, double z, float yaw, float pitch) {
+ this.setPositionRotation(x, y, z, yaw, pitch);
+ this.playerConnection.d();
+ }
+
+ public void reset() {
+ float exp = 0;
+ boolean keepInventory = this.world.getGameRules().getBoolean("keepInventory");

View File

@ -103,7 +103,7 @@
public void E_() {
this.d();
@@ -110,15 +182,21 @@
@@ -110,21 +182,27 @@
}
this.minecraftServer.methodProfiler.b();
@ -125,6 +125,13 @@
this.disconnect("You have been idle for too long!");
}
}
- private void d() {
+ public void d() { // PAIL: syncPosition, private->public
this.l = this.player.locX;
this.m = this.player.locY;
this.n = this.player.locZ;
@@ -138,19 +216,40 @@
}

View File

@ -442,7 +442,7 @@
+ location.setWorld(server.getWorldServer(i).getWorld());
}
+ WorldServer worldserver = ((CraftWorld) location.getWorld()).getHandle();
+ entityplayer1.setLocation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
+ entityplayer1.forceSetPositionRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
+ // CraftBukkit end
worldserver.getChunkProviderServer().getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);