BitAspire Wiki
SIRSIR

Legacy Branch (1.7.0 and below)

Use this branch if your server still depends on the classic SIR configuration tree and deployment flow.

What counts as Legacy?

The legacy line is SIR 1.7.0 and below. This is the older Maven-based generation of the plugin, built around a single project and a large runtime tree rooted in plugins/SIR/resources/.

If your current production server still uses folders such as resources/modules/chat or resources/commands/chat_color, you are on the Legacy line.


Legacy architecture

Legacy SIR is still an all-in-one plugin, but the separation between features happens mostly in generated resource folders instead of in the repository itself.

That means the plugin is organized around:

  • a shared root configuration layer
  • a resources/modules/ tree for server features
  • a resources/commands/ tree for command behavior and player data
  • a smaller permission model declared in plugin.yml

Unlike Modern SIR, Legacy does not split features into Gradle subprojects like module/channels or command/mute.


Runtime layout

Typical Legacy output looks like this:

plugins/SIR/
  config.yml
  bossbars.yml
  webhooks.yml
  resources/
    modules/
      modules.yml
      advancements/
      announcements/
      chat/
      hook/
      join_quit/
      motd/
    commands/
      commands.yml
      announcer.yml
      clear-chat.yml
      msg-reply.yml
      print.yml
      sir.yml
      chat_color/
      chat_view/
      ignore/
      mute/

Shared root files

FileWhat it controlsWhy it matters during migration
config.ymlGlobal plugin behavior and defaultsStill exists in newer lines, but many feature-specific settings move into split folders.
bossbars.ymlShared bossbar messages and display presetsMigrated forward by the Modern migration service.
webhooks.ymlShared webhook and webhook-style message targetsAlso carried forward during migration.
resources/modules/modules.ymlModule enable or disable stateBecomes modules/states.yml in Modern and SIR+.
resources/commands/commands.ymlCommand enable state, aliases, and permission layoutBecomes commands/states.yml plus per-provider commands.yml in Modern and SIR+.

Legacy modules

Legacy SIR grouped many chat features into broader folders than the modern branch does. The table below shows the exact folders and how they map conceptually.

Legacy folderMain filesWhat it offersModern destination
advancementsconfig.yml, lang.yml, messages.ymlAdvancement announcements, text formatting, and advancement-related messagesmodules/advancements/
announcementsannounces.yml, config.ymlTimed or manual announcements and broadcast contentmodules/announcements/
chatchannels.yml, config.yml, cooldowns.yml, emojis.yml, mentions.yml, moderation.yml, tags.ymlThe largest Legacy bucket: channel routing, cooldown rules, emoji replacement, mention pings, moderation checks, and tag formattingSplit into channels, cooldowns, emojis, mentions, moderation, and tags
hookdiscord.yml, login.yml, vanish.ymlThird-party hook behavior for Discord, auth/login handling, and vanished staff chat rulesSplit into discord, login, and vanish
join_quitconfig.yml, messages.ymlJoin, first-join, quit, and onboarding textmodules/join-quit/
motdconfig.yml, motds.yml, icons/server-icon.pngServer-list MOTD rotation and icon assetsmodules/motd/

How to read Legacy module files

  • config.yml usually contains switches and behavior toggles.
  • messages.yml or lang.yml usually contains player-facing strings.
  • Domain-specific files such as mentions.yml or cooldowns.yml are the real feature payloads.
  • modules.yml is the global state file, not the detailed per-feature configuration.

The biggest migration pain point is the old chat/ folder. In Legacy, it feels like one module. In Modern, it becomes several independent modules with their own state and files.


Legacy command tree

Legacy command data is split between top-level command files and subfolders that store player state or menu data.

Legacy pathWhat it controls
resources/commands/commands.ymlGlobal command registry, aliases, enabled flags, and command permission defaults
resources/commands/announcer.ymlHelp text and validation messages for the announcement command family
resources/commands/clear-chat.ymlHelp text and success feedback for chat clearing
resources/commands/msg-reply.ymlPrivate message and reply formatting, sounds, vanish handling, and console formatting
resources/commands/print.ymlRaw output help, selector syntax, and feedback for chat, action-bar, and title output
resources/commands/sir.ymlMain /sir help text, support text, and reload confirmation
resources/commands/chat_color/data.ymlPer-player chat color selections
resources/commands/chat_color/lang.ymlMessages for color changes
resources/commands/chat_color/menu.ymlGUI/menu layout for color selection
resources/commands/chat_view/data.ymlPer-player channel visibility data
resources/commands/chat_view/lang.ymlMessages for channel visibility toggles
resources/commands/ignore/data.ymlIgnore relationships and per-player ignore data
resources/commands/ignore/lang.ymlIgnore command messages
resources/commands/mute/data.ymlMute storage and mute state data
resources/commands/mute/lang.ymlMute command messages

Commands and permissions in Legacy

Legacy exposes a smaller, more umbrella-style permission model in plugin.yml:

PermissionPurpose
sir.*Full Legacy access, including admin, print, and announcer families
sir.admin.*/sir administration actions
sir.print.*Raw output command family
sir.announcer.*Announcement preview and task control

The concrete child nodes declared in plugin.yml are:

  • sir.admin.about
  • sir.admin.modules
  • sir.admin.help
  • sir.admin.reload
  • sir.admin.update
  • sir.print.targets
  • sir.print.action-bar
  • sir.print.chat
  • sir.print.title
  • sir.announcer.help
  • sir.announcer.preview
  • sir.announcer.start
  • sir.announcer.stop
  • sir.announcer.reboot

Important Legacy naming differences

Legacy resources/commands/commands.yml also references older command nodes that do not match Modern SIR one-to-one. Examples:

  • Legacy sir.clearchat becomes Modern sir.clear-chat
  • Legacy sir.chatcolor becomes Modern sir.color
  • Legacy sir.chatview no longer appears as a dedicated shipped node in the modern channels command YAML
  • Legacy sir.mute.perm becomes Modern sir.mute
  • Legacy sir.mute.temp becomes Modern sir.temp-mute
  • Legacy sir.checkmute becomes Modern sir.check-mute

If you hard-coded permission nodes in a permissions plugin, this is one of the first places you must audit before upgrading.


When should you stay on Legacy?

Legacy is still the safer choice when:

  • your server is already stable on 1.7.0
  • your staff depends on the old permission nodes
  • your deployment or backup automation expects the resources/ tree
  • you are not ready to split the old chat and hook behavior into modern modules

If you are starting from zero, the better long-term target is Modern Branch.


Migration mindset

Treat Legacy as a maintenance target, not as the baseline for new installs.

The healthiest upgrade path is:

  1. inventory your active Legacy modules and command folders
  2. map them to the modern split modules
  3. review renamed permission nodes
  4. run the migration path on a copy first
  5. validate modules/states.yml, commands/states.yml, and the generated per-module folders before going live

Detailed Legacy references

For the exact file-by-file migration behavior, continue with Migration Guide.

Last updated on

On this page