mkremins / fanciful

Fancy Bukkit message formatting
MIT License
95 stars 82 forks source link

IllegalArgumentException when using fm.text() #76

Open Swedz opened 8 years ago

Swedz commented 8 years ago

Hey!

I really love Fanciful, and I need to make a beginning message, "§e* (10) [" And then add more string after that inside of a loop.

But when I do this: fm.text(API.getUniqueIdentifier().getName(uuid)) .color(ChatColor.YELLOW) .suggest(uuid) .tooltip("§f" + API.getUniqueIdentifier().getName(uuid) + "'s UUID:","§b" + uuid);

It gives an IllegalArgumentException:

[09:00:23] [Server thread/WARN]: java.lang.IllegalArgumentException: The value must be specified. [09:00:23] [Server thread/WARN]: at com.google.common.base.Preconditions.checkArgument(Preconditions.java:125) [09:00:23] [Server thread/WARN]: at mkremins.fanciful.TextualComponent$ArbitraryTextTypeComponent.setValue(TextualComponent.java:103) [09:00:23] [Server thread/WARN]: at mkremins.fanciful.TextualComponent$ArbitraryTextTypeComponent.(TextualComponent.java:85) [09:00:23] [Server thread/WARN]: at mkremins.fanciful.TextualComponent.rawText(TextualComponent.java:225) [09:00:23] [Server thread/WARN]: at mkremins.fanciful.FancyMessage.text(FancyMessage.java:90) [09:00:23] [Server thread/WARN]: at me.Swedz.base.Commands.onCommand(Commands.java:50) [09:00:23] [Server thread/WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [09:00:23] [Server thread/WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [09:00:23] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:640) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [09:00:23] [Server thread/WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [09:00:23] [Server thread/WARN]: at java.util.concurrent.FutureTask.run(FutureTask.java:266) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:714) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [09:00:23] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [09:00:23] [Server thread/WARN]: at java.lang.Thread.run(Thread.java:745)

mkremins commented 8 years ago

From the stack trace, it looks like API.getUniqueIdentifier().getName(uuid) is returning null instead of a string. This causes Fanciful to complain because you're feeding that null value to FancyMessage.text(), which requires its argument to be a string. Maybe try checking API.getUniqueIdentifier().getName(uuid) to make sure it's doing what you want.

Swedz commented 8 years ago

I'm 100% sure it's working fine, it always returns a valid value unless the value specified is not in the database.