Tags
Creators
Details
Licensed MIT
Published last month
Updated 2 days ago
All versions
1.2.0
Release
BalancedTeam 1.2.0last month 2
Compatibility
Minecraft: Java Edition
26.3
26.2
26.1.x
1.21.x
1.20.x
Platforms
Bukkit
Paper
Purpur
Spigot
Changes
Added (English)
- Diplomacy Truce & Peace System (
/team truce//team peace):- Full truce and peace sub-command system:
/team truce <team>: Send a truce/peace proposal to a declared enemy team;/team truce accept <team>: Accept an incoming truce request;/team truce deny <team>: Reject an incoming truce request;/team truce cancel <team>: Cancel a pending truce proposal sent by your team;/team truce list: View all pending outgoing and incoming truce requests;
- Post-War Protection:
- Both teams automatically enter post-war protection upon truce acceptance for
balance.post_war_protection_seconds(default: 1800s); - Both teams are blocked from re-declaring war during the protection window;
DamageListenerstrictly blocks all melee attacks, projectiles (arrows/tridents), splash potions, and lingering area effect clouds between former enemies;
- Both teams automatically enter post-war protection upon truce acceptance for
- Truce Request Timeout: Added
balance.truce_request_timeout_seconds(default: 1800s); - GUI Integration:
- Notification Center (
NotificationGui): White Banner cards display truce requests with time remaining and protection duration, supporting one-click accept (left-click) or deny (right-click); - Enemy Management GUI (
EnemyManageGui): Send peace requests with one click; active post-war protection displays a shield icon and live countdown badge.
- Notification Center (
- Full truce and peace sub-command system:
- Global Chat Toggle
enable_chat:- New boolean
enable_chatkey added under thechatnode inconfig.yml(defaults totrue). When set tofalse, all team chat entry points (/team chat,/tc, chat lock mode) are immediately disabled; ConfigManagernow exposesisChatEnabled()as a unified reader for this option;ChatManager.sendTeamChat()enforces the global toggle as a final barrier before dispatching any message;PlayerListener(chat lock mode),TeamCommand.handleChat(), andTeamMsgCommand.onCommand()all add aisChatEnabled()pre-check; players currently in chat lock mode are automatically ejected when the feature is disabled.
- New boolean
- TC Command Independent Toggle
enable_tc_command:ConfigManagernow exposesisTcCommandEnabled()to readchat.enable_tc_command;TeamMsgCommand.onCommand()checks this flag first; when disabled,/tc,/tm, and/teammsgare all blocked and a feedback message is sent to the player.
- Console Team Chat Spy
console_listen_team_chat:ConfigManagernow exposesisConsoleListenTeamChat()to readchat.console_listen_team_chat(defaults totrue);ChatManager.sendTeamChat()prints the fully formatted chat line to the server console after member and admin dispatch, using the samechat.formattemplate, enabling server-side logging.
- New Language Keys:
- All three language files (
zh_CN.yml,zh_TW.yml,en_US.yml) gain:chat_disabled: Shown when a player attempts team chat while the feature is globally disabled;chat_tc_disabled: Shown when a player uses/tcwhile the shortcut command is disabled.
- All three language files (
Changed & Fixed (English)
- Security & Stability Hardening:
- Fixed PlaceholderAPI chat injection vulnerability;
- Added synchronized double-checked locking for team size and relation limits;
- Optimized
DamageListenerandCrystalListenerprecision across projectile, potion, and CPvP vectors.
ConfigManagerMethod Fixes & Documentation:getChatFormat()default value restored: re-added the missing{TEAM}placeholder to match thechat.formatdefault inconfig.yml;getSpyFormat()default value corrected:Spy→SPYin hardcoded fallback, consistent withconfig.yml;- Both methods' Javadoc rewritten to standard HTML list format with full
@returndescriptions and complete placeholder documentation.
- Version Bump
1.1.7→1.2.0:pom.xmlversion updated to1.2.0to reflect the semantic version increment for new feature additions.
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:WUMjoabt:e0FuPymy"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:WUMjoabt:e0FuPymy"
}

