CoreEngineWIKI
ESC
NavigateEnter OpenESC Close

Teams

Teams group players with their own name, free rank system, bank, score/level, team home, warps, shared ender chest, chest claims and diplomacy (alliances, team/ally chat). Operated via /team, the team GUI (/team without arguments) and the web interface.

Important concept: the Bukkit permission (e.g. team.invite) decides whether a player may use the feature at all. The rank right (e.g. INVITE_MEMBERS) decides whether their rank inside the team may perform the action. The owner rank (weight 0) always has all rights.

Commands #

CommandSyntaxPermissionDefaultRank rightDescription
Create/team create <name>team.createtrue-Creates a team, creator becomes owner
Disband/team disbandteam.disbandtrueDISBAND_TEAMDisbands after chat confirmation
Rename/team name <name>team.managetrueEDIT_NAMEOne word, all data is kept
Description/team description [text]team.managetrueEDIT_DESCRIPTIONSets/clears the description
Color/team color <color>team.managetrueEDIT_COLORNamed or hex
Tag/team tag [tag]team.managetrueEDIT_TAGSets/removes the tag
Info/team info [team|player]team.infotrue-Details of a team
Menu/team menuteam.menutrue-Opens the team GUI
Invite/team invite <player>team.invitetrueINVITE_MEMBERSMax one open invite per target, expires after invite-timeout
Join/team join [team]team.jointrue-Accepts an invite or joins an open team
Deny/team denyteam.denytrue-Denies your pending invite
Leave/team leaveteam.leavetrue-Owner must transfer or disband first
Open/closed/team openteam.opentrueTOGGLE_OPENToggles free joining
Kick/team kick <player>team.kicktrueKICK_MEMBERSOnly with strictly higher rank
Ban/team ban <player> / unbanteam.bantrueBAN_MEMBERSBans (kicks first) or unbans
Ranks/team ranks <list|create|rename|delete|perms|moveup|movedown>team.rank.managetrueMANAGE_RANKSManages the rank list
Assign rank/team ranks assign <player> <rank>team.rank.assigntruePROMOTE_MEMBERS or DEMOTE_MEMBERSOnly ranks below your own
Balance/team balteam.baltrueVIEW_BALANCEShows the team bank
Deposit/team deposit <amount>team.deposittrueDEPOSITPlayer money into the bank
Withdraw/team withdraw <amount>team.withdrawtrueWITHDRAWBank to the player
Bank top/team baltop [page]team.baltoptrue-Teams by balance (30 s cache)
Level info/team rankteam.ranktrue-Current level and requirements
Level up/team rankupteam.rankuptrueRANKUP_TEAMRanks up when score and bank suffice
Score top/team top [page]team.toptrue-Teams by score (30 s cache)
Home/team sethome / home / delhometeam.hometrueSET_HOME / USE_HOMETeam home (warmup/cooldown/cost via teamhome)
Warps/team setwarp <name> / warp [name] / delwarp <name>team.warptrueMANAGE_WARPS / USE_WARPSTeam warps in the unified warp system, details on the warps page
Ender chest/team echestteam.echesttrueUSE_ECHESTShared 27-slot ender chest in real time
Chests/team chest <claim|remove|removeall>team.chesttrueMANAGE_CHEST_CLAIMSClaim chests/barrels for the team
Convert shop/team shop (look at shop)team.shoptrueEDIT_TEAM_SHOPSTurn your own chest shop into a team shop
Alliance/team ally <team> / neutral <team>team.allytrueMANAGE_ALLIESMutual confirmation; neutral acts one-sided
Team chat/team chat [text]team.chattrueUSE_TEAM_CHATWithout text: persistent toggle
Ally chat/team allychat [text]team.allychattrueUSE_ALLY_CHATTeam + allies; excludes team chat
PvP/team pvpteam.pvptrueTOGGLE_PVPInternal friendly fire on/off
Transfer owner/team setowner <player>team.setownertrueTRANSFER_OWNERSHIPTransfers ownership

Additional permissions #

PermissionDefaultDescription
team.bypass.createcostfalseTeam creation free
team.bypass.changecostfalseBypass change costs (name, tag, color, ...)
team.bypass.friendlyfire / team.bypass.allyfriendlyfirefalseDamages team/ally members despite protection
team.bypass.chestclaimfalseOpens/breaks foreign team chests
team.bypass.depositcooldown / team.bypass.withdrawcooldownfalseBypass bank cooldowns
team.bypass.limitfalseBypass warp/rank limits

Rank rights #

Every right is grantable per rank individually (/team ranks perms or GUI). Ranks have an ID, display name (3 to 24 characters), weight (0 = owner, higher = lower), icon and rights. Rank limit: 3 preset ranks + max-ranks + level bonus, hard capped at 16.

