GithubHelp home page GithubHelp logo

plan-player-analytics / plan Goto Github PK

View Code? Open in Web Editor NEW
803.0 17.0 166.0 83.13 MB

Player Analytics plugin for Minecraft Server platforms - View player activity of your server with ease. :calendar:

Home Page: https://www.spigotmc.org/resources/plan-player-analytics.32536/

License: GNU Lesser General Public License v3.0

Java 86.74% HTML 0.19% JavaScript 11.25% CSS 1.78% Shell 0.02% Sass 0.02% Batchfile 0.01%
analytics statistics visualization mysql sqlite webserver data-collection sponge-plugin spigot-plugin bungeecord-plugin bukkit-plugin velocity-plugin nukkit-plugin hacktoberfest fabric-mod

plan's Introduction

Player Analytics

Github Actions Quality Gate   Java Lines of Code Code coverage   React Lines of Code

Documentation & Tutorials | Releases | DEV builds | Issues & Suggestions

Player Analytics is a fully-fledged solution for the analytics needs of your Minecraft server. A built-in webserver displays insights into different aspects of the server such as Online activity, Playerbase, and how these change over time.

Plan supports multiple different platforms and versions; Spigot, Paper, Sponge, SpongeForge, Bungeecord, Velocity, Cauldron & all derivatives - One jar for all platforms.

API

<repository>
    <id>jitpack</id>
    <url>https://jitpack.io</url>
</repository>

<dependency>
    <groupId>com.github.plan-player-analytics</groupId>
    <artifactId>Plan</artifactId>
    <version>{jitpack version}</version>
    <scope>provided</scope>
</dependency>

Building

You can build the project by running the following in the repository root:

cd Plan
./gradlew build

Used Libraries

License

Player Analytics is licensed under LGPL-3 (GNU Lesser General Public License)

plan's People

Contributors

anttimk avatar aurelien30000 avatar aurorals3 avatar brainstone avatar creeperface01 avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar drexhd avatar enterih avatar eyremba avatar fluxcapacitor2 avatar galexrt avatar hafarooki avatar hallo1142 avatar hexedhero avatar inductor avatar jhqwqmc avatar jvdoorn avatar karlatemp avatar paulzhng avatar perchunpak avatar pyvesb avatar quakycz avatar rymiel avatar saph1s avatar shadowhackercz avatar vankka avatar wolverstones avatar yukieiji avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plan's Issues

Data too long for column 'nickname' at row 1

Hey! On my test server I am using nicknames as players' character names. Currently my character's nickname is "Lord Roland Ironfist the Mighty", which apparently is too long for Plan to handle :P

[Feb 26 13:43:44] main.java.com.djrapitops.plan.database.databases.MySQLDB Caught java.sql.BatchUpdateException: Data truncation: Data too long for column 'nickname' at row 1
[Feb 26 13:43:44] sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[Feb 26 13:43:44] sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[Feb 26 13:43:44] sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[Feb 26 13:43:44] java.lang.reflect.Constructor.newInstance(Unknown Source)
[Feb 26 13:43:44] com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
[Feb 26 13:43:44] com.mysql.jdbc.Util.getInstance(Util.java:408)
[Feb 26 13:43:44] com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1162)
[Feb 26 13:43:44] com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1773)
[Feb 26 13:43:44] com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1257)
[Feb 26 13:43:44] com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:958)
[Feb 26 13:43:44] main.java.com.djrapitops.plan.database.databases.SQLDB.saveNickList(SQLDB.java:920)
[Feb 26 13:43:44] main.java.com.djrapitops.plan.database.databases.SQLDB.saveMultipleUserData(SQLDB.java:754)
[Feb 26 13:43:44] main.java.com.djrapitops.plan.data.cache.DataCacheHandler$3.run(DataCacheHandler.java:168)
[Feb 26 13:43:44] org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58)
[Feb 26 13:43:44] org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[Feb 26 13:43:44] com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[Feb 26 13:43:44] java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[Feb 26 13:43:44] java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[Feb 26 13:43:44] java.lang.Thread.run(Unknown Source)
[Feb 26 13:43:44]

SQL Injection possible with commands

Plan Version: Affected versions: 2.0.0 onwards
Server Version: -
Database Type: both

Description:
SQL Injection is possible by running a command, although limited to 19 characters.

Hook error

Spigot 1.11.2 latest, Plan 2.6.0

[12:34:19] [Server thread/INFO]: [Plan] Enabling Plan v2.6.0
[12:34:19] [Server thread/INFO]: [Plan] Using locale: Default: EN
[12:34:19] [Server thread/INFO]: [Plan] You're running the latest version
[12:34:19] [Server thread/INFO]: [Plan] Database init..
[12:34:19] [Server thread/INFO]: [Plan] sqlite-database connection established.
[12:34:20] [Server thread/INFO]: [Plan] Initializing Webserver..
[12:34:20] [Server thread/INFO]: [Plan] Webserver running on PORT 8804
[12:34:20] [Server thread/INFO]: [Plan] Analysis | Boot analysis in 30 seconds..
[12:34:20] [Server thread/ERROR]: Error occurred while enabling Plan v2.6.0 (Is it up to date?)
java.lang.NoClassDefFoundError: com/palmergames/bukkit/towny/exceptions/NotRegisteredException
at main.java.com.djrapitops.plan.data.additional.HookHandler.hook(HookHandler.java:39) ~[?:?]
at main.java.com.djrapitops.plan.data.additional.HookHandler.(HookHandler.java:27) ~[?:?]
at main.java.com.djrapitops.plan.Plan.onEnable(Plan.java:147) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:376) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:326) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at net.minecraft.server.v1_11_R1.MinecraftServer.t(MinecraftServer.java:421) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at net.minecraft.server.v1_11_R1.MinecraftServer.l(MinecraftServer.java:382) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:337) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:272) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:544) [spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
Caused by: java.lang.ClassNotFoundException: com.palmergames.bukkit.towny.exceptions.NotRegisteredException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_121]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot-1.11.2.jar-2017-02-21-0949:git-Spigot-d4f98a3-cb61ac0]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_121]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_121]
... 14 more

Performance Issues

Using a MySQL Database on the same machine.

Whenever Plan loads, the entire server hangs until it's finished. I'm also getting large lag spikes when players login and a considerable amount of lag from PlanPlayerMoveListener: https://timings.aikar.co/?id=61d937347e154c979207526516e8fe79

The analyze command always times out and the inspect command takes a couple minutes to return results. During these commands, the entire server hangs.

Could not pass event PlayerGameModeChangeEvent to Plan v2.5.1

Something funky happening here as I switch my gamemode!

