From b7b01f1c6fbf889ae9bfcdb5b34c5ccfa48d5ba0 Mon Sep 17 00:00:00 2001 From: nea Date: Thu, 31 Aug 2023 18:19:06 +0200 Subject: Fix profile viewer for missing uuid pets --- .../nea/firmament/gui/profileviewer/ProfileViewer.kt | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/main/kotlin/moe/nea/firmament/gui') diff --git a/src/main/kotlin/moe/nea/firmament/gui/profileviewer/ProfileViewer.kt b/src/main/kotlin/moe/nea/firmament/gui/profileviewer/ProfileViewer.kt index 5561476..e811663 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/profileviewer/ProfileViewer.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/profileviewer/ProfileViewer.kt @@ -9,16 +9,15 @@ package moe.nea.firmament.gui.profileviewer import io.github.cottonmc.cotton.gui.client.CottonClientScreen import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription import io.github.cottonmc.cotton.gui.widget.WTabPanel -import java.util.* -import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource -import kotlinx.coroutines.launch -import net.minecraft.text.Text import moe.nea.firmament.Firmament import moe.nea.firmament.apis.Member import moe.nea.firmament.apis.PlayerData import moe.nea.firmament.apis.Profile import moe.nea.firmament.apis.Routes import moe.nea.firmament.util.ScreenUtil +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource +import net.minecraft.text.Text +import java.util.* class ProfileViewer( val primaryPlayer: UUID, @@ -44,29 +43,32 @@ class ProfileViewer( } companion object { - fun onCommand(source: FabricClientCommandSource, name: String) { + suspend fun onCommand(source: FabricClientCommandSource, name: String) { source.sendFeedback(Text.translatable("firmament.pv.lookingup", name)) - Firmament.coroutineScope.launch { + try { val uuid = Routes.getUUIDForPlayerName(name) if (uuid == null) { source.sendError(Text.translatable("firmament.pv.noplayer", name)) - return@launch + return } val name = Routes.getPlayerNameForUUID(uuid) ?: name val names = mapOf(uuid to (name)) val data = Routes.getAccountData(uuid) if (data == null) { source.sendError(Text.translatable("firmament.pv.noprofile", name)) - return@launch + return } val accountData = mapOf(data.uuid to data) val profiles = Routes.getProfiles(uuid) val profile = profiles?.profiles?.find { it.selected } if (profile == null) { source.sendFeedback(Text.translatable("firmament.pv.noprofile", name)) - return@launch + return } ScreenUtil.setScreenLater(CottonClientScreen(ProfileViewer(uuid, names, accountData, profile))) + } catch (e: Exception) { + Firmament.logger.error("Error loading profile data for $name", e) + source.sendError(Text.translatable("firmament.pv.badprofile", name, e.message)) } } } -- cgit