From 284def319ae823bf2fc4f520869d2905d875b537 Mon Sep 17 00:00:00 2001 From: Pierre Kisters Date: Sun, 16 Aug 2020 03:22:37 +0200 Subject: [PATCH] fixed respawn event (player returning from end to overworld) --- .../fabric_1_16_1/mixin/PlayerManagerMixin.java | 4 ++-- .../fabric_1_16_1/mixin/ServerPlayerEntityMixin.java | 12 ++++++++---- .../fabric_1_16_2/mixin/PlayerManagerMixin.java | 4 ++-- .../fabric_1_16_2/mixin/ServerPlayerEntityMixin.java | 12 ++++++++---- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/PlayerManagerMixin.java b/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/PlayerManagerMixin.java index 15974b7b..a988dc0a 100644 --- a/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/PlayerManagerMixin.java +++ b/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/PlayerManagerMixin.java @@ -22,8 +22,8 @@ public class PlayerManagerMixin { PlayerEvents.PLAYER_LOGGED_OUT.invoker().onPlayerLoggedOut(player); } - @Inject(method = "respawnPlayer", at = @At("TAIL")) + @Inject(method = "respawnPlayer", at = @At("RETURN")) public void respawnPlayer(ServerPlayerEntity player, boolean alive, CallbackInfoReturnable info) { - PlayerEvents.PLAYER_RESPAWN.invoker().onPlayerRespawn(player); + PlayerEvents.PLAYER_RESPAWN.invoker().onPlayerRespawn(info.getReturnValue()); } } diff --git a/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/ServerPlayerEntityMixin.java b/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/ServerPlayerEntityMixin.java index 33fbc806..7bd93895 100644 --- a/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/ServerPlayerEntityMixin.java +++ b/fabric-1.16.1/src/main/java/org/dynmap/fabric_1_16_1/mixin/ServerPlayerEntityMixin.java @@ -12,15 +12,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ServerPlayerEntity.class) public class ServerPlayerEntityMixin { - @Inject(method = "teleport", at = @At("TAIL")) + @Inject(method = "teleport", at = @At("RETURN")) public void teleport(ServerWorld targetWorld, double x, double y, double z, float yaw, float pitch, CallbackInfo info) { ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; - PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + if (targetWorld != player.world) { + PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + } } - @Inject(method = "changeDimension", at = @At("TAIL")) + @Inject(method = "changeDimension", at = @At("RETURN")) public void changeDimension(ServerWorld destination, CallbackInfoReturnable info) { ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; - PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + if (!player.removed) { + PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + } } } diff --git a/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/PlayerManagerMixin.java b/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/PlayerManagerMixin.java index eed0e530..f7a8defd 100644 --- a/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/PlayerManagerMixin.java +++ b/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/PlayerManagerMixin.java @@ -22,8 +22,8 @@ public class PlayerManagerMixin { PlayerEvents.PLAYER_LOGGED_OUT.invoker().onPlayerLoggedOut(player); } - @Inject(method = "respawnPlayer", at = @At("TAIL")) + @Inject(method = "respawnPlayer", at = @At("RETURN")) public void respawnPlayer(ServerPlayerEntity player, boolean alive, CallbackInfoReturnable info) { - PlayerEvents.PLAYER_RESPAWN.invoker().onPlayerRespawn(player); + PlayerEvents.PLAYER_RESPAWN.invoker().onPlayerRespawn(info.getReturnValue()); } } diff --git a/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/ServerPlayerEntityMixin.java b/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/ServerPlayerEntityMixin.java index 1c45738c..654f1a82 100644 --- a/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/ServerPlayerEntityMixin.java +++ b/fabric-1.16.2/src/main/java/org/dynmap/fabric_1_16_2/mixin/ServerPlayerEntityMixin.java @@ -12,15 +12,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ServerPlayerEntity.class) public class ServerPlayerEntityMixin { - @Inject(method = "teleport", at = @At("TAIL")) + @Inject(method = "teleport", at = @At("RETURN")) public void teleport(ServerWorld targetWorld, double x, double y, double z, float yaw, float pitch, CallbackInfo info) { ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; - PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + if (targetWorld != player.world) { + PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + } } - @Inject(method = "moveToWorld", at = @At("TAIL")) + @Inject(method = "moveToWorld", at = @At("RETURN")) public void moveToWorld(ServerWorld destination, CallbackInfoReturnable info) { ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; - PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + if (!player.removed) { + PlayerEvents.PLAYER_CHANGED_DIMENSION.invoker().onPlayerChangedDimension(player); + } } }