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); + } } }