2.0.7
Compatibility
Changes
SxTeam 2.0.7 — Dialog UI + full rework
Note: this release covers everything since 1.5. It is not a small patch — the whole plugin was reworked: new create-flow dialog, allies system, bank, level/XP, placeholders, icon/lore overhaul, plus a long list of GUI fixes. Old configs migrate automatically.
✨ New — native Dialog UI for team creation
Running /team without a team now opens a real Minecraft dialog on clients that can render one:
- Title, body text, a single text field and Create team / Cancel buttons — typed name + press Create = team created, creator becomes leader and the team menu opens right away.
- Only for Minecraft 1.21.6+ (protocol ≥ 771) — decided per player from the version their client reported on join (
getProtocolVersion()), never guessed. - Every older client keeps the exact classic chest menu (chat prompt → green tick head). Nothing changed for them.
- If a dialog can't be displayed for any reason, the plugin falls back to the chest menu automatically and logs a warning.
- The name is used exactly as typed (capitalisation kept) and is pre-filled if the player already typed it in the chat prompt.
- Fully configurable:
dialog: create-team: true # false = chest menu for everyone min-protocol: 771 # 771 = 1.21.6, the first dialog-capable client messages: dialog: create: title / body / input-label / confirm / confirm-tooltip / cancel /team diagnoseshows each player their detected protocol, version name, and which create UI they will get.
🗑️ Removed
- Team warps — removed completely.
- Team upgrades — removed completely, including its settings entry.
🎨 Icons, sprites & lore
- Menus now draw real Minecraft sprite glyphs straight from the client's own atlas (
item/*→ items atlas,block/*→ blocks atlas, plus bed/chest atlases). No resource pack needed. - Home button → ender eye sprite, Enderchest button → ender pearl sprite. Both overridable in config:
gui: sprites: home: item/ender_eye echest: item/ender_pearl - Back / leave buttons: barrier head with a readable text colour; create / promote / increase / cancel buttons: green tick head.
- Lore for every menu item rewritten with emojis and sprite icons.
- Sprites keep their original colours — no more purple/inherited tint or accidental italics leaking into the icons.
/team sprites on|offto disable sprite icons temporarily.
🤝 Allies
- Ally request notifications now reach the target team's leader and co-leader.
- Ally-request on/off toggle inside the allies GUI.
- Per-ally PvP toggle inside the allies GUI.
- Ally PvP is mutual (OR rule): if either team has ally PvP on, both can fight. Only when both sides have it off does ally PvP stay disabled.
- Configurable:
team.ally.max-allies(default 10),team.ally.request-expire-seconds(default 300),team.ally.ally-pvp-default.
🧑🤝🧑 Members & GUI behaviour
- Promote and demote both work from the GUI, and the affected player gets a message either way.
- Clicking a button no longer closes the menu — GUIs stay open on normal clicks.
- Settings GUI layout fixed (items were scattered); warps/upgrades entries gone.
- Bank: after a wrong/invalid amount typed in chat, the bank GUI opens again instead of leaving the player in chat.
- Freshly created teams work immediately — the creator always ends up as leader with full permissions (fixed the bogus "You don't have permission" right after creating a team).
📊 Placeholders (PlaceholderAPI)
- Leaderboard:
%team_leaderboard_1%…%team_leaderboard_20%(team name per rank, size configurable viaplaceholders.leaderboard-size) plus%team_leaderboard_position%. - Bank:
%team_bank%,%team_bank_raw%,%team_bank_formatted%,%team_bank_short%,%team_bank_currency%. - PvP state:
%team_pvp%,%team_pvp_state%,%team_pvp_status%,%team_pvp_symbol%,%team_pvp_colored%— shows whether team PvP is enabled or disabled. - Plus:
%team_name%,%team_members%,%team_max_members%,%team_members_left%,%team_is_full%,%team_rank%,%team_role%,%team_is_officer%,%team_leader%,%team_level%,%team_xp%,%team_xp_progress%,%team_xp_next%,%team_kills%,%team_deaths%,%team_playtime%,%team_playtime_minutes%,%team_has_team%,%team_in_team%,%team_team_id%,%team_total_teams%,%team_ally_count%,%team_ally_requests%,%team_ally_requests_status%,%team_echest_size%,%team_home_set%,%team_home_x/y/z%,%team_home_world%,%team_chat_sound%.
🔧 Reliability & internals
- Legacy data recovery: teams whose leader was stored as a player name, whose leader was outside the member list, or that had no leader key at all now load correctly instead of being dropped.
- Old configs (1.5 and earlier) are auto-migrated on first boot — new keys are added, removed keys purged, and
config-versionis stamped (currently 9). - Duplicate-jar detection +
/team fix, and/team diagnosefor one-shot troubleshooting. - YAML storage by default, MySQL + HikariCP optional, autosave every 5 minutes and save-on-quit.
⚙️ Compatibility
- Paper / Spigot 1.21.6 – 26.1.2 (Paper 26.1.x recommended; dialogs need a 1.21.6+ server).
- Java 25 — the jar is compiled with
release 25, matching Paper 26.1 builds. Run it on a Java 25 server. - Optional: Vault (economy) and PlaceholderAPI (placeholders).
- Tested on Paper 26.1.2 build 74 / Java 25: 366 automated checks, 0 failures — on a fresh install and on a config migrated from 1.5.
Quick summary
| 🆕 | Dialog UI create flow on 1.21.6+, classic chest menu on older clients |
| 🗑️ | Team warps and team upgrades removed |
| 🎨 | Real sprite icons (ender eye / ender pearl), barrier back button, green tick, emoji lore, correct colours |
| 🤝 | Allies: leader + co-leader notifications, request toggle, per-ally PvP (mutual OR rule) |
| 🧑🤝🧑 | GUI promote/demote with messages, menus no longer close on click, bank reopens after bad input |
| 📊 | 20 leaderboard placeholders, bank placeholders, PvP-state placeholder |
| 🔧 | Legacy data + config recovery, /team diagnose, /team fix, MySQL/Hikari autosave |
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:NZ25aEM2:9vqFtWK1"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:NZ25aEM2:9vqFtWK1"
}

