Statify

Statify is a very simple, lightweight (no autocomplete), and powerful plugin to create and calculate stats, as well as expressions containing stats. Made by @quantumbagel (https://github.com/quantumbagel)

177

Statify

Statify - Simple Minecraft Stats Done Right

UPDATE 4/10: Statify 2 is coming Summer 2024 with better autocomplete, less bugs, and good karma!

Hi! I'm @quantumbagel, and this is my first plugin - Statify. It's a tiny (<50kb), resource-efficient, and powerful serverside plugin to get stats for one player - or the entire server.

Why do I need this?

If you want a way to aggregate stats throughout the server (not just through the Statistics menu for one player - this plugin allows easy visualization of stats.

Pros/Cons

Here's a list of pros and cons of this plugin (this isn't a *perfect* plugin)

Pros

* Complex queries allowed (`killed:zombie+killed:skeleton`, `(killed:zombie+killed:skeleton)^custom:beds_broken`, or even `tan(killed:zombie) + killed:skeleton`) * Ranking of individual categories for a certain player * Ability to create and save complex queries under a shorthand * Yes, there *is* a recursion detector

Cons

* No autocomplete, you have to know the general layout of MC stats (for an excellent guide, check https://minecraft.fandom.com/wiki/Statistics) * My first plugin, so there are probably copious quantities of bugs and glitches * Doesn't work well with offline-mode (cracked Minecraft) because of the possibility of duplicate usernames * No multithreading * No custom command sanity checks * Bugginess with really big numbers >:( This is a *Bukkit* plugin, so put the .jar in the `plugins` folder of your Spigot/Bukkit/CraftBukkit server.

How do I even use these commands?

*NB: [description] is NOT REQUIRED, equals sign after is DEFAULT VALUE, <description> IS REQUIRED*

/leaderboard, /lb

Format:

`/leaderboard [number of top entries]=10 <complex expression>`

Examples:

`/lb killed:zombie` (A simple request for the top 10 player zombie kills)

`/lb 5 killed:zombie` (A request for the top 5 player zombie kills)

`/lb killed:total` (A request for the player with the highest sum of the "killed" category (most entity kills))

`/lb APlayerOfMinecraft:kd` (APlayerOfMinecraft is username, kd is custom command that user defined (in this case kill differential))

`/lb killed:zombie + APlayerOfMinecraft:kd` (You can use both in conjunction using these stats as numbers)

`/lb killed:zombie * APlayerOfMinecraft:kd + custom:walk_one_cm`

/stat

Format:

`/stat [username]=<player who is sending> <category> [number of top entries]=10`

Examples

`/stat killed` (returns top 10 ranking of the "killed" category for the player who sent the message)

`/stat killed 5` (returns top 10 ranking of the "killed" category for the player who sent the message)

`/stat APlayerOfMinecraft killed` (returns top 10 ranking of the "killed" category of the player "APlayerOfMinecraft")

`/stat APlayerOfMinecraft killed 5` (returns top 5 ranking of the "killed" category of the player "APlayerOfMinecraft")

/custom

Format:

`/custom set <command name> <complex expression>`

`/custom list [username]=<player who is sending>`

`/custom get [username]=<player who is sending> <command name>`

`/custom delete <command name>`

Examples

`/custom set kd killed:total-killed_by:total` (Set the player who is sending's custom command "kd" to "killed:total-killed_by:total". If the player's name was "APlayerOfMinecraft," this could be referenced the exact same way as the `/leaderboard` examples above.)

`/custom list` (List the current player's defined commands)

`/custom list APlayerOfMinecraft` (List the player "APlayerOfMinecraft"'s defined stats)

`/custom get kd` (Print the current definition of the custom stat `kd` for the current player)

`/custom get APlayerOfMinecraft kd` (Print the current definition of the custom stat `kd` for the player "APlayerOfMinecraft")

`/custom delete kd` (Delete the command `kd` for the current player, if defined)

/playerrank

Format

`/playerrank [number of top entries]=10`

Examples

`/playerrank` (List the top 10 players on the server using the PlayerScore algorithm that I made up on the spot)

`/playerrank 5` (List the top 5 players on the server)

That's all - I hope you enjoy this little plugin!

ADS