package modchest.event; import modchest.REServerMod; import modchest.util.setAndGetMultiButtonsSpawn; import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents; import net.minecraft.nbt.NbtCompound; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class playerAfterRespawnEvent implements ServerPlayerEvents.AfterRespawn { //Wenn die Multi-Spawn mod verwendet wurde, muss der Vanillaspawn wieder gesetzt werden @Override public void afterRespawn(ServerPlayerEntity oldPlayer, ServerPlayerEntity newPlayer, boolean alive) { setAndGetMultiButtonsSpawn setAndGet = new setAndGetMultiButtonsSpawn(); //Damit die Methoden benutzt werden koennen, muss ein Objekt erstellt werden; ist aber egal, weil eh keine Daten in dieser Klasse gespeichert werden NbtCompound nbt = setAndGet.getMultiSpawnVanilla(newPlayer); //holt sich den nbt-tag if (nbt != null) { try { int[] location = nbt.getIntArray("location"); //holt sich den gespeicherten Ort BlockPos blockPos = new BlockPos(location[0], location[1], location[2]); String[] parts = nbt.getString("dimension").split(":"); //holt sich die gespeicherte Dimension; trennt den String entspreichend; damit sollte es auch funktionieren, sollte eine Mod weitere Dimensionen hinzufuegen parts = parts[2].split("]"); RegistryKey dim = RegistryKey.of(Registry.WORLD_KEY, new Identifier(parts[0])); float angle = nbt.getFloat("angle"); //Und den blickwinkel newPlayer.setSpawnPoint(dim, blockPos, angle, true, false); } catch (Exception e) { REServerMod.LOGGER.info("Following error when trying set " + newPlayer.getDisplayName() + "'s Vanilla Spawn: " + e); } } } }