BeardStat
BeardStat is statistics tracking plugin for bukkit. It tracks a wide variety of user statistics and makes them available to your playerbase and plugins.
Recorded stats
- last Login and logout time
- Total playtime
- block placement and breaking (including sub/metadata blocks like wool, logs etc)
- Items picked up/dropped
- Damage dealt and recieved
- Kills and deaths
- Food consumed
- Sheep sheared and dyed
- TNT detonated
- Distance travelled on foot/boat/cart/horse/pig
- Items crafted
- Animals tamed
- Teleports
- Fishing
Web interface (under development)
BeardStat also comes with a web interface for stats, this allows players to view their own and friends stats on your servers website. the Web interface also includes a scoreboard system to rank players based on various statistics (playtime, creepers killed)
Commands
Stats are recorded per world, and you can blacklist worlds/gamemodes from tracking. BeardStat also has a number of commands: * /stats - access to all stats information * /played - shows a players playyime. * /laston - Returns the last time the player was on * /statpage - Allows showing a selection of player stats, useful with Bukkit's command aliasing
Dev builds
Development builds of this project can be acquired at the provided continuous integration server.
These builds have not been approved by the BukkitDev staff. Use them at your own risk.
(Please note, zips in dev builds currently contain a broken implementation of the web interface, please instead download the .jar file instead. The web interface available on the right of this page) Development builds fresh from Jenkins
Issues
BeardStat has an issue tracker on github, https://github.com/tehbeard/beardstat/issues.
For error reports please include the following: * full stacktrace of the error * plugin version (inc. build number if using one from CI) * Bukkit version * Database type used (SQLite / MySQL)
Plugin integration
BeardStat provides a rich API for plugin developers to hook into BeardStat and read / record statistics.
For Developers
BeardStat stats are identifiable by a unique Id generated from 4 sub components: * Domain * World * Category * Statistic
Domain is the primary namespace for a collection of stats, the "default" domain is used by BeardStat, I ask that you use your own unique domain for your plugin (i.e. if you make a PvP arena plugin, you could use the domain "pvparena").
World represents the world in which this stat was recorded, these are for the most part the name of the world.
Two special cases exist however. "__global__" is a reserved world name, meant for stats that do not pertain to a world. The second case is "__imported__", this is a reserved world for stats that have been imported from an older version of BeardStat before per world storage was implemented.
While not intended, you can use the world id for a unique area that is not a whole world (Going back to our pvp arena example, you could use the arena names instead, such as old_forge, broken_bow instead of a world name)
Current plugins that are known to integrate BeardStat: * BeardAch - Achievements plugin * SimpleSpleef Evolution
Metrics
BeardStat includes the plugin metrics code developed by Hidendra (author of LWC), which collects anonymous information about the plugins deployment (minecraft, server, plugin version, assumed server location at country level and database type used by BeardStat, aggregated into graph form.) More information on this system, including how to disable it can be found here
@Bl0c
Bug is fixed in 0.6.3, waiting on DBO to approve the jar for download.
I try to find the cause of the error, which triggers it. No results .... I will generate the error references so that you can review the
http://pastebin.com/A93kWatN
@jaggy80
Should be fixed next version.
@Tehbeard
FYI I had to increase the statistic and name column size for stats_statistic table so it would fit this: splashpotioneffecttype[19, poison]
It was generating database errors on the console every time it tried to put it in. Probably the same for all splash potions. Just a heads up :)
@dickwick
Ok, lets take the block place:
Old code, used to wool += 1 (add one to wool)
new code,
wool +=1
wool_x +=1
so, in theory wool = sum(wool_x's), but doesn't in practice for older databases.
@Tehbeard
And can you tell me how does this wool_x counting works? I would love to try it by myself. Trying to get from 0.5 to 0.6, but I'm worry that these odd numbers would be unfixable after upgrade.
@dickwick
The issue is the age of the db and the metadata (wool_x entries) coming along in a later version (thus wool got a head start on counting). Adding a retrofix to rebalance the total vs. meta is very low priority on my todo list.
How is block counting working for wool?
When someone break/place for example pink wool, how does counting work? I counts +1 to regular wool and then +1 to wool_5 ? So wool should be sum of all wool_x ?
I have 2 years old db and trying to figure out how to fix counting, because totalizer for blockbreak/place it completely off. Player have 1,8mil wool placed and 905k wool_x placed. So what does that exacly means and where is the truth about these numbers?
@Tehbeard
Seems like the only stat not reporting is player kills and deaths.. Maybe a plugin is interfering.. That's the #1 achievement players want. Any ideas? The total mob kills stat is working, just not total player kills or player deaths.
Not seeing any smelting or brewing stats.. you may not have added them yet, but seems like theres stats for almost everything else lol
@Tehbeard
Thanks much!!! I just manually added "timestamp" to those fields and "time" to that one other.. works perfect :) Thanks so much.. time to start thinking of achievements now...
@jaggy80
It might be a bug in how I setup the metadata updating. Try this to force it to run the update:
1) Make a backup of the config 2) open the config.yml (plugins/BeardStat/config.yml) 3) under general: there should a mcver: ... Delete the line and save, restart the server (don't use /reload, its kinda derpy and can cause issues like files not being re-read from disk).
You should see the line: "Different version to last boot! Running built in metadata script." appear, hopefully that will fix the issue.
if it doesn't and you feel confident with SQL, you can try to manually update the formatting, using the updateMetadata.sql file as reference (https://github.com/tehbeard/BeardStat/blob/develop/src/main/resources/sql/maintenence/updateMetadata.sql#Ll516)
Nice modification of the web UI by the way :)
I plan to get 0.6.3 (for 1.6.2+) out which adds tracking leashing animals and a small DB update to fix some issues with truncation soon, still need to run some tests. Admin area for the web UI should be the next major release after that.
Sometime after that I plan to rewrite BeardAch's webUI to be more similar to BeardStats (separate the logic from presentation)
On the WebUI, it doesn't format things with date/time properly, just leaves it in UNIX epoch time. I don't know enough about php to fix it :( It also doesn't seem to report Login count correctly. It's like api.php's formatstat function isn't triggered..
I did some customization of the WebUI and included BeardAch achievements if you're curious: Jaggy.org Stats Wasn't easy, but pretty sweet. Thanks for the awesome plugins!
@Bl0c
Looking into it, next version will double the allowed length of the keys.
Do you happen to know how to reproduce the error/ What action causes it to occur?
Edit: have a dev build with the fix for MySQL. SQLite migration is a little bit trickier (no support for altering an exisitng column), have to figure something out for it.
http://pastebin.com/TQvw01yw
@LordFitter
... Post the whole of the error stacktrace on the appropriate dev bukkit page?
@Tehbeard
I dosn't work with the available version. Im getting an error where it says (is this up to date?)
@beaurelic01
Should work with latest versions.
is there coming a beardach update for 1.6.2 or does it work with version there is now
@Tehbeard
Found it. Small bug in the function that determines the id's for parts of a stat. It was only getting the first digit (fine for 0-9, causes a problem for id's 10+)
Should have a zip with the fixes out tomorrow.
hmm, It's using the wrong Id's for the scoreboard's query (trying to do deaths::playedfor on my local build). Investigating