diff --git a/common/src/main/java/net/lionarius/skinrestorer/SkinRestorer.java b/common/src/main/java/net/lionarius/skinrestorer/SkinRestorer.java index e536312..d8ac710 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/SkinRestorer.java +++ b/common/src/main/java/net/lionarius/skinrestorer/SkinRestorer.java @@ -1,10 +1,12 @@ package net.lionarius.skinrestorer; +import com.google.common.base.Throwables; import com.mojang.authlib.GameProfile; import com.mojang.brigadier.CommandDispatcher; import net.lionarius.skinrestorer.command.SkinCommand; import net.lionarius.skinrestorer.config.Config; import net.lionarius.skinrestorer.config.provider.BuiltInProviderConfig; +import net.lionarius.skinrestorer.exception.TransparentException; import net.lionarius.skinrestorer.platform.Services; import net.lionarius.skinrestorer.skin.SkinIO; import net.lionarius.skinrestorer.skin.SkinStorage; @@ -147,7 +149,7 @@ public final class SkinRestorer { var skinResult = result.get(); if (skinResult.isError()) - return Result., String>error(skinResult.getErrorValue().getMessage()); + throw new TransparentException(Throwables.getRootCause(skinResult.getErrorValue())); var skinValue = SkinValue.fromProviderContextWithValue(context, skinResult.getSuccessValue().orElse(null)); @@ -156,7 +158,7 @@ public final class SkinRestorer { return Result., String>success(acceptedPlayers); }, server) .exceptionally(e -> { - SkinRestorer.LOGGER.error(e.toString()); + SkinRestorer.LOGGER.error("Failed to set skin '{}:{}'", context.name(), context.argument(), e); return Result.error(e.getMessage()); }); } diff --git a/common/src/main/java/net/lionarius/skinrestorer/exception/TransparentException.java b/common/src/main/java/net/lionarius/skinrestorer/exception/TransparentException.java new file mode 100644 index 0000000..1f439bf --- /dev/null +++ b/common/src/main/java/net/lionarius/skinrestorer/exception/TransparentException.java @@ -0,0 +1,19 @@ +package net.lionarius.skinrestorer.exception; + +import org.jetbrains.annotations.NotNull; + +public class TransparentException extends RuntimeException { + public TransparentException(@NotNull Throwable cause) { + super(cause); + } + + @Override + public String getMessage() { + return this.getCause().getMessage(); + } + + @Override + public String toString() { + return this.getLocalizedMessage(); + } +} diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java index 28e588e..ca9780c 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java @@ -82,7 +82,7 @@ public abstract class ServerLoginPacketListenerImplMixin { var value = SkinValue.fromProviderContextWithValue(context, result.getSuccessValue().orElse(null)); SkinRestorer.getSkinStorage().setSkin(profile.getId(), value); } else { - SkinRestorer.LOGGER.warn("Failed to fetch skin: {}", result.getErrorValue().getMessage()); + SkinRestorer.LOGGER.warn("Failed to fetch skin '{}:{}'", context.name(), context.argument(), result.getErrorValue()); } } } diff --git a/common/src/main/java/net/lionarius/skinrestorer/skin/provider/MojangSkinProvider.java b/common/src/main/java/net/lionarius/skinrestorer/skin/provider/MojangSkinProvider.java index 795f756..56f6bff 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/skin/provider/MojangSkinProvider.java +++ b/common/src/main/java/net/lionarius/skinrestorer/skin/provider/MojangSkinProvider.java @@ -10,6 +10,7 @@ import com.mojang.authlib.yggdrasil.YggdrasilEnvironment; import com.mojang.authlib.yggdrasil.response.MinecraftProfilePropertiesResponse; import com.mojang.util.UndashedUuid; import net.lionarius.skinrestorer.SkinRestorer; +import net.lionarius.skinrestorer.exception.TransparentException; import net.lionarius.skinrestorer.skin.SkinVariant; import net.lionarius.skinrestorer.util.JsonUtils; import net.lionarius.skinrestorer.util.PlayerUtils; @@ -58,7 +59,7 @@ public final class MojangSkinProvider implements SkinProvider { var profile = MojangSkinProvider.getProfile(name); callback.onProfileLookupSucceeded(profile); } catch (IOException e) { - callback.onProfileLookupFailed(name, e); + throw new TransparentException(e); } } } @@ -69,8 +70,7 @@ public final class MojangSkinProvider implements SkinProvider { var profile = MojangSkinProvider.getProfile(name); return Optional.of(profile); } catch (IOException e) { - SkinRestorer.LOGGER.error("Failed to find profile by name", e); - throw new RuntimeException(e); + throw new TransparentException(e); } } }, SkinRestorer.getConfigDir().resolve(PROFILE_CACHE_FILENAME).toFile());