inventory-framework icon indicating copy to clipboard operation
inventory-framework copied to clipboard

java.lang.NullPointerException: ComponentPhase root cannot be null

Open Azodox opened this issue 1 year ago • 1 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

🐛 Describe the bug

I know it's not the first issue about this error but it was marked as fixed and deployed in 3.1.0, however, it's the version i'm using, so maybe it has not been deployed yet?

java.lang.NullPointerException: ComponentPhase root cannot be null
2024-03-04T14:54:43.064207338Z 	at java.util.Objects.requireNonNull(Unknown Source) ~[?:?]
2024-03-04T14:54:43.064210313Z 	at fr.azodox.lib.inventoryframework.component.AbstractComponent.getRoot(AbstractComponent.java:69) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064212558Z 	at fr.azodox.lib.inventoryframework.component.PaginationImpl.toString(PaginationImpl.java:666) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064214681Z 	at fr.azodox.lib.inventoryframework.state.DefaultStateValueHost.initializeState(DefaultStateValueHost.java:62) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064216765Z 	at fr.azodox.lib.inventoryframework.context.ContextOpenInterceptor.intercept(ContextOpenInterceptor.java:30) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064218809Z 	at fr.azodox.lib.inventoryframework.context.ContextOpenInterceptor.intercept(ContextOpenInterceptor.java:15) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064220843Z 	at fr.azodox.lib.inventoryframework.pipeline.PipelineContext.loop(PipelineContext.java:43) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064222887Z 	at fr.azodox.lib.inventoryframework.pipeline.PipelineContext.proceed(PipelineContext.java:53) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064224911Z 	at fr.azodox.lib.inventoryframework.pipeline.PipelineContext.execute(PipelineContext.java:59) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064226974Z 	at fr.azodox.lib.inventoryframework.pipeline.Pipeline.execute(Pipeline.java:128) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064228978Z 	at fr.azodox.lib.inventoryframework.context.OpenContext.simulateOpen(OpenContext.java:187) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064233256Z 	at fr.azodox.lib.inventoryframework.PlatformView.open(PlatformView.java:82) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064235300Z 	at fr.azodox.lib.inventoryframework.IFViewFrame.internalOpen(IFViewFrame.java:156) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064237314Z 	at fr.azodox.lib.inventoryframework.ViewFrame.open(ViewFrame.java:111) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064249156Z 	at fr.azodox.lib.inventoryframework.ViewFrame.open(ViewFrame.java:73) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064251300Z 	at fr.azodox.lib.inventoryframework.ViewFrame.open(ViewFrame.java:61) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064254836Z 	at fr.azodox.gtb.game.Game.openTeamChoiceView(Game.kt:79) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064256930Z 	at fr.azodox.gtb.listener.inventory.PlayerInteractionListener.onInteract(PlayerInteractionListener.kt:24) ~[get-the-beacon-0.1.1.jar:?]
2024-03-04T14:54:43.064258974Z 	at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor4.execute(Unknown Source) ~[?:?]
2024-03-04T14:54:43.064260958Z 	at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
2024-03-04T14:54:43.064262952Z 	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:81) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:git-Paper-446]
2024-03-04T14:54:43.064264975Z 	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
2024-03-04T14:54:43.064267981Z 	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064270015Z 	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064272008Z 	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
2024-03-04T14:54:43.064273992Z 	at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:593) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064276016Z 	at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:549) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064278040Z 	at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:544) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064280064Z 	at org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:540) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064282087Z 	at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItem(ServerGamePacketListenerImpl.java:1993) ~[?:?]
2024-03-04T14:54:43.064284061Z 	at net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:32) ~[?:?]
2024-03-04T14:54:43.064286055Z 	at net.minecraft.network.protocol.game.ServerboundUseItemPacket.a(ServerboundUseItemPacket.java:8) ~[?:?]
2024-03-04T14:54:43.064288249Z 	at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:54) ~[?:?]
2024-03-04T14:54:43.064290293Z 	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064292256Z 	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
2024-03-04T14:54:43.064296073Z 	at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
2024-03-04T14:54:43.064298087Z 	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1455) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064300041Z 	at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064301994Z 	at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
2024-03-04T14:54:43.064303928Z 	at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1432) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064305892Z 	at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1355) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064307865Z 	at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
2024-03-04T14:54:43.064309789Z 	at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1333) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064311743Z 	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1222) ~[paper-1.20.4.jar:git-Paper-446]
2024-03-04T14:54:43.064456552Z 	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-446]

