Main server folder spigot.yml and check that stats saving prevention is set to false stats->disable-saving: false
Players will get the default rank group depending on the set permission node cmi.rank.[rankName]
Not enabled ranks will be ignored.
Do check the available commands for rank here.
Base options
DisplayName section is optional and it will be used to represent rank ingame. This is NOT defining the required permission node and you still need to use the node name to rankup to this rank
DefaultRank section defines if the player can be assigned to this rank if he doesn’t have any. There can be more than one default rank, and depending on the permission node, the first rank will be assigned to that player when needed
AutoRankup section defines if the player will be auto-ranked to this rank if possible. Keep in mind that if there is more than one legit rankup’s, the player will have to confirm to which rank he wants to rankup
RankupConfirmation section defines if you want to add additional confirmation for this rankup. Useful to avoid unintentional rankups. Keep in mind that autorankup will request confirmation for rankup to this rank even if there is only one legit rankup option
NextRanks is the list of possible next ranks from this rank. Can be one or can be dozens. Keep in mind that each rank requirement will be shown in chat and it can clutter quite a lot if there is a bunch of them at once
MoneyCost defines how much the player will have to pay to rankup to this rank
ExpCost defines how much the player will have to pay in exp to rankup to this rank
Votes defines amount of Votes player needs to have. This will be taken from CMI vote recording based on Votifier plugin
Commands are a list that will be performed on rankup. Can be additional actions, like message broadcast or anything else
CommandsOnRankDown is a list of commands which will be performed on rankdown action. Commands will be performed when you are ranking down from this rank.
StatsRequirements
The main section is StatsRequirements and it can have a lot of different values in it:
In general, format goes like this [mainStat]( : optionalSubStat):amount
For example, MonsterKills:100 will require from player to have 100 monster kills while MonsterKills:Zombie:100 will require to have 100 zombie kills. Both of them can be used if needed.
List of possible requirements and basic explanations:
Distance in blocks:
- Travel– Travel in total
- Walk– has to walk
- Sneak– has to sneak
- Sprint– has to sprint
- Swim– has to swim
- Fall– has to fall
- Climb– has to climb
- Fly– has to fly
- Dive– has to walk/swim underwater
- MinecartTravel– has to travel with a minecart
- BoatTravel– has to travel by boat
- PigTravel– has to ride a pig
- HorseTravel– has to ride a horse
- ElytraTravel– has to fly with elytra
Time in sec:
- PlayTime– total playtime
- AccountAge– the time from the first player login into the server
- FromLastDeath– from last death
- SneakTime– sneak time
Amounts:
- GameQuit– how many times player left the game
- Jump– jump count
- DamageDealt– total damage made
- DamageTaken– total damage taken
- Deaths– count of deaths
- MobKills– the total amount of mobs killed by the player
- PlayerKills– the total amount of players killed. Indirect kills don’t count
- ItemEnchanted– the number of enchanted items
- AnimalsBred– animals bred
- FishCaught– fish caught
- TalkedToVillager– times talked to a villager
- TradedWithVillager– traded with villagers
- CakeSlicesEaten– cake slices eaten
- CauldronFilled– cauldron filled
- CouldronUsed– cauldron used
- ArmorCleaned– times armor cleaned (leather armor)
- BannerCleaned– times banner cleaned
- BrewingstandInteractions– brewing stand interactions
- BeaconInteractions– beacon interactions
- CraftingTableInteractions– crafting table interactions
- FurnaceInteractions– furnace interactions
- DispenserInspected– dispenser inspected
- DropperInspected– dropper inspected
- HopperInspected– hopper inspected
- ChestOpen– chest open
- TrappedChestTriggered– trapped chest triggered
- EnderchestOpened– enderchest opened
- NoteblockPlayed– noteblock played
- NoteblockTuned– noteblock tuned
- FlowerPotted– flower potted
- RecordPlayed– record played
- SleeptInBed– sleept in bed
- ShulkerBoxOpened– shulker box opened
- ItemDropped– defines the amount of dropped items. If a specific item is not defined, then the total amount is used
- ItemPickups– defines the amount of picked-up items. If a specific item is not defined, then the total amount is used
- BlocksMined– defines the number of blocks mined. If a specific block is not defined, then the total amount is used
- ItemBreaks– defines the number of broken items. If a specific item is not defined, then the total amount is used
- ItemCrafts– defines the number of crafted items. If a specific item is not defined, then the total amount is used
- ItemsUsed– defines the amount of item usage. like mining with a pickaxe. If a specific item is not defined, then the total amount is used
- MonsterKills– defines the number of monster kills. If a specific monster is not defined, then the total amount is used
- KilledBy– defines the number of deaths by a monster. If a specific monster is not defined, then the total amount is used
StatsRequirements: - "PlayTime:3600" - "travel:1000" - "MonsterKills:zombie:10" - "MonsterKills:slime:5" - "MonsterKills:wolf:5" - "AccountAge:1209600"
ItemRequirement
List of items player needs to have in their inventory. Defined as material followed with amount.
ItemRequirement: - "stone:10" - "stone:1:20" - "book:20"
JobsRequirement
List of jobs player needs to be in and their minimal level. Additionally you can use totallevel to ask for total level amount across all active players jobs
JobsRequirement: - "miner:10" - "totallevel:20"
McMMORequirement
List of mcmmo skills and their minimal levels. Additionally you can use power to require specific total skill level
McMMORequirement: - "woodcutting:10" - "power:20"
PermissionRequirement
List of permission requirements. It needs to have actual permission node and followed with its short display name which will be used while showing rank information in game
PermissionRequirement: - "cmi.command.fly:Fly"
PlaceholderRequirements
List of placeholder requirements. This can check by numeric placeholder or text based. For numeric placeholders use >= or == to check for equal or higher than or exact value. For text based placeholders always use == to check for exact match, tho we will ignore capitalization. This will need to include short description which will be used as display name for rank information in game
PlaceholderRequirements: - '%cmi_user_level%>=10;Get to level 10' - '%cmi_user_homeamount%>=3;Get 3 homes' - '%cmi_user_weather%==rainy;We like rain'
Default file example
Newbie: Enabled: true DisplayName: "&2Newbie" DefaultRank: true AutoRankup: true NextRanks: - Branch1 - Branch2 Branch1: Enabled: true DisplayName: "&2Branch1" AutoRankup: true RankupConfirmation: true Votes: 5 PermissionRequirement: - "cmi.command.fly:Fly" McMMORequirement: - "woodcutting:10" - "power:20" JobsRequirement: - "miner:10" - "totallevel:20" ItemRequirement: - "stone:10" - "stone:1:20" - "book:20" NextRanks: - Branch1Rank1 MoneyCost: 100 Commands: - "broadcast! &6[playerDisplayName] &eleveled up to Branch1 rank!" StatsRequirements: - "PlayTime:3600" - "travel:1000" - "MonsterKills:zombie:10" - "MonsterKills:slime:5" - "MonsterKills:wolf:5" - "AccountAge:1209600" PlaceholderRequirements: - '%cmi_user_level%>=10;Get to level 10' - '%cmi_user_homeamount%>=3;Get 3 homes' - '%cmi_user_weather%==rainy;We like rain' Branch1Rank1: Enabled: true DisplayName: "&2Branch1Rank1" DefaultRank: false AutoRankup: true RankupConfirmation: false PermissionRequirement: - "cmi.command.heal:Heal" NextRanks: - Last MoneyCost: 300 ExpCost: 350 Commands: - "broadcast! &6[playerDisplayName] &eleveled up to Branch1Rank1 rank!" StatsRequirements: - "travel:10000" - "blocksmined:3000" - "blocksmined:diamond_ore:30" - "MonsterKills:1000" - "AccountAge:1209600" McMMORequirement: - "taming:10" - "unarmed:30" Branch2: Enabled: true DisplayName: "&2Branch2" AutoRankup: true RankupConfirmation: true MoneyCost: 150 NextRanks: - Branch2Rank1 Commands: - "broadcast! &6[playerDisplayName] &eleveled up to Branch2 rank!" PermissionRequirement: - "cmi.command.tp:Teleport" StatsRequirements: - "PlayTime:3600" - "travel:2000" - "MonsterKills:zombie:15" - "MonsterKills:slime:10" Branch2Rank1: Enabled: true DisplayName: "&2Branch2Rank1" AutoRankup: true RankupConfirmation: false MoneyCost: 100 ExpCost: 150 NextRanks: - Branch2Rank2 Commands: - "broadcast! &6[playerDisplayName] &eleveled up to Branch1Rank1 rank!" StatsRequirements: - "PlayTime:4600" - "Swim:1000" - "SneakTime:180" - "MonsterKills:100" Branch2Rank2: Enabled: true DisplayName: "&2Branch2Rank2" AutoRankup: true RankupConfirmation: false MoneyCost: 100 ExpCost: 150 NextRanks: - Last Commands: - "broadcast! &6[playerDisplayName] &eleveled up to Branch2Rank2 rank!" StatsRequirements: - "walk:15000" - "HorseTravel:1000" - "ItemsUsed:10000" - "PlayerKills:10" Last: Enabled: true DisplayName: "&2Last" AutoRankup: true StatsRequirements: - "PlayTime:21600" - "walk:30000" - "MonsterKills:1000" - "blocksmined:30000" Commands: - "broadcast! &6[playerDisplayName] &eleveled up to Last rank!" - "cmi heal [playerName]" - "money give [playerName] 100"