[10:46:32] [Server thread/ERROR]: Could not pass event PlayerGameModeChangeEvent to Plan v2.5.1
org.bukkit.event.EventException
at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:46) ~[patched_1.11.2.jar:git-Paper-1055]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:502) [patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer.setGameMode(CraftPlayer.java:890) [patched_1.11.2.jar:git-Paper-1055]
at com.onarandombox.MultiverseCore.listeners.MVPlayerListener$2.run(MVPlayerListener.java:353) [Multiverse-Core-2.5.0-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58) [patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:356) [patched_1.11.2.jar:git-Paper-1055]
at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:820) [patched_1.11.2.jar:git-Paper-1055]
at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:403) [patched_1.11.2.jar:git-Paper-1055]
at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:754) [patched_1.11.2.jar:git-Paper-1055]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:652) [patched_1.11.2.jar:git-Paper-1055]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.NullPointerException
at com.djrapitops.plan.data.handlers.GamemodeTimesHandler.handleChangeEvent(GamemodeTimesHandler.java:58) ~[?:?]
at com.djrapitops.plan.data.listeners.PlanGamemodeChangeListener.onGamemodeChange(PlanGamemodeChangeListener.java:46) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor242.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$1.execute(EventExecutor.java:44) ~[patched_1.11.2.jar:git-Paper-1055]
... 13 more
[10:46:47] [Craft Scheduler Thread - 42/WARN]: java.lang.NullPointerException
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at com.djrapitops.plan.database.databases.SQLDB.saveGMTimes(SQLDB.java:927)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at com.djrapitops.plan.database.databases.SQLDB.saveUserData(SQLDB.java:802)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at com.djrapitops.plan.data.cache.DataCacheHandler$2.run(DataCacheHandler.java:203)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[10:46:47] [Craft Scheduler Thread - 42/WARN]: at java.lang.Thread.run(Unknown Source)
[10:47:02] [Craft Scheduler Thread - 42/WARN]: [Plan] Plugin Plan v2.5.1 generated an exception while executing task 29
java.lang.NullPointerException
at com.djrapitops.plan.data.handlers.GamemodeTimesHandler.saveToCache(GamemodeTimesHandler.java:79) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.saveHandlerDataToCache(DataCacheHandler.java:249) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.lambda$saveHandlerDataToCache$0(DataCacheHandler.java:227) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:1.8.0_121]
at java.util.Iterator.forEachRemaining(Unknown Source) ~[?:1.8.0_121]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.CountedCompleter.exec(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.doInvoke(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.invoke(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:1.8.0_121]
at com.djrapitops.plan.data.cache.DataCacheHandler.saveHandlerDataToCache(DataCacheHandler.java:226) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.access$000(DataCacheHandler.java:27) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler$1.run(DataCacheHandler.java:95) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [patched_1.11.2.jar:git-Paper-1055]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) [patched_1.11.2.jar:git-Paper-1055]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_121]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]

NPE

Spigot 1.11.2
Plan 2.8.0

This occurs occasionally, on quiescent server.

[20:05:57 WARN]: [Plan] Plugin Plan v2.8.0 generated an exception while executing task 17739
java.lang.NullPointerException
at main.java.com.djrapitops.plan.utilities.AnalysisUtils.lambda$getNewPlayers$0(AnalysisUtils.java:78) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) ~[?:1.8.0_121]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_121]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:474) ~[?:1.8.0_121]
at main.java.com.djrapitops.plan.utilities.AnalysisUtils.getNewPlayers(AnalysisUtils.java:79) ~[?:?]
at main.java.com.djrapitops.plan.utilities.Analysis$1.createPlayerActivityGraphs(Analysis.java:229) ~[?:?]
at main.java.com.djrapitops.plan.utilities.Analysis$1.run(Analysis.java:145) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.11.2.jar-2017-03-08-0723:git-Spigot-283de8b-4316a8c]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [spigot-1.11.2.jar-2017-03-08-0723:git-Spigot-283de8b-4316a8c]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
[20:07:57 INFO]: [Plan] Cleared 3cf9b867-2577-49d1-affb-7ba8196a0d39 from Cache.

Sqlite autocommit error

Environment: Spigot 1.11.2 latest, Plan 2.3.0, and a plethora of plugins supporting multiverse. Every five minutes, the log shows:

[10:25:22 WARN]: java.sql.SQLException: database in auto-commit mode
[10:25:22 WARN]: at org.sqlite.jdbc3.JDBC3Connection.commit(JDBC3Connection.java:164)
[10:25:22 WARN]: at com.djrapitops.plan.database.databases.SQLDB.saveMultipleUserData(SQLDB.java:647)
[10:25:22 WARN]: at com.djrapitops.plan.data.cache.DataCacheHandler.saveCachedUserData(DataCacheHandler.java:159)
[10:25:22 WARN]: at com.djrapitops.plan.data.cache.DataCacheHandler$1.run(DataCacheHandler.java:88)
[10:25:22 WARN]: at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71)
[10:25:22 WARN]: at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[10:25:22 WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[10:25:22 WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[10:25:22 WARN]: at java.lang.Thread.run(Thread.java:745)

Uncaught ArrayIndexOutOfBoundsException on Import from OnTime

Plan Version: 2.7.2
OnTime Version: 4.1.3
Database Type: mysql
Command Causing Issue: /plan manage import OnTime -a

Description:
While importing OnTime player data into Plan, an exception is thrown part way through the import.
After the import, it is no longer possible to execute /plan analyze, as an exception is thrown.

I suspect that the plugin has either imported data from OnTime incorrectly, or OnTime has some data which is not valid (note: OnTime is working correctly).

Steps to Reproduce:

  1. Execute /plan manage import OnTime -a
  2. Execute /plan analyze

Stack Trace - Console:

02.03 11:48:55 [Server] ERROR [Plan] Ran into an error. It has been logged to the Errors.txt
02.03 11:48:56 [Server] WARN Exception in thread "Craft Scheduler Thread - 72" 
02.03 11:48:56 [Server] WARN org.apache.commons.lang.UnhandledException: Plugin Plan v2.7.2 generated an exception while executing task 25972
02.03 11:48:56 [Server] INFO at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
02.03 11:48:56 [Server] INFO at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
02.03 11:48:56 [Server] INFO at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
02.03 11:48:56 [Server] INFO at java.lang.Thread.run(Thread.java:745)
02.03 11:48:56 [Server] INFO Caused by: java.lang.ArrayIndexOutOfBoundsException

Stack Trace - Errors.txt:

[Mar 02 10:36:03] main.java.com.djrapitops.plan.data.cache.GetConsumer Caught java.lang.ArrayIndexOutOfBoundsException: 14
[Mar 02 10:36:03]   sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:453)
[Mar 02 10:36:03]   java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2397)
[Mar 02 10:36:03]   java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2312)
[Mar 02 10:36:03]   java.util.Calendar.setTimeInMillis(Calendar.java:1804)
[Mar 02 10:36:03]   java.util.Calendar.setTime(Calendar.java:1770)
[Mar 02 10:36:03]   java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)
[Mar 02 10:36:03]   java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
[Mar 02 10:36:03]   java.text.DateFormat.format(DateFormat.java:345)
[Mar 02 10:36:03]   net.minecraft.server.v1_10_R1.UserCache$BanEntrySerializer.a(UserCache.java:299)
[Mar 02 10:36:03]   net.minecraft.server.v1_10_R1.UserCache$BanEntrySerializer.serialize(UserCache.java:345)
[Mar 02 10:36:03]   net.minecraft.server.v1_10_R1.UserCache$BanEntrySerializer.serialize(UserCache.java:1)
[Mar 02 10:36:03]   com.google.gson.TreeTypeAdapter.write(TreeTypeAdapter.java:70)
[Mar 02 10:36:03]   com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
[Mar 02 10:36:03]   com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
[Mar 02 10:36:03]   com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60)
[Mar 02 10:36:03]   com.google.gson.Gson.toJson(Gson.java:593)
[Mar 02 10:36:03]   com.google.gson.Gson.toJson(Gson.java:572)
[Mar 02 10:36:03]   com.google.gson.Gson.toJson(Gson.java:527)
[Mar 02 10:36:03]   com.google.gson.Gson.toJson(Gson.java:507)
[Mar 02 10:36:03]   net.minecraft.server.v1_10_R1.UserCache.c(UserCache.java:231)
[Mar 02 10:36:03]   net.minecraft.server.v1_10_R1.UserCache.getProfile(UserCache.java:164)
[Mar 02 10:36:03]   org.bukkit.craftbukkit.v1_10_R1.CraftProfileBanList.isBanned(CraftProfileBanList.java:84)
[Mar 02 10:36:03]   org.bukkit.craftbukkit.v1_10_R1.CraftOfflinePlayer.isBanned(CraftOfflinePlayer.java:97)
[Mar 02 10:36:03]   main.java.com.djrapitops.plan.data.UserData.<init>(UserData.java:94)
[Mar 02 10:36:03]   main.java.com.djrapitops.plan.database.databases.SQLDB.giveUserDataToProcessors(SQLDB.java:507)
[Mar 02 10:36:03]   main.java.com.djrapitops.plan.data.cache.GetConsumer.consume(DataCacheGetQueue.java:72)
[Mar 02 10:36:03]   main.java.com.djrapitops.plan.data.cache.GetConsumer.run(DataCacheGetQueue.java:60)
[Mar 02 10:36:03]   java.lang.Thread.run(Thread.java:745)

