Skip to content

9. Membership tiers

What the sidebar calls the player, and what that is worth in characters.

Source How
Tebex A package runs mcperks tier <player> <tier> [days], written to multicharacter_entitlements
Discord The player holds a role in your guild. Read live, nothing stored — section 11
ACE The server.cfg route

Whichever lands the player on the highest rank wins. Label, colour and slot bonus are described once in Config.Membership.tiers, so the store screen, the sidebar badge and the slot maths can never disagree.

Option Notes
default Tier for an account with no membership. Must exist in tiers
stackPurchasedSlots Do slot packs add on top of the tier’s own bonus, or does the larger simply win?
staffOverride What /setslots means. "base": it replaces Config.Slots and membership adds on top. "absolute": it is the final answer and membership is ignored
cacheSeconds How long a resolved membership is trusted. Only Discord costs anything to check; database grants drop the cache themselves
ace ACE bridge: add_ace group.premium nuggs.premium allow puts that group on the mapped tier. Empty this if you only use Tebex or Discord
Field Notes
id Internal key, referenced by default, ace and store packages
rank Higher wins when two sources disagree. 0 means “not a member”
label / short Long and short display names
colour The sidebar badge, the store card and the diamond on every character card
icon crown or gem
slots Extra characters the tier is worth
store Id of the Config.Store package that sells it, so the sidebar can point an upgrade button at the right card
blurb / perks Store and sidebar copy
discord Role ids or names that grant this tier (needs section 11)
discord = { "Bronze Member" },
discord = { "000000000000000000" },

A name is resolved against your guild at startup and reported if it does not exist. A guild role already named after a tier is matched automatically — see autoMapByName in section 11.