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 != null && scoreboardteambase.getDeathMessageVisibility() != ScoreboardTeamBase.EnumNameTagVisibility.ALWAYS) {
- if (scoreboardteambase.getDeathMessageVisibility() == ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OTHER_TEAMS) { - if (scoreboardteambase.getDeathMessageVisibility() == ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OTHER_TEAMS) {
- this.server.getPlayerList().a((EntityHuman) this, this.getCombatTracker().getDeathMessage()); - this.server.getPlayerList().a((EntityHuman) this, this.getCombatTracker().getDeathMessage());
- } else if (scoreboardteambase.getDeathMessageVisibility() == ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OWN_TEAM) { - } else if (scoreboardteambase.getDeathMessageVisibility() == ScoreboardTeamBase.EnumNameTagVisibility.HIDE_FOR_OWN_TEAM) {
- this.server.getPlayerList().b((EntityHuman) this, this.getCombatTracker().getDeathMessage()); - 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(); + String deathMessage = event.getDeathMessage();
+ +
+ if (deathMessage != null && deathMessage.length() > 0 && flag) { // TODO: allow plugins to override? + if (deathMessage != null && deathMessage.length() > 0 && flag) { // TODO: allow plugins to override?
@ -512,7 +512,7 @@
} }
public void a(EnumHand enumhand) { public void a(EnumHand enumhand) {
@@ -955,11 +1161,139 @@ @@ -955,11 +1161,145 @@
} }
public void M() { public void M() {
@ -615,6 +615,12 @@
+ return super.toString() + "(" + this.getName() + " at " + this.locX + "," + this.locY + "," + this.locZ + ")"; + 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() { + public void reset() {
+ float exp = 0; + float exp = 0;
+ boolean keepInventory = this.world.getGameRules().getBoolean("keepInventory"); + boolean keepInventory = this.world.getGameRules().getBoolean("keepInventory");

View File

@ -103,7 +103,7 @@
public void E_() { public void E_() {
this.d(); this.d();
@@ -110,15 +182,21 @@ @@ -110,21 +182,27 @@
} }
this.minecraftServer.methodProfiler.b(); this.minecraftServer.methodProfiler.b();
@ -125,6 +125,13 @@
this.disconnect("You have been idle for too long!"); 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 @@ @@ -138,19 +216,40 @@
} }

View File

@ -442,7 +442,7 @@
+ location.setWorld(server.getWorldServer(i).getWorld()); + location.setWorld(server.getWorldServer(i).getWorld());
} }
+ WorldServer worldserver = ((CraftWorld) location.getWorld()).getHandle(); + 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 + // CraftBukkit end
worldserver.getChunkProviderServer().getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4); worldserver.getChunkProviderServer().getChunkAt((int) entityplayer1.locX >> 4, (int) entityplayer1.locZ >> 4);