CategoryRights
MembersINVITE_MEMBERS, KICK_MEMBERS, BAN_MEMBERS, PROMOTE_MEMBERS, DEMOTE_MEMBERS, MANAGE_RANKS
IdentityEDIT_NAME, EDIT_TAG, EDIT_DESCRIPTION, EDIT_COLOR, TOGGLE_OPEN, TOGGLE_PVP
DiplomacyMANAGE_ALLIES, USE_ALLY_CHAT, USE_TEAM_CHAT
EconomyVIEW_BALANCE, DEPOSIT, WITHDRAW, RANKUP_TEAM
PlacesUSE_HOME, SET_HOME, USE_WARPS, MANAGE_WARPS
StorageUSE_ECHEST, MANAGE_CHEST_CLAIMS
Danger zoneDISBAND_TEAM, TRANSFER_OWNERSHIP
Claims & shopsBUILD_IN_TEAM_SUBDIVISIONS, BUILD_IN_ALLY_SUBDIVISIONS, MANAGE_TEAM_CLAIM_FLAGS (used by CoreEngineClaim), EDIT_TEAM_SHOPS (shop system + web)

Preset rights: owner everything; admin everything except EDIT_NAME, DISBAND_TEAM, TRANSFER_OWNERSHIP, RANKUP_TEAM; member USE_TEAM_CHAT, USE_ALLY_CHAT, VIEW_BALANCE, DEPOSIT, USE_HOME, USE_WARPS, USE_ECHEST, BUILD_IN_TEAM_SUBDIVISIONS.

ℹ️

Note: Kick, ban, promote, demote and rank assignment additionally check the hierarchy (only a strictly higher rank may act, the owner outranks everyone). Rights are enforced identically everywhere: commands, GUI and web interface, for team/ally chat even per message.

Score and levels #

PvP kills between different teams give the killer team per-kill points and subtract per-death from the victim team (never below 0). Two protections: identical killer/victim IP is ignored entirely (ip-check), and after spam-kill-max-kills kills of the same victim within spam-kill-window seconds no more score is given.

/team rankup first checks the required score, then charges the level price from the team bank. Each level's bonus values add to the base limits; bonus-shops raises max-shops-per-team from the shop module.

ℹ️

Note: In the default config required-score is 0 everywhere, so ranking up is only limited by money. To gate progression by PvP score, raise required-score per level.

Chest claims #

