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 Jun 25, 2012@ray73864
Stats can be turned off on a per world basis (the blacklist).
I have been considering the possibility of an optional permissions check system, something along the lines of:
stat.check.STATTYPE and stat.check.*
Where stat type is along the lines of general, blocks, mobs, items etc. Any decent permissions system lets you have per world permissions, so one could use this to allow only certain stats to be tracked in a world, or even only tracked if you are of a certain rank.
-
View User Profile
-
Send Message
Posted Jun 25, 2012Does this keep track of which world the stat was recorded for yet?
We use it on our server, running 0.4-grapefruit, have been using it for quite a while now, ever since January.
Only problem we have, is we base our player promotions on a few different things, activity, etc... and in the version we have, regardless of which world the stat was recorded in, it just gets added to a global list for that player, which means they could grind a few thousand mobs in the creative world and we would never know, because we can't tell where it was done.
-
View User Profile
-
Send Message
Posted Jun 23, 2012@Tehbeard
Cheers, I got it working ..
Also I upgraded to the latest version .. what are the new commands? I see that /stats -h etc doesn't work anymore.
Really like the new features though .. but a bit more documentation on config would be appreciated (the new part at the bottom).
-
View User Profile
-
Send Message
Posted Jun 22, 2012@furdabip
Fixed in next version.
-
View User Profile
-
Send Message
Posted Jun 22, 2012@Infuscu
Ahahahahahaha. Wow, I feel retarded. For some reason I didn't include the exclusion bit into the code that loads the top list for displaying. I swear I tested the code, though... Anyway.
As a temporary solution, you can change a few bits in the beardstat.php file for it to work. On line 803 you will find;
global $BSListFormat,$BSLoaded;
replace it with:
global $BSListFormat,$BSLoaded,$BSExcluded_SQL;
and then on line 831, around column 132 you'll see this;
where category = \"".$catorid."\" && (".$qins.") group by player order by total
Add ".$BSExcluded_SQL." after the (".$qins."), so it looks like this;
where category = \"".$catorid."\" && (".$qins.")".$BSExcluded_SQL." group by player order by total
It should work after that, and I did test it to make sure it would. :-D
-
View User Profile
-
Send Message
Posted Jun 22, 2012@furdabip
Alright, it has full permission now (it didn't have execute) .. I did, chmod 777...
I put in the debug, and it returns the following:
Array ( [0] => infuscu [1] => gotahoe [2] => mathiasaa )
&& (player != "infuscu" && player != "gotahoe" && player != "mathiasaa")
(http://www.blockpark.com/statistics/index.php?top=7)
This is with relative path. I tried with the direct path but it didn't help, it also seems to work with relatie path correct?
It doesn't have anything to do with the all lowercase?
EDIT: I also seperated them with spaces instead of lines.
-
View User Profile
-
Send Message
Posted Jun 22, 2012@Infuscu
Heya, there's a few things that may prevent the exclude list from working. Firstly, if you're running on a Linux server, the exclude.txt file needs full read/write/execute permissions. If it's a Windows server, Apache/PHP needs to be run as an administrator.
If you're certain that it's not a file permission error, there may be some error with the config.php file. Is the $exclude_file variable set to "exclude.txt"? Below it, is $include_all set to TRUE? It needs to remain FALSE for the exclusions to work. If both are fine, try a direct path to the exclude.txt file. Instead of "exclude.txt," something like "/Program Files/Apache Software Foundation/Apache/htdocs/statistics/exclude.txt."
There's also the chance that for some reason the parser can't read the names properly. Try putting them all on the same line with a space between each, instead of separate lines.
If all of that still hasn't done it, let's try debugging. In the index.php layout file, shove;
print_r($BSExcluded);
echo "<br><br>";
print_r($BSExcluded_SQL);
just below the require_once("beardstat.php") line at the top of the file (line 46). If all that's returned is "Array ( )" when you load the stats page, then the excluded list isn't loading. I have no clue what would be going wrong if that's the case. If it IS loading, and displays an array of excluded players, and the SQL insert properly, then the problem is with the API and I'll need further information before I can even start to debug it.
-
View User Profile
-
Send Message
Posted Jun 22, 2012@Tehbeard
No luck sadly ..
-
View User Profile
-
Send Message
Posted Jun 21, 2012@Infuscu
Tried all lowercase instead?
-
View User Profile
-
Send Message
Posted Jun 21, 2012Hm, cannot get the exclude feature to work ..
This is what the exlude.txt looks like:
http://i.imgur.com/YCZAd.png
Here is the statistic page:
www.blockpark.com/statistics
-
View User Profile
-
Send Message
Posted Jun 20, 2012@Geachinator
in plugins/BeardStat/.
-
View User Profile
-
Send Message
Posted Jun 16, 2012@Tehbeard It is loaded, what/where is the .yml supposed to be located and what is it called? I can't locate mine which may be the problem.
-
View User Profile
-
Send Message
Posted Jun 16, 2012@Hsenor
Did you add your worlds to the blacklist?
@Geachinator
Can't say, have you tried /version BeardStat to see if it is loaded?
-
View User Profile
-
Send Message
Posted Jun 16, 2012It seems some stats are not recording to the database. Is this an error? Do I need to tell it to record every stat?
-
View User Profile
-
Send Message
Posted Jun 16, 2012Hi,
I am getting the 'command not implemented' (when using /stats) and 'An internal error occurred while attempting to perform that command' (when using /player). What are the possible causes of this? (my stats should be recorded into a .yml but I can't locate it so maybe that is the problem?)
-
View User Profile
-
Send Message
Posted Jun 16, 2012@tomomosius
Was fine when I used it on my old 768MB server, even with 10 people on at once. Like with all logging plugins they do need to use a fair bit of memory to function properly.
-
View User Profile
-
Send Message
Posted Jun 15, 2012could you optimize this plugin a little bit more? i really like it im using it , but over time the ram usage skyrockets
-
View User Profile
-
Send Message
Posted Jun 9, 2012could you add iconomy and mcmmo and player avatars support? and maybe that achievments would work with stats web api so you could add specific images for done and not done achievments per player
-
View User Profile
-
Send Message
Posted May 29, 2012@Tehbeard
Yea, sounds about right :-)
-
View User Profile
-
Send Message
Posted May 29, 2012@Infuscu
Ah, I forgot to tell that permission node (stat.command.stat) to be off by default, oops.
II will look into a perm node/clearing function. at the moment, clearing function would sound like IF Playtime < x hours AND lastlogin > 2 weeks ago, clear. That sound about right?