Stats - made by Lolmewn
- Native Minecraft Version:
- Legacy (< 1.13)
- Tested Minecraft Versions:
- Source Code:
This is the newest release for Stats. Version 5 is built completely from the ground up and already contains exciting new features.
Website coming soon!
Right now the following Stats are supported and tracked for everyone:
- Blocks broken (including location, type & timestamp)
- Blocks placed (including location, type, tool & timestamp)
- Playtime (including world)
- Kills (including world, victimType, victimName & weapon)
- Deaths (including location & cause)
- Arrows shot (including world)
- Beds entered (including world)
- Buckets emptied (including world & type)
- Commands performed (including world)
- Damage taken (including world & type)
- Eggs thrown (including world)
- Fish caught (including world & type)
- Food consumed (including world & type)
- Items crafted (including world & type)
- Items dropped (including world & type)
- Items picked up (including world & type)
- Times kicked (including world)
- Last join (including world)
- Last quit (including world)
- Move (including world & type)
- PVP (including world, victimType, victimName & weapon)
- PVP streak (including world)
- Times sheared (including world & type)
- Times joined (including world)
- Tools broken (including world & type)
- Trades performed (including world, item & price)
- Words said (including world)
- XP gained (including world)
If any stat is missing/not working properly, let me know here: https://gitlab.com/lolmewn/stats-plugin/issues
Setting up the plugin
Simply drop the jar in the plugins folder. On first startup, the plugin will generate a config.yml, in which you have to put your MySQL Database credentials. Then restart your server and you're ready to go!
Seeing your Stats
You can use /stats to view your individual Stats (hover over a value to see more detailed information).
In the future, websites can be built to read the database and show statistics on a webpage.
Signs (from v5.3.2)
Simply put down a sign with [Stats] on the first line, and it'll start the configuration process for that sign. Please note that you need the permission node stats.sign.place, and to remove a Stats sign, you need permission node stats.sign.break.
You can either display a Single, multiple or a random stat on the sign. Furthermore, you can specify a single, multiple, a random or all online players to show up on the sign. Please note that some stats do not show up when using random stats for all players, such as Last join, Last quit and PVP kill streak. They don't really make sense.
This build is mostly intended for new users of Stats. This build will not convert old data (Stats 2 / Stats 3) data into Stats 5 data (yet). Watch for updates on when this is supported.
Furthermore, all gathered statistics are sent to a global server which will be used to display statistics on a website, just like with Stats 2. Will we reach 219 years of playtime again?
Below is info on Stats 3, the previous version of the plugin. It can still be used, but will not be developed for anymore.
Stats 3 details below
This plugin is licensed GPLv3
NOTICE: I'm looking for a new maintainer for the plugin. I unfortunately cannot give this project the love that it so desperately needs. If you're interested, hit me up on Telegram (t.me/lolmewn) or send me an email (lolmewn[at]gmail.com)
Stats is an advanced statistics gathering plugin, currently focussed on player statistics. Information such as PVP kills, blocks broken, playtime and much more. You can store this data as simple files, or store them in a MySQL database. The benefit of using the database is that you can also use any web-end out there to display your players' statistics on your website.
How to install
To install the plugin, simply drag-and-drop the Stats.jar into your 'plugins' folder.
When you start the server, a "Stats" folder will be created, containing a config file.
For a detailed description on the config file, click here.
The most important option is "storage", which can be set to either "flatfile" or "mysql" by default.
If you choose MySQL, there is another file (mysql.yml). Fill in your MySQL details there. That's all!
If you're installing a web-end as well, please read the instructions for said web-end on how to install it.
A list of web-ends compatible with Stats 3:
List of available Stats
This is a list of all available stats. Please note that there might be more stats in your environment, as other plugins can add their own stats to the plugin. For those stats, please see the documentation of the plugin providing them.
|Stat name|Description|Available Metadata|
|Arrows|Amount of arrows shot (not hit!)|world|
|Blocks broken|Self-explanatory|world, name, data (see here for more info)|
|Blocks placed|Self-explanatory|world, name, data (see here for more info)|
|Commands done|Amount of commands done|world|
|Damage taken|Self-explanatory|world, cause|
|Death|Amount of times died|world, cause|
|Items crafted|Self-explanatory|world, name|
|Items dropped|Self-explanatory|world, name|
|Items picked up|Self-explanatory|world, name|
|Joins|Amount of times joined the server|None|
|Kill|Amount of kills gotten|world, (name of) weapon, entityType|
|Last join|Last time (in milliseconds epoch time) joined the server|world|
|Last seen|Last time (in milliseconds epoch time) left the server|world|
|Money|**Not yet functional**|world|
|Move|Amount of blocks moved|world, type (0 = walking, 1 = boat, 2 = minecart, 3 = pig, 4 = on a pig in a minecart, 5 = horse, 6 = flying)|
|Omnomnom|Amount of food eaten|world|
|PVP|PVP kills gotten|world, victim (UUID of the other player), time (in milliseconds epoch time), (name of) weapon|
|PVP streak|Current kill-chain, gets reset when killed|world|
|PVP top streak|Highest PVP streak ever achieved - may be moved to Highscores in the future|world|
|Playtime|Time in seconds played on the server|world|
|Shears|Amount of sheeps sheared|world|
|Teleports|Amount of times teleported|world|
|Tools broken|Self-explanatory|world, name|
|Trades|Amount of times traded with a villager|world|
|Votes|**Only works when Votifier is enabled**. If the player name is not found, the vote is ignored|None|
|Words said|Amount of words said|world|
|Times changed world|Self-explanatory|None|
|Xp gained|Amount of XP gained in total|world|
Tickets and Source
Found a bug? Want a new feature? Want to see how Stats is built?
You can find all and more here: https://bitbucket.org/Lolmewn/stats/overview
Track your players and gather interesting statistics about them!
Any ratings below 4 stars looked like people who were either clueless or had 3rd party issues... It's probably been anywhere from 3-5 stars over the years I've used this plugin. Currently a 4 star plugin in my opinion...
There are work arounds to make this hook into placeholderAPI via mysql, but it would be extremely beneficial if you would add this support natively with your own placeholders for PAPI... Having a database and a website are nice, but the information could be used much more easily if it had placeholders in PAPI... I think this should be probably one of the highest priorities... A second plugin that adds this functionality would be a worthy premium plugin! Just a thought...
Developement has been slow, but as stated on the page for a long long time they are looking for a new developer... I truly hope this lives on with future development...
[18:22:58] [Server thread/ERROR]: Could not pass event BlockPlaceEvent to Stats v5.2.0
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[Spigot.jar:git-Spigot-7228328-11323bf]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-7228328-11323bf]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499) [Spigot.jar:git-Spigot-7228328-11323bf]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [Spigot.jar:git-Spigot-7228328-11323bf]
at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callBlockPlaceEvent(CraftEventFactory.java:149) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.ItemStack.placeItem(ItemStack.java:207) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.PlayerInteractManager.a(PlayerInteractManager.java:495) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:944) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:37) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Spigot.jar:git-Spigot-7228328-11323bf]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_181]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_181]
at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:747) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [Spigot.jar:git-Spigot-7228328-11323bf]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [Spigot.jar:git-Spigot-7228328-11323bf]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
Caused by: java.lang.NoSuchMethodError: org.bukkit.Material.getKey()Lorg/bukkit/NamespacedKey;
at nl.lolmewn.stats.listener.bukkit.BlockPlace.generateMetadata(BlockPlace.java:41) ~[?:?]
at nl.lolmewn.stats.listener.bukkit.BlockPlace.lambda$onBlockPlace$0(BlockPlace.java:27) ~[?:?]
at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_181]
at nl.lolmewn.stats.listener.bukkit.BlockPlace.lambda$onBlockPlace$1(BlockPlace.java:26) ~[?:?]
at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63) ~[?:?]
at hu.akarnokd.rxjava2.debug.validator.ObservableValidator$ValidatorConsumer.onNext(ObservableValidator.java:85) ~[?:?]
at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarDisposable.run(ObservableScalarXMap.java:248) ~[?:?]
at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:35) ~[?:?]
at io.reactivex.Observable.subscribe(Observable.java:12030) ~[?:?]
at hu.akarnokd.rxjava2.debug.validator.ObservableValidator.subscribeActual(ObservableValidator.java:41) ~[?:?]
at io.reactivex.Observable.subscribe(Observable.java:12030) ~[?:?]
at io.reactivex.Observable.subscribe(Observable.java:12016) ~[?:?]
at io.reactivex.Observable.subscribe(Observable.java:11945) ~[?:?]
at nl.lolmewn.stats.listener.bukkit.BlockPlace.onBlockPlace(BlockPlace.java:25) ~[?:?]
at sun.reflect.GeneratedMethodAccessor494.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_181]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[Spigot.jar:git-Spigot-7228328-11323bf]
... 18 more
nl.lolmewn.stats.api.storage.StorageException: Failed to generate tables for stats
at nl.lolmewn.stats.mysql.MySQLStorage.generateTables(MySQLStorage.java:193) ~[Stats3.jar:?]
at nl.lolmewn.stats.mysql.MySQLStorage$1.run(MySQLStorage.java:236) [Stats3.jar:?]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2152) ~[Stats3.jar:?]
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1903) ~[Stats3.jar:?]
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1413) ~[Stats3.jar:?]
at nl.lolmewn.stats.mysql.MySQLStorage.generateTables(MySQLStorage.java:170) ~[Stats3.jar:?]
... 8 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_161]
AMAZING! I've hooked this plugin to mvdw mysql placeholders and even mvdw to Placeholder api to AnimatedMenu with no issues (yes very complex but perfect for Hub Servers and per-server stats) and it still works flawlessly with no lag time on uploading and retrieving database information. Please add more stats that combine things such as total kills of a certain mob, as atm it's certain mob with certain weapon, but still 11/10 plugin for making my server stats come alive!
The best Statistics plugin at the moment.
Sadly the webinterface is... sorry... but awful and crappy. I know that the author is not responsible for it, but its really sad that there isnt a good looking and working Webend. (Like webstatsX for this plugins older versions. Looking for someone who can make webstatsX working again..)
5 Stars if there will be a better solution for this in future. For me a good Stats plugin needs to have a good Webend, too.
Always loved this plugin but i've never got the web end working. take a look for yourself... http://coracraft.net/stats/install/
It asks for "php-mysqlnd" When it's already installed. Then it asks for me to make my own permissions. i tried looking into it for hours and it didn't work. If you could shed some light on it PM me please <3 anyway love your plugin <3