Error thrown when trying to open a View which is a paginated view

✔️ Expected behavior

The view should open.

👣 Steps to Reproduce

Here's how I open it:

    fun openTeamChoiceView(player: Player) {
        val viewFrame = ViewFrame.create(plugin)
        viewFrame.with(GameTeamChoiceView(this.teams)).register()
        viewFrame.open(GameTeamChoiceView::class.java, player)
    }

And here's how I create my view:

package fr.azodox.gtb.game.team.view

import fr.azodox.gtb.game.team.GameTeam
import fr.azodox.gtb.lang.LanguageCore
import fr.azodox.gtb.util.ItemBuilder
import me.devnatan.inventoryframework.View
import me.devnatan.inventoryframework.ViewConfigBuilder
import me.devnatan.inventoryframework.component.Pagination
import me.devnatan.inventoryframework.state.State

class GameTeamChoiceView(private val teams: List<GameTeam>) : View() {

    private lateinit var paginationState: State<Pagination>
    override fun onInit(config: ViewConfigBuilder) {
        config.cancelOnDrag()
        config.cancelOnClick()
        config.cancelOnPickup()
        config.cancelOnDrop()

        config.size(3 * 9)
        config.title(
            LanguageCore.languages["fr-fr"]!!.message("lobby.team.choice.title")
        )
        this.paginationState = paginationState(teams.toMutableList()) { ctx, builder, _, team ->
            val itemBuilder = ItemBuilder(team.icon, 1).displayName(team.displayName)

            if (team.contains(ctx.player.uniqueId)) {
                itemBuilder.lore(
                    LanguageCore.languages["fr-fr"]!!
                        .message("lobby.team.choice.lore.already-in")
                        .replaceText {
                            it.match("%team%").replacement(team.name)
                            it.match("%size%").replacement(team.size.toString())
                        }
                )
            }else {
                itemBuilder.lore(
                    LanguageCore.languages["fr-fr"]!!
                        .message("lobby.team.choice.lore.not.joined")
                        .replaceText {
                            it.match("%team%").replacement(team.name)
                            it.match("%size%").replacement(team.size.toString())
                        }
                )
            }

            builder.withItem(
                itemBuilder.build()
            ).onClick { context ->
                val player = context.player
                if (!team.contains(player.uniqueId)) {
                    team.join(player.uniqueId)

                    player.sendMessage(
                        LanguageCore.languages["fr-fr"]!!
                            .message("lobby.team.choice.joined")
                            .replaceText {
                                it.match("%team%").replacement(team.name)
                            }
                    )
                }else{
                    team.leave(player.uniqueId)

                    player.sendMessage(
                        LanguageCore.languages["fr-fr"]!!
                            .message("lobby.team.choice.left")
                            .replaceText {
                                it.match("%team%").replacement(team.name)
                            }
                    )
                }
                context.closeForPlayer()
            }
        }
        config.scheduleUpdate(20L)
    }
}

💻 Platform

  • [ ] Bukkit
  • [ ] Sponge
  • [X] Other

⭐ Server Version

1.20.4

📚 Library Version

implementation 'me.devnatan:inventory-framework-platform-bukkit:3.1.0-rc'

✍️ Additional context

No response

Azodox avatar Mar 04 '24 15:03 Azodox

Thx!! Working on it 🤙🏽

devnatan avatar Mar 13 '24 11:03 devnatan