Skip to content

[Crash] FoScriptException: Report: Error parsing JavaScript! Error: java.lang.ClassNotFoundException: org.bukkit.Statistic #3805

Closed

Description

@kangobot

Auto-reported crash

Key Value
Plugin BungeeControl 5.1.0
Server BungeeCord git:BungeeCord-Bootstrap:26.1-R0.1-SNAPSHOT:f56d37f:2080
Players Online 1
BBB Nonce 5c72f6b6f7d9fa6c3abee533f139bb9e

Stack Trace

FoScriptException: Report: Error parsing JavaScript! Error: java.lang.ClassNotFoundException: org.bukkit.Statistic
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:321)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:196)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:121)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.canFilterMessage(ProxyPlayerMessage.java:564)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.filter(ProxyPlayerMessage.java:498)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.filter(ProxyPlayerMessage.java:425)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyOperator$OperatorCheck.start(ProxyOperator.java:491)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessages.lambda$broadcast$0(ProxyPlayerMessages.java:149)
	at org.mineacademy.chatcontrol.bungee.lib.fo.CommonCore.lambda$wrapRunnableInExceptionCatcher$0(CommonCore.java:1703)
	at net.md_5.bungee.scheduler.BungeeTask.run(BungeeTask.java:63)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.mineacademy.chatcontrol.bungee.lib.fo.CommonCore.wrapRunnableInExceptionCatcher(CommonCore.java:1699)
	at org.mineacademy.chatcontrol.bungee.lib.fo.remain.Remain.runTaskAsync(Remain.java:120)
	at org.mineacademy.chatcontrol.bungee.lib.fo.platform.BungeePlatform.runTask(BungeePlatform.java:208)
	at org.mineacademy.chatcontrol.bungee.lib.fo.platform.Platform.runTask(Platform.java:309)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessages.broadcast(ProxyPlayerMessages.java:149)
	at org.mineacademy.chatcontrol.proxy.ProxyEvents.broadcastPendingMessage(ProxyEvents.java:482)
	at org.mineacademy.chatcontrol.proxy.ChatControlProxyListenerProxy.onMessageReceived(ChatControlProxyListenerProxy.java:116)
	at org.mineacademy.chatcontrol.bungee.lib.fo.platform.BungeeListener.onPluginMessage(BungeeListener.java:78)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at net.md_5.bungee.event.EventHandlerMethod.invoke(EventHandlerMethod.java:19)
	at net.md_5.bungee.event.EventBus.post(EventBus.java:49)
	at net.md_5.bungee.api.plugin.PluginManager.callEvent(PluginManager.java:431)
	at net.md_5.bungee.connection.DownstreamBridge.handle(DownstreamBridge.java:328)
	at net.md_5.bungee.protocol.packet.PluginMessage.handle(PluginMessage.java:81)
	at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:151)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:288)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:361)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:348)
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:470)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1429)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:804)
	at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.handle(AbstractEpollChannel.java:487)
	at io.netty.channel.epoll.EpollIoHandler$DefaultEpollIoRegistration.handle(EpollIoHandler.java:349)
	at io.netty.channel.epoll.EpollIoHandler.processReady(EpollIoHandler.java:546)
	at io.netty.channel.epoll.EpollIoHandler.run(EpollIoHandler.java:491)
	at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:225)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:196)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1195)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1583)
RuntimeException: java.lang.ClassNotFoundException: org.bukkit.Statistic
	at org.openjdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:511)
	at org.openjdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:415)
	at org.openjdk.nashorn.api.scripting.NashornScriptEngine$1.eval(NashornScriptEngine.java:476)
	at java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:107)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:259)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:196)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:121)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.canFilterMessage(ProxyPlayerMessage.java:564)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.filter(ProxyPlayerMessage.java:498)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.filter(ProxyPlayerMessage.java:425)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyOperator$OperatorCheck.start(ProxyOperator.java:491)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessages.lambda$broadcast$0(ProxyPlayerMessages.java:149)
	at org.mineacademy.chatcontrol.bungee.lib.fo.CommonCore.lambda$wrapRunnableInExceptionCatcher$0(CommonCore.java:1703)
	at net.md_5.bungee.scheduler.BungeeTask.run(BungeeTask.java:63)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
ClassNotFoundException: org.bukkit.Statistic
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at org.openjdk.nashorn.internal.runtime.Context.findClass(Context.java:1020)
	at org.openjdk.nashorn.internal.objects.NativeJava.simpleType(NativeJava.java:543)
	at org.openjdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:325)
	at org.openjdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:317)
	at org.openjdk.nashorn.internal.objects.NativeJava.type(NativeJava.java:313)
	at org.openjdk.nashorn.internal.scripts.Script$\^eval\_.:program(<eval>:1)
	at org.openjdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:646)
	at org.openjdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:506)
	at org.openjdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:507)
	at org.openjdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:415)
	at org.openjdk.nashorn.api.scripting.NashornScriptEngine$1.eval(NashornScriptEngine.java:476)
	at java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:107)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:259)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:196)
	at org.mineacademy.chatcontrol.bungee.lib.fo.model.JavaScriptExecutor.run(JavaScriptExecutor.java:121)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.canFilterMessage(ProxyPlayerMessage.java:564)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.filter(ProxyPlayerMessage.java:498)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessage$PlayerMessageCheck.filter(ProxyPlayerMessage.java:425)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyOperator$OperatorCheck.start(ProxyOperator.java:491)
	at org.mineacademy.chatcontrol.proxy.operator.ProxyPlayerMessages.lambda$broadcast$0(ProxyPlayerMessages.java:149)
	at org.mineacademy.chatcontrol.bungee.lib.fo.CommonCore.lambda$wrapRunnableInExceptionCatcher$0(CommonCore.java:1703)
	at net.md_5.bungee.scheduler.BungeeTask.run(BungeeTask.java:63)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)

Activity

  1. kangarko commented on Jul 24, 2026

    @kangarko
    Owner

    This is a user script in a messages .rs file on the proxy referencing org.bukkit.Statistic, which cannot exist on BungeeCord. The real bugs were on our side: the failure killed the whole join broadcast and got auto-reported as a crash even though script exceptions are meant to be user errors.

    Next release: a broken script logs one framed console error naming the message group, file and script, skips just that group, and the rest of the broadcast continues. No more crash reports for these. If you run scripts on the proxy, only use classes that exist there, java.* and the proxy API, not Bukkit.

  2. kangarko commented on Jul 25, 2026

    @kangarko
    Owner

    Fixed in 12.2.2. A broken script in one message group is skipped and logged with its file name, the rest of the broadcast still sends.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    auto-crashAutomatically reported crash

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions