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
-
View User Profile
-
Send Message
Posted Aug 28, 2012@Tehbeard
SQLite datasource is the one, yes.
I'll keep github in mind for future issues, if any are worth reporting!
-
View User Profile
-
Send Message
Posted Aug 28, 2012@Doctacosa Hi, thanks for the compliment.
1- Does sound like a loop bug, I shall check the latest build to see if this is fixed (I take it you are running sqlite datasource correct?).
2- ConcurrentModificationException has been the bane of my life these past few versions, damn thing keeps cropping up for no reason at unexpected times.
Bug reports are easier for me on github (can sign them off in commits that actually fix them), I haven't linked it on here though.
-
View User Profile
-
Send Message
Posted Aug 28, 2012I'm now running the latest beta, and it's working well overall. Nice job!
I'm encountering two specific issues that I thought I should report (is there a better place to report bugs?). Maybe those are already fixed in your dev builds, but I figure they are worth a mention.
1- One player being updated at a time only?
I reinstalled the plugin last night and wiped all stats and config, so I'm starting from a blank slate. I'm using SQLite storage, default config and all. I noticed that only one player's stats get updated at a time. For example, if I've got two players online, only the first one's stats will be saved to the DB file even if the second player is active on the server. This can last an indefinite amount of time. When the first player leaves, the second's stats will get saved, including all the numbers that have been calculated while both were on. It gives me the impression that a loop isn't working somewhere, or is completely missing.
2- Exceptions
The plugin is throwing quite often exceptions like this one:
Thanks, and keep it up!
-
View User Profile
-
Send Message
Posted Aug 27, 2012@sh4nks
Added to next build. show be releasing this week if nothing breaks in testing.
-
View User Profile
-
Send Message
Posted Aug 27, 2012mysql doesnt work on my archlinux machine because the mysql-server is running on port 3600. an option for configuring the port would be nice :)
-
View User Profile
-
Send Message
Posted Aug 22, 2012@snitride
debug info sorry, it'll be removed in the next build.
-
View User Profile
-
Send Message
Posted Aug 22, 2012@Remi_Scarlet there is really not much to it, make sure your mysql user has all permissions needed to create databases and new tables or create the necessary database as admin and give the user permissions to create tables in this database. Then setup your config.php in your www folder and you are ready to go.
And yes there is documentation provided here
Also here my config for comparison, only showing the sql part:
here you can see, how the result could look like ;) www.slugsshell.org
@Beardstat Dev, thank you for this great plugin! Just one question: Is there a way i can reduce the [INFO] $kills.player $deaths.player - messages in the console, because there quite a lot of them.
Greetings,
snitride
-
View User Profile
-
Send Message
Posted Aug 14, 2012Out of curiosity, is there actual documentation on this page or a wiki? I'm trying to set the plugin to use mysql and I have the correct information in the config but it keeps saving to the flatfile. Also, is there any other thing other than MySQL db information I need to change?
-
View User Profile
-
Send Message
Posted Aug 11, 2012@ray73864
yes.
-
View User Profile
-
Send Message
Posted Aug 11, 2012Will this work on 1.3.1?
-
View User Profile
-
Send Message
Posted Aug 6, 2012ok, we have updated to the new snapshot version. Is there anything we need to do to fix up the 'playedfor' times?
We are using the MySQL storage engine for the stats.
-
View User Profile
-
Send Message
Posted Aug 6, 2012Sounds good! I appreciate the work you put into your plugin suite; as of right now, I haven't found any plugins that support the scoreboard-type leader boards - you'll most likely be the first official publicized plugin developer to do so :D
Keep up the good work!
-
View User Profile
-
Send Message
Posted Aug 6, 2012@TerraVale
Still planning on it, nothing solidly coded yet.
Beta release was to fix some bugs people have with Honey, there's still some more features to come for Ice Cream :)
-
View User Profile
-
Send Message
Posted Aug 6, 2012@Tehbeard
Just for informative values, are you still planning on ( or already working on ) that scoreboard ideology? :)
-
View User Profile
-
Send Message
Posted Aug 5, 2012@Tehbeard
I Believe i've found the cause, will update comment and release a build with the fix if it is the problem.
-
View User Profile
-
Send Message
Posted Aug 4, 2012@ray73864
if your using mysql as the storage, you should be able to subtract the time difference on all players. This has to be done while the bukkit server/BeardStat is not online.
-
View User Profile
-
Send Message
Posted Jul 31, 2012I think we started having this 'playedfor' issue when i upgraded us to 0.4.7-Honey. As lots of our players are showing with the wrong 'playedfor' time.
Is there anyway we can fix this? or are we just doomed to having an incorrect 'playedfor' time now for ever?
-
View User Profile
-
Send Message
Posted Jul 29, 2012When is MCMMO support expected to be implemented?
-
View User Profile
-
Send Message
Posted Jul 28, 2012@Tehbeard
Awesome, can't wait! My friend and I hope to have our server up and running by the middle of august, and by then we'll have our own domain, DNS, and dedicated hosting (on ramdisk, yay!).
We personally figured as I explained to be the only way for there to be a leaderboard type system on our server, just because of our setup; thus, if you were able to get a scoreboard related feature working, our gratuitous thanks will go out to you! I'm surely hoping many other minecraft players enjoy our soon to come server, and for that reason, we'll have a link to your plugin on the leaderboard page for making it possible.
-
View User Profile
-
Send Message
Posted Jul 28, 2012@TerraVale
This is actually a very nice idea.
unfortunately, it is not implemented in the core of BeardStat. BeardStat at the moment only tracks current / running totals (current play time, total blocks mined).
Now the positives: BeardStat has an API open to other plugins, it's therefore possible to write a small plugin that records the data (mob kills over/underworld as say, killer.overworldkills ) and then resets these stats on user death. This does not however cover the having old scores in the leaderboard since as stated above, BeardStat only tracks current stats.
I like the idea of the functionality enough that i'm going to add it as a todo for the next version (scoreboard api for the plugin, with the option of preserving old scores, trimming the scoreboard to x entries etc).