
Core Teams
CoreTeams is a lightweight, modern, and highly configurable team management plugin designed for Spigot/Paper servers (1.20+). It features unique gradient-based team visuals, string-based IDs for custom team names, and a comprehensive admin GUI.
Tags
Creators
Details
4.0.0-SNAPSHOT
Compatibility
Changes
CoreTeams 4.0.0
Major update to team management: a player GUI, a redesigned admin browser, team icons, merge/split tooling, a unified visual theme, and automatic TAB/LPC integration for team tags.
Added
- Player GUI opened via
/teamwith no arguments. Shows team identity, leader, roster, online state, member limit, and available actions. Existing/team ...commands are unchanged. - Member management screen, opened by clicking a member's head. Shows role (Leader/Member) and online status; leaders can transfer leadership or remove members.
- Team icons, with three modes set via
team-icons.mode:DISABLED,ADMIN_ONLY,PLAYER_SELECTABLE(requirescoreteams.team.icon). Icons are chosen from categorized lists (Blocks, Items, Colours, Banners, Heads, CustomModelData) or custom model data entries, and stored inteam-icons.yml. - Merge preview:
/ta merge <destination> <source>(or the admin GUI) shows the combined roster and lets staff choose which team's name, colour, icon, and leader to keep before confirming. Blocked if the combined roster would exceed the destination's member limit. - Team split: staff can select online members from an existing team and move them into a new team via the admin GUI (
coreteams.admin.split). At least one member must remain in the source team. - Auto-team assignment (
/ta autoteam) withrandom,balanced,snake, andcaptainsmodes, previewed before applying. Supports excluding spectators, preserving existing teams,coreteams.autoteam.skip, and a configurable PlaceholderAPI value for balancing. - Audit history:
/ta history [query]searches persistentaudit.jsonlrecords (actor, source, target, before/after values, timestamps). Covers icon changes, merges, splits, leadership transfers, cap changes, and destructive operations. - Public
CoreTeamsAPIand lifecycle events:TeamCreateEvent,TeamDisbandEvent,TeamJoinEvent,TeamLeaveEvent,TeamEliminateEvent,TeamMergeEvent,TeamLeaderChangeEvent,TeamFriendlyFireEvent. - PlaceholderAPI support for team ID, display name, member counts, leader, admin state, caps, colour, and prefix. New placeholders:
%coreteams_has_team%/%coreteams_in_team%. - TAB integration: adds
%coreteams_sort%toscoreboard-teams.sorting-typesand%coreteams_prefix%to every group'stabprefix/tagprefixingroups.yml, so the tab list and nametags work without manual TAB configuration. Controlled byintegrations.auto-configure-tab-sortingandintegrations.auto-configure-tab-prefix. - LPC (LuckPermsChat) integration: appends
%coreteams_prefix%to LPC'schat-format/group-formatswhen LPC is installed. Controlled byintegrations.auto-configure-lpc-chat. /coreteams setupcommand (coreteams.adminorcoreteams.admin.integrations) applies the TAB/LPC configuration on demand and reports what it changed.- Warning, in console and in-game to admins, if TAB is installed but no configuration actually shows the team prefix.
friendly-fire.enabledandfriendly-fire.multiplier, replacingpvp-enabled(existing configs migrate automatically).TeamFriendlyFireEventallows inspecting, modifying, or cancelling teammate damage. Source resolution now covers projectiles, TNT, tameable mobs, evoker fangs, and area-effect clouds in addition to direct attacks.- GitHub Actions build workflow (Maven, Java 21).
Changed
/teamsadminbrowser redesigned: team cards lead with display name, leader, online/member counts, and status, using icons or colour fallbacks instead of leader heads.- Team totals now include offline members; teams are no longer disbanded because remaining members are offline. Total and online member counts are tracked separately throughout GUIs, placeholders, and lifecycle logic.
- Automatic leader promotion when a leader leaves or is removed, preventing orphaned teams.
- Team moves are atomic: destination, cap, and event validation happen before the player's current team changes.
- Member limit semantics are unchanged (
-1inherits the global value,0is unlimited, positive values override), but the GUI now shows Global/This Team/Effective values instead of raw storage values. - Settings use enabled/disabled state cards; disabled or admin-controlled options stay visible with an explanation instead of disappearing.
- Unified colour palette across the GUI: off-white primary text, slate secondary text, mint for success, coral for destructive actions, soft gold for leadership, team colour for identity accents.
- MiniMessage input from players is escaped by default. Team chat formatting requires
coreteams.formatting; player-created team name formatting requirescoreteams.teamname.formatting. Team names are validated instead of accepting unrestricted input. - Scoreboard teams (used for nametags) are per-player instead of shared per-team, so each member's prefix/suffix toggle is independent.
- Chat is always formatted by CoreTeams regardless of TAB; TAB only takes over the tab list and nametags.
- Maven is the sole build system; the duplicate Gradle configuration has been removed.
Fixed
- PlaceholderAPI expansion re-registers itself if PlaceholderAPI is (re)loaded after CoreTeams, instead of only checking once at startup.
- Chat prefixes no longer double up when TAB is also handling chat.
- TAB auto-configuration uses the same Folia-safe scheduling as the rest of the plugin and no longer interrupts startup on Folia.
- Scoreboard entries are cleared on team leave/disband; a startup sweep also removes any left over from a crash or an older build.
- Removed a LuckPerms-meta prefix integration that produced doubled or garbled text when combined with other plugins reading LuckPerms meta. Servers that applied it should run
/lp group default meta removeprefix 100to remove the leftover entry.
Removed
pvp-enabled(replaced byfriendly-fire.enabled/friendly-fire.multiplier; migrated automatically).- Reflective Simple Voice Chat API discovery; CoreTeams now uses the official API path only.
- Committed build caches, local test-server data, and machine-specific development files.
Storage
- SQLite membership loading is batched instead of querying per team.
- Joins/leaves use incremental membership updates instead of rewriting the full roster.
- Database/file writes are serialized through a dedicated storage executor.
- Team icons are stored separately in
team-icons.yml; the team database schema is unchanged.
Known limitations
- Death elimination removes players from active team membership. A persistent alive/eliminated/placement state model is out of scope for this release.
Support
Issues and feedback: discord.gg/zwj5sEbmDs
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:AHAls57P:ZMJH4b8B"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:AHAls57P:ZMJH4b8B"
}
