Skip to main content
Dan's Plugins Community
HomeNewsGuidesLeaderboardAboutRoad MapCommissionsDev PortalAccount
All plugins
Medieval Roleplay Engine icon

Medieval Roleplay Engine

0

18 servers
Latest: v1.16.1
2,824 downloads on GitHub
Tested on Minecraft 26.2
4.7 · 7 reviews on SpigotMC
11,628 downloads on SpigotMC

First released June 9, 2020 · Last updated October 7, 2026

Downloads from this site

180 total

11 latest (v1.16.1)

Facilitates roleplay between players.

medieval
roleplay
DownloadUser guideSourceSpigotMC
A recreated chat panel: every line is the plugin’s real output, captured from commands a bot player ran on a test server.

Usage

9

Active servers (30 days)

Last reported in use 3 hours ago

301 server starts in the last 30 days

Server starts per day

Versions in use, by share of active servers

  • 1.16.1

    100% · 9 servers

Usage reported by trace — how it works. CI and test servers are excluded.

Usage of every plugin


Verified before release

Version 1.16.1 was started on real servers running Minecraft 1.19.4, 1.21.11, 26.2 and 26.3 before it was published. The jar you download is the exact one that passed. How releases work

Versions

All releases on GitHub
Development build
Pre-release
October 7, 2026· 6 downloads

Automated build of main at b4616b48a2bfe9ed50e73609d43bb9d5ce26b6d7.

This is not a release. It is unreleased, unreviewed code that has not been through any release check, and a broken build can stop a server from starting. Do not run it on a server you care about without a backup.

Install it with Dan's Plugin Manager:

/dpm get medievalroleplayengine --experimental

Return to published releases with /dpm get medievalroleplayengine --stable.

Medieval-Roleplay-Engine-1.16.2-SNAPSHOT.jar (169.1 KB)

1.16.1

A server running v1.16.0 can drop this release in with nothing else to do. Usage reporting works the same way as before. It sends the same data to the same endpoint, uses the same random server ID from plugins/trace/config.yml, and turns off the same ways. The only change you will see is the link to the usage-reporting details page.

Changes

Usage reporting

  • The details link in the startup message and in the default config.yml comment now points to https://danielstephenson.dev/usage-reporting. If this plugin is the first to create plugins/trace/config.yml, that file's header comment uses the new link too. Existing files are not changed.
  • Updated the bundled usage-reporting client to 0.6.1. This release does not change what is reported or how the server ID is chosen.

Version

v1.16.0 → 1.16.1 — PATCH. Mechanical floor from comparing the two jars: PATCH. Judgment: The only API additions (installIdFromFile, Builder.installIdFile) are in the bundled trace usage-reporting client, which was updated from 0.5.0 to 0.6.1. The plugin never calls them, so nothing changes at runtime: it still takes its install ID from server-id in plugins/trace/config.yml. The only change an operator can see is the usage-reporting details link, which now points to https://danielstephenson.dev/usage-reporting in the config.yml comment, the startup log line and a newly created plugins/trace/config.yml. No data format, command, permission or config meaning changes, so patch stays.

  • no interface or storage difference observed between the jars

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • dansplugins.rpsystem.trace.TraceClient: added public static java.lang.String installIdFromFile(java.io.File);
  • dansplugins.rpsystem.trace.TraceClient$Builder: added public dansplugins.rpsystem.trace.TraceClient$Builder installIdFile(java.io.File);

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.3 (11 assertions passed).
  • save-compatibility gate run: data written by v1.16.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

1.16.0

For a server running v1.15.1, this is a drop-in upgrade. Roleplay features, commands, permissions and stored data are unchanged. The change is in usage reporting. If reporting is enabled (the default), the first start after upgrading appends a randomly generated server-id line to plugins/trace/config.yml. From then on, every usage event carries that ID and the plugin version, so distinct servers can be counted. The ID is random and identifies no player, account or IP address. Servers that have turned reporting off, through usage-reporting.enabled: false, enabled: false in plugins/trace/config.yml, or the environment opt-out, never generate or write one.

Changes

Compatibility

  • Minecraft 26.3 is now a declared supported version, alongside 1.19.4, 1.21.11 and 26.2. The plugin's Bukkit API use is checked against each of them (#359, #350).