Reply to issue with plan. Originally sent on spigotmc.org.

Hey, sorry to send this here. I tried to reply on spigotmc.org but for some reason the site keeps throwing a spam error at me for the past 6 hours.

===================================================================

Reply to:

Hello. Nice to hear that this plugin will be useful :)
Hopefully we can figure this problem out soon so you can get to the more important tasks of server management :)

Edit: I wrote the debug thing a bit earlier and apparently didn't send it, so you can ignore it if this works:
I found out that there were bugs in the code that caused the plugin to fail on Enable, if PlanLite was not installed - My fault, didn't do proper testing.

However I have now fixed the bug and it should solve your issues:
https://www.spigotmc.org/resources/plan-player-analytics.32536/update?update=139412

-- Below debug message if it doesn't fix the issue --

Let's start by debugging:
Does the /plan command work on console? (If it does not, skip next step)
Have you given the permissions for the plugin (are you using a permission manager that restricts default permissions)?

Please send me your config settings
What server version are you using? (Spigot-1.9.4/Paper-1.11.2 for example)
Does the plugin spit any errors when it is enabled/commands are used?
Is your IP set in the server.properties - this is where the server IP is taken for the commands.
Webserver automatically gets the ip though, so it doesn't affect the webserver.
The webserver only accepts connections after data is cached, and only to certain addresses that display the data. This is to prevent possible attacks with the plugin.

Try this: In the config set RefreshAnalysisCacheOnEnable to true and try to connect to the ip:8804/server after the console says the Analysis is complete:

If you can connect to the ip:8804/server it means the webserver is working, but the commands might need permissions
Is there another plugin with the /plan command? - Are you running an older version of plan (1.6.2) alongside with the newest version?
If all this fails, try to redownload the plugin and see if the problem persists, corrupt plugin.yml might cause the plugin to not register commands properly.

Alright that should help figure out what the problem is. :)

The first issue is quite odd really, because the only thing I've written that might say /plan is in the plugin.yml:
Code (Text):
commands:
plan:
usage: /
description: base command
Second issue is most likely because of the explanation of blocking connections above.

Hoping to hear back soon,
-Rsl

PS: The Older version of Plan (in december) was only a chatbox data checker for other plugins. (PlanLite if you need such thing) - This webserver one is as new as 4 days :D (released on 17th)

===================================================================

My Reply:

Looks like the update fixed the issue. All is working now from what I can tell!

Thanks for the help, and again for making the plugin. I've been looking for something like this for a while now. Been running a small 20-30 person whitelisted server and wanted an easy way to keep track of peoples comings and goings to figure out who's active and who's not. There are some plugins that have what I need as a feature, but not the actual purpose of the plugin. This looks like it's exactly what I was looking for, easy, lightweight and simple.
And yeah I did notice that this is brand new, I saw your post on the admincraft subreddit I believe. In fact until a few moments ago I didn't notice only like 200 total downloads and only 18 downloads of the bug fix update haha. So it's even newer than I thought.
One more thing, I decided to check out the test server you set up for the trying out the plugin. Not sure if you're aware, but people don't have permissions to use it. Only the commands help, analyze and lite show as being available. Figured I'd give you the heads up.

Thanks again,
Chris

PS: Here's a screenshot so you can see for yourself what's available: http://imgur.com/7290e8t

NullPointerException | InspectCacheClearTask

Spigot 1.11.2, Plan 2.8.1

If anything, NPEs are more frequent.

[07:41:07 WARN]: [Plan] Task #5209 for Plan v2.8.1 generated an exception
java.lang.NullPointerException
at main.java.com.djrapitops.plan.data.cache.InspectCacheHandler$2.run(InspectCacheHandler.java:72) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]

IllegalStateException - Queue full when executing "/plan analyze" after import of >1000 players

Plan Version: 2.7.3
Server Version: Spigot 1.10.2
Database Type: mysql
Command Causing Issue: /plan analyze

Description:
After importing data from OnTime into the Plan database, I am no longer able to perform an analysis on the server.

This issue seems to be the result of an ArrayBlockingQueue being used with a capacity of 1,000. As approximately 1,300 players were imported, this is exceeding the current limit that Plan can handle.

Steps to Reproduce:

  1. Execute /plan manage import OnTime -a
  2. Wait until the import is complete.
  3. (Optional) Restart the server.
  4. Execute /plan analyze

Proposed Solution:
Replace all instances of
new ArrayBlockingQueue(1000);
with either a larger value, or a value which can be set in the config.

Stack Trace - Console:

04.03 17:38:28 [Server] WARN Exception in thread "Craft Scheduler Thread - 65" 
04.03 17:38:28 [Server] WARN org.apache.commons.lang.UnhandledException: Plugin Plan v2.7.3 generated an exception while executing task 266536
04.03 17:38:28 [Server] INFO at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
04.03 17:38:28 [Server] INFO at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
04.03 17:38:28 [Server] INFO at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
04.03 17:38:28 [Server] INFO at java.lang.Thread.run(Thread.java:745)
04.03 17:38:28 [Server] INFO Caused by: java.lang.IllegalStateException: Queue full
04.03 17:38:28 [Server] INFO at java.util.AbstractQueue.add(AbstractQueue.java:98)
04.03 17:38:28 [Server] INFO at java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:312)
04.03 17:38:28 [Server] INFO at main.java.com.djrapitops.plan.data.cache.DataCacheGetQueue.scheduleForGet(DataCacheGetQueue.java:36)
04.03 17:38:28 [Server] INFO at main.java.com.djrapitops.plan.data.cache.DataCacheHandler.getUserDataForProcessing(DataCacheHandler.java:143)
04.03 17:38:28 [Server] INFO at main.java.com.djrapitops.plan.data.cache.InspectCacheHandler.cache(InspectCacheHandler.java:56)
04.03 17:38:28 [Server] INFO at main.java.com.djrapitops.plan.utilities.Analysis$1.lambda$run$1(Analysis.java:72)
04.03 17:38:28 [Server] INFO at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
04.03 17:38:28 [Server] INFO at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
04.03 17:38:28 [Server] INFO at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
04.03 17:38:28 [Server] INFO at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
04.03 17:38:28 [Server] INFO at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
04.03 17:38:28 [Server] INFO at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
04.03 17:38:28 [Server] INFO at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
04.03 17:38:28 [Server] INFO at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
04.03 17:38:28 [Server] INFO at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
04.03 17:38:28 [Server] INFO at main.java.com.djrapitops.plan.utilities.Analysis$1.run(Analysis.java:71)
04.03 17:38:28 [Server] INFO at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71)
04.03 17:38:28 [Server] INFO at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
04.03 17:38:28 [Server] INFO ... 3 more

IllegalArgumentException When Command Stored Ending With Backslash

Plan Version: 2.82

Description:
When executing "/plan analyze" or starting the server, an IllegalArgumentException is thrown with the description "character to be escaped is missing".

Based on the stack trace, this is likely caused by a command being entered with a single backslash at the end. For example "/\".

As a result, once a command of this type has been executed by any player (even if it's not a valid command), the plugin will store this command and will no longer be able to analyze data.

Steps to Reproduce:

  1. [As Any Player] Enter a command which ends in a single backslash. For example, "/\".
  2. [As OP] Execute "/plan analyze" or restart the server.

Impact:
Any player on the server is able to cause Plan to crash.

Proposed Solution:
Ensure that any strings which are read in are properly escaped, especially with regex.

Stack Trace (Errors.txt):

[Mar 10 21:33:20] SortableCommandUseTableCreator Caught java.lang.IllegalArgumentException: character to be escaped is missing
[Mar 10 21:33:20]   java.util.regex.Matcher.appendReplacement(Matcher.java:809)
[Mar 10 21:33:20]   java.util.regex.Matcher.replaceAll(Matcher.java:955)
[Mar 10 21:33:20]   java.lang.String.replaceAll(String.java:2223)
[Mar 10 21:33:20]   main.java.com.djrapitops.plan.ui.Html.parse(Html.java:106)
[Mar 10 21:33:20]   main.java.com.djrapitops.plan.ui.tables.SortableCommandUseTableCreator.createSortedCommandUseTable(SortableCommandUseTableCreator.java:32)
[Mar 10 21:33:20]   main.java.com.djrapitops.plan.utilities.AnalysisUtils.createTableOutOfHashMap(AnalysisUtils.java:47)
[Mar 10 21:33:20]   main.java.com.djrapitops.plan.utilities.Analysis$1.createCommandUseTable(Analysis.java:174)
[Mar 10 21:33:20]   main.java.com.djrapitops.plan.utilities.Analysis$1.run(Analysis.java:159)
[Mar 10 21:33:20]   org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71)
[Mar 10 21:33:20]   org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
[Mar 10 21:33:20]   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[Mar 10 21:33:20]   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[Mar 10 21:33:20]   java.lang.Thread.run(Thread.java:745)

Console Reporting Error

Console reported this error here:

[Feb 27 22:14:10] main.java.com.djrapitops.plan.utilities.Analysis$1 Caught java.lang.NullPointerException
[Feb 27 22:14:10] main.java.com.djrapitops.plan.utilities.Analysis$1.lambda$run$3(Analysis.java:98)
[Feb 27 22:14:10] java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
[Feb 27 22:14:10] java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
[Feb 27 22:14:10] java.util.stream.AbstractPipeline.copyInto(Unknown Source)
[Feb 27 22:14:10] java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source)
[Feb 27 22:14:10] java.util.concurrent.CountedCompleter.exec(Unknown Source)
[Feb 27 22:14:10] java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
[Feb 27 22:14:10] java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source)
[Feb 27 22:14:10] java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)

pom contains 0 maven repos

So... how are we supposed to build this if you don't have any of the required maven repos included in the pom...

NPE on "/plan analyze"

Running "/plan analyze" throws this NPE in console:

[Plan] Plugin Plan v2.7.0 generated an exception while executing task 192048 java.lang.NullPointerException at main.java.com.djrapitops.plan.ui.tables.SortablePlayersTableCreator.createSortablePlayersTable(SortablePlayersTableCreator.java:19) ~[?:?] at main.java.com.djrapitops.plan.utilities.AnalysisUtils.createSortablePlayersTable(AnalysisUtils.java:46) ~[?:?] at main.java.com.djrapitops.plan.utilities.Analysis$1.run(Analysis.java:92) ~[?:?] at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[patched_1.11.2.jar:git-Paper-1059] at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [patched_1.11.2.jar:git-Paper-1059] at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) [patched_1.11.2.jar:git-Paper-1059] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_77] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_77] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_77]

NPE thrown for /plan analyze

Plan Version: 2.8.1
Server Version: Spigot-1.11.2
Database Type: SQLite
Command Causing Issue: /plan analyze

Description:
NPE is thrown, and the analysis times out.

Stack Trace - Console/Errors.txt contents:

11.03 21:09:05 [Server] INFO java.lang.NullPointerException
11.03 21:09:05 [Server] INFO at main.java.com.djrapitops.plan.utilities.AnalysisUtils.lambda$transformSessionDataToLengths$3(AnalysisUtils.java:91) ~[?:?]
11.03 21:09:05 [Server] INFO at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[?:1.8.0_112]
11.03 21:09:05 [Server] INFO at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[?:1.8.0_112]
11.03 21:09:05 [Server] INFO at main.java.com.djrapitops.plan.utilities.AnalysisUtils.transformSessionDataToLengths(AnalysisUtils.java:90) ~[?:?]
11.03 21:09:05 [Server] INFO at main.java.com.djrapitops.plan.utilities.Analysis$1.run(Analysis.java:150) ~[?:?]
11.03 21:09:05 [Server] INFO at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.11.jar:git-Spigot-d4f98a3-cb61ac0]
11.03 21:09:05 [Server] INFO at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [spigot-1.11.jar:git-Spigot-d4f98a3-cb61ac0]
11.03 21:09:05 [Server] INFO at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_112]
11.03 21:09:05 [Server] INFO at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_112]
11.03 21:09:05 [Server] INFO at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112]

NPE on Factions hook

Spigot 1.11.2
Plan 2.6.1
Factions 2.10.0

/plan analyze produces no errors.
Refresh web page produces:

log:

