Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/quantumbagel/statify

Statify is a minimalist SpigotMC stat plugin.
https://github.com/quantumbagel/statify

java minecraft minecraft-plugin quantumbagel resource-efficient spigot-api spigot-plugin spigotmc-plugins stats

Last synced: about 2 months ago
JSON representation

Statify is a minimalist SpigotMC stat plugin.

Awesome Lists containing this project

README

        

# Statify - Simple Minecraft Stats Done Right

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, IS REQUIRED*
### /leaderboard, /lb

#### Format:

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

#### 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]= [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 `

`/custom list [username]=`

`/custom get [username]= `

`/custom delete `

#### 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!