Sponge: java.lang.ClassCastException: org.spongepowered.api.text.format.TextColors$1 cannot be cast to org.spongepowered.common.text.format.SpongeTextColor

Created on 10 Mar 2018  路  6Comments  路  Source: SpongePowered/Sponge

I am currently running

  • SpongeForge version: spongeforge-1.12.2-2611-7.1.0-BETA-2955.jar
  • Java version: 1.8.0_77
  • Operating System: Windows 10

Issue Description

Code that caused the issue:

        TextColor color = Sponge.getRegistry().getType(TextColor.class, levelNode.getNode("color").getString("GRAY")).orElse(TextColors.GRAY);

        Team playerTeam = Team.builder()
            .members(Sets.newHashSet(player.getTeamRepresentation()))
            .name(player.getName())
            .color(color)
            .prefix(Text.of(color))
            .nameTagVisibility(Visibilities.ALWAYS)
            .build();

Stack trace:

java.lang.ClassCastException: org.spongepowered.api.text.format.TextColors$1 cannot be cast to org.spongepowered.common.text.format.SpongeTextColor
        at net.minecraft.scoreboard.ScorePlayerTeam.setColor(SourceFile:622) ~[bhh.class:?]
        at org.spongepowered.common.scoreboard.builder.SpongeTeamBuilder.build(SpongeTeamBuilder.java:171) ~[SpongeTeamBuilder.class:1.12.2-2611-7.1.0-BETA-2953]
        at com.negafinity.pokemonplayerlevels.scoreboard.ScoreboardManager.setUserScoreboard(ScoreboardManager.java:71) ~[ScoreboardManager.class:?]
        at com.negafinity.pokemonplayerlevels.listeners.JoinListener.onClientJoin(JoinListener.java:33) ~[JoinListener.class:?]
        at org.spongepowered.common.event.listener.JoinListener_JoinListener_onClientJoin7.handle(Unknown Source) ~[?:?]
        at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) ~[RegisteredListener.class:1.12.2-2611-7.1.0-BETA-2953]
        at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:335) [SpongeModEventManager.class:1.12.2-2611-7.1.0-BETA-2953]
        at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:312) [SpongeModEventManager.class:1.12.2-2611-7.1.0-BETA-2953]
        at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:364) [SpongeModEventManager.class:1.12.2-2611-7.1.0-BETA-2953]
        at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:427) [SpongeEventManager.class:1.12.2-2611-7.1.0-BETA-2953]
        at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:207) [SpongeImpl.class:1.12.2-2611-7.1.0-BETA-2953]
        at net.minecraft.server.management.PlayerList.initializeConnectionToPlayer(PlayerList.java:1658) [pl.class:?]
        at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:256) [NetworkDispatcher.class:?]
        at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.access$100(NetworkDispatcher.java:72) [NetworkDispatcher.class:?]

This appears to be the culprit: https://github.com/SpongePowered/SpongeCommon/blob/74080b0c75e59075f164f5151b08be395e2d17fc/src/main/java/org/spongepowered/common/mixin/core/scoreboard/MixinScorePlayerTeam.java#L122

text bug

All 6 comments

@ST-DDT I don't think so, my code sets the color to TextColors.GRAY and the exception is generated.

I just opened that file with my decompiler and it is indeed NONE. (Opening the file with a texteditor works as well).
````java
final class TextColors$1
implements TextColor
{
private final Color color = Color.BLACK;

public String getName()
{
return "NONE";
}

public Color getColor()
{
return this.color;
}

public String getId()
{
return "NONE";
}

public String toString()
{
return getId();
}
}
````

As for how that value got there: I don't know.
Maybe you can add some debug code to trace it back.

That is very odd indeed.

I still don't think this error should occur though - I passed a SpongeTextColor directly into the .color option and no exception was generated, using that as a workaround for the time-being.

Is this worth patching? If so, I've got a three-line fix ready for it.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

PurpleIsEverything picture PurpleIsEverything  路  4Comments

me4502 picture me4502  路  5Comments

XakepSDK picture XakepSDK  路  5Comments

Xemiru picture Xemiru  路  3Comments

jeffreykog picture jeffreykog  路  4Comments