Medieval Economy
0
First released June 13, 2020 · Last updated October 7, 2026
Downloads from this site
64 total
6 latest (v2.1.1)
Provides a virtual coinpurse and a physical currency item for simulating an economy.
Usage
1
Active servers (30 days)
Last reported in use 6 days ago
5 server starts in the last 30 days
Server starts per day
Versions in use, by share of active servers
2.1.1
100% · 1 server
Usage reported by trace — how it works. CI and test servers are excluded.
Verified before release
Version 2.1.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 GitHubAutomated build of main at 6870036f239556e251235b3e44dbad2285205a37.
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 medievaleconomy --experimentalReturn to published releases with /dpm get medievaleconomy --stable.
2.1.1
This is a maintenance release for servers running v2.1.0, and nothing changes in how the plugin behaves. Economy features, commands, permissions, configuration and stored data all work exactly as before. Usage reporting works the same way, and its on/off switches are unchanged. The only change you might notice is that the usage-reporting details link now points to a new page.
Changes
Usage reporting
- Updated the bundled usage-reporting client to 0.6.1. The plugin still identifies the server with the existing
server-idinplugins/trace/config.yml, and what it reports is unchanged. - The usage-reporting details link in the startup message now points to https://danielstephenson.dev/usage-reporting. The same link is used in the comments of newly generated
config.ymlandplugins/trace/config.ymlfiles. Existing files are not modified.
Version
v2.1.0 → 2.1.1 — PATCH. Mechanical floor from comparing the two jars: PATCH.
Judgment: The only code change updates the bundled trace usage-reporting client from 0.5.0 to 0.6.1. It adds an optional installIdFile builder method and a static installIdFromFile helper, but the plugin calls neither, so install-ID resolution, the data written to plugins/trace/config.yml and the reporting behaviour are all unchanged. The other changes are the usage-reporting details link in the startup log message, the config.yml comment and the server-wide switch file template. No command, permission, config key meaning or data format changes, so the patch floor stands.
- no interface or storage difference observed between the jars
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- dansplugins.economysystem.trace.TraceClient: added public static java.lang.String installIdFromFile(java.io.File);
- dansplugins.economysystem.trace.TraceClient$Builder: added public dansplugins.economysystem.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
v2.1.0was 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
2.1.0
For a server running v2.0.0, this release adds support for Minecraft 26.3 and changes usage reporting. If reporting is on, each usage event now carries a random server ID, so the trace server can count servers instead of raw events. The first time the plugin starts with reporting on, it creates this ID and adds it to plugins/trace/config.yml as a server-id: line, with a comment explaining it. The ID is a random UUID. It is not linked to any player, account or IP address, and nothing about players is sent. If reporting is turned off, no ID is created or written. Economy features, commands, permissions and stored data are unchanged.
Changes
Compatibility
- Added support for Minecraft 26.3 (#148).
Usage reporting
- Each usage event now includes a random server ID as the
installtag. The ID is created on first run and stored asserver-id:inplugins/trace/config.yml. If the file can't be written, the ID is kept in memory until the server stops (#145). - The comments in
config.ymland the startup log message now mention the random server ID (#147).
Upgrade notes
- You don't have to do anything. If you don't want the server ID sent, turn reporting off with
usage-reporting.enabled: falsein this plugin'sconfig.yml, or for every plugin that reports to trace withenabled: falseinplugins/trace/config.yml. When reporting is off, no ID is created. - To get a new random ID, delete the
server-id:line fromplugins/trace/config.yml. A new one is made on the next start.
Version
v2.0.0 → 2.1.0 — MINOR. Mechanical floor from comparing the two jars: PATCH.
Judgment: The mechanical floor only sees two new public methods on the vendored TraceClient. The bigger change is behavioural: when usage reporting is on, the plugin now creates a random server ID, appends it as a server-id: line to plugins/trace/config.yml, and sends it with every usage event. That is new data written to disk and new data sent off the server, so it counts as new behaviour and is minor. It is not major because no existing config key, command, permission or data format changes meaning, and turning reporting off still works the same way. Support for Minecraft 26.3 is also new.
- no interface or storage difference observed between the jars
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- dansplugins.economysystem.trace.TraceClient: added public java.lang.String installId();
- dansplugins.economysystem.trace.TraceClient$Builder: added public dansplugins.economysystem.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
v2.0.0was 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
2.0.0
This is a major release for servers on 1.2.0. The plugin now declares its permissions, so on a server without a permissions plugin, ordinary players can use /balance, /deposit and /withdraw. Before, only ops could. The plugin also starts sending anonymous usage reports by default. You can turn this off in the plugin's config.yml, server-wide, or with an environment variable. Existing coinpurse data and config values are kept, and any new config keys are added to your config.yml automatically when the server starts.
Changes
Permissions and commands
- Declared every command and permission node in plugin.yml. medievaleconomy.default, .balance, .deposit and .withdraw are now granted to all players. medievaleconomy.createcurrency, .reload and .admin stay op-only, and .admin grants all of them (#116)
- /econ help now lists every command the sender is allowed to run, including /balance, /deposit, /withdraw and /econ reload (#140)
Amounts
- /deposit, /withdraw and /econ createcurrency now share one way of checking the amount. Zero and negative amounts are rejected with the "must be positive" message. Non-numeric or very large amounts now show a usage message instead of an error, and /econ createcurrency has new configurable usage and positive-amount messages (#118)
Coinpurses
- A coinpurse record that cannot be read, or whose legacy player name no longer resolves to a UUID, is now skipped at load. Before, it caused lookup errors and could stop balances from being saved on shutdown (#121)
- Depositing, withdrawing or dying no longer fails for a player without a coinpurse; an empty one is created for them (#121)
- /balance now answers a player without a coinpurse with a configurable message (balanceNoCoinpurse) instead of saying nothing (#125)
Configuration
- Config defaults are now registered every time the plugin is enabled. A key missing from your config.yml now uses its default instead of reading as null, and missing keys are added to the file. Values you have set are not overwritten (#130)
- On a version change, the config version is now updated, so the mismatch is handled once and not on every startup. Your existing values are kept (#134)
Usage reporting
- The plugin now sends a small event when it starts and each time one of its commands is used. The event contains the plugin name, the event name (with the command name) and the plugin version, and goes to https://trace.danielstephenson.dev. Nothing about players or the server is sent. Sending happens off the main thread and never blocks a tick, and the startup log says whether reporting is on (#127, #129, #139)
- A server-wide switch is created at plugins/trace/config.yml. It can turn reporting off for every plugin that reports to trace, and can add tags to their events, for example to mark a test server (#138)
Upgrade notes
- Check permissions: If you relied on non-op players not being able to use /balance, /deposit or /withdraw, negate medievaleconomy.default (or the individual nodes) in your permissions plugin before upgrading.
- Usage reporting is on by default. To turn it off, use any one of these:
- Set
usage-reporting.enabled: falsein plugins/MedievalEconomy/config.yml. - Set
enabled: falsein plugins/trace/config.yml. - Set the environment variable
TRACE_USAGE_REPORTING=offorDO_NOT_TRACK=1.
- Set
- If the server logs show a coinpurse that could not be loaded, it will be dropped from the saved data on the next shutdown. Back up plugins/MedievalEconomy (coinpurses are in its Coinpurse-Records folder) before upgrading if you want to recover it by hand.
Version
1.2.0 → 2.0.0 — MAJOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: The floor is minor, and I raised it to major because the default effect of some permissions changes. In 1.2.0, plugin.yml declared none of the permission nodes, so Bukkit treated them as op-only. #116 now gives medievaleconomy.balance, .deposit, .withdraw and .default to every player by default, so on an existing server without a permissions plugin, players who are not ops gain /balance, /deposit and /withdraw. The release also adds new behaviour: usage reporting that is on by default and makes outbound requests (#127), stricter amount validation that now rejects 0 (#118), and dropping coinpurse records that have no readable UUID at load (#121). The diff for VersionMismatchTest.java was truncated and is unknown. It is a test-only file, so it should not change runtime behaviour, but its content was not reviewed.
- minor: permission added: medievaleconomy.admin
- minor: permission added: medievaleconomy.balance
- minor: permission added: medievaleconomy.createcurrency
- minor: permission added: medievaleconomy.default
- minor: permission added: medievaleconomy.deposit
- minor: permission added: medievaleconomy.reload
- minor: permission added: medievaleconomy.withdraw
- 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/economysystem/services/StorageService.java
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- public class added: dansplugins.economysystem.objects.AmountArgument
- public class added: dansplugins.economysystem.trace.TraceClient
- public class added: dansplugins.economysystem.trace.TraceClient$Builder
- dansplugins.economysystem.services.ConfigService: added public boolean isUsageReportingEnabled();
- dansplugins.economysystem.services.ConfigService: added public java.lang.String getUsageReportingEndpoint();
- dansplugins.economysystem.services.ConfigService: added public java.lang.String getUsageReportingKey();
- dansplugins.economysystem.services.ConfigService: added public void ensureDefaultsOnDisk();
- dansplugins.economysystem.services.ConfigService: added public void registerDefaults();
- dansplugins.economysystem.services.UtilityService: added public dansplugins.economysystem.objects.Coinpurse getOrCreateCoinpurse(java.util.UUID);
</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).
- save-compatibility gate run: data written by
1.2.0was 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
Snapshot release marking Medieval-Economy'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.2.0→2.0.0-SNAPSHOT-8-8-2026
Opened as https://github.com/Dans-Plugins/Medieval-Economy/pull/108.
Drafted by Claude on behalf of Daniel Stephenson.
What's Changed
- starter kit will now only be given to new players if they don't have a coinpurse already by @dmccoystephenson in https://github.com/Dans-Plugins/Medieval-Economy/pull/97
- refactored some things and incremented version by @dmccoystephenson in https://github.com/Dans-Plugins/Medieval-Economy/pull/98
- Cleaned up the project a bit. by @dmccoystephenson in https://github.com/Dans-Plugins/Medieval-Economy/pull/103
Full Changelog: https://github.com/Dans-Plugins/Medieval-Economy/compare/v1.1.1...1.2.0
Tested Minecraft Versions
- 1.18.2
Changes
- disallowed withdrawals if player has a full inventory
Changes in v1.1
- Fixed players dropping 1 coin on death if they have no coins in their coinpurse.
- Fixed players having extra coins despawn when they try to take out more coins than their inventory can fit.
- Removed print statements of stack traces when saving/loading errors occur.
- Integrated bStats
Changes
- UUID Overhaul
- Fixed players dropping 1 coin on death if they have no coins in their coinpurse.
~- Fixed players having extra coins despawn when they try to take out more coins than their inventory can fit.~
- Removed print statements of stack traces when saving/loading errors occur.
- Integrated bStats
It should be noted that this version is not fully tested.
Changes in Medieval Economy v1.0
- Added a config.yml with extensive options.
- Added a /reload command.
- The plugin is now supported for versions 1.13 to 1.16.
- Player UUIDs are now used instead of Player Names for storage.
Medieval Economy v0.6 allows you to
- view a list of helpful commands with /econ help
- create currency with /econ createcurrency #
- view how many coins are in your coinpurse with /balance
- deposit coins into your coinpurse with /deposit (number)
- withdraw coins from your coinpurse with /withdraw (number)
In addition to these commands, the plugin also
- informs the player upon login about their coinpurse if they didn't have one yet
- gives players 50 gold coins when they first join the server
- provides saving/loading for all aspects of the plugin
- provides permissions for every command
Medieval Economy v0.4 allows you to
- view a list of helpful commands with /econ help
- create currency with /econ createcurrency #
Related plugins
An expansion for Medieval Factions that allows faction owners to create and mint local currencies.
Renders Medieval Factions claims on BlueMap's web map. Originally written by Kilz.
Lets a Medieval Factions faction hold elections: members stand as candidates, vote, and follow the count.
Allows players to create fiefs and manage them.
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.