Usage reporting

  • Each usage event now carries a random per-server ID, stored as server-id in plugins/trace/config.yml and created on first start when reporting is enabled. Delete the line to get a new ID (#356).
  • The startup log line and the config.yml comment now mention the random server ID (#358, #356).
  • Every usage event, including command events and not just startup, is now tagged with the plugin version (#352).
  • plugins/trace/config.yml supports an optional tags: block that adds tags to every event from every trace-reporting plugin on the server. For example, ci: "true" on a test server keeps its events out of real-installation figures. Newly created files include a commented-out example (#351).

Version

v1.15.1 → 1.16.0 — MINOR. Mechanical floor from comparing the two jars: PATCH. Judgment: The mechanical check flagged only INFO-level changes to the vendored TraceClient. It cannot see that the plugin now writes new data to disk: on first start with reporting enabled, a random server-id line is appended to plugins/trace/config.yml, and every usage event now carries it as an install tag. The server-wide trace config also gains an optional tags: block. Together these are new behaviour and new persisted data, so the floor rises to minor. Nothing breaks for an existing server: no plugin data format, command, permission or config key changes meaning, and TraceClient is a vendored internal helper rather than a public API that other plugins consume.

  • no interface or storage difference observed between the jars

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • dansplugins.rpsystem.trace.TraceClient: removed/changed public static dansplugins.rpsystem.trace.TraceClient$Builder builder(java.lang.String, java.lang.String);
  • dansplugins.rpsystem.trace.TraceClient: added public java.lang.String installId();
  • dansplugins.rpsystem.trace.TraceClient: added public static dansplugins.rpsystem.trace.TraceClient$Builder builder(java.lang.String, java.lang.String, java.lang.String);
  • dansplugins.rpsystem.trace.TraceClient: added public static final java.lang.String VERSION;
  • dansplugins.rpsystem.trace.TraceClient$Builder: added public dansplugins.rpsystem.trace.TraceClient$Builder installId(java.lang.String);

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.3 (11 assertions passed).
  • save-compatibility gate run: data written by v1.15.1 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

1.15.1

For a server running v1.15.0, this release has no functional differences. Commands, permissions, configuration and stored data all work exactly as before, so upgrading is optional and safe.

Changes

  • No operator-facing changes in this release.

Version

v1.15.0 → 1.15.1 — PATCH. Mechanical floor from comparing the two jars: PATCH. Judgment: The only change since v1.15.0 is the version string in pom.xml moving to 1.15.1-SNAPSHOT (#344). This is release plumbing. It doesn't change commands, config, permissions, stored data or the API. Nothing justifies going above the mechanical floor, so the level stays at patch.

  • no interface or storage difference observed between the jars

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server (10 assertions passed).
  • save-compatibility gate run: data written by v1.15.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

1.15.0

Upgrading from v1.14.0 is a drop-in replacement: character cards, commands and existing permission grants all keep working. The two things you will notice are that /roll now understands D&D-style dice notation with a new result message, and that the plugin now reports anonymous usage events (plugin name, version and command names — nothing about players or your server) to the author's trace server by default. The plugin says on every startup whether reporting is on and how to turn it off; the opt-out is a single config key, described under Upgrade notes.

Changes

Usage reporting

  • The plugin sends a small usage event on startup and one per command, containing only the plugin name, version and command name. Sending happens off the main thread, is capped to a small queue and is dropped silently if the server is unreachable (#338)
  • Reporting can be turned off per plugin with usage-reporting.enabled: false, server-wide with enabled: false in plugins/trace/config.yml (created on first start), or with the TRACE_USAGE_REPORTING=off / DO_NOT_TRACK=1 environment variables. A startup log line states whether reporting is on and, if off, why (#338, #341)
  • Existing config.yml files gain a commented usage-reporting block automatically so the switch is visible where you would look for it; /rpconfig show lists it and /rpconfig set usage-reporting.enabled toggles it (#341)

Dice

  • /roll and /dice accept standard notation such as 2d6, d20, 1d20+5 and 3d8-1; a plain number is still treated as a die size. Individual rolls, the modifier and the total are shown, and the roller always sees their own result. Limits: 100 dice, d10000, modifier ±10000 (#317)

Permissions and commands

  • rp.card.* is now registered in plugin.yml as a parent of the nine card nodes (show, lookup, help, name, race, subculture, religion, age, gender), so permission plugins that expand wildcards grant it correctly (#335)
  • /rphelp now honours rp.help, the node actually registered in plugin.yml; rp.rphelp continues to work for servers that already grant it (#328)
  • Right-clicking a player to view their card now honours rp.card.lookup; rp.card.show.others continues to work. Players without permission are no longer placed on the two-second cooldown (#328)
  • /lo hide and /lo show only act as sub-commands when typed alone; a message beginning with "hide" or "show" is sent as a message (#328)
  • /card tells a player when they have no character card instead of failing silently; /lo names the correct node (rp.localOOC) in its permission error (#316, #328)

Configuration

  • A misspelled neurtalAlertColor key in an existing config is migrated to neutralAlertColor, preserving its value (#332)
  • Upgrade-path defaults now match a fresh install: a config missing emoteColor gets gray and one missing logChat gets true. Keys already present are left untouched (#332, #334)

Robustness

  • PlaceholderAPI card_* placeholders return empty for a player with no character card instead of throwing (#320)
  • Card entries with an unreadable UUID are skipped on load rather than aborting the load; card lookups tolerate a null UUID (#316)
  • Chat radius checks no longer fail when a player's world is unavailable (#316)

Upgrade notes

  • Usage reporting is on by default after this upgrade. To turn it off for this plugin, set usage-reporting.enabled: false in plugins/MedievalRoleplayEngine/config.yml; to turn it off for every trace-reporting plugin on the server, set enabled: false in plugins/trace/config.yml. Check the startup log to confirm the state you want.
  • If your permission plugin grants rp.card.*, it now also grants the nine child card nodes as intended. rp.card.forcesave and rp.card.forceload are deliberately not included.

Version

v1.14.0 → 1.15.0 — MINOR. Mechanical floor from comparing the two jars: MINOR. Judgment: Nothing here breaks a server upgrading from v1.14.0: the card file format is unchanged, /roll still accepts its old plain-number argument, and every permission change is additive (rp.help and rp.card.lookup are now honoured while rp.rphelp and rp.card.show.others still work). The significant new behaviour is usage reporting, which is on by default, writes a new plugins/trace/config.yml and backfills a usage-reporting block into existing config.yml files; that is new behaviour and new data written, not an incompatible change, so it warrants minor rather than major. The pom was bumped to a 2.0.0 snapshot in a chore commit, but no change in the diff meets the bar for a major release.

  • minor: permission added: rp.card.*
  • minor: default config key added: usage-reporting.enabled
  • minor: default config key added: usage-reporting.endpoint
  • minor: default config key added: usage-reporting.key
  • minor: storage path changed: src/main/java/dansplugins/rpsystem/cards/CardRepository.java
  • minor: storage path changed: src/main/java/dansplugins/rpsystem/cards/CharacterCard.java
  • minor: storage path changed: src/main/java/dansplugins/rpsystem/storage/StorageService.java

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • public class added: dansplugins.rpsystem.trace.TraceClient
  • public class added: dansplugins.rpsystem.trace.TraceClient$Builder
  • dansplugins.rpsystem.config.ConfigService: added public boolean isUsageReportingEnabled();
  • dansplugins.rpsystem.config.ConfigService: added public java.lang.String getUsageReportingEndpoint();
  • dansplugins.rpsystem.config.ConfigService: added public java.lang.String getUsageReportingKey();
  • dansplugins.rpsystem.config.ConfigService: added public void ensureUsageReportingBlockOnDisk();

</details>

Verification

Booted twice on a real Spigot server before publication — boot gate run (10 assertions passed). This release carries the exact jar that was verified.

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

Snapshot release marking Medieval-Roleplay-Engine's move to an AI-first development approach.

Day-to-day feature work, grooming, review and maintenance now run through AI agents working directly against this repository, with the maintainers setting direction and approving what lands. The version bump marks that change in how the project is built — it is not a compatibility break. Behaviour, configuration and stored data are unchanged, and existing installations can upgrade in place.

This is a dated snapshot, not a finished release. It follows the precedent set by Medieval Factions' 6.0.0-SNAPSHOT-7-25-2026: the AI-first line has not yet been verified in live operation, and the snapshot designation stays until it has.

Version changes

  • pom.xml: 1.14.0 → 2.0.0-SNAPSHOT-8-8-2026

Opened as https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/pull/326.


Drafted by Claude on behalf of Daniel Stephenson.

copilot/add-dice-notation-support
copilot/add-dice-notation-support
copilot/refactor-clean-code-principles

What's Changed

  • Repository housekeeping: The codebase has been realigned to follow DPC conventions, keeping the project consistent with broader plugin ecosystem standards. (#312)
  • Bug fix — /roll command: The /roll command previously failed silently when called without arguments, giving players no feedback. This has been resolved so the command now responds appropriately. (#314)

Full Changelog

v1.13.0 → v1.14.0

What's Changed

  • Modified Messenger to log all chats to console
  • Added dev container to ease development
  • Added test container to ease testing

Full Changelog: https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/compare/v1.12.0...v1.13.0

What's Changed

Full Changelog: https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/compare/1.10...v1.11.0

What's Changed

Full Changelog: https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/compare/1.10...1.11.0-beta.1

What's Changed

Full Changelog: https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/compare/v1.9...1.10

What's Changed

New Contributors

Full Changelog: https://github.com/Dans-Plugins/Medieval-Roleplay-Engine/compare/v1.10-beta-1...2.0-ALPHA-5-6-2022

Note

This version of the plugin is not compatible with 1.x saves and is not recommended for use in production.

Changes in Medieval Roleplay Engine v1.10-beta-1

  • Integrated Mailboxes with the plugin.
  • If a player is offline when they are sent a bird, the contents of the message will now be stored in the player's mailbox. (Requires Mailboxes)

Changes in Medieval Roleplay Engine v1.9

  • Integrated Medieval Factions with the plugin.
  • If a player is in a faction, their faction's name will be shown when their character card is displayed. (Requires Medieval Factions)
  • A player's power will now be shown when their character card is displayed. (Requires Medieval Factions)
  • Optimized the /card command.
  • Added the /card lookup command, altering the functionality of character card lookups.
  • Implemented a caching system for character card lookups.

Changes in Medieval Roleplay Engine v1.9-beta-2

  • Added the /card lookup command.
  • Implemented a caching system for character card lookups.

Changes in Medieval Roleplay Engine v1.9-beta-1

  • Integrated Medieval Factions with the plugin.
  • If a player is in a faction, their faction's name will be displayed when their character card is displayed.
  • Optimized the /card command.

Optimization

Previously, if one of the sub-commands of the card command wasn't matched with what the player entered, it would search through every player that has ever logged in and then search through every card record, every time. Now, the player will be searched and if it isn't found, the card lookup won't occur. I'm hoping this makes card lookups run significantly faster.

Changes in Medieval Roleplay Engine v1.8

  • Caibinus integrated PlaceholderAPI with the plugin.
  • Integrated Medieval Factions with the plugin.
  • If a player is in faction chat and RP chat, their chat event will be cancelled. (if MF is installed)
  • Fixed an ArrayOutOfBoundsException error printing in the console when players typed /lo with no arguments.
  • Fixed a NullPointerException error printing in the console.
  • Added the "positiveAlertColor" config option.
  • Added the "neutralAlertColor" config option.
  • Added the "negativeAlertColor" config option.
  • Added the "chatFeaturesEnabled" config option.
  • Added the "debugMode" config option.
  • Created a config option for legacy chat, then refactored the chat system to allow players to hide global.
  • Made sure that the chat system worked with prefixes in Medieval Factions.

Note

This version of the plugin works with the Medieval Factions API in version 4.2.2-alpha-3 of Medieval Factions. You may run into problems when using an earlier version of Medieval Factions with this version of Medieval Roleplay Engine.

Changes in v1.8-alpha-1

  • Caibinus integrated PlaceholderAPI with the plugin.
  • Medieval Factions has been integrated with the plugin. If a player is in RP and faction chat, their message will not be sent in RP chat.

Changes in Medieval Roleplay Engine v1.7

  • Only the /ooc and /rp commands are listed in the output of the help command now so players don't get confused with /local and /global.
  • Changed the default emote color to yellow.
  • Caibinus integrated Placeholder API into the plugin.
  • Made it so that anything within astericks in local chat gets printed after as an emote.
  • Made sure the plugin works on 1.17.

Changes in Medieval Roleplay Engine v1.6.1-beta-2

  • Only the /ooc and /rp commands are listed in the output of the help command now so players don't get confused with /local and /global.
  • Changed the default emote color to yellow
  • Caibinus integrated Placeholder API into the plugin.
Attempted to fix OOC chat hiding, ended up just disabling the feature for now. When players type /ooc hide, nothing will change. This is a temporary fix.
Democracy

Lets a Medieval Factions faction hold elections: members stand as candidates, vote, and follow the count.

Medieval Cookery

Allows server owners to add cooking recipes for an enhanced roleplay experience.

BlueMap Medieval Factions

Renders Medieval Factions claims on BlueMap's web map. Originally written by Kilz.

Currencies

An expansion for Medieval Factions that allows faction owners to create and mint local currencies.

Something wrong, or something missing?

Bugs go to the plugin's issue tracker, where they can actually be fixed and tracked. Ideas for new behaviour go to the Dev Portal, where the community can upvote them.

v0.15.2
Source CodeReport a BugKnowledge BaseFree Server Hosting

More by Daniel Stephenson → danielstephenson.dev · Play his games in your browser