[02:09:01 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:01 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:01 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:01 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:02 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:02 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:02 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:02 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:02 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt
[02:09:02 ERROR]: [Plan] Ran into an error. It has been logged to the Errors.txt

Errors.txt:

[Feb 22 02:10:02] main.java.com.djrapitops.plan.ui.webserver.Response Caught java.lang.NullPointerException
[Feb 22 02:10:02] main.java.com.djrapitops.plan.data.additional.FactionsHook.getFactionInfo(FactionsHook.java:64)
[Feb 22 02:10:02] main.java.com.djrapitops.plan.ui.tables.SortableFactionsTableCreator.createSortableFactionsTable(SortableFactionsTableCreator.java:28)
[Feb 22 02:10:02] main.java.com.djrapitops.plan.data.additional.HookHandler.getAdditionalAnalysisReplaceRules(HookHandler.java:99)
[Feb 22 02:10:02] main.java.com.djrapitops.plan.utilities.PlaceholderUtils.getAnalysisReplaceRules(PlaceholderUtils.java:64)
[Feb 22 02:10:02] main.java.com.djrapitops.plan.ui.DataRequestHandler.getAnalysisHtml(DataRequestHandler.java:77)
[Feb 22 02:10:02] main.java.com.djrapitops.plan.ui.webserver.Response.sendStaticResource(Response.java:103)
[Feb 22 02:10:02] main.java.com.djrapitops.plan.ui.webserver.WebSocketServer$1.run(WebSocketServer.java:77)
[Feb 22 02:10:02] org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71)
[Feb 22 02:10:02] org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[Feb 22 02:10:02] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[Feb 22 02:10:02] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[Feb 22 02:10:02] java.lang.Thread.run(Thread.java:745)

Please code
try {} catch {}
on all pointers before use.

Data too long for column 'command'

Been setting this error in "Errors.txt" pretty frequently:
main.java.com.djrapitops.plan.data.cache.DataCacheHandler Caught java.sql.BatchUpdateException: Data truncation: Data too long for column 'command' at row 1 sun.reflect.GeneratedConstructorAccessor396.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) com.mysql.jdbc.Util.handleNewInstance(Util.java:425) com.mysql.jdbc.Util.getInstance(Util.java:408) com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1162) com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1773) com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1257) com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:958) main.java.com.djrapitops.plan.database.databases.SQLDB.saveCommandUse(SQLDB.java:431) main.java.com.djrapitops.plan.data.cache.DataCacheHandler.saveCacheOnDisable(DataCacheHandler.java:190) main.java.com.djrapitops.plan.Plan.lambda$onDisable$6(Plan.java:165) java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) java.util.concurrent.FutureTask.run(FutureTask.java:266) java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745)

Player links are incorrect.

Plan web service is http://myserver.com:8804/server

Player links on that page are http://:8804/player/player
They should be http://myserver.com:8804/player/player

Errors caught by PlanDebugger Project (Multi-Issue)

Plan Version: 2.9.0-DEV
Server Version: Spigot-1.11.2
Database Type: sqlite

Description
(Box checked if fixed.)

NullPointerException when:
GameModeTimesHandler:

  • CurrentGM is null
  • LastGM is null
  • NewGM is null

Saving to Database:

  • UUID is null
  • UUID is null While saving multiple
  • GamemodeTimes map is null
  • Kill list contains null KillData
  • Kills list is null
  • IP set contains null IP
  • IP set is null
  • Nickname set contains null Nick
  • Nickname set is null
  • Location list contains null location
  • Location list is null

Analysis:

  • GMTimes is null
  • KillsList is null
  • DemData is null

Incorrect data saved:

  • SessionData session end is -1 / session end is before start

Incorrect data is allowed to be displayed:

  • SessionData session end is -1 / session end is before start

Impact:
Currently it is not likely that end user will run into any of these issues. If an issue that might affect user is found, it will be marked with [Priority]

Stack Trace - Debug log March 20th:
One test Failed - Reason: Incorrectly written test, 3 errors