Claimable are chests, trapped chests and barrels (double chests always as a whole). They are protected against opening by outsiders, breaking (only with MANAGE_CHEST_CLAIMS), hoppers (own team's too) and explosions. Chest shops and team chests are mutually exclusive. With CoreEngineClaim installed, the chest must be inside a team claim of your team. Limit: max-chest-claims + level bonus.

Admin commands (/teama) #

All with permission team.admin.<subcommand>, default false.

CommandSyntaxDescription
/teama disband|name|description|color|tag/teama <sub> <team> [value]Force-manage any team
/teama join / leave/teama join <team> <player> / /teama leave <player>Force a player into/out of a team
/teama promote / demote / setowner/teama <sub> <player>Rank step up/down or force ownership
/teama rank/teama rank <team> <create|delete|rename|list|perms|assign|moveup|movedown|reset>Full access to the rank system, reset = back to the 3 default ranks
/teama score / money/teama <sub> <set|add|remove> <team> <value>Change score/bank directly
/teama home / echest / chest/teama <sub> <team> [...]Visit home, open ender chest, manage chest claims
/teama purge/teama purgeReset ALL team scores to 0
/teama chatspy/teama chatspyRead team/ally chat
/teama reload/teama reloadReload team config

Configuration (modules/team.yml) #

YAML
# Enables or disables the team module.
enabled: true

team:
  # Base limits, level bonuses are added on top.
  max-team-size: 20
  min-name-length: 3
  max-name-length: 8
  # Allow MiniMessage in team names (then the visible length counts).
  allow-minimessage-names: false
  min-tag-length: 2
  max-tag-length: 4
  max-description-length: 100
  max-warps: 1
  # Custom rank slots at level 1, ON TOP of the 3 preset ranks.
  # Effective = 3 + max-ranks + bonus-ranks of the level, capped at 16.
  max-ranks: 2
  # Base chest claims, plus bonus-claims of the level.
  max-chest-claims: 25
  max-allies: 3
  # Team creation price. 0 = free.
  create-cost: 5000.0
  # Price per change; removing tag/description is always free,
  # charged only after a successful change.
  change-costs:
    rename: 0.0
    tag: 0.0
    color: 0.0
    description: 0.0
    sethome: 0.0
  # Caps for bank and score.
  max-balance: 1000000000.0
  max-score: 1000000
  # PvP default of new teams, server-wide ally friendly fire switch
  # and collision disabling between members.
  friendly-fire-default: false
  ally-friendly-fire: false
  collision-disabled: false
  # Forbidden name parts (substring filter).
  blocked-names: ["admin", "server", "staff", "moderator", "console", "system"]
  # Seconds until an invite expires.
  invite-timeout: 60
  score:
    per-kill: 10
    per-death: 5
    spam-kill-window: 300
    spam-kill-max-kills: 3
    ip-check: true
  # Levels: required-score and cost apply for ranking up TO that level,
  # bonus-* adds to the base limits.
  levels:
    1: { name: "Bronze",  required-score: 0, cost: 0,      bonus-members: 0,  bonus-warps: 0, bonus-claims: 0,   bonus-ranks: 0, bonus-shops: 0 }
    2: { name: "Silver",  required-score: 0, cost: 5000,   bonus-members: 5,  bonus-warps: 1, bonus-claims: 25,  bonus-ranks: 2, bonus-shops: 5 }
    3: { name: "Gold",    required-score: 0, cost: 25000,  bonus-members: 10, bonus-warps: 2, bonus-claims: 50,  bonus-ranks: 4, bonus-shops: 10 }
    4: { name: "Diamond", required-score: 0, cost: 100000, bonus-members: 20, bonus-warps: 3, bonus-claims: 75,  bonus-ranks: 6, bonus-shops: 20 }
    5: { name: "Emerald", required-score: 0, cost: 500000, bonus-members: 30, bonus-warps: 5, bonus-claims: 100, bonus-ranks: 8, bonus-shops: 40 }
  ranks:
    min-name-length: 3
    max-name-length: 24
    name-blacklist: ["owner"]
    # Material picker for rank icons. Empty = built-in list.
    icon-picker-materials: []
  gui:
    members-per-page: 28
    # /team without arguments opens the GUI.
    open-on-empty-command: true
    # Double confirmation for destructive actions.
    danger-double-confirm: true
  integrations:
    coreprotect:
      # Logs chest claim breaking (#teamclaim-<player>).
      chest-claim-logging: true

cooldown:
  commands:
    teamhome: 10
    teamwarp: 10
    teamdeposit: 5
    teamwithdraw: 10
    teamcreate: 5
    teamrankup: 5

cost:
  commands:
    teamhome: 0
    teamwarp: 0

warmup:
  commands:
    teamhome:
      duration: 5
    teamwarp:
      duration: 5

Complete example config #

YAML
enabled: true

team:
  max-team-size: 10
  min-name-length: 3
  max-name-length: 12
  allow-minimessage-names: false
  min-tag-length: 2
  max-tag-length: 5
  max-description-length: 80
  max-warps: 2
  max-ranks: 3
  max-chest-claims: 15
  max-allies: 2
  create-cost: 10000.0
  change-costs:
    rename: 2500.0
    tag: 1000.0
    color: 500.0
    description: 0.0
    sethome: 500.0
  max-balance: 50000000.0
  max-score: 100000
  friendly-fire-default: false
  ally-friendly-fire: false
  collision-disabled: true
  blocked-names: ["admin", "server", "staff", "mod"]
  invite-timeout: 120
  score:
    per-kill: 15
    per-death: 10
    spam-kill-window: 600
    spam-kill-max-kills: 2
    ip-check: true
  levels:
    1: { name: "Recruit", required-score: 0,    cost: 0,      bonus-members: 0,  bonus-warps: 0, bonus-claims: 0,  bonus-ranks: 0, bonus-shops: 0 }
    2: { name: "Veteran", required-score: 500,  cost: 20000,  bonus-members: 5,  bonus-warps: 1, bonus-claims: 10, bonus-ranks: 2, bonus-shops: 5 }
    3: { name: "Elite",   required-score: 2500, cost: 100000, bonus-members: 10, bonus-warps: 2, bonus-claims: 25, bonus-ranks: 4, bonus-shops: 10 }
  ranks:
    min-name-length: 3
    max-name-length: 16
    name-blacklist: ["owner", "admin"]
    icon-picker-materials: []
  gui:
    members-per-page: 28
    open-on-empty-command: true
    danger-double-confirm: true
  integrations:
    coreprotect:
      chest-claim-logging: true

cooldown:
  commands:
    teamhome: 30
    teamwarp: 30
    teamdeposit: 5
    teamwithdraw: 30
    teamcreate: 60
    teamrankup: 10

cost:
  commands:
    teamhome: 10.0
    teamwarp: 10.0

warmup:
  commands:
    teamhome:
      duration: 5
    teamwarp:
      duration: 5