KyoriPowered / adventure

A user-interface library, formerly known as text, for Minecraft: Java Edition
https://docs.advntr.dev/
MIT License
678 stars 103 forks source link

NPE while sending a resource pack with no prompt #1075

Closed Sylfare closed 1 month ago

Sylfare commented 1 month ago

Environment: Paper 1.20.6-79-master@f175193 on Lubuntu 24.04 with Java 21

The prompt method from ResourcePackRequest.Builder is nullable. However, when the prompt is not set or set to null, I get a NullPointerException. It works when the prompt is set. (I don't know if it's Paper-related or Adventure-related?)

Example

Used resource pack

public class ResourcePackSend extends JavaPlugin implements Listener {

    public URI uri = null;
    public String hash = "e7c726200efca2f0f1f22eebe927ce28e4ac3082";
    public UUID uuid = UUID.nameUUIDFromBytes(hash.getBytes());

    @Override
    public void onEnable() {
        try {
            this.uri = new URI("https://github.com/KyoriPowered/adventure/files/15357799/example_pack.zip");
            Bukkit.getPluginManager().registerEvents(this, this);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        Bukkit.getServer().getConsoleSender().sendMessage(Component.text("[ResourcePackSend] Enabled"));

    }

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        event.getPlayer().sendResourcePacks(ResourcePackRequest.resourcePackRequest().packs(
            ResourcePackInfo.resourcePackInfo(uuid, uri, hash))
            .prompt(null)
            .asResourcePackRequest());
    }
}

Stacktrace

[22:31:38 ERROR]: Could not pass event PlayerJoinEvent to ResourcePackSend v0.0.1
java.lang.NullPointerException: null
        at java.base/java.util.Objects.requireNonNull(Objects.java:233) ~[?:?]
        at java.base/java.util.Optional.of(Optional.java:113) ~[?:?]
        at org.bukkit.craftbukkit.entity.CraftPlayer.sendResourcePacks(CraftPlayer.java:2523) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at paper_resourcepack.jar/re.sylfa.resourcepacksend.ResourcePackSend.onJoin(ResourcePackSend.java:37) ~[paper_resourcepack.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:81) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:1.20.6-79-f175193]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:627) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at net.minecraft.server.players.PlayerList.placeNewPlayer(PlayerList.java:347) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.network.ServerConfigurationPacketListenerImpl.handleConfigurationFinished(ServerConfigurationPacketListenerImpl.java:153) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.network.protocol.configuration.ServerboundFinishConfigurationPacket.handle(ServerboundFinishConfigurationPacket.java:22) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.network.protocol.configuration.ServerboundFinishConfigurationPacket.handle(ServerboundFinishConfigurationPacket.java:13) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:55) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:151) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1514) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:195) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:125) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1491) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1414) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:135) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1380) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1241) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323) ~[paper-1.20.6.jar:1.20.6-79-f175193]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
kezz commented 1 month ago

This would be an issue you'd need to open at Paper yes.