Inspector [v0.6.4] - Rollback, BlockTracking, and more!


Any updates on this plugin? I am really hoping this is being continued, as the bug where no region is able to be selected is still present.


Again, I believe he's having some personal time.
Last I was aware of he'd been in hospital if I recall correctly.
Christmas also tends to be a busy time.

Not aimed at you specifically Shape, but the general grabby nature of comments on threads for free plugins that come at the cost of a lot of time and work for people is a little irksome.
Been digging through threads today so this is a bit of a vent in general but people need to be more appreciative u.u

For now it seems that @HassanS6000 is on a hiatus.
He last commented just under a month ago, but was last online a week ago.

It could just be that he has notifications off.


'Discontinued' implies there is no plan for an improvement in the future (sometime between soon™ and soonish™). Hassan having last updated Inspector in... June 22nd, you can be assured that it is indeed outdated and therefore, will only work with Spongeforge builds around that time.

Considering that Spongeforge allows for build numbers, versioning, and has an impressive changelog, you, as a server admin, can always make an informed decision. The dates and record are there to show it. Inspector, as far as I have used, will not work with latest versions - and if it ever manages to boot up, you can rest assured it'll have a negative impact on server performance. If you wanted to know, you could always test on your own test server.

Lastly, the responsibility for using plugins rests on the user, not the provider. Hassan's plugins have served the Sponge community superbly (s/o to EssentialCmds), but an outdated plugin is an outdated plugin. And us server managers ought to know what it implies, when you are easily 2000 builds behind the latest stable Spongeforge for 1.10.2. This is not me telling you free=happy, this is me explaining that most of the time, with any modded community, chosing the plugin to use rests on the user. Give priority to plugins with active developers, with a responsive thread, and it'll reward you much more than using a half-year old plugin (even when this fact is clearly indicated).


And to add on to that - if you're in a position to spend hundreds, with an active server, then engage a dev to do the work for you. There are enough floating around here.
I've pretty much kept my server alive over the past 3 years just to keep it as a hobby I can return to. I'm lucky enough that I have the spare capital that I can pay a few hundred a year to do this and pay developers to create content for what is essentially a cash-sink. You are in a far better position.
Yes it makes you incumbent to provide for your server, but that's just it. You have to provide. Not Hassan. Not any other dev that posts for free. You.
Keep up to date. Keep on top. Seek out new alternatives and back-ups.

And ... I specifically said that it wasn't aimed at you but was a generic rant u.u

Nice to see the conscience at work there though :stuck_out_tongue:


Looks like primary plugin task work - it can tell what block was modified and by who. Region selection and rollback not working, but anyway, there is no plugin like this for Sponge, currently.

Only "small" problem is big spam in console: Could not pass InteractBlockEvent$Secondary$MainHand$Impl

Hassan, maybe you would take some time to fix only this error? IMHO, the most important function is block tracking, not rollback etc.


I'd refer you to my reply above, where I explain that Hassan is on hiatus regarding this - and it would be quite disastrous to use this on spongeforge for API 5.1.0. Would not recommend its usage, no matter the scarcity of block-tracking plugins on Sponge.


Release v0.6.4:

This only works for Sponge API 5.1.0


  • Performance fixes - moved a few database calls to asnyc thread
  • Changes for new API version

Enjoy! :smile:


Hello,I like this plugin very much.I want to share this plugin in MCBBS.Can you agree with me?


Yes you may share it there




I'm getting an error that the PLAYERS table is missing, looking at the error it seems that the syntax is wrong (in the plugin?), this happens on a new install and I've tried making a new database for the plugin and it still happens. Only the BLOCKINFO table is created.

[16:27:09] [Server thread/INFO]: [STDERR]: java.sql.SQLSyntaxErrorException: (conn:44226) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NOT NULL, UUID          TEXT       NOT NULL, NAME          TEXT       NOT NULL)' at line 1
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.util.ExceptionMapper.get(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.util.ExceptionMapper.getException(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.util.ExceptionMapper.throwAndLogException(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeQueryEpilog(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeInternal(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeUpdate(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at com.zaxxer.hikari.pool.ProxyStatement.executeUpdate(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at com.zaxxer.hikari.pool.HikariProxyStatement.executeUpdate(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at io.github.hsyyid.inspector.utilities.DatabaseManager.isPlayerInDatabase(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at io.github.hsyyid.inspector.listeners.PlayerJoinListener.onPlayerJoin(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.spongepowered.common.event.listener.JoinListener_PlayerJoinListener_onPlayerJoin85.handle(Unknown Source)
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.spongepowered.common.event.RegisteredListener.handle(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.spongepowered.common.SpongeImpl.postEvent(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at$100(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at$1.func_73660_a(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at net.minecraft.server.MinecraftServer.func_71190_q(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at net.minecraft.server.MinecraftServer.func_71217_p(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: 	at
[16:27:09] [Server thread/INFO]: [STDERR]: Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NOT NULL, UUID          TEXT       NOT NULL, NAME          TEXT       NOT NULL)' at line 1
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(
[16:27:09] [Server thread/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeInternal(
[16:27:09] [Server thread/INFO]: [STDERR]: 	... 23 more
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: java.sql.SQLSyntaxErrorException: (conn:44226) Table 'Inspector.PLAYERS' doesn't exist
Query is : INSERT INTO PLAYERS (UUID, NAME) VALUES ('110e29ea-3593-42e7-a91c-83f077229d42','kattusb');
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.util.ExceptionMapper.get(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.util.ExceptionMapper.getException(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.util.ExceptionMapper.throwAndLogException(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeQueryEpilog(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeInternal(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeUpdate(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at com.zaxxer.hikari.pool.ProxyStatement.executeUpdate(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at com.zaxxer.hikari.pool.HikariProxyStatement.executeUpdate(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at io.github.hsyyid.inspector.utilities.DatabaseManager.lambda$addPlayerToDatabase$1(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.spongepowered.api.scheduler.Task$Builder.lambda$execute$0(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$0(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at java.util.concurrent.Executors$
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at java.util.concurrent.ThreadPoolExecutor$
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Table 'Inspector.PLAYERS' doesn't exist
Query is : INSERT INTO PLAYERS (UUID, NAME) VALUES ('110e29ea-3593-42e7-a91c-83f077229d42','kattusb');
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	at org.mariadb.jdbc.MariaDbStatement.executeInternal(
[16:27:09] [pool-3-thread-3/INFO]: [STDERR]: 	... 11 more

database {
mysql {
inspector {
select {


error in spongeforge-1.10.2-2202-5.1.0-BETA-2099
Error occurred while executing command 'insp' for source EntityPlayerMP

Link error code :


fix error post from


Can not check before block to air but block to block can check normally.


Important Notice to Inspector Users

After reviewing the plugin recently I have found numerous bugs and a lack of features, and am currently working on rewriting most of the plugin to work with more use cases (ie. checking chests) and be more efficient.


This looks promising!

Does it wirk with mod items?
What if a player uses a magic tool or a stationary laser cannon from a mod for example?


It should track modded items, and if the mod extends base MC code, it should work with it too :smile:


Wait update fix bug and lack.


Will it be updated?
It now has a fatal problem.
Will lead to collapse!
I think it is a database problem!


If you have found a bug, please submit a detailed account to Inspector's tracker: