SimpleSkills
0
First released November 30, 2021 · Last updated October 13, 2026
Downloads from this site
169 total
4 latest (v2.7.1)
Introduces skills into the game in a systematic, easy to use, expandable way.
Usage
3
Active servers (30 days)
Last reported in use 45 minutes ago
42 server starts in the last 30 days
Server starts per day
Versions in use, by share of active servers
2.7.0
100% · 3 servers
Usage reported by trace — how it works. CI and test servers are excluded.
Verified before release
Version 2.7.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 62a65a85ca396e3605902d4c4027e2de66662604.
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 simpleskills --experimentalReturn to published releases with /dpm get simpleskills --stable.
2.7.1
For a server running v2.7.0, this release changes nothing in how the plugin behaves. Commands, permissions, configuration and stored player data all work exactly as before. The only change is new automated tests that pin down how /ss info currently works, so future changes can't quietly alter it.
Changes
- Reliability:
/ss infowith no arguments now has tests for its current behaviour: console senders are refused, a player's existing skill record is shown, a missing record is created first, and an error is reported if the record can't be created (#201).
Version
v2.7.0 → 2.7.1 — PATCH. Mechanical floor from comparing the two jars: PATCH.
Judgment: This release only adds unit tests for the existing /ss info command and changes the project version to a snapshot. It changes no runtime behaviour, data format, command, config key, permission or public API. That matches the mechanical evidence, which found no interface or storage difference, so the patch floor stays.
- 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 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.7.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.7.0
This release is a safe drop-in upgrade for servers on v2.6.0. It adds support for Minecraft 26.3 and gives /ss info a clear reply when a player has no skills yet. It also changes usage reporting: when reporting is on, each event now includes a random server ID, which is stored in plugins/trace/config.yml. Player data, commands and permissions are unchanged.
Changes
Compatibility
- Adds support for Minecraft 26.3 (#193).
Commands
/ss infofor a player with no skill progress now says so, instead of the misleading "That skill wasn't found." Players checking themselves are told that skills are learned by doing. Checking another player names that player. The replies use the newNoSkillsYet-SelfandNoSkillsYet-Otherkeys inmessage.yml(#195).
Usage reporting
- When usage reporting is on, each event now includes a random server ID so that servers can be counted. It does not identify any person, account or IP address. On first start with reporting on, a
server-id:line and a comment explaining it are added toplugins/trace/config.yml. Delete that line to get a new ID. When reporting is off, no ID is created, read or sent. The startup message and the config.yml comments now mention the ID (#192). - The usage-reporting details link now points to https://danielstephenson.dev/usage-reporting (#196).
Upgrade notes
- If you use your own
message.yml, add the two new keys from the bundled file,NoSkillsYet-SelfandNoSkillsYet-Other, so that/ss infocan show its new reply. - If you don't want the random server ID sent, turn off usage reporting. Set
usage-reporting.enabled: falsein this plugin'sconfig.yml, or setenabled: falseinplugins/trace/config.ymlto turn it off for all plugins. SettingTRACE_USAGE_REPORTING=offorDO_NOT_TRACK=1for the server process also works.
Version
v2.6.0 → 2.7.0 — MINOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: The floor of minor stands. The plugin now writes new data: when usage reporting is on, a random server ID is added to plugins/trace/config.yml and sent with each event. It also adds two message keys, a new reply for /ss info, and Minecraft 26.3 support. No command arguments, permissions, config key meanings or player-record format change in a way that breaks an existing server. One risk can't be checked from this diff: the new reply looks up the NoSkillsYet keys with requireNonNull, so a server whose message.yml lacks them could hit an error unless MessageService fills in the bundled defaults. That is handled with an upgrade note rather than a major bump.
- minor: storage path changed: src/main/java/dansplugins/simpleskills/playerrecord/PlayerRecord.java
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- dansplugins.simpleskills.trace.TraceClient: added public java.lang.String installId();
- dansplugins.simpleskills.trace.TraceClient: added public static java.lang.String installIdFromFile(java.io.File);
- dansplugins.simpleskills.trace.TraceClient$Builder: added public dansplugins.simpleskills.trace.TraceClient$Builder installId(java.lang.String);
- dansplugins.simpleskills.trace.TraceClient$Builder: added public dansplugins.simpleskills.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.6.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.6.0
For a server running v2.5.0, this is a drop-in upgrade with no data migration and no config changes required. /ss force wipe now saves to disk right away, and online players keep earning experience after a wipe. /ss top now replies properly when a skill's leaderboard is empty. The Strength, Pyromaniac and Monster Hunting rewards now look up potion effects and particles by name, so the same jar works on Minecraft versions from before and after the 1.20.5 renames. Usage reporting can also add server-wide tags to every event, which helps test servers keep their reports apart from real ones.
Changes
Fixes
/ss force wipenow saves the cleared records to disk straight away, so a crash before the next autosave can no longer bring the old records back (#179)- Players who are online during
/ss force wipenow keep gaining experience. Before, they gained none until they rejoined (#179) /ss top <skill>now sends theNoTopmessage when no one has levels in that skill. Before, it showed an empty leaderboard (#178)
Compatibility
- The Strength and Nausea potion effects and the coloured dust particle are now looked up by name, trying the current name first and then the older one. Strength, Pyromaniac and Monster Hunting rewards work on 1.19.4 through current releases without depending on the server rewriting old constant names (#181)
- The supported Minecraft versions are now declared: 1.19.4, 1.21.11 and 26.2 (#181)
Usage reporting
- The shared
plugins/trace/config.ymlfile now accepts an optionaltags:block. Its tags are added to every event that participating plugins on the server report. For example,ci: "true"on a test server keeps its events out of real-installation figures. When an event already has a tag with the same name, the event's own tag wins (#182) - Every usage event now includes the plugin version, not only the startup event (#183)
Version
v2.5.0 → 2.6.0 — MINOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: Nothing here breaks an existing server. No data format, command arguments, config key meaning or permission default changes. The StorageService package move and the constructor changes are internal wiring and do not change behaviour. The storage-path signal comes from the Java source file moving, not from the on-disk data location. The release adds new behaviour (an optional server-wide tags: block for usage reporting, a version tag on every usage event, and support for renamed constants on Minecraft 1.20.5+) along with bug fixes, so it stays at the minor floor.
- minor: storage path changed: src/main/java/dansplugins/simpleskills/storage/StorageService.java
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- public class removed: dansplugins.simpleskills.services.StorageService
- public class added: dansplugins.simpleskills.storage.StorageService
- public class added: dansplugins.simpleskills.utils.RenamedConstants
- dansplugins.simpleskills.commands.ForceCommand: removed/changed public dansplugins.simpleskills.commands.ForceCommand(dansplugins.simpleskills.playerrecord.PlayerRecordRepository, dansplugins.simpleskills.skill.SkillRepository, dansplugins.simpleskills.config.ConfigService);
- dansplugins.simpleskills.commands.ForceCommand: added public dansplugins.simpleskills.commands.ForceCommand(dansplugins.simpleskills.playerrecord.PlayerRecordRepository, dansplugins.simpleskills.skill.SkillRepository, dansplugins.simpleskills.config.ConfigService, dansplugins.simpleskills.storage.StorageService);
- dansplugins.simpleskills.listeners.WorldSaveEventListener: removed/changed public dansplugins.simpleskills.listeners.WorldSaveEventListener(dansplugins.simpleskills.services.StorageService, dansplugins.simpleskills.logging.Log);
- dansplugins.simpleskills.listeners.WorldSaveEventListener: added public dansplugins.simpleskills.listeners.WorldSaveEventListener(dansplugins.simpleskills.storage.StorageService, dansplugins.simpleskills.logging.Log);
- dansplugins.simpleskills.trace.TraceClient: removed/changed public static dansplugins.simpleskills.trace.TraceClient$Builder builder(java.lang.String, java.lang.String);
- dansplugins.simpleskills.trace.TraceClient: added public static dansplugins.simpleskills.trace.TraceClient$Builder builder(java.lang.String, java.lang.String, java.lang.String);
- dansplugins.simpleskills.trace.TraceClient: added public static final java.lang.String VERSION;
</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
v2.5.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.5.0
A server on 2.4.1 can drop this jar in without touching its data or commands. Two things will be noticed on the first start: the plugin now sends anonymous usage events (plugin name, version, command names) to the author's trace server unless turned off, and the console will log an "Outdated config.yml" error until config-version is set to 0.2. Beyond that, this release closes a Silk Touch experience-farming exploit, makes Hardiness level from mob and player hits as it always should have, honours the configured experience factor and max level, saves progress whenever the server saves its worlds, and adds a per-skill switch to turn off each skill's benefit while keeping its levelling.
Changes
Skills and gameplay
- Block-based skills (Mining, Digging, Quarrying, Lumberjack, Farming, Floriculture) no longer grant experience for blocks a player placed, closing the place-and-re-mine exploit with Silk Touch-harvested ores (#146)
- Hardiness now triggers on damage from mobs, other players, projectiles and blocks such as cactus or magma, not only from environmental damage (#156)
- The
defaultExperienceIncreaseFactoranddefaultMaxLevelsettings are now actually applied; previously the factor was always 1.2 and/ss infoalways reported a max level of 100 (#160) - Every skill's benefit can be turned off individually with a new
<skill>BenefitEnabledkey while its experience gain continues; missing keys default to on (#138, #168)
Persistence
- Player records are saved whenever the server saves a world (
/save-allor the server's own autosave), so a crash loses at most the progress since the last world save (#162)
Usage reporting
- The plugin reports startup and command usage to
https://trace.danielstephenson.dev, off the main thread and never blocking a tick. It can be turned off per plugin (usage-reporting.enabled: falseinconfig.yml), server-wide (enabled: falseinplugins/trace/config.yml, created on first start), or via theTRACE_USAGE_REPORTING=off/DO_NOT_TRACK=1environment variables. The console states on every start whether reporting is on (#167, #170)
Fixes
- Startup on Minecraft 26.x no longer fails during material initialisation (#164)
- The minimum-version check works again; it previously threw on every startup and could never disable the plugin on an unsupported server (#166)
- A
message.ymlfrom an older release no longer causes skill triggers to fail on keys it is missing; bundled defaults fill the gaps without overwriting customisations (#148) - Crafting no longer throws
IllegalArgumentExceptionon recipes the server cannot resolve, such as certain merge and repair crafts (#147) - Skills no longer retain every event they handle, fixing a steady memory leak on long-running servers (#152)
Upgrade notes
- Decide whether you want usage reporting. It is on by default. To turn it off for this plugin, set
usage-reporting.enabled: falseinplugins/SimpleSkills/config.yml(the block is written into an existing config on first start). To turn it off for every plugin that reports to trace, setenabled: falseinplugins/trace/config.yml. - Set
config-version: 0.2inconfig.ymlto silence the "Outdated config.yml" error. The new*BenefitEnabledkeys are optional; add them from the bundledconfig.ymlif you want to toggle a skill's benefit. - If you changed
defaultExperienceIncreaseFactorfrom1.2, be aware that value now takes effect and players' levelling curve will change accordingly. - Servers older than Minecraft 1.13 will now have the plugin disabled at startup instead of failing silently later.
Version
2.4.1 → 2.5.0 — MINOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: Nothing here changes an existing server's data format, command syntax, permission defaults, or the meaning of an existing config key. The usage-reporting block, the per-skill benefit toggles, the world-save persistence, and the wider Hardiness triggers are new behaviour or new data written, which is minor. The experience-factor fix (#160) does read a key the plugin previously ignored, and the config-version bump will log an 'outdated config.yml' error on upgraded servers, but both are bug fixes to make documented settings work rather than incompatible changes; the removed Triggers enum was unreferenced and is visible to the mechanical check. The pom carries 3.0.0-SNAPSHOT, but the floor rules are about compatibility, so minor stands.
- minor: default config key added: athleteBenefitEnabled
- minor: default config key added: boatingBenefitEnabled
- minor: default config key added: breedingBenefitEnabled
- minor: default config key added: cardioBenefitEnabled
- minor: default config key added: craftingBenefitEnabled
- minor: default config key added: diggingBenefitEnabled
- minor: default config key added: duelingBenefitEnabled
- minor: default config key added: enchantingBenefitEnabled
- minor: default config key added: farmingBenefitEnabled
- minor: default config key added: fishingBenefitEnabled
- minor: default config key added: floricultureBenefitEnabled
- minor: default config key added: glidingBenefitEnabled
- minor: default config key added: hardinessBenefitEnabled
- minor: default config key added: lumberjackBenefitEnabled
- minor: default config key added: miningBenefitEnabled
- minor: default config key added: monsterHuntingBenefitEnabled
- minor: default config key added: pyromaniacBenefitEnabled
- minor: default config key added: quarryingBenefitEnabled
- minor: default config key added: ridingBenefitEnabled
- minor: default config key added: strengthBenefitEnabled
- 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: default config value changed: config-version 0.1 → 0.2
- minor: storage path changed: src/main/java/dansplugins/simpleskills/storage/StorageService.java
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- public class removed: dansplugins.simpleskills.enums.Triggers
- public class added: dansplugins.simpleskills.listeners.PlacedBlockListener
- public class added: dansplugins.simpleskills.listeners.WorldSaveEventListener
- public class added: dansplugins.simpleskills.trace.TraceClient
- public class added: dansplugins.simpleskills.trace.TraceClient$Builder
- dansplugins.simpleskills.config.ConfigService: added public boolean isUsageReportingEnabled();
- dansplugins.simpleskills.config.ConfigService: added public java.lang.String getUsageReportingEndpoint();
- dansplugins.simpleskills.config.ConfigService: added public java.lang.String getUsageReportingKey();
- dansplugins.simpleskills.config.ConfigService: added public void saveUsageReportingDefaultsIfNotPresent();
- dansplugins.simpleskills.services.StorageService: removed/changed public void save();
- dansplugins.simpleskills.services.StorageService: added public synchronized void save();
- dansplugins.simpleskills.skill.abs.AbstractSkill: added protected boolean isBenefitEnabled();
- dansplugins.simpleskills.skill.abs.AbstractSkill: added public int getMaxLevel();
- dansplugins.simpleskills.skill.skills.Hardiness: added public void damageByBlockEvent(org.bukkit.event.entity.EntityDamageByBlockEvent);
- dansplugins.simpleskills.skill.skills.Hardiness: added public void damageByEntityEvent(org.bukkit.event.entity.EntityDamageByEntityEvent);
</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 SimpleSkills'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:2.4.1→3.0.0-SNAPSHOT-8-8-2026
Opened as https://github.com/Dans-Plugins/SimpleSkills/pull/150.
Drafted by Claude on behalf of Daniel Stephenson.
What's Changed
- Fix skill activation/deactivation persistence across server restarts by @Copilot in https://github.com/Dans-Plugins/SimpleSkills/pull/104
Full Changelog: https://github.com/Dans-Plugins/SimpleSkills/compare/2.4.0...2.4.1
This release enhances sand digging rewards by adding copper ingot drops, providing additional progression and value for players focused on gathering skills.
What's Changed
- Add copper ingot drops to sand digging rewards
Full Changelog:
https://github.com/Dans-Plugins/SimpleSkills/compare/2.3.0...2.4.0
What's Changed
- Add XP orb drops as additional benefit for block-based gathering skills with comprehensive unit tests by @Copilot in https://github.com/Dans-Plugins/SimpleSkills/pull/123
- Implement autosave functionality to persist data every 5 minutes by @Copilot in https://github.com/Dans-Plugins/SimpleSkills/pull/115
New Contributors
- @Copilot made their first contribution in https://github.com/Dans-Plugins/SimpleSkills/pull/108
Full Changelog: https://github.com/Dans-Plugins/SimpleSkills/compare/2.2.1...2.3.0
What's Changed
- Sync develop w/ main (6/14/2025) by @dmccoystephenson in https://github.com/Dans-Plugins/SimpleSkills/pull/95
- Handle NMS Check Exceptions & Improve Logging by @dmccoystephenson in https://github.com/Dans-Plugins/SimpleSkills/pull/96
- Develop by @dmccoystephenson in https://github.com/Dans-Plugins/SimpleSkills/pull/99
Full Changelog: https://github.com/Dans-Plugins/SimpleSkills/compare/2.2.0...2.2.1
Changes
- Added test container
- Renamed Logger to Log
- Expanded logging
- Records are now created for players upon logging into the server (if they don't have one)
Testing
Skill leveling was verified to work on a 1.21.4 test server.
What's Changed
- add XSeries and update Ponder by @VoChiDanh in https://github.com/Dans-Plugins/SimpleSkills/pull/74
- Update skill names by @Mr-Deej in https://github.com/Dans-Plugins/SimpleSkills/pull/76
- Update Message File by @VoChiDanh in https://github.com/Dans-Plugins/SimpleSkills/pull/78
- Moving away from the Singleton pattern. by @dmccoystephenson in https://github.com/Dans-Plugins/SimpleSkills/pull/79
- Data Repositories, Formula Modification & Custom Metrics by @dmccoystephenson in https://github.com/Dans-Plugins/SimpleSkills/pull/83
New Contributors
- @Mr-Deej made their first contribution in https://github.com/Dans-Plugins/SimpleSkills/pull/76
Full Changelog: https://github.com/Dans-Plugins/SimpleSkills/compare/v2.0...2.1.0
@CallumJohnson has massively improved the project. Thanks to him, the plugin now has:
- added skills
- reworked skill creation
- an event-trigger system for new skills
- added rewards for each skill
- tidied up command output
It should be noted that save files from pre-v2.0 are not compatible with this version.
Changes in SimpleSkills v1.3
- Renamed the wipe command to the force command and made wipe a sub-command.
- Added the force activate command.
- Added the force deactivate command.
Changes in v1.2.1
- Added the config command.
- Skills will now only be added if they are active.
- Added deepslate to the associated materials for the quarrying skill.
Changes in SimpleSkills v1.2
- VoChiDanh expanded support for versions 1.13 - 1.18 using NMS.
- VoChiDanh made some other improvements.
- Added some new config options.
Changes in SimpleSkills v1.1
- Updated Ponder to v0.8
- Implemented a local config service.
- Added the Pyromania skill.
- Added the debugMode config option.
- Added the defaultMaxLevel config option.
- Added the defaultBaseExperienceRequirement config option.
- Added the defaultExperienceIncreaseFactor config option.
Changes in SimpleSkills v1.0.2
- Players will now only receive experience if the associated event is not cancelled by another plugin.
Changes in SimpleSkills v1.0.1
- Fixed internal error occurring when attempting to view the top player of a skill that no one has learned.
Changes in SimpleSkills v1.0
- Enforced the max level when incrementing experience.
- Added the top command.
Changes in SimpleSkills v0.11
- Renamed the Double Drop benefit to Resource Extraction.
- Added the Damage Negation benefit.
- Added the Damage Reduction benefit.
- Added the Strength skill.
- Added the Monster Hunting skill.
- Added a statistic to the output of the stats command.
Changes in SimpleSkills v0.10
- Added the Boating skill.
- Added the Horseback Riding skills
- Added the Animal Breeding skill.
- Players can now gain Cardio experience by swimming.
- It should now be possible to gain Dueling experience.
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.
