Ranker
Usage and Scalability
Ranker can automatically run commands to give players rewards/permissions based on their performance/stat (pvp, pve, time, and wealth) that satisfy requirements defined by server Ops/Admins. With absolutely no configuration, Ranker works as a light-weight and simple stats tracker. Ranker's features and functions depends on the data in config.yml. Unlock as much or as little features and functions as you wish. Add Vault.jar and Ranker will use your server's economy currency as a stat. Define requirements, rewards, custom messages and commands and ranker works automatically. Set commands to do anything including grant players permissions, powers, items, and/or other rewards. Ops/Admins can control Ranker completely from within the game using commands. Commands can also provide feedback of current values in config.yml. Players and Console can display both online and offline player stats as well as modify them.
Ranker config.yml
Ranker's typical config.yml is organized into the following root sections:
- autorank - contains the ranks, requirements, rewards, messages, and commands
- stats - contains the appearance of of /ranker stats
- chatformat - contains the appearance of each rank title
- general - ranker chat mode, debug mode, How Ranker affect operators
- mysql - MySQL support for synchronizing player stats to database
Simple Config.yml Example
autorank: world: Peon: rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} requirement: money=10 Citizen: rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} requirement: money=20 stats: line2: ' &3{RANK} &2{PLAYER}' chatformat: Peon: '&a{RANK} {PLAYER}&3: &9' Citizen: '&a{RANK} {PLAYER}&3: &9' general: debug: false chat: false operator: false mysql: enable: false ip: 127.0.0.1 username: root password: password port: 3306 database: minecraft table: ranker update: 45 keepalive: true
Extended Config.yml Example
general: chat: false debug: false operator: false mysql: enable: false ip: 127.0.0.1 username: root password: password port: 3306 database: minecraft table: ranker update: 45 keepalive: true autorank: world: Peon: rankupmessage1: '&8--------------------------------------------' rankupmessage2: ' You earned Peon rank!' rankupmessage3: '&8--------------------------------------------' rankdownmessage1: '&8--------------------------------------------' rankdownmessage2: ' You ranked down to Peon rank!' rankdownmessage3: '&8--------------------------------------------' rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} rankupcommand2: server:/perm reload rankupcommand3: server:/give {PLAYER} wood 100 rankupcommand4: server:/give {PLAYER} dirt 100 rankdowncommand1: server:/perm player setgroup {PLAYER} {RANK} rankdowncommand2: server:/perm reload rankdowncommand3: server:/give {PLAYER} wood 1 rankdowncommand4: server:/give {PLAYER} dirt 1 rewardinfo: '100 stacks of wood, dirt, and some new commands!' requirement: money=0 Citizen: rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} rankupcommand2: server:/perm reload rankupcommand3: server:/give {PLAYER} wood 100 rankupcommand4: server:/give {PLAYER} stone 100 rankupmessage1: '&8--------------------------------------------' rankupmessage2: ' You earned Citizen rank!' rankupmessage3: '&8--------------------------------------------' rankdownmessage1: '&8--------------------------------------------' rankdownmessage2: ' You ranked down to Citizen rank!' rankdownmessage3: '&8--------------------------------------------' rankdowncommand1: server:/perm player setgroup {PLAYER} {RANK} rankdowncommand2: server:/perm reload rankdowncommand3: server:/give {PLAYER} wood 1 rankdowncommand4: server:/give {PLAYER} dirt 1 requirement: money=1000 Recruit: requirement: money=2000 rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} rankupcommand2: server:/perm reload rankupcommand3: server:/give {PLAYER} wood 100 rankupcommand4: server:/give {PLAYER} stone 100 rankupcommand5: server:/give {PLAYER} stonesword 1 rankupmessage1: '&8--------------------------------------------' rankupmessage2: ' You earned Recruit rank!' rankupmessage3: '&8--------------------------------------------' rankdownmessage1: '&8--------------------------------------------' rankdownmessage2: ' You ranked down to Recruit rank!' rankdownmessage3: '&8--------------------------------------------' rankdowncommand1: server:/perm player setgroup {PLAYER} {RANK} rankdowncommand2: server:/perm reload rankdowncommand3: server:/give {PLAYER} wood 1 rankdowncommand4: server:/give {PLAYER} dirt 1 world_the_end: Peon: rankupmessage1: '&8--------------------------------------------' rankupmessage2: ' You earned Peon rank!' rankupmessage3: '&8--------------------------------------------' rankdownmessage1: '&8--------------------------------------------' rankdownmessage2: ' You ranked down to Peon rank!' rankdownmessage3: '&8--------------------------------------------' rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} rankupcommand2: server:/perm reload rankupcommand3: server:/give {PLAYER} wood 100 rankupcommand4: server:/give {PLAYER} dirt 100 rankdowncommand1: server:/perm player setgroup {PLAYER} {RANK} rankdowncommand2: server:/perm reload rankdowncommand3: server:/give {PLAYER} wood 1 rankdowncommand4: server:/give {PLAYER} dirt 1 rewardinfo: '100 stacks of wood, dirt, and some new commands!' requirement: money=0 Citizen: rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} rankupcommand2: server:/perm reload rankupcommand3: server:/give {PLAYER} wood 100 rankupcommand4: server:/give {PLAYER} stone 100 rankupmessage1: '&8--------------------------------------------' rankupmessage2: ' You earned Citizen rank!' rankupmessage3: '&8--------------------------------------------' rankdownmessage1: '&8--------------------------------------------' rankdownmessage2: ' You ranked down to Citizen rank!' rankdownmessage3: '&8--------------------------------------------' rankdowncommand1: server:/perm player setgroup {PLAYER} {RANK} rankdowncommand2: server:/perm reload rankdowncommand3: server:/give {PLAYER} wood 1 rankdowncommand4: server:/give {PLAYER} dirt 1 requirement: money=1000 King: requirement: money=2000 rankupcommand1: server:/perm player setgroup {PLAYER} {RANK} rankupcommand2: server:/perm reload rankupcommand3: server:/give {PLAYER} wood 100 rankupcommand4: server:/give {PLAYER} stone 100 rankupcommand5: server:/give {PLAYER} stonesword 1 rankupmessage1: '&8--------------------------------------------' rankupmessage2: ' You earned King rank!' rankupmessage3: '&8--------------------------------------------' rankdownmessage1: '&8--------------------------------------------' rankdownmessage2: ' You ranked down to King rank!' rankdownmessage3: '&8--------------------------------------------' rankdowncommand1: server:/perm player setgroup {PLAYER} {RANK} rankdowncommand2: server:/perm reload rankdowncommand3: server:/give {PLAYER} wood 50 rankdowncommand4: server:/give {PLAYER} dirt 50 stats: line1: '&8--------------------------------------------' line2: ' &3{RANK} &2{PLAYER}' line3: '&6 {PVP} &aplayers killed!' line4: ' &6{PVE} &amonsters/animals killed.' line5: ' &6{TIME} &aminutes played.' line6: ' &6${MONEY} &ain wealth.' line7: '&8--------------------------------------------' chatformat: Peon: '&a{RANK} {PLAYER}&3: &9'
Ranker Commands allows Complete Control over config.yml
The following are 2 examples of defining requirement(s) for the Peon rank
- description: (player must have atleast $1000 AND a pvp score of 4)
- command: /ranker worldName.Peon.requirement money=1000+pvp=4
- description: (player must have atleast $1000 AND a pvp score of 4) OR (have playtime of atleast 120 minutes) OR (have killed atleast 50 monsters) OR (have killed atleast 30 players)
- command: /ranker worldName.Peon.requirement money=1000+pvp=4;time=120;pve=50;pvp=30
More on how to Modify config.yml by Commands
Command parameter corresponds directly to the format within the config.yml file. The following demonstrates a sequence of changes to the config.yml with each command used. Also Note Below: Ranker displays the current value of the config node if no value parameters are included!
- permission node: ranker.* (default: op)
- command: /ranker autorank.world.Peon.rankupcommand1 server:/give {PLAYER} wood 100
autorank: world: Peon: rankupcommand1: server:/give {PLAYER} wood 100
- command: /ranker autorank.world.Peon.rankupmessage2 ' You earned Peon rank!'
autorank: world: Peon: rankupcommand1: server:/give {PLAYER} wood 100 rankupmessage2: ' You earned Peon rank!'
- command: /ranker autorank.world.Peon.requirement time=0
autorank: world: Peon: rankupcommand1: server:/give {PLAYER} wood 100 rankupmessage2: ' You earned Peon rank!' requirement: time=0
- command: /ranker autorank.world.Peon.requirement
- displays: (existing) time=0
- command: /ranker autorank.world.Peon.requirement remove
autorank: world: Peon: rankupcommand1: server:/give {PLAYER} wood 100 rankupmessage2: ' You earned Peon rank!'
Commands
/ranker list description: list all ranks, requirements, and rewards within a world. /ranker stats description: show stats /ranker stats <player> description: show stats of <player> /ranker autorank.<worldName>.<rankName>.<options> <values> description: edit autorank data in config.yml /ranker chatformat.<rankName> <values> description: edit chatformat in config.yml /ranker stats.line<1-8> <values> description: edit stats format in config.yml /ranker save-all description: saves all player's stats to server before a /reload /ranker general.chat <true|false> description: turn Ranker chat mode on/off. /ranker general.debug <true|false> description: turn Ranker debug mode on/off. /ranker general.operator <true|false> description: include/exclude operators from calling Ranker's messages/commands, (false prevents operators from getting downranked) /ranker reset <player> rank description: reset player rankName /ranker reset <player> <pvp|pve|time> <value> description: reset player stats to specified value. /ranker give <player> <pvp|pve|time> <value> description: add value to specified player stats. /ranker import autorank description: imports autorank player's time into Ranker playerData
Permissions
ranker.*: description: Allow use of op commands. default: op children: ranker.stats.self: true ranker.stats.other: true ranker.list: true ranker.save.all: true ranker.stats.self: description: Show my stats. ranker.stats.other: description: Show other player's stats. ranker.list: description: List the ranks, requirements, and rewards within a world. ranker.command.rankup: description: Call rank commands when rank up to that rank. ranker.command.rankdown: description: Call rank commands when rank down to that rank ranker.message.rankup: description: Call rank messages when rank up to that rank. ranker.message.rankdown: description: Call rank messages when rank down to that rank. ranker.rankup: description: Change your rank when you rank up. Setting this to false will disable both message and command. ranker.rankdown: description: Change your rank when you rank down. Setting this to false will disable both message and command. ranker.save.all: description: Allow player to save all player's stats to server.
Player and Server Command Example
- command: /ranker autorank.world.Peon.rankupcommand1 server:/give {PLAYER} wood 100
- description: console server will send the command
- command: /ranker autorank.world.Peon.rankupcommand2 player:/me just ranked!
- description: the player will send the command
Mechanics with Permissions
- permission node: ranker.command.rankup (default: op)
- description: Call rank commands when rank up to that rank.
- permission node: ranker.command.rankdown (default: op)
- description: Call rank commands when rank down to that rank
- permission node: ranker.message.rankup (default: op)
- description: Call rank messages when rank up to that rank.
- permission node: ranker.message.rankdown (default: op)
- description: Call rank messages when rank down to that rank.
Is there anyway this plugin can be used with alternate economy plugins?
I cant wait for a new release, this plugin looks amazing, and perfect for what I am trying to achieve on my server. Good luck, and expect a monetary donation if this plugin improves my server!
whenever i talk on my serve it doesnt say the rank for me or anyone it says general/chat in config.yml please help!
Beta soon to come! Biggest change is that there will no longer be a permissions portion of Ranker, however Ranker will continue to work with all major permissions plugin as long as the permissions plugin utilizes commands to assign player to groups of permissions. Ranker doesn't require Vault for permissions, but Vault's economy can be used instead of Ranker's Money system and vice-versa. More documentation at the launch of Beta!
@MCCharlieCraft
In the Beta, custom commands and messages can be executed when requirements are met. Without Vault, Ranker can work with other permissions plugin to assign players permission group through command(s) execution. The following config will execute permissionsBukkit's command and then reloads permissionsBukkit.
@Jackbtroop62
I will consider your suggestion, thanks.
@audiophoenix
Thanks! I have been building smaller prototypes with experience points. I have considered broken blocks, blocks placed, tracking of different types of mobs and how the mob was killed as well. I have also considered the win/loss ratio as a stat. All of these will come in time. Thanks for your interest and suggestions.
@ManBeastPigDev
The Beta will work with any permissions plugin that utilizes commands to assign players to permission groups. Permission plugins with its own self reload feature will also help.
Hey I like the way this plugin works..
If I could suggest a feature that I have been looking for in an auto rank plugin it would be to add rankup requirements such as xp amount, blocks broken (mining skill), individual tracking of animals killed and mobs killed, tracking of kills with sword, arrows, fist.
There is a lot you can do with requirements but I have yet to see a plugin really take advantage of this. I'm sure your plugin would become quite popular if you added these features.
Thanks for the work you've already done!
You should make it so you can gain a rank by getting a permissions node :D
I see the Command: below the requirement. Does that mean one could have it issue a command when the requirements are met? Then without vault at all one could control a players permission group regardless of permission plugin.
Is this possible? If not could it be?
@joshwenke
I might just implement only the economy portion of Vault which works with most major currency plugins. Vault's permission isn't so friendly with other major permissions from my experience.
@ManBeastPigDev
No Ranker doesn't work with PEX's permission. The plan for Ranker is that it's autorank mechanics work as efficiently as possible with its own internal permissions (which needs a little work and I'm working to improve it).
@Daicecreamman
Do you mean just award a player a title name rather than award a set of permissions?
@goldftwcom
Thanks and to be honest I think this plugin would be a bit better if it only focused on ranking instead of other things. For example just offer the feature for ranking (by time, by money, by pvp). However plugin is great!
Does it work with PEX?
Will this override EssentialsEco or can it work alongside it?
There are some significant changes in Alpha Ranker v1.1. Check it out once approved.
Feel free to report all bugs and errors here people.
@Daicecreamman
I'll draw up a plan to have an option to disable permissions and economy. I have a working version that disables Ranker's Chat. Will release it really soon as a beta along with a few bug fixes.
Hey in the next update can you make a way to disable certain features. So if I only wanted the ranking aspect of this plugin I could change permissions to false and economy to false.
@notif
To have players keep their rank for all worlds you would do something like this:
Basically, player stats don't change from world to world therefore they will be given the same rank in different worlds if the requirements are the same.
@notif
The upcoming beta will have:
I might add the following as well:
Is there a way to set a unique Rank Up message to the player, for each rank, like AutoRank does?
And is there a way for a player to keep their rank for all worlds, or for listed worlds?
@Daicecreamman
Thanks for offering! The Bukkit API and java is what you'll need to learn along with some object oriented design.
Sorry for the long delay! Ranker was just uploaded and awaiting approval. I made some changes to this description to reflect some additional features and changes to Ranker. Let me know of the bugs.