package org.dynmap.fabric_1_14_4.mixin; import net.minecraft.network.ClientConnection; import net.minecraft.server.PlayerManager; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.world.dimension.DimensionType; import org.dynmap.fabric_1_14_4.event.PlayerEvents; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PlayerManager.class) public class PlayerManagerMixin { @Inject(method = "onPlayerConnect", at = @At("TAIL")) public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, CallbackInfo info) { PlayerEvents.PLAYER_LOGGED_IN.invoker().onPlayerLoggedIn(player); } @Inject(method = "remove", at = @At("HEAD")) public void remove(ServerPlayerEntity player, CallbackInfo info) { PlayerEvents.PLAYER_LOGGED_OUT.invoker().onPlayerLoggedOut(player); } @Inject(method = "respawnPlayer", at = @At("RETURN")) public void respawnPlayer(ServerPlayerEntity player, DimensionType dimension, boolean alive, CallbackInfoReturnable info) { PlayerEvents.PLAYER_RESPAWN.invoker().onPlayerRespawn(info.getReturnValue()); } }