Migration Guide
Detailed migration notes for moving from Legacy SIR or Essentials-style data into Modern SIR 2.0.0.
Supported migration sources in Modern SIR
The MainCommand implementation in Modern SIR supports these sources:
/sir migrate SIR/sir migrate Essentials
The first one is for older SIR data folders.
The second one is for Essentials / EssentialsX style data.
If you need CMI migration or addon-aware migration, that belongs to SIR+.
Legacy SIR -> Modern SIR
What the migration actually does
The modern MigrationService does much more than copy files.
It knows how to:
- migrate user data from old command folders into
users/ - carry shared files such as
bossbars.ymlandwebhooks.yml - translate Legacy module folders into the modern split structure
- rebuild
modules/states.yml - rebuild
commands/states.yml - create backups under
back-ups/
Data that gets translated
| Legacy source | Modern destination |
|---|---|
commands/ignore/data.yml | users/ignore.yml |
commands/mute/data.yml | users/mute.yml |
commands/chat_view/data.yml | users/chat-view.yml |
commands/chat_color/data.yml | users/chat-color.yml |
bossbars.yml | bossbars.yml |
webhooks.yml | webhooks.yml |
modules/announcements/* | modules/announcements/* |
modules/join_quit/* | modules/join-quit/* |
modules/advancements/* | modules/advancements/* |
modules/motd/* | modules/motd/* |
modules/chat/* | split across channels, cooldowns, emojis, mentions, moderation, tags |
modules/hook/* | split across discord, login, vanish |
resources/modules/modules.yml | modules/states.yml |
resources/commands/commands.yml | commands/states.yml |
Special translations worth knowing
The migration service contains dedicated logic for:
- legacy channel definitions -> modern channel structure
- old Discord hook IDs and message blocks -> new
discord/config.yml - login
spawn-beforestyle values -> new login-aware config - vanish chat key, regex, prefix placement, and deny messages -> new vanish config
That is exactly why the recommended workflow is the command-driven migration, not a manual folder merge.
Backup behavior
Backups are written under plugins/SIR/back-ups/.
Two scenarios matter:
- if you migrate from a separate old SIR folder, the service snapshots that source folder
- if you run the migration inside the same plugin data folder, the service moves old Legacy artifacts into backup targets instead of leaving the old structure mixed with the new one
Recommended procedure
- Back up the full server first.
- Start Modern SIR once so the new folder structure exists.
- Stop the server.
- Make sure the old SIR data is still available.
- Start the server and run
/sir migrate SIR. - Inspect
users/,modules/,commands/, andback-ups/. - Verify permissions before letting players back in.
What still needs human review
- renamed permission nodes
- split
chatconfiguration behavior - split
hookconfiguration behavior - PlaceholderAPI or Vault-dependent formatting
- any custom message text that relied on old layout assumptions
EssentialsX -> Modern SIR
Modern SIR also supports /sir migrate Essentials.
What the service looks for
The migration routine inspects Essentials or EssentialsX data and can also react to companion plugins such as:
EssentialsChatEssentialsSpawnEssentialsDiscord
What gets migrated
From the implementation, the migration can move or derive:
- shared config pieces
- chat formatting and chat-related behavior
- spawn or onboarding-related data
- Discord-related integration data
- language defaults
- command state
- user data such as ignore, mute, and nick information from userdata files
It also writes a backup snapshot of the original Essentials folder under back-ups/.
Why this migration still needs testing
Essentials servers tend to be heavily customized. Even when the data conversion succeeds, you should still validate:
- nickname formatting
- mute expiration and reason text
- placeholders in imported text
- spawn and first-join behavior
- chat channel expectations if you also enable the modern
channelsmodule
Mapping cheatsheet
Use this as a fast audit list while migrating from Legacy:
| Legacy concept | Modern concept |
|---|---|
resources/modules/modules.yml | modules/states.yml |
resources/commands/commands.yml | commands/states.yml |
resources/modules/chat | several modern modules |
resources/modules/hook | discord, login, vanish |
resources/commands/chat_color/data.yml | users/chat-color.yml |
resources/commands/chat_view/data.yml | users/chat-view.yml |
resources/commands/ignore/data.yml | users/ignore.yml |
resources/commands/mute/data.yml | users/mute.yml |
Post-migration validation checklist
After either migration path, check these in order:
modules/states.ymlcommands/states.ymlusers/ignore.ymlusers/mute.ymlusers/chat-view.ymlusers/chat-color.yml- module-specific folders such as
channels,discord,moderation, andmotd - your permission plugin grants
If the migration target is not base SIR but the addon-capable branch, continue with SIR+ Migration Guide.
Configuration Layout
Compare the Legacy SIR folder tree with the modern `users`, `modules`, and `commands` layout before migrating.
Integrations
Third-party plugins and libraries that SIR can detect, use, or work alongside.
Last updated on