From 0ba651d19c4da2ccbcd9cc7536645d9bf5a3766b Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 28 Jun 2020 16:33:57 +0200 Subject: [PATCH] Fix recording of client player's metadata after respawn (fixes #212) 1.15 removed the data tracker syncing from the spawn packet, so we now need to send that explicitly. --- .../handler/RecordingEventHandler.java | 17 +++++++---------- .../mixin/MixinNetHandlerPlayClient.java | 6 +++--- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java index 7219380a..210adc3a 100644 --- a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java @@ -99,17 +99,14 @@ public class RecordingEventHandler extends EventRegistrations { } //#endif - public void onPlayerJoin() { + public void spawnRecordingPlayer() { try { - packetListener.save(new PlayerSpawnS2CPacket(mc.player)); - } catch(Exception e1) { - e1.printStackTrace(); - } - } - - public void onPlayerRespawn() { - try { - packetListener.save(new PlayerSpawnS2CPacket(mc.player)); + ClientPlayerEntity player = mc.player; + assert player != null; + packetListener.save(new PlayerSpawnS2CPacket(player)); + //#if MC>=11500 + packetListener.save(new EntityTrackerUpdateS2CPacket(player.getEntityId(), player.getDataTracker(), true)); + //#endif lastX = lastY = lastZ = null; } catch(Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java b/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java index 497a18ec..f739ce52 100644 --- a/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java +++ b/src/main/java/com/replaymod/recording/mixin/MixinNetHandlerPlayClient.java @@ -81,7 +81,7 @@ public abstract class MixinNetHandlerPlayClient { // Only add spawn packet for our own player and only if he isn't known yet if (data.getUuid().equals(mcStatic.player.getGameProfile().getId()) && !this.playerListEntries.containsKey(data.getUuid())) { - handler.onPlayerJoin(); + handler.spawnRecordingPlayer(); } } } catch (IOException e) { @@ -96,7 +96,7 @@ public abstract class MixinNetHandlerPlayClient { //$$ public void recordOwnJoin(S01PacketJoinGame packet, CallbackInfo ci) { //$$ RecordingEventHandler handler = getRecordingEventHandler(); //$$ if (handler != null) { - //$$ handler.onPlayerJoin(); + //$$ handler.spawnRecordingPlayer(); //$$ } //$$ } //#endif @@ -116,7 +116,7 @@ public abstract class MixinNetHandlerPlayClient { public void recordOwnRespawn(PlayerRespawnS2CPacket packet, CallbackInfo ci) { RecordingEventHandler handler = getRecordingEventHandler(); if (handler != null) { - handler.onPlayerRespawn(); + handler.spawnRecordingPlayer(); } } }