[Mar 26 20:44:22] ---------------------------
[Mar 26 20:44:22] Beginning Testing!
[Mar 26 20:44:22] Plan version: 2.9.0 Server: 1.11.2-R0.1-SNAPSHOT
[Mar 26 20:44:22] ---------------------------
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.internal.SessionDataListCreatorTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.internal.SessionDataListCreatorTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.FormatUtilsExceptionTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.FormatUtilsExceptionTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.HtmlUtilsExceptionTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.HtmlUtilsExceptionTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.MiscUtilsExceptionTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.MiscUtilsExceptionTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.DataCacheHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.DataCacheHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.ActivityHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.ActivityHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.BasicInfoHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.BasicInfoHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.CommandUseHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.CommandUseHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.DemographicsHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.DemographicsHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.GameModeHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.GameModeHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.KillHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.KillHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.LocationHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.LocationHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.RuleBreakingHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.RuleBreakingHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.SessionHandlerInitTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.handlers.SessionHandlerInitTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.XSSVulnerabilityNicknameTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.XSSVulnerabilityNicknameTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.tables.CommandUseTableBackslashTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.tables.CommandUseTableBackslashTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.tables.SessionTableIncorrectSessionTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.tables.SessionTableIncorrectSessionTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.BackslashTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.BackslashTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.BackslashHtmlParseTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.BackslashHtmlParseTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.BackslashPhraseParseTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.ui.BackslashPhraseParseTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformEmptyTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformEmptyTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformIncorrectTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformIncorrectTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformCorruptTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsSessionLengthTransformCorruptTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsIsActiveTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsIsActiveTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsIsActiveTest2: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsIsActiveTest2: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsAverageTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisUtilsAverageTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisNonCorruptTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisNonCorruptTest: §aPASSED
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptGMTimesTest: Running..
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptGMTimesTest: §cERROR java.lang.NullPointerException
[Mar 26 20:44:22]   sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[Mar 26 20:44:22]   sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[Mar 26 20:44:22]   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[Mar 26 20:44:22]   java.lang.reflect.Constructor.newInstance(Unknown Source)
[Mar 26 20:44:22]   java.util.concurrent.ForkJoinTask.getThrowableException(Unknown Source)
[Mar 26 20:44:22]   java.util.concurrent.ForkJoinTask.reportException(Unknown Source)
[Mar 26 20:44:22]   java.util.concurrent.ForkJoinTask.invoke(Unknown Source)
[Mar 26 20:44:22]   java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source)
[Mar 26 20:44:22]   java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source)
[Mar 26 20:44:22]   java.util.stream.AbstractPipeline.evaluate(Unknown Source)
[Mar 26 20:44:22]   java.util.stream.ReferencePipeline.forEach(Unknown Source)
[Mar 26 20:44:22]   java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
[Mar 26 20:44:22]   main.java.com.djrapitops.plan.utilities.Analysis.analyzeData(Analysis.java:147)
[Mar 26 20:44:22]   com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisTest.finish(AnalysisTest.java:66)
[Mar 26 20:44:22]   com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptGMTimesTest.runTest(AnalysisCorruptGMTimesTest.java:38)
[Mar 26 20:44:22]   com.djrapitops.plandebugger.tests.TestRunner.runAllTests(TestRunner.java:40)
[Mar 26 20:44:22]   com.djrapitops.plandebugger.DebugTask.run(DebugTask.java:36)
[Mar 26 20:44:22]   org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71)
[Mar 26 20:44:22]   org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[Mar 26 20:44:22]   java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[Mar 26 20:44:22]   java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[Mar 26 20:44:22]   java.lang.Thread.run(Unknown Source)
[Mar 26 20:44:22] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptGMTimeTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptGMTimeTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptIPTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptIPTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptIPsTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptIPsTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptNicknameTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptNicknameTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptNicknamesTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptNicknamesTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptSessionTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptSessionTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptDemographicsTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptDemographicsTest: §cERROR java.lang.NullPointerException
[Mar 26 20:44:23]   sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[Mar 26 20:44:23]   sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[Mar 26 20:44:23]   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[Mar 26 20:44:23]   java.lang.reflect.Constructor.newInstance(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ForkJoinTask.getThrowableException(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ForkJoinTask.reportException(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ForkJoinTask.invoke(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.AbstractPipeline.evaluate(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ReferencePipeline.forEach(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
[Mar 26 20:44:23]   main.java.com.djrapitops.plan.utilities.Analysis.analyzeData(Analysis.java:147)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisTest.finish(AnalysisTest.java:66)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptDemographicsTest.runTest(AnalysisCorruptDemographicsTest.java:38)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.tests.TestRunner.runAllTests(TestRunner.java:40)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.DebugTask.run(DebugTask.java:36)
[Mar 26 20:44:23]   org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71)
[Mar 26 20:44:23]   org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[Mar 26 20:44:23]   java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[Mar 26 20:44:23]   java.lang.Thread.run(Unknown Source)
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptDemGenderTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptDemGenderTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptKillTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptKillTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptKillsTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptKillsTest: §cERROR java.lang.NullPointerException
[Mar 26 20:44:23]   sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[Mar 26 20:44:23]   sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[Mar 26 20:44:23]   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[Mar 26 20:44:23]   java.lang.reflect.Constructor.newInstance(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ForkJoinTask.getThrowableException(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ForkJoinTask.reportException(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ForkJoinTask.invoke(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.AbstractPipeline.evaluate(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ReferencePipeline.forEach(Unknown Source)
[Mar 26 20:44:23]   java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
[Mar 26 20:44:23]   main.java.com.djrapitops.plan.utilities.Analysis.analyzeData(Analysis.java:147)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisTest.finish(AnalysisTest.java:66)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptKillsTest.runTest(AnalysisCorruptKillsTest.java:38)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.tests.TestRunner.runAllTests(TestRunner.java:40)
[Mar 26 20:44:23]   com.djrapitops.plandebugger.DebugTask.run(DebugTask.java:36)
[Mar 26 20:44:23]   org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71)
[Mar 26 20:44:23]   org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52)
[Mar 26 20:44:23]   java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[Mar 26 20:44:23]   java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[Mar 26 20:44:23]   java.lang.Thread.run(Unknown Source)
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.GamemodeChangeTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.GamemodeChangeTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptLastGamemodeChangeTest3: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptLastGamemodeChangeTest3: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptCurrentGamemodeChangeTest: Running..
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptCurrentGamemodeChangeTest: §aPASSED
[Mar 26 20:44:23] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastGamemodeTest: Running..
[Mar 26 20:44:24] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastGamemodeTest: §aPASSED
[Mar 26 20:44:24] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastGamemodeTest2: Running..
[Mar 26 20:44:26] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastGamemodeTest2: §aPASSED
[Mar 26 20:44:26] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptLastGamemodeChangeTest: Running..
[Mar 26 20:44:27] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptLastGamemodeChangeTest: §aPASSED
[Mar 26 20:44:27] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptLastGamemodeChangeTest2: Running..
[Mar 26 20:44:29] Test com.djrapitops.plandebugger.tests.independent.handlers.gmtimes.CorruptLastGamemodeChangeTest2: §aPASSED
[Mar 26 20:44:29] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTest: Running..
[Mar 26 20:44:30] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTest: §aPASSED
[Mar 26 20:44:30] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTest2: Running..
[Mar 26 20:44:32] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTest2: §aPASSED
[Mar 26 20:44:32] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseInitTest: Running..
[Mar 26 20:44:33] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseInitTest: §aPASSED
[Mar 26 20:44:33] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseInitErrorTest: Running..
[Mar 26 20:44:34] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseInitErrorTest: §aPASSED
[Mar 26 20:44:34] Test com.djrapitops.plandebugger.tests.independent.database.injection.DatabaseNicknameInjectionTest: Running..
[Mar 26 20:44:36] Test com.djrapitops.plandebugger.tests.independent.database.injection.DatabaseNicknameInjectionTest: §aPASSED
[Mar 26 20:44:36] Test com.djrapitops.plandebugger.tests.independent.database.injection.DatabaseNicknameInjectionTest2: Running..
[Mar 26 20:44:37] Test com.djrapitops.plandebugger.tests.independent.database.injection.DatabaseNicknameInjectionTest2: §aPASSED
[Mar 26 20:44:37] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveUncorruptTest: Running..
[Mar 26 20:44:38] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveUncorruptTest: §aPASSED
[Mar 26 20:44:38] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveUncorruptTest2: Running..
[Mar 26 20:44:40] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveUncorruptTest2: §aPASSED
[Mar 26 20:44:40] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveGM3nullTest: Running..
[Mar 26 20:44:41] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveGM3nullTest: §aPASSED
[Mar 26 20:44:41] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseRemoveTest: Running..
[Mar 26 20:44:43] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseRemoveTest: §aPASSED
[Mar 26 20:44:43] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveCommandUseTest: Running..
[Mar 26 20:44:46] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveCommandUseTest: §aPASSED
[Mar 26 20:44:46] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveLastNickTest: Running..
[Mar 26 20:44:48] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveLastNickTest: §aPASSED
[Mar 26 20:44:48] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveLastNickTest2: Running..
[Mar 26 20:44:50] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseSaveLastNickTest2: §aPASSED
[Mar 26 20:44:50] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseRemoveAllTest: Running..
[Mar 26 20:44:54] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseRemoveAllTest: §aPASSED
[Mar 26 20:44:54] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseUserDataIntegrityTest: Running..
[Mar 26 20:44:55] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseUserDataIntegrityTest: §aPASSED
[Mar 26 20:44:55] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseUserDataIntegrityTest2: Running..
[Mar 26 20:44:56] Test com.djrapitops.plandebugger.tests.independent.database.DatabaseUserDataIntegrityTest2: §aPASSED
[Mar 26 20:44:56] Test com.djrapitops.plandebugger.tests.independent.userdata.UserDataEqualsMethodTest: Running..
[Mar 26 20:44:56] Test com.djrapitops.plandebugger.tests.independent.userdata.UserDataEqualsMethodTest: §aPASSED
[Mar 26 20:44:56] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptUUIDTest: Running..
[Mar 26 20:44:58] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptUUIDTest: §aPASSED
[Mar 26 20:44:58] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptUUIDTest2: Running..
[Mar 26 20:45:00] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptUUIDTest2: §aPASSED
[Mar 26 20:45:00] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNameTest: Running..
[Mar 26 20:45:01] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNameTest: §aPASSED
[Mar 26 20:45:01] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNameTest2: Running..
[Mar 26 20:45:02] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNameTest2: §aPASSED
[Mar 26 20:45:02] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastNickTest: Running..
[Mar 26 20:45:04] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastNickTest: §aPASSED
[Mar 26 20:45:04] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastNickTest2: Running..
[Mar 26 20:45:06] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLastNickTest2: §aPASSED
[Mar 26 20:45:06] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptCurrentSessionTest: Running..
[Mar 26 20:45:07] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptCurrentSessionTest: §aPASSED
[Mar 26 20:45:07] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptCurrentSessionTest2: Running..
[Mar 26 20:45:08] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptCurrentSessionTest2: §aPASSED
[Mar 26 20:45:08] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTimesTest: Running..
[Mar 26 20:45:10] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTimesTest: §aPASSED
[Mar 26 20:45:10] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTimesTest2: Running..
[Mar 26 20:45:12] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptGamemodeTimesTest2: §aPASSED
[Mar 26 20:45:12] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillTest: Running..
[Mar 26 20:45:13] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillTest: §aPASSED
[Mar 26 20:45:13] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillTest2: Running..
[Mar 26 20:45:14] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillTest2: §aPASSED
[Mar 26 20:45:14] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillsTest: Running..
[Mar 26 20:45:15] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillsTest: §aPASSED
[Mar 26 20:45:15] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillsTest2: Running..
[Mar 26 20:45:17] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptKillsTest2: §aPASSED
[Mar 26 20:45:17] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptSessionTest: Running..
[Mar 26 20:45:18] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptSessionTest: §aPASSED
[Mar 26 20:45:18] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptSessionTest2: Running..
[Mar 26 20:45:19] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptSessionTest2: §aPASSED
[Mar 26 20:45:19] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPTest: Running..
[Mar 26 20:45:21] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPTest: §aPASSED
[Mar 26 20:45:21] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPTest2: Running..
[Mar 26 20:45:23] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPTest2: §aPASSED
[Mar 26 20:45:23] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPsTest: Running..
[Mar 26 20:45:24] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPsTest: §aPASSED
[Mar 26 20:45:24] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPsTest2: Running..
[Mar 26 20:45:26] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptIPsTest2: §aPASSED
[Mar 26 20:45:26] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknameTest: Running..
[Mar 26 20:45:27] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknameTest: §aPASSED
[Mar 26 20:45:27] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknameTest2: Running..
[Mar 26 20:45:28] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknameTest2: §aPASSED
[Mar 26 20:45:28] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknamesTest: Running..
[Mar 26 20:45:30] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknamesTest: §aPASSED
[Mar 26 20:45:30] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknamesTest2: Running..
[Mar 26 20:45:31] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptNicknamesTest2: §aPASSED
[Mar 26 20:45:31] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationTest: Running..
[Mar 26 20:45:33] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationTest: §aPASSED
[Mar 26 20:45:33] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationTest2: Running..
[Mar 26 20:45:34] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationTest2: §aPASSED
[Mar 26 20:45:34] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationsTest: Running..
[Mar 26 20:45:35] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationsTest: §aPASSED
[Mar 26 20:45:35] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationsTest2: Running..
[Mar 26 20:45:37] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseCorruptLocationsTest2: §aPASSED
[Mar 26 20:45:37] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseIncorrectSessionTest: Running..
[Mar 26 20:45:38] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseIncorrectSessionTest: §aPASSED
[Mar 26 20:45:38] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseIncorrectSessionTest2: Running..
[Mar 26 20:45:40] Test com.djrapitops.plandebugger.tests.independent.database.corrupt.DatabaseIncorrectSessionTest2: §aPASSED
[Mar 26 20:45:40] Test com.djrapitops.plandebugger.tests.independent.database.manage.BackupRestoreTest: Running..
[Mar 26 20:45:45] Test com.djrapitops.plandebugger.tests.independent.database.manage.BackupRestoreTest: §aPASSED
[Mar 26 20:45:45] Test com.djrapitops.plandebugger.tests.independent.database.manage.BackupRestoreCorruptTest: Running..
[Mar 26 20:45:50] Test com.djrapitops.plandebugger.tests.independent.database.manage.BackupRestoreCorruptTest: §eFAILED Did not save 3.
[Mar 26 20:45:50] Test com.djrapitops.plandebugger.tests.initiation.ClassInitiationTest: Running..
[Mar 26 20:45:50] Test com.djrapitops.plandebugger.tests.initiation.ClassInitiationTest: §aPASSED
[Mar 26 20:45:50] Removing debug files..
[Mar 26 20:45:50] -----------------
[Mar 26 20:45:50] TEST RESULTS - Run: 96 Passed: 93 Failed: 0 Errors: 3
[Mar 26 20:45:50] -----------------
[Mar 26 20:45:50] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptGMTimesTest: §cERROR java.lang.NullPointerException
[Mar 26 20:45:50] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptDemographicsTest: §cERROR java.lang.NullPointerException
[Mar 26 20:45:50] Test com.djrapitops.plandebugger.tests.independent.utils.analysis.AnalysisCorruptKillsTest: §cERROR java.lang.NullPointerException
[Mar 26 20:45:50] -----------------
[Mar 26 20:45:50] ----------------------------------
[Mar 26 20:45:50] Tests Complete! Debugger Disabled.
[Mar 26 20:45:50] ----------------------------------

SQL Injection Possible with Nicknames

Plan Version: Affected versions: 2.0.0 onwards
Server Version: -
Database Type: both

Description:
SQL Injection is possible by changing nickname, although limited to 30 chars before 2.7.0 or 75 after.

Plugin Plan v2.5.1 generated an exception while executing task 29

Not really sure as to what caused this error, but I found it in my logs.

[10:51:03] [Craft Scheduler Thread - 57/WARN]: [Plan] Plugin Plan v2.5.1 generated an exception while executing task 29
java.lang.NullPointerException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_121]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_121]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_121]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.getThrowableException(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.reportException(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.invoke(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:1.8.0_121]
at com.djrapitops.plan.data.cache.DataCacheHandler.saveHandlerDataToCache(DataCacheHandler.java:226) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.access$000(DataCacheHandler.java:27) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler$1.run(DataCacheHandler.java:95) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:58) ~[patched_1.11.2.jar:git-Paper-1055]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [patched_1.11.2.jar:git-Paper-1055]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) [patched_1.11.2.jar:git-Paper-1055]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_121]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.NullPointerException
at com.djrapitops.plan.data.handlers.GamemodeTimesHandler.saveToCache(GamemodeTimesHandler.java:79) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.saveHandlerDataToCache(DataCacheHandler.java:249) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.lambda$saveHandlerDataToCache$0(DataCacheHandler.java:227) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[?:1.8.0_121]
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.CountedCompleter.exec(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) ~[?:1.8.0_121]

GameMode.SPECTATOR causing plugin not to be able to process data in versions prior 1.8

Following errror was sent to me:
[00:34:54] [Server thread/ERROR] [Minecraft/]: Could not pass event PlayerJoinEvent to Plan v2.1.3 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1614.56] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1614.56] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1614.56] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1614.56] at net.minecraft.server.management.ServerConfigurationManager.func_72377_c(ServerConfigurationManager.java:369) [oi.class:?] at net.minecraft.server.management.ServerConfigurationManager.initializeConnectionToPlayer(ServerConfigurationManager.java:223) [oi.class:?] at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:200) [NetworkDispatcher.class:1.7.10-1614.56] at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:475) [NetworkDispatcher.class:1.7.10-1614.56] at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:21) [HandshakeCompletionHandler.class:1.7.10-1614.56] at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11) [HandshakeCompletionHandler.class:1.7.10-1614.56] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:1.7.10-1614.56] at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:245) [ej.class:?] at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:1023) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:432) [lt.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:841) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:693) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_121] Caused by: java.lang.NoSuchFieldError: SPECTATOR at com.djrapitops.plan.data.UserData.<init>(UserData.java:63) ~[?:?] at com.djrapitops.plan.data.handlers.NewPlayerCreator.createNewPlayer(NewPlayerCreator.java:44) ~[?:?] at com.djrapitops.plan.data.cache.DataCacheHandler.newPlayer(DataCacheHandler.java:299) ~[?:?] at com.djrapitops.plan.data.listeners.PlanPlayerListener.onPlayerLogin(PlanPlayerListener.java:69) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_121] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1614.56] ... 26 more

Caused by: java.lang.NoSuchFieldError: SPECTATOR

Will be fixed in the next version

Couple of Suggestions - Death Cause & New Player Actions

Couple suggestions that would make analyses a bit more useful:

  • Record player death causes and display in "/plan inspect".
  • Record player actions for newly joined players for the first X (configurable) minutes after joining. Could include things like commands run, chat messages sent, etc. Maybe put this in "/plan analyze" under a new tab for "New Player Actions" or something. Would help to see what new players do before leaving the server when they never come back.

/plan goes to /pl, NPE | GamemodeTimesHandler

Plan Version: Latest one
Server Version: Spigot-1.11
Database Type: MySQL
Command Causing Issue: /plan

Description:
When I type /plan, it just shows my plugin list. Which is very, very weird.

Steps to Reproduce:

  1. Type /plan

Stack Trace - Console/Errors.txt contents:
No errors in console.
Error.txt:

[Mar 11 10:09:39] main.java.com.djrapitops.plan.data.cache.GetConsumer Caught java.lang.NullPointerException
[Mar 11 10:09:39]   main.java.com.djrapitops.plan.data.handlers.GamemodeTimesHandler.handleChangeEvent(GamemodeTimesHandler.java:54)
[Mar 11 10:09:39]   main.java.com.djrapitops.plan.data.listeners.PlanGamemodeChangeListener$1.process(PlanGamemodeChangeListener.java:49)
[Mar 11 10:09:39]   main.java.com.djrapitops.plan.database.databases.SQLDB.giveUserDataToProcessors(SQLDB.java:632)
[Mar 11 10:09:39]   main.java.com.djrapitops.plan.data.cache.GetConsumer.consume(DataCacheGetQueue.java:88)
[Mar 11 10:09:39]   main.java.com.djrapitops.plan.data.cache.GetConsumer.run(DataCacheGetQueue.java:73)
[Mar 11 10:09:39]   java.lang.Thread.run(Thread.java:745)
[Mar 11 10:09:39] 
[Mar 11 10:09:49] main.java.com.djrapitops.plan.utilities.Analysis$1 Caught java.lang.NullPointerException
[Mar 11 10:09:49]   main.java.com.djrapitops.plan.utilities.Analysis$1.lambda$run$15(Analysis.java:96)
[Mar 11 10:09:49]   java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
[Mar 11 10:09:49]   java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
[Mar 11 10:09:49]   java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
[Mar 11 10:09:49]   java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
[Mar 11 10:09:49]   java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
[Mar 11 10:09:49]   java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
[Mar 11 10:09:49]   java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
[Mar 11 10:09:49]   java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
[Mar 11 10:09:49]   java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
[Mar 11 10:09:49] 

ConcurrentModificationException

Spigot 1.11.2, Plan 2.8.2, 3:00 after server start:

[12:03:30 INFO]: [Plan] Analysis | Starting Boot Analysis..
[12:03:30 WARN]: [Plan] Plugin Plan v2.8.2 generated an exception while executing task 842
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[?:1.8.0_121]
at main.java.com.djrapitops.plan.utilities.AnalysisUtils.transformSessionDataToLengths(AnalysisUtils.java:89) ~[?:?]
at main.java.com.djrapitops.plan.utilities.Analysis$1.run(Analysis.java:150) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [spigot-1.11.2.jar-2017-03-10-0649:git-Spigot-283de8b-eac8591]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
[12:04:35 INFO]: [StreetlightsAdvanced] Activated streetlights in world_blackdog
[12:04:35 INFO]: [StreetlightsAdvanced] Activated streetlights in world_city

Entity state exception

Spigot 1.11.2 latest, Plan 2.5.1. Log reports every minute:

[13:24:02 WARN]: [Plan] Plugin Plan v2.5.1 generated an exception while executing task 158
java.lang.IllegalStateException: Asynchronous entity track!
at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.EntityTracker.addEntity(EntityTracker.java:108) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.EntityTracker.track(EntityTracker.java:88) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.WorldManager.a(WorldManager.java:21) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.World.b(World.java:1089) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.WorldServer.b(WorldServer.java:1113) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.WorldServer.a(WorldServer.java:1078) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.Chunk.addEntities(Chunk.java:753) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:45) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:1) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.util.AsynchronousExecutor.skipQueue(AsynchronousExecutor.java:337) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.util.AsynchronousExecutor.getSkipQueue(AsynchronousExecutor.java:295) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.chunkio.ChunkIOExecutor.syncChunkLoad(ChunkIOExecutor.java:16) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:137) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:120) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:116) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.World.getChunkAt(World.java:329) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.World.getChunkAtWorldCoords(World.java:325) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.World.getType(World.java:806) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at net.minecraft.server.v1_11_R1.EntityHuman.getBed(EntityHuman.java:1355) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer.getBedSpawnLocation(CraftPlayer.java:883) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at com.djrapitops.plan.data.UserData.(UserData.java:80) ~[?:?]
at com.djrapitops.plan.database.databases.SQLDB.getUserData(SQLDB.java:554) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.getCurrentData(DataCacheHandler.java:132) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.getCurrentData(DataCacheHandler.java:164) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.saveHandlerDataToCache(DataCacheHandler.java:247) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.lambda$saveHandlerDataToCache$0(DataCacheHandler.java:227) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_121]
at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[?:1.8.0_121]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291) ~[?:1.8.0_121]
at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:401) ~[?:1.8.0_121]
at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:160) ~[?:1.8.0_121]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:174) ~[?:1.8.0_121]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_121]
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:583) ~[?:1.8.0_121]
at com.djrapitops.plan.data.cache.DataCacheHandler.saveHandlerDataToCache(DataCacheHandler.java:226) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler.access$000(DataCacheHandler.java:27) ~[?:?]
at com.djrapitops.plan.data.cache.DataCacheHandler$1.run(DataCacheHandler.java:95) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) [spigot-1.11.2.jar-2017-02-11-0122:git-Spigot-65a0347-a552117]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]

It seemed to be related to my (player) location. When I moved, the errors stopped.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.