# Moving from CoreEngine

Mira used to be called CoreEngine. It is the same plugin with the same modules and configs: data, claims, accounts and items survive the update. What is new are the names under which commands, permissions and placeholders are reached. The old names no longer work and have to be switched over once.

## Update in four steps

1. Stop the server and back up the folder `plugins/CoreEngine`.
2. Remove the old `CoreEngine-*.jar` from `plugins/`. Leave the folder `plugins/CoreEngine` where it is, Mira takes it over.
3. Put the Mira JAR into `plugins/` and start the server.
4. Switch permissions (for example in LuckPerms), placeholders in other plugins and your own command aliases or scripts over to the new names, see [Old and new](#old-and-new).

> **Tip:** In LuckPerms the web editor (`/lp editor`) finds and changes the old nodes quickly. Groups that had `coreengineclaim.rank.vip` need `mira.claim.rank.vip` afterwards.

## What happens on the first start

- `plugins/CoreEngine` is renamed to `plugins/Mira` in one single step. Nothing is copied, no second set of data is created.
- The main database `data/coreengine.db` is called `data/mira.db` afterwards, its companion files (`-wal`, `-shm`, `-journal`) move along, and `storage.sqlite-file` in `config.yml` is updated. If a file name of your own is set there, everything stays as it is.
- The claim database `modules/claim/claims.db` keeps its name.
- In the comment lines of the YAML files the old name is replaced with Mira. Configured values stay untouched.
- A never-changed default chat prefix `CORE »` becomes `MIRA »`. A customized prefix stays.
- Items from the CoreEngine days (for example cosmetics, shop goods, `/lore` and `/sign` texts) keep being recognized and are switched over the next time Mira edits them.
- Mira writes the file `.migrated-from-coreengine` into `plugins/Mira`. It records when what was taken over.

## When Mira stays disabled

Mira never puts an empty database next to the real data. If something does not fit, the plugin stays disabled and writes a message with instructions (SEVERE) to the log:

| Situation | Fix |
|---|---|
| The old CoreEngine JAR is still loaded | Stop the server, remove `plugins/CoreEngine-*.jar` (keep the folder), start again |
| Both `plugins/CoreEngine` and a non-empty folder `plugins/Mira` exist | Mira never merges them. If `plugins/Mira` only holds the default files of a first test start, move that folder out of `plugins/`. If it holds the data to keep, move `plugins/CoreEngine` into a backup |
| The folder cannot be renamed in one step | Stop the server and rename the folder to `Mira` by hand (on the same drive), then start |
| The file `.migration-incomplete` sits in `plugins/Mira` | Follow the instructions in that file, delete it, start again |

## Old and new

| Area | Old (CoreEngine) | New (Mira) |
|---|---|---|
| Reload | `/coreengine reload`, `/ce reload` | `/mira reload` (no alias) |
| Confirmation handler (internal) | `/coreconfirm` | `/miraconfirm` |
| Ban aliases | `/coreban`, `/coretempban`, `/coreunban`, `/corebanip`, `/coreunbanip` | `/miraban`, `/miratempban`, `/miraunban`, `/mirabanip`, `/miraunbanip`; the main commands `/cban`, `/ctempban`, `/cunban`, `/cbanip`, `/cunbanip` stay |
| Namespaced form | `/coreengine:msg`, `coreengine:home` | `/mira:msg`, `mira:home` |
| Web panel | `/cweb` | `/cweb` (unchanged) |
| Admin permissions | `coreengine.*`, `coreengine.admin.reload` | `mira.*`, `mira.admin.reload` |
| Claim permissions | `coreengineclaim.<node>`, e.g. `coreengineclaim.admin`, `coreengineclaim.blocksperhour.<number>`, `coreengineclaim.rank.<rank>` | `mira.claim.<node>`, e.g. `mira.claim.admin`, `mira.claim.blocksperhour.<number>`, `mira.claim.rank.<rank>` |
| Web panel permissions | `core.web.*`, `core.web.use`, `core.web.category.<name>`, `core.web.cooldown.bypass` | `mira.web.*`, `mira.web.use`, `mira.web.category.<name>`, `mira.web.cooldown.bypass` |
| All other permissions | `home.use`, `team.*`, `mod.ban`, ... | unchanged |
| Placeholders | `%coreengine_<name>%`, e.g. `%coreengine_balance%` | `%mira_<name>%`, e.g. `%mira_balance%` |
| Claim placeholders | `%coreengineclaim_<name>%`, e.g. `%coreengineclaim_blocks_available%` | `%miraclaim_<name>%`, e.g. `%miraclaim_blocks_available%` |
| Data folder | `plugins/CoreEngine/` | `plugins/Mira/` (moved automatically) |
| Module configs | `plugins/CoreEngine/modules/*.yml` | `plugins/Mira/modules/*.yml` |
| Database | `data/coreengine.db` | `data/mira.db` (renamed automatically) |
| Claim config | `GriefPrevention.Database.UseCoreEngine` in `modules/claim.yml` | removed; a leftover entry is no longer read and can be deleted |
| Jobs origin check | `placed-block-provider: coreengineprotect` (also `cep` or `native`) in `modules/jobs.yml` | `auto` or `coreprotect`; an old value logs a warning and Mira uses `auto` |
| Wiki addresses | `coreengine.org/en/coreengine/...` | `coreengine.org/en/mira/...` (old links redirect) |

The complete list of all commands and permissions is in the [command & permission reference](commands.md), all placeholders under [Integrations](integrations.md#placeholderapi).

## Former companion plugins

CoreEngineProtect and the standalone CoreEngineClaim no longer exist. Land protection lives directly in Mira as the [claim module](claim-overview.md), the block history for the [jobs exploit protection](jobs.md#exploit-protection) and for the claim investigation tool comes from [CoreProtect](integrations.md#coreprotect). Their JAR files no longer belong into the `plugins/` folder. An old folder `plugins/CoreEngineClaim` from the days of the standalone claim plugin is no longer taken over automatically.
