CrossplatForms
CrossplatForms copied to clipboard
NullPointerException: Profile name must not be null
When opening a menu which uses textures:
skull:
textures: <base64 texture>
The game will throw this exception:
[22:07:51] [Server thread/ERROR]: Could not pass event PlayerCommandPreprocessEvent to CrossplatForms v1.5.0
java.lang.NullPointerException: Profile name must not be null
at java.util.Objects.requireNonNull(Objects.java:235) ~[?:?]
at com.mojang.authlib.GameProfile.<init>(GameProfile.java:31) ~[authlib-6.0.52.jar:?]
at dev.kejona.crossplatforms.spigot.v1_8_R3.Adapter_v1_8_R3.setSkullProfile(Adapter_v1_8_R3.java:49) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.spigot.item.SpigotInventoryFactory.skullItem(SpigotInventoryFactory.java:108) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.inventory.ConfiguredItem.convertAndResolve(ConfiguredItem.java:45) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.interfacing.java.JavaMenu.send(JavaMenu.java:73) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.interfacing.Interface.send(Interface.java:70) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.action.InterfaceAction.affectPlayer(InterfaceAction.java:66) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.action.GenericAction.affectPlayer(GenericAction.java:12) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.action.Action.lambda$affectPlayer$0(Action.java:24) ~[CrossplatForms-Spigot.jar:?]
at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
at dev.kejona.crossplatforms.action.Action.affectPlayer(Action.java:24) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.command.custom.CustomCommand.run(CustomCommand.java:55) ~[CrossplatForms-Spigot.jar:?]
at dev.kejona.crossplatforms.spigot.handler.SpigotHandler.onPreProcessCommand(SpigotHandler.java:155) ~[CrossplatForms-Spigot.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor186.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:81) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:git-Paper-405]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.20.4.jar:git-Paper-405]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[paper-1.20.4.jar:git-Paper-405]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleCommand(ServerGamePacketListenerImpl.java:2390) ~[?:?]
at org.bukkit.craftbukkit.v1_20_R3.entity.CraftPlayer.chat(CraftPlayer.java:660) ~[paper-1.20.4.jar:git-Paper-405]
at me.RockinChaos.itemjoin.item.ItemCommand.dispatchPlayerCommands(ItemCommand.java:576) ~[ItemJoin.jar:?]
at me.RockinChaos.itemjoin.item.ItemCommand.lambda$sendDispatch$3(ItemCommand.java:489) ~[ItemJoin.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.20.4.jar:git-Paper-405]
at org.bukkit.craftbukkit.v1_20_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:482) ~[paper-1.20.4.jar:git-Paper-405]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1636) ~[paper-1.20.4.jar:git-Paper-405]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:446) ~[paper-1.20.4.jar:git-Paper-405]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1515) ~[paper-1.20.4.jar:git-Paper-405]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1216) ~[paper-1.20.4.jar:git-Paper-405]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-405]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
The issue seems to rely on line 49. When 'textures' is used and is not null, 'name' could be null so it should not be accessed without checking first:
https://github.com/kejonaMC/CrossplatForms/blob/c619f169a221932b73bb0d81383c09811b5e07b8/spigot-common/v1_8_R3/src/main/java/dev/kejona/crossplatforms/spigot/v1_8_R3/Adapter_v1_8_R3.java#L38-L53