Spigot version: 1.12.2
BetonQuest version: 1.9.6 and #882
--------------------[New debug session]--------------------
[04.01.2020 11:27:33] DEBUG: Command executing done
[04.01.2020 11:27:39] DEBUG: FALSE: condition default.60级 for player JunZe
[04.01.2020 11:27:39] DEBUG: TRUE: inverted condition default.60级 for player JunZe
[04.01.2020 11:27:41] DEBUG: Firing event default.技能潜修 for JunZe
[04.01.2020 11:27:46] DEBUG: Condition check in "default.除妖2a" objective for player huan
[04.01.2020 11:27:57] DEBUG: Condition check in "default.除妖2a" objective for player huan
[04.01.2020 11:28:08] DEBUG: Condition check in "default.除妖1b" objective for player wukong
[04.01.2020 11:28:10] DEBUG: There are 0 objectives, 7 tags, 0 points, 3 journal entries and 0 items loaded for player YxLouyi
[04.01.2020 11:28:10] DEBUG: Inserting data for YxLouyi
[04.01.2020 11:28:11] DEBUG: Condition check in "default.除妖1b" objective for player wukong
[04.01.2020 11:28:20] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:23] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:23] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:24] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:24] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:24] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:24] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:24] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:25] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:25] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:25] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:25] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:25] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:26] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:26] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:26] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:26] DEBUG: Player slxuan787057 is in conversation right now, returning.
[04.01.2020 11:28:26] DEBUG: Player slxuan787057 is in conversation right now, returning.
This problem has only recently emerged: players cannot right-click on the NPC to start a conversation, nor can they fight monsters or be hit by monsters. They have been in the conversation with NPC, and can only be solved by restarting the server. It's as if the player is stuck in the conversation forever and cannot get out. I can make sure that everything is set up correctly, because I have been using this plugin for more than a year, this problem has never occurred before, and it has only been this way since the number of players recently increased.
`[11:32:20] [Server thread/WARN]: [BetonQuest] Task #7853683 for BetonQuest v1.9.6 generated an exception
java.lang.NullPointerException: null`
No errors in # 882, but the same goes wrong.
First, more than a dozen players are using these NPC conversations at the same time. After a few hours, a player will suddenly have a lot of this situation:
Then he will no longer be able to talk to any NPC. This prompt will appear every time he clicks on the NPC, and he will not be able to fight monsters or be hit by monsters. He will always be trapped in the dialogue until the server restarts.
I think it may be caused by too many players talking to the NPC at the same time.
BetonQuest version: 1.12-dev#882
Server version: git-Spigot-79a30d7-acbc348 (MC: 1.12.2)
Hooked into:
Citizens (2.0.24-SNAPSHOT (build 1583)), HolographicDisplays (2.4.0), MythicMobs (4.7.2-FREE)
, PlaceholderAPI (2.9.2), PlayerPoints (2.1.5-SNAPSHOT), ProtocolLib (4.4.0), SkillAPI (1.9),
Vault (1.6.7-b${env.TRAVIS_BUILD_NUMBER}), WorldEdit (6.1.9;caf0ad9), WorldGuard (6.2.2-SNAP
SHOT;8eeab68)
I made sure there aren't duplicates of this report (use Search)
Thanks for the detailed logs
Is there anything else near that null pointer exception?
Do the debug logs spam over and over or do they appear each time an NPC is clicked?
感谢您的详细日志
空指针异常附近还有其他内容吗?
调试日志是一遍又一遍的垃圾邮件,还是每次单击NPC都会显示?
[12:15:49 WARN]: [BetonQuest] Task #247909 for BetonQuest v2.0-preview.27 generated an exception
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.conversation.ConversationData.getEventIDs(ConversationData.java:354) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$PlayerEventRunner.run(Conversation.java:589) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
java.lang.NullPointerException: null
at org.bukkit.event.HandlerList.unregister(HandlerList.java:163) ~[mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.event.HandlerList.unregisterAll(HandlerList.java:82) ~[mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at lk.vexview.i.o.?m.end(ic:19) ~[VexView2.5.jar:?]
at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:286) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$ConversationEnder.run(Conversation.java:652) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [mcmxy1.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
The above warn will appear in both version 1.9.6 and v2.0-preview.27, except that # 882 only shows the following null without specific information.
[11:32:20] [Server thread/WARN]: [BetonQuest] Task #7853683 for BetonQuest v1.9.6 generated an exception
java.lang.NullPointerException: null
Every player trapped in the dialogue will see the following message in the debug every time he clicks:
[04.01.2020 11:28:26] DEBUG: Player slxuan787057 is in conversation right now, returning.
Ahh this looks like something reported recently on spigot (I assume by you?). I'll check it out and see what's happening in the code.
It almost feels like a conversation pointer error (perhaps pointing to one that doesn't exist?) that then traps the player in the conversation from that point but I'll try replicate.
Ahh this looks like something reported recently on spigot (I assume by you?). I'll check it out and see what's happening in the code.
It almost feels like a conversation pointer error (perhaps pointing to one that doesn't exist?) that then traps the player in the conversation from that point but I'll try replicate.
Yes, that's me, because it's difficult to get the verification code for github registration in China, I didn't get it until today. I really wanted to get in touch with you in the past few days because this plugin is too good and important for me, and I really like it.
This is a part of the conversation and related configuration that I wrote. I will still get a lot of task warn with this part of the test. This is really a great plugin. It would be better if this bug can be fixed.
default.zip
Hopefully this should solve the issue. Whatever build is newer than 883 on https://betonquest.pl.
The cause still seems to be a conversation pointer that is not where but I can't locate it (I'll take anotehr look later). My fix just checks if this is the case and will not crash the system instead.
Here's a special build that is the same as 884 but also provides an entry in the log that indicates which conversation, player and option the error occurs when it happens. May help with finding the cause. You'll need to unzip it as GitHub doesn't allow 'jar' files to be attached to comments.
I can provide similar for 1.9.6 if you need.
Here's a special build that is the same as 884 but also provides an entry in the log that indicates which conversation, player and option the error occurs when it happens. May help with finding the cause. You'll need to unzip it as GitHub doesn't allow 'jar' files to be attached to comments.
I can provide similar for 1.9.6 if you need.
OK, I will test the latest version of betonquest right away and submit the debug and other information to you.
If there is a version similar to 1.9.6, it is even better, because I can't use the default_conversation_IO that the third-party plugin hooks in, which makes me distressed.
I'll build a test 1.9.6 one for you. Out of interest sake which 3rd party plugin doesn't work?
Here's a test compile of 1.9.6 with the error logging.
BetonQuest-1.9.6.zip
This is a plugin written by a Chinese. It must be used with the mod, and then set betonquest to default_conversation_IO: vexview. It can make betonquest's dialog displayed in a more game-like way, which is very convenient.
I only have the 1.12.2 version of the mod, I packed it into the zip together.

Ah yeah I'm familiar with that plugin. Unfortunately closed source and I'm not sure if LK520 has written any that support the dev versions of BQ. We are going to release v1.11 to spigot soon which may help 3rd party devs to update.
I've edited your post to remove the attachment as its possible the author may not wish to have it available for general download.
Ah yeah I'm familiar with that plugin. Unfortunately closed source and I'm not sure if LK520 has written any that support the dev versions of BQ.
I've edited your post to remove the attachment as its possible the author may not wish to have it available for general download.
OK, I think the author did have such a request, I'm very sorry. vexview is indeed a convenient plugin that works well with betonquest, although it can't wrap lines.
Whilst not quite the same check out the new menu conversation IO. Doesn't require Forge.
logs.zip
[13:51:47 ERROR]: [BetonQuest] Caught conversation error in conversation: 货商-大唐官府 in option:null
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.conversation.ConversationData.getPointers(ConversationData.java:301) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$ResponsePrinter.run(Conversation.java:587) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:63) ~[mcmxy1.jar:git-Paper-1509]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) ~[mcmxy1.jar:git-Paper-1509]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[mcmxy1.jar:git-Paper-1509]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_221]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_221]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
All errors point to the same location: [BetonQuest] Caught conversation error in conversation: 货商-大唐官府 in option:null
This is my conversation configuration:
货商-大唐官府.zip
This is the latest log. Almost all players have been dragged into the dialogue and cannot come out. At this time, the player cannot talk to the NPC, cannot fight monsters, and cannot see other players talking, as if they are always in the dialogue, but Players are free to walk or do other things. This situation can only be resolved by restarting the server.
[05.01.2020 14:31:26] ERROR: Caught conversation error in conversation: 货商-天宫 in option:null
[05.01.2020 14:31:26] ERROR: Caught conversation error in conversation: 货商-天宫 in option:null
[05.01.2020 14:31:26] ERROR: Caught conversation error in conversation: 货商-天宫 in option:null
[05.01.2020 14:31:26] ERROR: Caught conversation error in conversation: 货商-天宫 in option:null
[05.01.2020 14:31:26] ERROR: Caught conversation error in conversation: 货商-天宫 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:48] ERROR: Caught conversation error in conversation: 货商-五庄观 in option:null
[05.01.2020 14:31:55] ERROR: Caught conversation error in conversation: 货商-狮驼岭 in option:null
Here's another try. I check for the error earlier and provide some more info in the error that I'll need.
So far it looks like an invalid option is being selected (ie if there are 3 options and the player picks option 4, or option -1. The new debug will shed some more light).
A slightly better one. If the error occurs I'll also end the conversation so your players don't get stuck forever.
A slightly better one. If the error occurs I'll also end the conversation so your players don't get stuck forever.
OK, I will test and return debug and logs soon, thank you for your work.
`[15:38:50 ERROR]: [BetonQuest] Caught conversation error in conversation: default as option 2 has been picked which does not exist.
I haven't written anything like option 2, all named as A B C. There's an additional error:
[15:49:51 ERROR]: Could not pass event ConversationSelectEvent to BetonQuest v1.9.6
org.bukkit.event.EventException: null
at com.destroystokyo.paper.event.executor.MethodHandleEventExecutor.execute(MethodHandleEventExecutor.java:37) ~[mcmxy1.jar:git-Paper-1509]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[mcmxy1.jar:git-Paper-1509]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[mcmxy1.jar:git-Paper-1509]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:527) ~[mcmxy1.jar:git-Paper-1509]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:512) ~[mcmxy1.jar:git-Paper-1509]
at lk.vexview.g.?m.onPluginMessageReceived(ra:141) ~[?:?]
at org.bukkit.plugin.messaging.StandardMessenger.dispatchIncomingMessage(StandardMessenger.java:426) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:2698) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.PacketPlayInCustomPayload.a(SourceFile:58) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.PacketPlayInCustomPayload.a(SourceFile:8) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[mcmxy1.jar:git-Paper-1509]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_221]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_221]
at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:849) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:773) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) ~[mcmxy1.jar:git-Paper-1509]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
Caused by: java.lang.NullPointerException
at lk.vexview.i.o.?B.onSeclect(cc:144) ~[?:?]
at com.destroystokyo.paper.event.executor.MethodHandleEventExecutor.execute(MethodHandleEventExecutor.java:35) ~[mcmxy1.jar:git-Paper-1509]
... 18 more
Both indirectly caused by vexview and perhaps mmoitems (both listed in the stack track). However still digging. Here's one with more debug info and perhaps a fix for the second error you provided:
Both indirectly caused by vexview and perhaps mmoitems (both listed in the stack track). However still digging. Here's one with more debug info and perhaps a fix for the second error you provided:
logs.zip
`[05.01.2020 16:36:58] DEBUG: Player Delevan is in conversation right now, returning.
[05.01.2020 16:36:58] DEBUG: Player Delevan is in conversation right now, returning.
[05.01.2020 16:36:59] DEBUG: Player Delevan is in conversation right now, returning.`
Maybe it has nothing to do with vexview, because I still get this problem after uninstalling it, maybe mmoitems? I haven't tried it. In addition, the player will still stay in the conversation now. It doesn't seem to be forced to end the conversation, and the server needs to be restarted again.
was that the new version I posted as its not got the right debug message. Perhaps I provided the old version by mistake (recompiled and attached below).
I'm not convinced its vexview but for some reason an option that was available disappears when the player selects it. Puzzling but if you're happy to keep trying debug builds can get closer to the issue hopefully.
was that the new version I posted as its not got the right debug message. Perhaps I provided the old version by mistake (recompiled and attached below).
I'm not convinced its vexview but for some reason an option that was available disappears when the player selects it. Puzzling but if you're happy to keep trying debug builds can get closer to the issue hopefully.
The latest debug and logs are from B5.
`[19:18:36 ERROR]: [BetonQuest] Caught conversation error in conversation: default.功能-帮派管家 as option 5 has been picked which does not exist.
Yeah this is what I suspected. For some reason the conversation loses all its items between the point the player clicked the option and it then trying to lookup the option. I'll give it some thought and get back. Definitely a strange one this one.
Yeah this is what I suspected. For some reason the conversation loses all its items between the point the player clicked the option and it then trying to lookup the option. I'll give it some thought and get back. Definitely a strange one this one.
logs.zip
This is all the logs for several hours. Player have not been trapped in the conversation anymore. Thank you very much.
[15:34:25] [Server thread/WARN]: [BetonQuest] Task #7264744 for BetonQuest v1.9.6 generated an exception
java.lang.NullPointerException: null
at org.bukkit.event.HandlerList.unregister(HandlerList.java:163) ~[mcmxy1.jar:git-Paper-1509]
at org.bukkit.event.HandlerList.unregisterAll(HandlerList.java:82) ~[mcmxy1.jar:git-Paper-1509]
at lk.vexview.i.o.?B.end(cc:211) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:288) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$ConversationEnder.run(Conversation.java:633) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:63) ~[mcmxy1.jar:git-Paper-1509]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:423) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:839) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:773) ~[mcmxy1.jar:git-Paper-1509]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) ~[mcmxy1.jar:git-Paper-1509]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
The endConversation function seems to have failed, after accumulating too many errors.The player is once again caught in the conversation and unable to interact.
logs.zip
This is the latest logs. This time I unhook vexview and set default_conversation_IO: tellraw. There are still a lot of DEBUG: Player Mu_Shi is in conversation right now, returning.
`[13:40:31 ERROR]: [BetonQuest] Caught conversation error in conversation: default.任务-慕容先生 as option 1 has been picked which does not exist.
I changed all the options to 1, 2, 3 instead of A, B, and C, and it still prompts that it doesn't exist, as if this error appeared out of thin air.
Another build for you to test. I fixed some bugs but also now if a player is already in conversation it will kill their old conversation first which may help (though I still want to find out why its failing). I've added some debugging around areas I've fixed to see if they may be the cause of the error.
Any luck on this? No rush either way.
Hello, just to confirm that i've this problem too :(
I've try your version in the .zip but it doesn't work at all, just crash :s i'm spammed in console by messages about conversation task issue.
Have you any information about why this problem occure ?
I've this message with the last version you send : https://pastebin.com/Dqps3BnG
This error doesn't occure with the last official build of betonquest
Any luck on this? No rush either way.
Sorry, I was too busy recently to take further tests, but the b6 version still can’t completely solve the problem. The player will only leave the conversation state after interacting with the npc, but betonquest can no longer read all the information of the player, including conditions and events, which means that players still can not use the betonquest system normally.
Hello, just to confirm that i've this problem too :(
Take the liberty to ask, do you have two plugins, vexview or mmoitems, installed on your server? Because the author said that this problem may be caused by these two plugins, I want to confirm or rule it out.
I've none of them :s
Hello, just to confirm that i've this problem too :(
Take the liberty to ask, do you have two plugins, vexview or mmoitems, installed on your server? Because the author said that this problem may be caused by these two plugins, I want to confirm or rule it out.
我也用了羊羊的VV,同样的问题,我换成chest方式就不报错了。另外bq的1.11版本,貌似跟vv不兼容,提示加载vexshow这个IO组件失败,你可以试试
Hello, just to confirm that i've this problem too :(
Take the liberty to ask, do you have two plugins, vexview or mmoitems, installed on your server? Because the author said that this problem may be caused by these two plugins, I want to confirm or rule it out.
我也用了羊羊的VV,同样的问题,我换成chest方式就不报错了。另外bq的1.11版本,貌似跟vv不兼容,提示加载vexshow这个IO组件失败,你可以试试
但我换成了chest或者其他任何方式均会报错并出现对话bug,bq最新版本不支持vv对话框,所以我用的是bq作者特意写的1.9.6的专门测试版,至于1.11版本即便不支持vv对话框,仍旧出现该问题。
楼上那位大佬也提到了他未安装vexview与mmoitems,但依旧会有这样的问题。
Hello, just to confirm that i've this problem too :(
Take the liberty to ask, do you have two plugins, vexview or mmoitems, installed on your server? Because the author said that this problem may be caused by these two plugins, I want to confirm or rule it out.
我也用了羊羊的VV,同样的问题,我换成chest方式就不报错了。另外bq的1.11版本,貌似跟vv不兼容,提示加载vexshow这个IO组件失败,你可以试试
但我换成了chest或者其他任何方式均会报错并出现对话bug,bq最新版本不支持vv对话框,所以我用的是bq作者特意写的1.9.6的专门测试版,至于1.11版本即便不支持vv对话框,仍旧出现该问题。
楼上那位大佬也提到了他未安装vexview与mmoitems,但依旧会有这样的问题。
是的,确实也有玩家反馈还是出同样的问题,看来是bq自身的问题了。这个问题人一多才明显,之前测试没发现问题。
I'm pretty sure its something with BQ at this stage. Just trying to find an easy way to replicate the issue but I suspect it requires many players and thus may be some sort of race condition in the code.
I'll have to think a bit on how best to debug it and will get back. If there is any minimal method that reproduces the error consistently that would be very helpful.
Also, the zip files in this thread don't seem to have UTF-8 file encoding so I get very strange filenames when I extract which makes it tricky to know which file is referenced in the logs, especially being unfamiliar with the language ;)
It is very interesting that vexview/mmoitems are in the stack traces but I suspect its just because they are part of initiating the conversation and thus initiating it any other way would do the same.
@bundabrg if you want, i've a quest where i was able to reproduce the bug many times. I will try to found a root cause which let create a case when it happens.
Any luck here. Still a confirmed but hard to reproduce bug.
Any luck here. Still a confirmed but hard to reproduce bug.
Sorry, I haven't continued using betonquest recently because of a bug. However, I have some conjectures about this bug: First of all, it is a problem of betonquest itself, which may be related to single thread. When the plugin is processing the condition of one player, it cannot correctly process the data of other players at the same time. This is why in my There will never be any information about this bug in the server alone, and once the number of players increases, problems will occur immediately.
Of course, Condition itself is a very good method, and you don't need to abandon it, whether it is permission or tag.
There are two solutions to this problem. The first is to find out why the Option problem that should not exist should be completely fixed.
The second method is to use another solution to handle Condition instead of Conversation, or asynchronously handle the operations of Condition and Conversation, so that even if the wrong Option appears again, the player will not be unable to continue playing because of a bug .
I'm pretty sure its something with BQ at this stage. Just trying to find an easy way to replicate the issue but I suspect it requires many players and thus may be some sort of race condition in the code.
I'll have to think a bit on how best to debug it and will get back. If there is any minimal method that reproduces the error consistently that would be very helpful.
Also, the zip files in this thread don't seem to have UTF-8 file encoding so I get very strange filenames when I extract which makes it tricky to know which file is referenced in the logs, especially being unfamiliar with the language ;)
It is very interesting that vexview/mmoitems are in the stack traces but I suspect its just because they are part of initiating the conversation and thus initiating it any other way would do the same.
As for how to reproduce this bug, my guess is that any Conversation can cause the bug. There is no problem with the Conversation configuration itself. Even if there is only a very simple dialog such as A and B options, it is of course necessary to include Condition.
The real cause of this bug is "multiple players using any Conversation in betonquest at the same time", and the more people use it at the same time, the faster the speed of certain players getting into Conversation. It's random, no one knows when the plugin will pick a lucky player.
Of course, one person cannot trigger the bug. I have never encountered it in the past year or so until I opened the server and attracted dozens of players to play at the same time.
@bundabrg any news about this issue ?
Been offline for a while so will need some time to think about how to test it. The common factor is lots of players so I'll need to do through what might get trampled on when multiple players hit something at the same time.
@bundabrg Don't know if you had correct it but it didn't happend anymore on my server (and there is around 40 players per day whoachiev quests).
@bundabrg Don't know if you had correct it but it didn't happend anymore on my server (and there is around 40 players per day whoachiev quests).
中国人?用了VV?VV什么版本?bq用的什么版本?
Ok it has come back, don't know why. Players can't speak with the NPC.
If you know what happend @bundabrg could we get a command to manually help players ?
Have you put a security where a player which quit or try to enter in another conversation is released from the last conversation ?
Some errors catched
Here when the player stuck disconnect
[20:06:03] [Server thread/ERROR]: Could not pass event PlayerQuitEvent to BetonQuest v1.12-dev#918
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.compatibility.protocollib.conversation.MenuConvIO.end(MenuConvIO.java:625) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:287) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.onQuit(Conversation.java:390) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1072.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[paperspigot.jar:git-Paper-161]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paperspigot.jar:git-Paper-161]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paperspigot.jar:git-Paper-161]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.PlayerList.disconnect(PlayerList.java:410) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1506) ~[paperspigot.jar:git-Paper-161]
at com.denizenscript.denizen.nms.v1_15.impl.network.handlers.AbstractListenerPlayInImpl.a(AbstractListenerPlayInImpl.java:331) ~[?:?]
at net.minecraft.server.v1_15_R1.NetworkManager.handleDisconnection(NetworkManager.java:356) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.ServerConnection.c(ServerConnection.java:163) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1269) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1112) ~[paperspigot.jar:git-Paper-161]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:934) ~[paperspigot.jar:git-Paper-161]
at java.lang.Thread.run(Thread.java:834) [?:?]
Another error a bit after, don't know if it's reliable :
[20:19:10] [Craft Scheduler Thread - 73/WARN]: [BetonQuest] Plugin BetonQuest v1.12-dev#918 generated an exception while executing task 991981
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.conversation.ConversationData.getPointers(ConversationData.java:399) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$ResponsePrinter.run(Conversation.java:629) ~[?:?]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[paperspigot.jar:git-Paper-161]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) ~[paperspigot.jar:git-Paper-161]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paperspigot.jar:git-Paper-161]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Still occure, the player can't launch conversation again without restarting server.
Ok it has come back, don't know why. Players can't speak with the NPC.
If you know what happend @bundabrg could we get a command to manually help players ?
Have you put a security where a player which quit or try to enter in another conversation is released from the last conversation ?
Some errors catched
Here when the player stuck disconnect[20:06:03] [Server thread/ERROR]: Could not pass event PlayerQuitEvent to BetonQuest v1.12-dev#918 java.lang.NullPointerException: null at pl.betoncraft.betonquest.compatibility.protocollib.conversation.MenuConvIO.end(MenuConvIO.java:625) ~[?:?] at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:287) ~[?:?] at pl.betoncraft.betonquest.conversation.Conversation.onQuit(Conversation.java:390) ~[?:?] at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1072.execute(Unknown Source) ~[?:?] at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[paperspigot.jar:git-Paper-161] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paperspigot.jar:git-Paper-161] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paperspigot.jar:git-Paper-161] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.PlayerList.disconnect(PlayerList.java:410) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1506) ~[paperspigot.jar:git-Paper-161] at com.denizenscript.denizen.nms.v1_15.impl.network.handlers.AbstractListenerPlayInImpl.a(AbstractListenerPlayInImpl.java:331) ~[?:?] at net.minecraft.server.v1_15_R1.NetworkManager.handleDisconnection(NetworkManager.java:356) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.ServerConnection.c(ServerConnection.java:163) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1269) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1112) ~[paperspigot.jar:git-Paper-161] at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:934) ~[paperspigot.jar:git-Paper-161] at java.lang.Thread.run(Thread.java:834) [?:?]Another error a bit after, don't know if it's reliable :
[20:19:10] [Craft Scheduler Thread - 73/WARN]: [BetonQuest] Plugin BetonQuest v1.12-dev#918 generated an exception while executing task 991981 java.lang.NullPointerException: null at pl.betoncraft.betonquest.conversation.ConversationData.getPointers(ConversationData.java:399) ~[?:?] at pl.betoncraft.betonquest.conversation.Conversation$ResponsePrinter.run(Conversation.java:629) ~[?:?] at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[paperspigot.jar:git-Paper-161] at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) ~[paperspigot.jar:git-Paper-161] at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paperspigot.jar:git-Paper-161] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:834) [?:?]
He did try (b1-b6), but the problem still exists. All we can do is to continue to wait and reduce the interaction between players and the citizens2's npcs.
A player stuck in a conversation throw this error on console when he disconnected :
[13:47:12] [Server thread/ERROR]: Could not pass event PlayerQuitEvent to BetonQuest v1.12-dev#918
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.compatibility.protocollib.conversation.MenuConvIO.end(MenuConvIO.java:625) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:287) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.onQuit(Conversation.java:390) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1082.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[paperspigot.jar:git-Paper-196]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[paperspigot.jar:git-Paper-196]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paperspigot.jar:git-Paper-196]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.PlayerList.disconnect(PlayerList.java:411) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1506) ~[paperspigot.jar:git-Paper-196]
at com.denizenscript.denizen.nms.v1_15.impl.network.handlers.AbstractListenerPlayInImpl.a(AbstractListenerPlayInImpl.java:331) ~[?:?]
at net.minecraft.server.v1_15_R1.NetworkManager.handleDisconnection(NetworkManager.java:356) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.ServerConnection.c(ServerConnection.java:163) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1330) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1164) ~[paperspigot.jar:git-Paper-196]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:958) ~[paperspigot.jar:git-Paper-196]
at java.lang.Thread.run(Thread.java:834) [?:?]
Hi, it's a real painfull bug. It occures often when player spam click for their conversations
Could we get a command to force exit conversation of a player ? It could be better than restart the server all the time :s
Well we hope to have it fixed soon :D
The work around the buildpipeline slowed us down, sorry..
Ok thanks, hope you will found soon :)
Hello guys!
Can you please state if this issue still persists in the lastest dev build? We have done some reworks that could have impacted this problem. We failed to reproduce it, so there is no other way for us to figure out if this persists.
We will close this on 2020.06.28 if no one awnsers. If you still get this issue after this date just comment / reopen 😄
Hello,
I'm on 1.12.0-DEV-44 bq version
I have a player who got stuck just now. He has left the server during a conversation. I catch this:
[23:31:31 ERROR]: Could not pass event PlayerQuitEvent to BetonQuest v1.12.0-DEV-44
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.compatibility.protocollib.conversation.MenuConvIO.end(MenuConvIO.java:625) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:287) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.onQuit(Conversation.java:390) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1081.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[paperspigot.jar:git-Paper-346]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paperspigot.jar:git-Paper-346]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paperspigot.jar:git-Paper-346]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.PlayerList.disconnect(PlayerList.java:470) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1542) ~[paperspigot.jar:git-Paper-346]
at com.denizenscript.denizen.nms.v1_15.impl.network.handlers.AbstractListenerPlayInImpl.a(AbstractListenerPlayInImpl.java:331) ~[?:?]
at net.minecraft.server.v1_15_R1.NetworkManager.handleDisconnection(NetworkManager.java:451) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.ServerConnection.c(ServerConnection.java:164) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1352) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1180) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:969) ~[paperspigot.jar:git-Paper-346]
at java.lang.Thread.run(Thread.java:834) [?:?]
Finally we can reproduce this issue, now we can solve it!
Fantastic. I think its an async issue as the conversation objects get cleared whilst they're being read but it would need replication to test.
So it's not really hard to reproduce, but you have to configure some things:
default_conversation_IO: menustop: 'true' in the conversationNow you cant walk away from the NPC, because you are still in the conversation, but you are also not able to talk to the NPC again.
I see two solutions:
i figured out that line of code, where the sneak prodce the issue: https://github.com/BetonQuest/BetonQuest/blob/56b1d1b9d4a0ebc985ace471ec72dc9466a4e2cf/src/main/java/pl/betoncraft/betonquest/compatibility/protocollib/conversation/MenuConvIO.java#L270
Ok I've tested the last devbuild. The error from the disconnexion is fixed, Congratz !
But I have successfully reproduce the problem when a player spam the conversation :(
I'm on the latest BetonQuest dev build (1.12.0-DEV-60).
For paper, we are on the git-Paper-346 (MC: 1.15.2) version.
As conversation config, we have this:
menu_conv_io:
line_length: 53
refresh_delay: 360
npc_wrap: '&l &r'
npc_text: '&l &r&a{npc_text}'
npc_text_reset: '&a'
option_wrap: '&l &l &l &l &r'
option_text: '&l &l &l &l &r&8[ &b{option_text}&8 ]'
option_text_reset: '&b'
option_selected: '&l &r &r&7»&r &8[ &b&n{option_text}&8 ]'
option_selected_reset: '&b'
option_selected_wrap: '&r&l &l &l &l &r&f&n'
control_select: left_click
control_cancel: sneak,jump
control_move: scroll,move
npc_name_format: '&e{npc_name}&r'
Our conversations are like this:

In console when this happens, I have this:
[17:26:23 WARN]: [BetonQuest] Plugin BetonQuest v1.12.0-DEV-60 generated an exception while executing task 74127
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.conversation.ConversationData.getPointers(ConversationData.java:399) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$ResponsePrinter.run(Conversation.java:629) ~[?:?]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:99) ~[paperspigot.jar:git-Paper-346]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) ~[paperspigot.jar:git-Paper-346]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paperspigot.jar:git-Paper-346]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
[17:26:23 WARN]: [BetonQuest] Task #74222 for BetonQuest v1.12.0-DEV-60 generated an exception
java.lang.NullPointerException: null
at pl.betoncraft.betonquest.compatibility.protocollib.conversation.MenuConvIO.end(MenuConvIO.java:625) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation.endConversation(Conversation.java:287) ~[?:?]
at pl.betoncraft.betonquest.conversation.Conversation$ConversationEnder.run(Conversation.java:679) ~[?:?]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:99) ~[paperspigot.jar:git-Paper-346]
at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1263) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1180) ~[paperspigot.jar:git-Paper-346]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:969) ~[paperspigot.jar:git-Paper-346]
at java.lang.Thread.run(Thread.java:834) [?:?]
To reproduce it (it can happen in all conversation):
1- Create a conversation with an NPC where you have to aswer
2- Start the conversation by right clicking
3- Spam right/left click until having the error
4- Then you're stuck and you can't speak with anyone
I expect it will help you
New information:
The case, that i decribed to reproduce this is an 1.16 Only issue.
And i can confirm that spamming of right/left kick prduce this issue.
We think that the original issue has been solved. We will close this issue because it contains a very long discussion with several different additional problems.
If the original error appears again simply open a new issue.
All additional problems will be solved in their own issues:
1.16 - stuck: #1159
spamming - stuck: #1160
Most helpful comment
Been offline for a while so will need some time to think about how to test it. The common factor is lots of players so I'll need to do through what might get trampled on when multiple players hit something at the same time.