日志:
[15:38:05] [Async Chat Thread - #12/ERROR]: Could not pass event AsyncPlayerChatEvent to UniversalTeleportAnchor v4.2
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:600) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:587) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.server.network.PlayerConnection.chat(PlayerConnection.java:1942) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at net.minecraft.server.network.PlayerConnection.b(PlayerConnection.java:2064) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at net.minecraft.server.network.PlayerConnection.lambda$14(PlayerConnection.java:1795) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at net.minecraft.util.FutureChain.a(SourceFile:30) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?]
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "org.bukkit.configuration.file.FileConfiguration.getString(String)" is null
at org.terry.universalteleportanchor.SetAnchorsListener.onChat(SetAnchorsListener.java:31) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor358.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
... 12 more
[15:38:05] [Async Chat Thread - #12/INFO]: <zhishi> ta
[15:38:06] [Server thread/INFO]: zhishi was slain by Zombie
[15:38:14] [Server thread/INFO]: zhishi issued server command: /tpw world -1843.25 68.00 69.92
[15:38:14] [Server thread/WARN]: zhishi moved too quickly! 558.25,3.4375,-163.57999999999998
[15:38:16] [Async Chat Thread - #12/ERROR]: Could not pass event AsyncPlayerChatEvent to UniversalTeleportAnchor v4.2
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:600) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:587) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.server.network.PlayerConnection.chat(PlayerConnection.java:1942) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at net.minecraft.server.network.PlayerConnection.b(PlayerConnection.java:2064) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at net.minecraft.server.network.PlayerConnection.lambda$14(PlayerConnection.java:1795) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at net.minecraft.util.FutureChain.a(SourceFile:30) ~[spigot-1.20.4-R0.1-SNAPSHOT.jar:4090-Spigot-b754dcc-38b1f49]
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?]
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "org.bukkit.configuration.file.FileConfiguration.getString(String)" is null
at org.terry.universalteleportanchor.SetAnchorsListener.onChat(SetAnchorsListener.java:31) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor358.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-api-1.20.4-R0.1-SNAPSHOT.jar:?]
... 12 more
[15:38:16] [Async Chat Thread - #12/INFO]: <zhishi> wa
作者你好,
从日志来看,玩家zhishi在聊天时触发了插件UniversalTeleportAnchor v4.2的一个错误。这个错误是因为插件内部尝试获取配置文件中的一个字符串值,但该值为null,导致了NullPointerException(空指针异常)。
具体来说,在SetAnchorsListener.java的第31行代码处,插件试图从FileConfiguration对象中通过getString方法获取某个键对应的字符串,并检查该字符串是否与预期的值相等。如果返回的字符串是null,那么调用String.equals(Object)就会抛出空指针异常。这是AI说的,请问是什么原因呢,可以修复吗,AI给了一个修复方法
- 修改代码:
- 如果你有权限修改插件源代码,可以在调用getString方法后添加一个非空检查,以确保不会尝试对null值执行equals操作。例如:
String command = config.getString("commandPrefix");
if (command != null && command.equalsIgnoreCase("yourCommand")) {
// Do something
}