diff --git a/src/main/java/com/fibermc/essentialcommands/mixin/PlayerManagerMixin.java b/src/main/java/com/fibermc/essentialcommands/mixin/PlayerManagerMixin.java index dc93b57..18a5f7c 100644 --- a/src/main/java/com/fibermc/essentialcommands/mixin/PlayerManagerMixin.java +++ b/src/main/java/com/fibermc/essentialcommands/mixin/PlayerManagerMixin.java @@ -55,17 +55,24 @@ public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity play ) public ServerWorld onPlayerConnect_firstConnect_spawnPositionOverride( ServerWorld original, - @Local(ordinal = 0) ServerPlayerEntity player, + @Local(ordinal = 0, argsOnly = true) ServerPlayerEntity player, @Local(ordinal = 0) NbtCompound playerNbt ) { if (playerNbt != null) { // player data existed, definitely isn't first join return original; } + MinecraftLocation[] location = new MinecraftLocation[1]; PlayerDataManager.handleRespawnAtEcSpawn(null, (spawnPos) -> { location[0] = spawnPos; }); + + if (location[0] == null) { + // EC respawner doesn't want the player on EC spawn + return original; + } + player.setPosition(location[0].pos()); return original.getServer().getWorld(location[0].dim()); } @@ -104,7 +111,7 @@ public void onRespawnPlayer( )) public void onRespawnPlayer_forResawnLocationOverwrite( CallbackInfoReturnable cir - , @Local(ordinal = 0) ServerPlayerEntity oldServerPlayerEntity + , @Local(ordinal = 0, argsOnly = true) ServerPlayerEntity oldServerPlayerEntity , @Local(ordinal = 0) LocalRef playerSpawnpointBlockPos , @Local(ordinal = 0) LocalRef> respawnPosition , @Local(ordinal = 1) LocalRef serverWorld2 @@ -124,7 +131,7 @@ public void onRespawnPlayer_forResawnLocationOverwrite( )) public void onRespawnPlayer_afterSetPosition( CallbackInfoReturnable cir - , @Local(ordinal = 0) ServerPlayerEntity oldServerPlayerEntity + , @Local(ordinal = 0, argsOnly = true) ServerPlayerEntity oldServerPlayerEntity , @Local(ordinal = 1) ServerPlayerEntity serverPlayerEntity ) { PlayerDataManager.handleRespawnAtEcSpawn(oldServerPlayerEntity, (spawnLoc) -> {