BitAspire Wiki
SIRSIR

Commands & Permissions

Audit the modern SIR admin command tree, shipped command nodes, and the permission differences from Legacy.

Main admin command

Modern SIR declares one top-level administrative command in plugin.yml:

commands:
  sir:
    permission: sir.admin

The plugin then expands that into subcommands in MainCommand:

  • modules
  • about
  • reload
  • help
  • commands
  • support
  • migrate

Admin permission tree

PermissionWhat it unlocks
sir.adminAccess to the root /sir command
sir.admin.*All admin subcommands below
sir.admin.modulesModule state management
sir.admin.aboutVersion and runtime info
sir.admin.reloadReloading config and runtime state
sir.admin.helpHelp output
sir.admin.commandsCommand provider state management
sir.admin.supportSupport link output
sir.admin.migrateMigration commands

Practical admin command usage

CommandWhat it does
/sirShows the main help output
/sir aboutShows plugin, server, and Java details
/sir modulesOpens the module GUI on supported versions, or lists / manages modules from CLI
/sir modules [module] [state]Changes a module's enabled state
/sir commandsOpens the provider GUI on supported versions
/sir commands [provider] [state]Changes a provider's enabled state
/sir reloadReloads runtime data and language files
/sir supportPrints the support link
/sir migrate [Essentials/SIR]Runs a supported migration routine

Shipped provider commands

The modern branch defines its command providers with commands.yml files inside command/*.

CommandSourceAliasesBase permission
/announceannouncements moduleannouncer, announcements, announcementsir.announce
/chat-viewchannels modulechatview, chat-toggle, chattoggle, ctoggleNo explicit node declared in the shipped YAML
/clear-chatclear-chat providerclearchat, cc, clearsir.clear-chat
/chat-colorcolor providerchatcolor, colorsir.color
/ignoreignore providerigsir.ignore
/messagemessage providerm, msg, tellsir.message
/replymessage providerrsir.reply
/mutemute providernonesir.mute
/tempmutemute providertemp-mute, tmutesir.temp-mute
/unmutemute providernonesir.unmute
/check-mutemute providercmute, checkmutesir.check-mute
/nicknick providernicknamesir.nick
/printprint providerraw-message, raw-msg, rawmsgsir.print
/chat-settingssettings providersettings, chatsettings, csettings, c-settingssir.chat-settings

Important subcommand permissions

Some providers also generate permission nodes from their sub-commands section:

Parent commandDerived subcommand nodes you should expect
chat-colorsir.color.black, sir.color.bold, sir.color.gradient, sir.color.reset, and so on
nicksir.nick.other is explicitly declared for editing someone else's nick
printsir.print.targets, sir.print.chat, sir.print.action-bar, sir.print.title when you use the default blank subcommand mapping
announceThe subcommand map is declared, and the effective subcommand permission behavior is derived by the command system from the provider data

When the YAML leaves a subcommand value blank, the loader derives it from the base permission plus the subcommand key.


State files that affect commands

Modern SIR persists runtime command state to commands/states.yml:

providers:
  message:
    enabled: true
    commands:
      message: true
      reply: true

This matters because the state file is not just a provider toggle. It also stores per-command override state inside that provider.

The module equivalent looks like this:

modules:
  announcements:
    enabled: true
  moderation:
    enabled: true

If a command seems to be missing after startup, inspect commands/states.yml before assuming the jar failed to load.


Legacy to Modern permission changes

This is one of the most important migration pain points.

Legacy nodeModern nodeWhy it matters
sir.clearchatsir.clear-chatDash-separated naming in Modern
sir.chatcolorsir.colorProvider renamed from feature-style naming to provider naming
sir.chatviewNo explicit shipped node in the modern module YAMLNeeds manual audit if you locked this command previously
sir.mute.permsir.muteSimpler permanent mute naming
sir.mute.tempsir.temp-muteModern tempmute naming
sir.checkmutesir.check-muteDash-separated modern naming
sir.announcer.*sir.announce plus subcommand-derived behaviorAnnouncement command structure changed
sir.admin.updatenot present in Modern plugin.ymlLegacy update command node does not carry over

If your permissions plugin has explicit grants, build a migration checklist for nodes before you swap jars.


Recommended permission strategy

For production servers, a healthy permission model usually looks like this:

  • grant sir.admin.* only to trusted staff
  • grant player-facing nodes individually, such as sir.message, sir.reply, sir.ignore, or sir.chat-settings
  • treat sir.print* and sir.announce* as elevated staff tools
  • audit derived subcommand nodes if you want fine-grained color or print access

If you are still on Legacy, compare this page with Legacy Branch before migrating.


Detailed command references

Use these pages when you want the command family behavior itself, not just the top-level permission tree:

Last updated on

On this page