servertap-io / servertap Goto Github PK
View Code? Open in Web Editor NEWServerTap is a REST API for Bukkit/Spigot/Paper Minecraft servers
Home Page: https://servertap.io
License: MIT License
ServerTap is a REST API for Bukkit/Spigot/Paper Minecraft servers
Home Page: https://servertap.io
License: MIT License
Currently /v1/server/exec
will only execute a command and return if it succeded. But it would be really awesome if we could get the output of the command and return it.
If you know how to do this or want to take a crack please do.
We could just support self signed certs to get some encryption in flight going
Useful for backup automation
It would be nice to be able to register an IP to receive HTTP requests when certain events occur on the server, such as players leaving or joining.
The comments say "# Set to 0 to effectively disable this",
but setting it to zero produces an exception for every log line:
[15:26:54 INFO]: [ServerTap] Enabling ServerTap v0.3.0
> 2022-08-04 15:26:54,422 Server thread WARN org.apache.logging.log4j.spi.AbstractLogger caught java.lang.IndexOutOfBoundsException logging ReusableSimpleMessage: [ServerTap] TLS is not enabled. java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
at java.base/java.util.Objects.checkIndex(Objects.java:359)
at java.base/java.util.ArrayList.remove(ArrayList.java:504)
at ServerTap-0.3.0.jar//io.servertap.api.v1.websockets.ConsoleListener.filter(ConsoleListener.java:24)
at org.apache.logging.log4j.core.filter.CompositeFilter.filter(CompositeFilter.java:590)
at org.apache.logging.log4j.core.filter.AbstractFilterable.isFiltered(AbstractFilterable.java:154)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:482)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
at org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:2671)
at org.bukkit.craftbukkit.v1_18_R2.util.ForwardLogHandler.publish(ForwardLogHandler.java:34)
at java.logging/java.util.logging.Logger.log(Logger.java:980)
at java.logging/java.util.logging.Logger.doLog(Logger.java:1007)
at java.logging/java.util.logging.Logger.log(Logger.java:1030)
at java.logging/java.util.logging.Logger.warning(Logger.java:1790)
at ServerTap-0.3.0.jar//io.servertap.PluginEntrypoint.lambda$onEnable$2(PluginEntrypoint.java:133)
at ServerTap-0.3.0.jar//io.javalin.core.JavalinConfig.applyUserConfig(JavalinConfig.java:205)
at ServerTap-0.3.0.jar//io.javalin.Javalin.create(Javalin.java:93)
at ServerTap-0.3.0.jar//io.servertap.PluginEntrypoint.onEnable(PluginEntrypoint.java:101)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:501)
at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugin(CraftServer.java:559)
at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugins(CraftServer.java:473)
at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:289)
at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1163)
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:315)
at java.base/java.lang.Thread.run(Thread.java:833)
This issue provides visibility into Renovate updates and their statuses. Learn more
These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
Eg: I'd like the auth key be asked for everything else but for example getting a scoreboard.
This'd make fetching stuff client side (eg a website with js) possible "securely" (not exposing ex: add ops to the client (because they don't need the key to get what they need))
The swagger API is not available when I try to enable tls. Also getting console logs that javalin is outdated or something
POST
to /players/:playerUuid/op
should OP that player. Also maybe GET
to /players/ops
should give a list of OPs
If you have vault installed but no economy plugin hitting /v1/economy
returns the following:
{
"title": "Vault not found. Related functionality disabled",
"status": 500,
"type": "https://javalin.io/documentation#internalservererrorresponse",
"details": []
}
This error is incorrect and should say that no economy plugin was found.
The new authentication (0.0.5) now blocks the /swagger and /swagger-doc endpoints.
I have a running workaround on my branch that just adds to the check to see if the call is swagger.
But, the problem gets deeper when you make test calls through swagger, as the endpoints are still blocked due to no authentication key provided.
Change this to be if config file has debug: true in it then log
(pseudocode)
Evaluates fine via console.
Edit: forgot to mention im on servertap 0.2.0
java.lang.Throwable: null
at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:15) ~[purpur-1.18.1.jar:git-Purpur-1441]
at net.minecraft.server.level.WorldServer.I(WorldServer.java:2397) ~[purpur-1.18.1.jar:git-Purpur-1441]
at org.bukkit.craftbukkit.v1_18_R1.CraftWorld.getNMSEntities(CraftWorld.java:990) ~[purpur-1.18.1.jar:git-Purpur-1441]
at org.bukkit.craftbukkit.v1_18_R1.CraftRegionAccessor.getEntitiesByClasses(CraftRegionAccessor.java:438) ~[purpur-1.18.1.jar:git-Purpur-1441]
at com.extendedclip.papi.expansion.server.ServerExpansion.onRequest(ServerExpansion.java:184) ~[?:?]
at me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:160) ~[PlaceholderAPI-2.10.10.jar:?]
at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:70) ~[PlaceholderAPI-2.10.10.jar:?]
at io.servertap.api.v1.PAPIApi.replacePlaceholders(PAPIApi.java:52) ~[ServerTap.jar:?]
at io.servertap.PluginEntrypoint.lambda$null$1(PluginEntrypoint.java:154) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.addHandler$lambda-5(JavalinServlet.kt:113) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:44) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:39) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.service$tryWithExceptionMapper(JavalinServlet.kt:129) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.service$tryBeforeAndEndpointHandlers(JavalinServlet.kt:39) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:87) ~[ServerTap.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap.jar:?]
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) ~[ServerTap.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap.jar:?]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[ServerTap.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap.jar:?]
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[ServerTap.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[ServerTap.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[02:55:46 WARN]: [io.javalin.Javalin] Uncaught exception
java.lang.IllegalStateException: Asynchronous Chunk getEntities call!
at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:16) ~[purpur-1.18.1.jar:git-Purpur-1441]
at net.minecraft.server.level.WorldServer.I(WorldServer.java:2397) ~[purpur-1.18.1.jar:git-Purpur-1441]
at org.bukkit.craftbukkit.v1_18_R1.CraftWorld.getNMSEntities(CraftWorld.java:990) ~[purpur-1.18.1.jar:git-Purpur-1441]
at org.bukkit.craftbukkit.v1_18_R1.CraftRegionAccessor.getEntitiesByClasses(CraftRegionAccessor.java:438) ~[purpur-1.18.1.jar:git-Purpur-1441]
at com.extendedclip.papi.expansion.server.ServerExpansion.onRequest(ServerExpansion.java:184) ~[?:?]
at me.clip.placeholderapi.replacer.CharsReplacer.apply(CharsReplacer.java:160) ~[PlaceholderAPI-2.10.10.jar:?]
at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:70) ~[PlaceholderAPI-2.10.10.jar:?]
at io.servertap.api.v1.PAPIApi.replacePlaceholders(PAPIApi.java:52) ~[ServerTap.jar:?]
at io.servertap.PluginEntrypoint.lambda$null$1(PluginEntrypoint.java:154) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.addHandler$lambda-5(JavalinServlet.kt:113) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:44) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:39) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.service$tryWithExceptionMapper(JavalinServlet.kt:129) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.service$tryBeforeAndEndpointHandlers(JavalinServlet.kt:39) ~[ServerTap.jar:?]
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:87) ~[ServerTap.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap.jar:?]
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) ~[ServerTap.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap.jar:?]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[ServerTap.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap.jar:?]
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[ServerTap.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392) ~[ServerTap.jar:?]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[ServerTap.jar:?]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[ServerTap.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[ServerTap.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Hello,
First, I love your work with this plugin. Can I do sth. like /givemoney/80/? Or can I perform any command (like /eco set 80) with feedback?
~kial1
among us
Having PlaceholderAPI support would open so many possibilities for servertap to become even more useful in my humble opinion.
From a server management side, it would be useful if I could see more detailed things about my players. For instance what dimension they're in, what their coordinates are, etc.
Right now I think I could approximate this with the v1/server/exec endpoint, having it do /data get entity Username. This returns a lot of info about the user. However having this data returned by the v1/player route (and perhaps even updatable through POST/PUT) would be much nicer!
Currently the API is completely unrestricted. Anyone who can access the ip/port where the server is running can talk to it.
There are a few different options that might be feasible:
This was the first idea I had, and started spiking it out in #5 - unfortunately, without a signin mechanism, this is basically as secure as just sending a shared secret. Yes, you can generate short lived tokens on the client side using the shared HMAC secret, but that might be a bit too complicated for users of this plugin? We want this thing to be easy to use for the most amount of people.
Just create a map of username: bcrypt(password)
in config.yml
and then authenticate based on that using HTTP BASIC auth.
This plugin is built with Java 1.8. Things like Paper are starting to throw warnings like this:
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] ************************************************************
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * WARNING - YOU ARE RUNNING AN OUTDATED VERSION OF JAVA.
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * PAPER WILL STOP BEING COMPATIBLE WITH THIS VERSION OF
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * JAVA WHEN MINECRAFT 1.17 IS RELEASED.
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] *
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * Please update the version of Java you use to run Paper
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * to at least Java 11. When Paper for Minecraft 1.17 is
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * released support for versions of Java before 11 will
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * be dropped.
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] *
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * Current Java version: 1.8.0_181
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] *
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * Check this forum post for more information:
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] * https://papermc.io/java11
[09:27:45 WARN]: [io.papermc.paper.util.PaperJvmChecker] ************************************************************
Should make sure that Servertap will work on Java 11 (might need to start requiring 11 to build this plugin)
When attempting to hit any of the world download endpoints on windows the system spits out bad data.
java.util.regex.PatternSyntaxException: Unexpected internal error near index 2
^
at java.util.regex.Pattern.error(Pattern.java:2028) ~[?:?]
at java.util.regex.Pattern.compile(Pattern.java:1789) ~[?:?]
at java.util.regex.Pattern.(Pattern.java:1430) ~[?:?]
at java.util.regex.Pattern.compile(Pattern.java:1069) ~[?:?]
at java.lang.String.replaceFirst(String.java:2895) ~[?:?]
at io.servertap.api.v1.ServerApi.addFolderToZip(ServerApi.java:223) ~[ServerTap-0.2.0.jar:?]
at io.servertap.api.v1.ServerApi.addFolderToZip(ServerApi.java:216) ~[ServerTap-0.2.0.jar:?]
at io.servertap.api.v1.ServerApi.downloadWorld(ServerApi.java:272) ~[ServerTap-0.2.0.jar:?]
at io.servertap.PluginEntrypoint.lambda$null$1(PluginEntrypoint.java:147) ~[ServerTap-0.2.0.jar:?]
at io.javalin.http.JavalinServlet.addHandler$lambda-5(JavalinServlet.kt:113) ~[ServerTap-0.2.0.jar:?]
at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:44) ~[ServerTap-0.2.0.jar:?]
at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:39) ~[ServerTap-0.2.0.jar:?]
at io.javalin.http.JavalinServlet.service$tryWithExceptionMapper(JavalinServlet.kt:129) ~[ServerTap-0.2.0.jar:?]
at io.javalin.http.JavalinServlet.service$tryBeforeAndEndpointHandlers(JavalinServlet.kt:39) ~[ServerTap-0.2.0.jar:?]
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:87) ~[ServerTap-0.2.0.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.2.0.jar:?]
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) ~[ServerTap-0.2.0.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.2.0.jar:?]
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:179) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[ServerTap-0.2.0.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[ServerTap-0.2.0.jar:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
This is new since I made some changes to the javalin-openapi version etc. The error is harmless, but barfs this into the server log when you visit /swagger:
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/ping -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/exec -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: DELETE path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server/whitelist -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/whitelist -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/worlds -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/worlds/save -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/worlds/:uuid -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/worlds/:uuid/save -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/scoreboard -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/scoreboard/:name -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/chat/broadcast -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/chat/tell -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/all -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/:uuid -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/:playerUuid/:worldUuid/inventory -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/economy/pay -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/economy/debit -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/economy -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:50 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/plugins -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/ping -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/exec -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: DELETE path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server/whitelist -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/whitelist -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/worlds -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/worlds/save -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/worlds/:uuid -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/worlds/:uuid/save -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/scoreboard -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/scoreboard/:name -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/chat/broadcast -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/chat/tell -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/all -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/:uuid -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/:playerUuid/:worldUuid/inventory -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/economy/pay -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/economy/debit -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/economy -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/plugins -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/ping -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/exec -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: DELETE path: /v1/server/ops -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/server/whitelist -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/server/whitelist -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/worlds -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/worlds/save -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/worlds/:uuid -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/worlds/:uuid/save -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/scoreboard -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/scoreboard/:name -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/chat/broadcast -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/chat/tell -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/all -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/:uuid -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/players/:playerUuid/:worldUuid/inventory -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/economy/pay -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: POST path: /v1/economy/debit -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/economy -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:51 WARN]: [io.javalin.plugin.openapi.dsl.ExtractDocumentation] cannot match handler: GET path: /v1/plugins -- no Handler-type fields declared in class io.servertap.PluginEntrypoint
[01:12:52 WARN]: [io.javalin.plugin.openapi.JavalinOpenApi] A default response was added to the documentation of GET /v1/server/ops
[01:12:52 WARN]: [io.javalin.plugin.openapi.JavalinOpenApi] A default response was added to the documentation of GET /v1/worlds/{uuid}
[01:12:52 WARN]: [io.javalin.plugin.openapi.JavalinOpenApi] A default response was added to the documentation of GET /v1/scoreboard/{name}
add an event for advancements, and also the ability to check all advancements
Create a whole new EconomyApi
class with methods for manipulating player balances and other economy commands. If the server doesn't have Vault, all of these methods should return a helpful error.
The API should live under /v1/economy
By adding something like this into config:
disabledRoutes:
- /op
- /kick
Would just "turn off" those routes. This would supercede any other selective route-based configurations such as the stuff mentioned in #75
/server/whitelist
should take the place of the current /whitelist
routes for both GET
and POST
POST
ing to /server/whitelist
should take a form param called playerUuid
OR username
to create the whitelist entry for that playerIf you do /reload confirm
you get this mess:
> reload confirm
[20:19:13 INFO]: CONSOLE: Please note that this command is not supported and may cause issues when using some plugins.
[20:19:13 INFO]: CONSOLE: If you encounter any issues please use the /stop command to restart your server.
[20:19:13 INFO]: Debug logging is disabled
[20:19:13 INFO]: Server Ping Player Sample Count: 12
[20:19:13 INFO]: Using 4 threads for Netty based IO
[20:19:13 INFO]: -------- World Settings For [world] --------
[20:19:13 INFO]: View Distance: 10
[20:19:13 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[20:19:13 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[20:19:13 INFO]: Item Merge Radius: 2.5
[20:19:13 INFO]: Item Despawn Rate: 6000
[20:19:13 INFO]: Zombie Aggressive Towards Villager: true
[20:19:13 INFO]: Nerfing mobs spawned from spawners: false
[20:19:13 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[20:19:13 INFO]: Experience Merge Radius: 3.0
[20:19:13 INFO]: Mob Spawn Range: 8
[20:19:13 INFO]: Cactus Growth Modifier: 100%
[20:19:13 INFO]: Cane Growth Modifier: 100%
[20:19:13 INFO]: Melon Growth Modifier: 100%
[20:19:13 INFO]: Mushroom Growth Modifier: 100%
[20:19:13 INFO]: Pumpkin Growth Modifier: 100%
[20:19:13 INFO]: Sapling Growth Modifier: 100%
[20:19:13 INFO]: Beetroot Growth Modifier: 100%
[20:19:13 INFO]: Carrot Growth Modifier: 100%
[20:19:13 INFO]: Potato Growth Modifier: 100%
[20:19:13 INFO]: Wheat Growth Modifier: 100%
[20:19:13 INFO]: NetherWart Growth Modifier: 100%
[20:19:13 INFO]: Vine Growth Modifier: 100%
[20:19:13 INFO]: Cocoa Growth Modifier: 100%
[20:19:13 INFO]: Bamboo Growth Modifier: 100%
[20:19:13 INFO]: SweetBerry Growth Modifier: 100%
[20:19:13 INFO]: Kelp Growth Modifier: 100%
[20:19:13 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[20:19:13 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[20:19:13 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 Slime: 987234911
[20:19:13 INFO]: Max TNT Explosions: 100
[20:19:13 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[20:19:13 INFO]: -------- World Settings For [world_nether] --------
[20:19:13 INFO]: View Distance: 10
[20:19:13 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[20:19:13 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[20:19:13 INFO]: Item Merge Radius: 2.5
[20:19:13 INFO]: Item Despawn Rate: 6000
[20:19:13 INFO]: Zombie Aggressive Towards Villager: true
[20:19:13 INFO]: Nerfing mobs spawned from spawners: false
[20:19:13 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[20:19:13 INFO]: Experience Merge Radius: 3.0
[20:19:13 INFO]: Mob Spawn Range: 8
[20:19:13 INFO]: Cactus Growth Modifier: 100%
[20:19:13 INFO]: Cane Growth Modifier: 100%
[20:19:13 INFO]: Melon Growth Modifier: 100%
[20:19:13 INFO]: Mushroom Growth Modifier: 100%
[20:19:13 INFO]: Pumpkin Growth Modifier: 100%
[20:19:13 INFO]: Sapling Growth Modifier: 100%
[20:19:13 INFO]: Beetroot Growth Modifier: 100%
[20:19:13 INFO]: Carrot Growth Modifier: 100%
[20:19:13 INFO]: Potato Growth Modifier: 100%
[20:19:13 INFO]: Wheat Growth Modifier: 100%
[20:19:13 INFO]: NetherWart Growth Modifier: 100%
[20:19:13 INFO]: Vine Growth Modifier: 100%
[20:19:13 INFO]: Cocoa Growth Modifier: 100%
[20:19:13 INFO]: Bamboo Growth Modifier: 100%
[20:19:13 INFO]: SweetBerry Growth Modifier: 100%
[20:19:13 INFO]: Kelp Growth Modifier: 100%
[20:19:13 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[20:19:13 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[20:19:13 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 Slime: 987234911
[20:19:13 INFO]: Max TNT Explosions: 100
[20:19:13 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[20:19:13 INFO]: -------- World Settings For [world_the_end] --------
[20:19:13 INFO]: View Distance: 10
[20:19:13 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[20:19:13 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200
[20:19:13 INFO]: Item Merge Radius: 2.5
[20:19:13 INFO]: Item Despawn Rate: 6000
[20:19:13 INFO]: Zombie Aggressive Towards Villager: true
[20:19:13 INFO]: Nerfing mobs spawned from spawners: false
[20:19:13 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[20:19:13 INFO]: Experience Merge Radius: 3.0
[20:19:13 INFO]: Mob Spawn Range: 8
[20:19:13 INFO]: Cactus Growth Modifier: 100%
[20:19:13 INFO]: Cane Growth Modifier: 100%
[20:19:13 INFO]: Melon Growth Modifier: 100%
[20:19:13 INFO]: Mushroom Growth Modifier: 100%
[20:19:13 INFO]: Pumpkin Growth Modifier: 100%
[20:19:13 INFO]: Sapling Growth Modifier: 100%
[20:19:13 INFO]: Beetroot Growth Modifier: 100%
[20:19:13 INFO]: Carrot Growth Modifier: 100%
[20:19:13 INFO]: Potato Growth Modifier: 100%
[20:19:13 INFO]: Wheat Growth Modifier: 100%
[20:19:13 INFO]: NetherWart Growth Modifier: 100%
[20:19:13 INFO]: Vine Growth Modifier: 100%
[20:19:13 INFO]: Cocoa Growth Modifier: 100%
[20:19:13 INFO]: Bamboo Growth Modifier: 100%
[20:19:13 INFO]: SweetBerry Growth Modifier: 100%
[20:19:13 INFO]: Kelp Growth Modifier: 100%
[20:19:13 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true
[20:19:13 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[20:19:13 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 Slime: 987234911
[20:19:13 INFO]: Max TNT Explosions: 100
[20:19:13 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[20:19:13 INFO]: [ServerTap] Disabling ServerTap v1.0-SNAPSHOT
[20:19:13 INFO]: Reloading ResourceManager: Default, bukkit
[20:19:13 INFO]: Loaded 6 recipes
[20:19:13 INFO]: Reloading ResourceManager: Default, bukkit
[20:19:13 INFO]: Loaded 6 recipes
[20:19:13 INFO]: [ServerTap] Loading ServerTap v1.0-SNAPSHOT
[20:19:14 INFO]: Server permissions file permissions.yml is empty, ignoring it
[20:19:14 INFO]: [ServerTap] Enabling ServerTap v1.0-SNAPSHOT
[20:19:14 INFO]: [io.javalin.Javalin]
__ __ _
/ /____ _ _ __ ____ _ / /(_)____
__ / // __ `/| | / // __ `// // // __ \
/ /_/ // /_/ / | |/ // /_/ // // // / / /
\____/ \__,_/ |___/ \__,_//_//_//_/ /_/
https://javalin.io/documentation
[20:19:14 INFO]: [org.eclipse.jetty.util.log] Logging initialized @119728ms to org.eclipse.jetty.util.log.Slf4jLog
[20:19:14 INFO]: [io.javalin.Javalin] Starting Javalin ...
[20:19:14 ERROR]: [io.javalin.Javalin] Failed to start Javalin
[20:19:14 INFO]: [io.javalin.Javalin] Stopping Javalin ...
[20:19:14 INFO]: [io.javalin.Javalin] Javalin has stopped
[20:19:14 ERROR]: Error occurred while enabling ServerTap v1.0-SNAPSHOT (Is it up to date?)
java.lang.RuntimeException: Port already in use. Make sure no other process is using port 4567 and try again.
at io.javalin.Javalin.start(Javalin.java:182) ~[?:?]
at io.javalin.Javalin.start(Javalin.java:150) ~[?:?]
at io.servertap.PluginEntrypoint.onEnable(PluginEntrypoint.java:55) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:435) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.craftbukkit.v1_15_R1.CraftServer.enablePlugin(CraftServer.java:470) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.craftbukkit.v1_15_R1.CraftServer.enablePlugins(CraftServer.java:384) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.craftbukkit.v1_15_R1.CraftServer.reload(CraftServer.java:862) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.Bukkit.reload(Bukkit.java:610) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:54) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchCommand(CraftServer.java:742) ~[patched_1.15.2.jar:git-Paper-89]
at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchServerCommand(CraftServer.java:704) ~[patched_1.15.2.jar:git-Paper-89]
at net.minecraft.server.v1_15_R1.DedicatedServer.handleCommandQueue(DedicatedServer.java:469) ~[patched_1.15.2.jar:git-Paper-89]
at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:431) ~[patched_1.15.2.jar:git-Paper-89]
at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1112) ~[patched_1.15.2.jar:git-Paper-89]
at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:934) ~[patched_1.15.2.jar:git-Paper-89]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
Caused by: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:4567
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:346) ~[?:?]
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307) ~[?:?]
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[?:?]
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:231) ~[?:?]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72) ~[?:?]
at org.eclipse.jetty.server.Server.doStart(Server.java:385) ~[?:?]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72) ~[?:?]
at io.javalin.core.JavalinServer.start(JavalinServer.kt:72) ~[?:?]
at io.javalin.Javalin.start(Javalin.java:172) ~[?:?]
... 18 more
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_181]
at sun.nio.ch.Net.bind(Net.java:433) ~[?:1.8.0_181]
at sun.nio.ch.Net.bind(Net.java:425) ~[?:1.8.0_181]
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:1.8.0_181]
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[?:1.8.0_181]
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:342) ~[?:?]
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307) ~[?:?]
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[?:?]
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:231) ~[?:?]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72) ~[?:?]
at org.eclipse.jetty.server.Server.doStart(Server.java:385) ~[?:?]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72) ~[?:?]
at io.javalin.core.JavalinServer.start(JavalinServer.kt:72) ~[?:?]
at io.javalin.Javalin.start(Javalin.java:172) ~[?:?]
... 18 more
[20:19:14 INFO]: [ServerTap] Disabling ServerTap v1.0-SNAPSHOT
[20:19:14 INFO]: CONSOLE: Reload complete.
[20:19:14 INFO]: Timings Reset
>
Not 100% sure it's that big of a deal since it's not a supported command, but it might be nice to investigate if anything can be done.
Webhooks seem to be causing a massive performance impact on TPS.
Provided below is the timings report from paper.
https://timings.aikar.co/?id=8eb8bf944f3d4effab4f48782bbd96e3
/broadcast
should become /chat/broadcast
POST
to /chat/tell
should send a message to a specific player only identified by formParam :playerUuid
Have bungeecord support for the list of players
For some reason, executing a command such as help
will list all the commands in the response content, but something like
scoreboard players get theangrybagel totalKills
has no output in the response. (when I execute the command in the console, it shows output, but there isn't any output in the response)
Some good improvements, but it's pretty involved https://javalin.io/migration-guide-javalin-3-to-4
Hopefully this also resolves #60
Well, the name says it all.
Same as for OPs, it would be nice to be able to delete whitelist entries again.
The addition of a plugins description and author would be nice.
Could we add the ability to send the latest server log to the client on a web socket connection?
It should basically be this https://bitbucket.org/phybros/swiftapi/src/41595c76fc2f97d93da188c8dcafd404cd82d60b/src/main/java/org/phybros/minecraft/SwiftFilter.java#lines-48:61
@phybros It seems like there are quite a few people aware of this project, it would be cool to have a place you can funnel people if they want to ask questions or give feedback without spamming the Github issues. Is that something you would want to have? Given the nature of this project, I think a discord server would make sense but really any kind of group chat platform would work.
Many server may using following this plugin for comparable there economy system
Essentialx, GemsEconomy, etc.
Request Endpoint:
/v1/groups | This endpoint can give group permission using plugin like Luckperms, bPermission, etc
This my help people to do thing outside minecraft server that work with java or not
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
io.javalin.community.openapi:openapi-annotation-processor
, io.javalin.community.openapi:javalin-swagger-plugin
, io.javalin.community.openapi:javalin-openapi-plugin
)These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
.github/workflows/build.yml
actions/checkout v3
actions/setup-java v3
softprops/action-gh-release v1
eregon/publish-release v1
.github/workflows/publish-docs.yaml
actions/checkout v3
actions/setup-python v4
actions/setup-python v4
ubuntu 22.04
pom.xml
org.spigotmc:spigot-api 1.16.5-R0.1-SNAPSHOT
io.javalin:javalin 5.6.2
io.javalin.community.openapi:javalin-openapi-plugin 5.6.2
io.javalin.community.openapi:javalin-swagger-plugin 5.6.2
io.javalin.community.ssl:ssl-plugin 5.6.2
com.fasterxml.jackson.core:jackson-databind 2.15.2
org.apache.commons:commons-compress 1.23.0
commons-io:commons-io 2.13.0
net.milkbowl.vault:VaultAPI 1.7
de.tr7zw:item-nbt-api-plugin 2.11.3
org.slf4j:slf4j-jdk14 2.0.7
org.slf4j:slf4j-api 2.0.7
org.apache.logging.log4j:log4j-core 2.20.0
me.clip:placeholderapi 2.11.3
com.github.seeseemelk:MockBukkit-v1.16 1.5.0
com.konghq:unirest-java 3.14.5
org.junit.jupiter:junit-jupiter-api 5.9.3
org.apache.maven.plugins:maven-compiler-plugin 3.11.0
io.javalin.community.openapi:openapi-annotation-processor 5.6.2
org.apache.maven.plugins:maven-release-plugin 3.0.1
com.google.code.maven-replacer-plugin:replacer 1.5.3
org.apache.maven.plugins:maven-shade-plugin 3.5.0
org.apache.maven.plugins:maven-surefire-plugin 3.1.2
Javalin has good support for websockets. We could create a websocket handler to send console output in realtime, chat, server events (player join/leave etc) and so on.
First off:
[13Sep2022 18:18:27.050] [Server thread/INFO] [ServerTap/]: Enabling ServerTap v0.3.1
[13Sep2022 18:18:27.066] [Server thread/INFO] [Minecraft/]: [ServerTap] No Vault plugin detected
[13Sep2022 18:18:27.188] [Server thread/WARN] [Minecraft/]: [ServerTap] TLS is not enabled.
[13Sep2022 18:18:27.199] [Server thread/INFO] [Minecraft/]: [ServerTap] Enabling CORS for *
[13Sep2022 18:18:27.219] [Server thread/WARN] [io.javalin.Javalin/]: JDK15 and Kotlin 1.5 break reflection in different ways - the OpenAPI plugin will not work properly. Please visit https://github.com/tipsy/javalin/issues/1193 if you want to help fix this issue.
[13Sep2022 18:18:27.219] [Server thread/WARN] [io.javalin.Javalin/]: You can disable this warning by doing `OpenApiVersionUtil.logWarnings = false`
[13Sep2022 18:18:27.299] [Server thread/INFO] [org.eclipse.jetty.util.log/]: Logging initialized @81544ms to org.eclipse.jetty.util.log.Slf4jLog
[13Sep2022 18:18:27.439] [Server thread/INFO] [io.javalin.Javalin/]: Starting Javalin ...
[13Sep2022 18:18:27.446] [Server thread/INFO] [io.javalin.Javalin/]: You are running Javalin 4.6.4 (released July 8, 2022).
[13Sep2022 18:18:27.916] [Server thread/INFO] [io.javalin.Javalin/]: Static file handler added: StaticFileConfig(hostedPath=/, directory=META-INF/resources/webjars, location=CLASSPATH, precompress=false, aliasCheck=null, headers={Cache-Control=max-age=31622400}). File system location: 'jar:file:/home/container/plugins/ServerTap-0.3.1.jar!/META-INF/resources/webjars'
[13Sep2022 18:18:27.916] [Server thread/INFO] [io.javalin.Javalin/]: Listening on http://localhost:9998/
[13Sep2022 18:18:27.916] [Server thread/INFO] [io.javalin.Javalin/]: Javalin started in 485ms \o/
I got two exceptions while trying out the swagger on a custom port on servertap. First:
Can't read from file http://myserverip:9998/swagger-docs"
and exceptions in the console. I don't have the vault plugin, since I thought it is a soft-dependency:
[13Sep2022 18:59:59.973] [JettyServerThreadPool-157/ERROR] [io.javalin.Javalin/]: Exception occurred while servicing http-request
java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1194) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89) ~[ServerTap-0.3.1.jar:?] {}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) ~[ServerTap-0.3.1.jar:?] {}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [ServerTap-0.3.1.jar:?] {}
at java.lang.Thread.run(Thread.java:833) [?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
Caused by: java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryDefineClass(ClassLoaderRemapper.java:183) ~[arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe.jar%2369!/:arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe] {re:mixin,re:classloading}
at io.izzel.arclight.common.mod.util.remapper.generated.ArclightReflectionHandler_11.redirectGetDeclaredFields(ArclightReflectionHandler.java:78) ~[arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe.jar%2369!/:arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe] {}
at io.javalin.core.util.ReflectionUtilKt.getJavaFieldName(ReflectionUtil.kt:12) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.ReflectionUtilKt.isJavaField(ReflectionUtil.kt:58) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.ReflectionUtilKt.getLambdaField(ReflectionUtil.kt:65) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.Reflection.getLambdaField(ReflectionUtil.kt:118) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.ExtractDocumentationKt.getOpenApiAnnotationFromReference(extractDocumentation.kt:83) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.ExtractDocumentationKt.extractDocumentation(extractDocumentation.kt:41) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.OpenApiBuilderDslKt.applyMetaInfoList(openApiBuilderDsl.kt:42) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1$1$1.invoke(JavalinOpenApi.kt:54) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1$1$1.invoke(JavalinOpenApi.kt:53) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.OpenApiUpdaterDslKt.updateComponents(openApiUpdaterDsl.kt:19) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1.invoke(JavalinOpenApi.kt:53) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1.invoke(JavalinOpenApi.kt:49) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApiKt.runWithModelConverter(JavalinOpenApi.kt:72) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApiKt.access$runWithModelConverter(JavalinOpenApi.kt:1) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi.createSchema(JavalinOpenApi.kt:49) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.createOpenAPISchema(OpenApiHandler.kt:41) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.initializeSchemaSynchronized(OpenApiHandler.kt:121) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.handle(OpenApiHandler.kt:129) ~[ServerTap-0.3.1.jar:?] {}
at io.servertap.PluginEntrypoint.lambda$onEnable$1(PluginEntrypoint.java:153) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
... 44 more
[13Sep2022 18:59:59.975] [JettyServerThreadPool-154/ERROR] [io.javalin.Javalin/]: Exception occurred while servicing http-request
java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1194) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89) ~[ServerTap-0.3.1.jar:?] {}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) ~[ServerTap-0.3.1.jar:?] {}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [ServerTap-0.3.1.jar:?] {}
at java.lang.Thread.run(Thread.java:833) [?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
Caused by: java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryDefineClass(ClassLoaderRemapper.java:183) ~[arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe.jar%2369!/:arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe] {re:mixin,re:classloading}
at io.izzel.arclight.common.mod.util.remapper.generated.ArclightReflectionHandler_11.redirectGetDeclaredFields(ArclightReflectionHandler.java:78) ~[arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe.jar%2369!/:arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe] {}
at io.javalin.core.util.ReflectionUtilKt.getJavaFieldName(ReflectionUtil.kt:12) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.ReflectionUtilKt.isJavaField(ReflectionUtil.kt:58) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.ReflectionUtilKt.getLambdaField(ReflectionUtil.kt:65) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.Reflection.getLambdaField(ReflectionUtil.kt:118) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.ExtractDocumentationKt.getOpenApiAnnotationFromReference(extractDocumentation.kt:83) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.ExtractDocumentationKt.extractDocumentation(extractDocumentation.kt:41) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.OpenApiBuilderDslKt.applyMetaInfoList(openApiBuilderDsl.kt:42) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1$1$1.invoke(JavalinOpenApi.kt:54) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1$1$1.invoke(JavalinOpenApi.kt:53) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.OpenApiUpdaterDslKt.updateComponents(openApiUpdaterDsl.kt:19) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1.invoke(JavalinOpenApi.kt:53) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1.invoke(JavalinOpenApi.kt:49) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApiKt.runWithModelConverter(JavalinOpenApi.kt:72) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApiKt.access$runWithModelConverter(JavalinOpenApi.kt:1) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi.createSchema(JavalinOpenApi.kt:49) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.createOpenAPISchema(OpenApiHandler.kt:41) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.initializeSchemaSynchronized(OpenApiHandler.kt:121) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.handle(OpenApiHandler.kt:129) ~[ServerTap-0.3.1.jar:?] {}
at io.servertap.PluginEntrypoint.lambda$onEnable$1(PluginEntrypoint.java:153) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
... 45 more
[13Sep2022 18:59:59.978] [JettyServerThreadPool-403/ERROR] [io.javalin.Javalin/]: Exception occurred while servicing http-request
java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1194) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89) ~[ServerTap-0.3.1.jar:?] {}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) ~[ServerTap-0.3.1.jar:?] {}
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [ServerTap-0.3.1.jar:?] {}
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [ServerTap-0.3.1.jar:?] {}
at java.lang.Thread.run(Thread.java:833) [?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
Caused by: java.lang.NoClassDefFoundError: net/milkbowl/vault/economy/Economy
at io.izzel.arclight.common.mod.util.remapper.ClassLoaderRemapper.tryDefineClass(ClassLoaderRemapper.java:183) ~[arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe.jar%2369!/:arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe] {re:mixin,re:classloading}
at io.izzel.arclight.common.mod.util.remapper.generated.ArclightReflectionHandler_11.redirectGetDeclaredFields(ArclightReflectionHandler.java:78) ~[arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe.jar%2369!/:arclight-1.18.2-1.0.7-SNAPSHOT-7d2418fe] {}
at io.javalin.core.util.ReflectionUtilKt.getJavaFieldName(ReflectionUtil.kt:12) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.ReflectionUtilKt.isJavaField(ReflectionUtil.kt:58) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.ReflectionUtilKt.getLambdaField(ReflectionUtil.kt:65) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.core.util.Reflection.getLambdaField(ReflectionUtil.kt:118) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.ExtractDocumentationKt.getOpenApiAnnotationFromReference(extractDocumentation.kt:83) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.ExtractDocumentationKt.extractDocumentation(extractDocumentation.kt:41) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.OpenApiBuilderDslKt.applyMetaInfoList(openApiBuilderDsl.kt:42) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1$1$1.invoke(JavalinOpenApi.kt:54) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1$1$1.invoke(JavalinOpenApi.kt:53) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.dsl.OpenApiUpdaterDslKt.updateComponents(openApiUpdaterDsl.kt:19) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1.invoke(JavalinOpenApi.kt:53) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi$createSchema$1.invoke(JavalinOpenApi.kt:49) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApiKt.runWithModelConverter(JavalinOpenApi.kt:72) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApiKt.access$runWithModelConverter(JavalinOpenApi.kt:1) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.JavalinOpenApi.createSchema(JavalinOpenApi.kt:49) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.createOpenAPISchema(OpenApiHandler.kt:41) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.initializeSchemaSynchronized(OpenApiHandler.kt:121) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.plugin.openapi.OpenApiHandler.handle(OpenApiHandler.kt:129) ~[ServerTap-0.3.1.jar:?] {}
at io.servertap.PluginEntrypoint.lambda$onEnable$1(PluginEntrypoint.java:153) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99) ~[ServerTap-0.3.1.jar:?] {}
at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85) ~[ServerTap-0.3.1.jar:?] {}
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
... 45 more
We already have some interactive routes for economy stuff (pay and debit). Doing a GET
to the top level /economy
should provide some basic information, like enabled
(true or false) as well as the name
and version
of the economy plugin (use the same format that is used in the /plugins
route for those attributes.
Something like this:
{
"enabled": true,
"name": "Vault",
"version": "1.7-R0"
}
When using any forge + (bukkit/spigot/paper) environment (MCPC+, Cauldron, CatServer) the /player inventory route returns all items with minecraft:
this is not correct.
The resolution to this problem requires a way to determine if an item is provided by a mod that is outside of vanilla Minecraft.
This is not a huge issue and will likely not be fixed because servertap does not support Forge server environments. But if a solution is possible it might be valuable to address this issue.
This is mostly just here for reference purposes.
Is it secure to transfer data with this plugin?
Would it be possible to add support for Essentials, Luckperms and Vault? It would be really useful to be able to manage player permissions with LuckPerms and have the ability to use essentials commands through the API.
Routes:
/v1/players/perms ( Return all player perms )
/v1/player/perms/update ( Update player perms )
/v1/player/:id/mute ( Mute a player )
Right now, all errors are using status code 200 OK
and then including a raw string in the body.
Example:
HTTP/1.1 200 OK
Date: Thu, 30 Apr 2020 22:11:39 GMT
Server: Javalin
Content-Type: application/json
Content-Length: 42
"error: The server has whitelist disabled"
If you're writing a JSON client for this API there's nothing to tell you that there was an error. Usually you'd rely on the statusCode of the response. Some poorly implemented JSON parsers would also fail to parse just a string, even though it's technically correct JSON.
Some options:
404 Not Found
, 405 Method Not Allowed
etc etc)"error": true
@ATechAdventurer maybe you have opinions but I'm leaning towards 1.
Could we add all the game rules and available world data into ServerTap? Routes to update game rules would be nice too.
https://nodecraft.com/support/games/minecraft/using-gamerules-in-minecraft
An endpoint like /v1/worlds/:uuid/download
or /v1/worlds/download
to save & download worlds as a compressed file. Brotli would be preferred, but ZIP is good.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.