Voxel Shop beta is live. Expect occasional bugs. Learn more
A Minecraft premium modern teams plugin
Makes PacketEvents fully optional, stops your custom GUI items being wiped on update, and blocks look-alike team names. Adds admin bank commands, custom GUI buttons that run commands, resource-pack glyphs in tags and names, and explicit team or player targeting for the admin commands.
[1] PacketEvents is genuinely optional now. The plugin refused to start at all when PacketEvents was not installed, even though it has always been listed as an optional hook, because the chat input system referenced its classes directly and the server loads those before any setting is read. Those references are isolated now, so the plugin starts normally without PacketEvents and only Team Glow switches off. An installed but broken or mismatched PacketEvents no longer takes the plugin down either. Nothing changes if you already run it.
[2] Custom GUI items you added yourself are no longer deleted on update. The updater removed any key that was not in the shipped defaults, and everything under dummy-items in gui.yml is yours by definition, so custom decorative items and custom buttons were silently wiped the first time an update rewrote the file. That section is left alone now. This matters a lot with the new command buttons, which live in exactly that section.
[3] Team names can no longer be used to impersonate another team when Unicode names are turned on. Cyrillic and Greek letters that are drawn exactly like Latin ones (and full-width variants) meant a second team could take a name that looked identical to an existing one in chat, tab and every menu. Creation and rename now compare a folded form of the name, so those look-alikes are rejected as already taken. Names are still stored exactly as typed, genuinely different names in any language are unaffected, and the check only runs when settings.creation.allow_unicode is on.
[4] New admin bank commands: /team admin bank add <team> <amount>, remove and set. Handy for event rewards and fixing an economy by hand. Like the points command it also accepts a player name, in which case that player's clan is used, and it takes either argument order. The money change runs through the same atomic database step the player bank uses, so it cannot collide with a deposit or withdraw happening at the same moment on another server, it respects your maximum bank balance, and the other servers re-read the team straight away.
[5] Custom GUI items can run commands now. Any item you add under dummy-items in gui.yml takes a commands list, so a button can open another plugin's menu (zMenu and the like), run a warp, or hand out a reward. Prefix a line with [console] to run it from console or [player] to run it as the clicker, and [close] to close the menu. %player% and PlaceholderAPI placeholders both work. Commands fire a tick after the click with the menu already closed, which is what lets another plugin's inventory open cleanly.
[6] Optional resource-pack glyphs in tags and names, set separately for each. settings.creation.allow_custom_glyphs has a tag and a name switch, so you can let players put your pack's custom icons in their tag while keeping names plain, or the other way round. Both off by default. Only the Private Use Area range that packs use is allowed, so each icon counts as one character against your length limits and no formatting or invisible character can slip in. Players without your pack see an empty box.
[7] Admin commands can target a team or a player explicitly. /team admin points and /team admin bank accept team:<name> and player:<name>, so if a team happens to share a name with a player there is no guesswork about which one gets the points or money. A bare name behaves exactly as before.
Database changes run automatically on first boot and your team data is preserved. Drop the jar in and restart. New config keys are merged into your existing files, nothing you have set is touched.
Makes the team name and tag prompts safe with CMI and other chat plugins, and folds in a batch of fixes from a full pass over the menus. If you already run 2.6.0, just drop this in, nothing to configure.
[1] Fixed the leaderboard category menu ignoring your gui.yml edits. Its title, item names and lore were being read from messages.yml, so editing the leaderboard-category-gui section in gui.yml did nothing (while the specific leaderboard view already read gui.yml, which is why that one worked). It now reads gui.yml like every other menu, so your edits apply, and any item you add or remove there shows up. The old leaderboard_category_* keys in messages.yml are no longer used and are removed on update.
[2] Fixed team name, tag, price and bank prompts leaking into public chat when you run CMI. When the plugin asks you to type something, that line is now caught at the packet level, before the server turns it into a chat message, so nothing downstream ever sees it. CMI (and some other chat plugins) take over chat and format it themselves without honoring another plugin's cancellation, which is why the text you typed for a prompt still got broadcast to everyone. This needs packetevents, which the plugin already uses for the glow feature; if it is not installed the plugin falls back to cancelling the chat event like before.
[3] Fixed the admin team-management menu failing to reopen after you set a balance, edited stats or kicked a member. It reopened the menu straight from the chat-input thread, which throws on Paper (async inventory open) and lands on the wrong region on Folia, so the menu silently did not come back and an error hit the log. Those now hop to the right thread first and the menu reappears.
[4] Admin menus re-check the justteams.admin permission on every click, not just when the menu is opened. If someone's admin access is taken away while they still have a menu open (common with timed permission grants), the menu stops working for them instead of letting them keep disbanding teams or setting balances through it.
[5] The admin member editor no longer acts on a member who already left. If another staff member kicks the player while you have their edit menu open, clicking now tells you they are no longer in the team instead of writing changes for someone who is gone.
[6] The team blacklist menu title now supports colors and gradients like the other menus. It was drawn as plain text before, so any color tags showed up literally. Also removed two duplicate admin sections from the default gui.yml that never took effect (it listed admin-team-list-gui and admin-team-manage-gui twice).
[7] The team leaderboard is cached for 30 seconds. Opening the top-teams menu ran a fresh database query every time; on a busy server the same list got re-queried constantly for numbers that barely move. It reuses the result for half a minute now.
[8] The three admin menus are now fully editable from gui.yml, the same as the player menus. The team list, the manage-team menu and the member editor read every button's material, name, lore and slot from their admin-team-list-gui, admin-team-manage-gui and admin-member-edit-gui sections, including the enabled and disabled look of each toggle. Before, these menus were built in code and ignored those sections, so editing them did nothing. Two buttons that only existed in code, teleport to home and view warps, are now in the config. On first load the updater adds them and bumps the gui version, making a backup first, so your edits are kept. If a key is missing the menu falls back to a built-in default for that item, so a partial or hand-edited section will not blank a slot or break the menu. Each team head in the list stores the team's real name, so a custom name-format cannot change which team a click opens. The member list in the manage menu no longer overlaps the bottom row on a full page.
[9] ExcellentClaims support. If you run ExcellentClaims, team teleports now respect land protection. A team can't teleport to a home or warp that sits inside a claim none of its members own, and can't set a home or warp while standing in one. A claim counts as the team's if any member owns it, so shared clan land is fine. You choose whether it's on and which of the two checks apply under integrations.excellentclaims in config.yml. It talks to ExcellentClaims through its API by reflection, so the plugin runs the same whether or not ExcellentClaims is installed, and if a check ever fails it lets the teleport through instead of blocking it.
[10] You can show a custom name for players instead of their Minecraft username. Set settings.player_name_placeholder to any PlaceholderAPI placeholder, for example %cmi_user_nickname%, and player names in the menus, member lists and team heads use that. Leave it empty, the default, to keep usernames. If PlaceholderAPI is missing or the placeholder has no value for a player, the username is used, so nothing breaks.
For server admins: drop the new JAR in and restart, nothing to change. Your config files update themselves and a backup is made first.Makes the team name and tag prompts safe with CMI and other chat plugins, and folds in a batch of fixes from a full pass over the menus. If you already run 2.6.0, just drop this in, nothing to configure.
[1] Fixed the leaderboard category menu ignoring your gui.yml edits. Its title, item names and lore were being read from messages.yml, so editing the leaderboard-category-gui section in gui.yml did nothing (while the specific leaderboard view already read gui.yml, which is why that one worked). It now reads gui.yml like every other menu, so your edits apply, and any item you add or remove there shows up. The old leaderboard_category_* keys in messages.yml are no longer used and are removed on update.
[2] Fixed team name, tag, price and bank prompts leaking into public chat when you run CMI. When the plugin asks you to type something, that line is now caught at the packet level, before the server turns it into a chat message, so nothing downstream ever sees it. CMI (and some other chat plugins) take over chat and format it themselves without honoring another plugin's cancellation, which is why the text you typed for a prompt still got broadcast to everyone. This needs packetevents, which the plugin already uses for the glow feature; if it is not installed the plugin falls back to cancelling the chat event like before.
[3] Fixed the admin team-management menu failing to reopen after you set a balance, edited stats or kicked a member. It reopened the menu straight from the chat-input thread, which throws on Paper (async inventory open) and lands on the wrong region on Folia, so the menu silently did not come back and an error hit the log. Those now hop to the right thread first and the menu reappears.
[4] Admin menus re-check the justteams.admin permission on every click, not just when the menu is opened. If someone's admin access is taken away while they still have a menu open (common with timed permission grants), the menu stops working for them instead of letting them keep disbanding teams or setting balances through it.
[5] The admin member editor no longer acts on a member who already left. If another staff member kicks the player while you have their edit menu open, clicking now tells you they are no longer in the team instead of writing changes for someone who is gone.
[6] The team blacklist menu title now supports colors and gradients like the other menus. It was drawn as plain text before, so any color tags showed up literally. Also removed two duplicate admin sections from the default gui.yml that never took effect (it listed admin-team-list-gui and admin-team-manage-gui twice).
[7] The team leaderboard is cached for 30 seconds. Opening the top-teams menu ran a fresh database query every time; on a busy server the same list got re-queried constantly for numbers that barely move. It reuses the result for half a minute now.
[8] The three admin menus are now fully editable from gui.yml, the same as the player menus. The team list, the manage-team menu and the member editor read every button's material, name, lore and slot from their admin-team-list-gui, admin-team-manage-gui and admin-member-edit-gui sections, including the enabled and disabled look of each toggle. Before, these menus were built in code and ignored those sections, so editing them did nothing. Two buttons that only existed in code, teleport to home and view warps, are now in the config. On first load the updater adds them and bumps the gui version, making a backup first, so your edits are kept. If a key is missing the menu falls back to a built-in default for that item, so a partial or hand-edited section will not blank a slot or break the menu. Each team head in the list stores the team's real name, so a custom name-format cannot change which team a click opens. The member list in the manage menu no longer overlaps the bottom row on a full page.
[9] ExcellentClaims support. If you run ExcellentClaims, team teleports now respect land protection. A team can't teleport to a home or warp that sits inside a claim none of its members own, and can't set a home or warp while standing in one. A claim counts as the team's if any member owns it, so shared clan land is fine. You choose whether it's on and which of the two checks apply under integrations.excellentclaims in config.yml. It talks to ExcellentClaims through its API by reflection, so the plugin runs the same whether or not ExcellentClaims is installed, and if a check ever fails it lets the teleport through instead of blocking it.
[10] You can show a custom name for players instead of their Minecraft username. Set settings.player_name_placeholder to any PlaceholderAPI placeholder, for example %cmi_user_nickname%, and player names in the menus, member lists and team heads use that. Leave it empty, the default, to keep usernames. If PlaceholderAPI is missing or the placeholder has no value for a player, the username is used, so nothing breaks.
For server admins: drop the new JAR in and restart, nothing to change. Your config files update themselves and a backup is made first.