Skip to content

MinecraftBlockExaminer fails static-init on Paper 26.2 #24 #94

@BlvckBytes

Description

@BlvckBytes

Hey there!

I just downloaded the latest build from Jenkins and encountered the following error on startup:

[14:17:45 WARN]: [Citizens] Task #32 for Citizens v2.0.43-SNAPSHOT (build 4208) generated an exception
java.lang.ExceptionInInitializerError
        at Citizens-2.0.43-b4208.jar//net.citizensnpcs.npc.ai.CitizensNavigator.<init>(CitizensNavigator.java:84) ~[?:?]
        at Citizens-2.0.43-b4208.jar//net.citizensnpcs.npc.CitizensNPC.<init>(CitizensNPC.java:71) ~[?:?]
        at Citizens-2.0.43-b4208.jar//net.citizensnpcs.npc.CitizensNPCRegistry.createNPC(CitizensNPCRegistry.java:70) ~[?:?]
        at Citizens-2.0.43-b4208.jar//net.citizensnpcs.api.npc.SimpleNPCDataStore.loadInto(SimpleNPCDataStore.java:77) ~[?:?]
        at Citizens-2.0.43-b4208.jar//net.citizensnpcs.Citizens$CitizensLoadTask.run(Citizens.java:688) ~[?:?]
        at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-26.2.jar:26.2-24-1e3ffb9]
        at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-26.2.jar:26.2-24-1e3ffb9]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1304) ~[paper-26.2.jar:26.2-24-1e3ffb9]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:302) ~[paper-26.2.jar:26.2-24-1e3ffb9]
        at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Provided material must be a block
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:141) ~[guava-33.6.0-jre.jar:?]
        at org.bukkit.craftbukkit.CraftServer.createBlockData(CraftServer.java:2545) ~[paper-26.2.jar:26.2-24-1e3ffb9]
        at org.bukkit.craftbukkit.CraftServer.createBlockData(CraftServer.java:2518) ~[paper-26.2.jar:26.2-24-1e3ffb9]
        at org.bukkit.Bukkit.createBlockData(Bukkit.java:2490) ~[paper-api-26.2.build.24-alpha.jar:?]
        at org.bukkit.Material.createBlockData(Material.java:2951) ~[paper-api-26.2.build.24-alpha.jar:?]
        at Citizens-2.0.43-b4208.jar//net.citizensnpcs.api.astar.pathfinder.MinecraftBlockExaminer.<clinit>(MinecraftBlockExaminer.java:354) ~[?:?]
        ... 10 more

Looks like the plugin is trying to instantiate block-data for non-block types (i.e. items) - a simple Material#isBlock-check should fix it. Couldn't yet give it a shot, as I'm encountering build-errors locally and don't have time to fix them.

--- a/src/main/java/net/citizensnpcs/api/astar/pathfinder/MinecraftBlockExaminer.java
+++ b/src/main/java/net/citizensnpcs/api/astar/pathfinder/MinecraftBlockExaminer.java
@@ -351,6 +351,8 @@ public class MinecraftBlockExaminer implements BlockExaminer {
             for (Material mat : Material.values()) {
                 if (mat.name().startsWith("LEGACY"))
                     continue;
+                if (!mat.isBlock())
+                    continue;
                 if (mat.createBlockData() instanceof Wall || mat.createBlockData() instanceof Fence) {
                     NOT_JUMPABLE.add(mat);
                 }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions