As there are more inventory types now, it is worthwhile including the inventory name in the output
e.g:
11-07 20:47:15 frymaster took 64x iron ingot from furnace
11-07 13:42:14 frymaster put 1x iron ingot into beacon
Make a decison on whether or not to return chest access data based on the
BlockChangeType (ALL or CHESTACCESS) rather than partly on the block parameter
as these are the only two query types that don't enforce type != replaced
This is helpful because the list of blocks to request chest access for was
outdated and is duplicated in 3 different places, whereas the new method
will return whatever results have been logged regardless of type.
In addition, if the query type is CHESTACCESS (but not ALL), we can use
an alternate query that is vastly more efficient. In tests (26 million
row log table, 400,000 row chest table) the query time for all chest results
was reduced from 30 seconds to 3.
Allows the chestaccess parameter to return data from the following inventory types:
- Brewing stand
- Trapped chest (fixes#483)
- Dropper
- Hopper
- Beacon
Note that this only affects lookup of logged items; the logging process has not
been touched, so #433 and similar have not been addressed
Also, update the list of valid container types, which will improve logging of
broken containers.
An INSERT IGNORE query will still increment when using innodb, even if no row is inserted. We can work around this by using a slightly convoluted query, but this only works if the table is non-empty, so also check for that on startup and create a dummy record if necessary.
This commit adds the ArrayIndexOutOfBoundsException to onCommand's exception-catcher. This is so the user gets more specific information than "Error, check server.log" when they don't give any arguments.
We just ran into the problem where new users didn't make any edits and after some digging I just found out why:
The playerid in the kb-players table was a SMALLINT. Changing that to an INT should work for some more years now ;-)