Dan's Set Home
0
First released June 9, 2020 · Last updated October 14, 2026
Downloads from this site
76 total
7 latest (v1.5.0)
Allows players to set and teleport to home locations.
Usage
Last reported in use 9 hours ago
72 server starts in the last 30 days
Server starts per day
Versions in use, by share of server starts
1.4.0
71% · 51 starts
1.3.0
22% · 16 starts
2.0.0-SNAPSHOT-8-8-2026
7% · 5 starts
Usage reported by trace — how it works. CI and test servers are excluded.
Verified before release
Version 1.5.0 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 5d26c14e9349bece23464216ae262b40e6b044a7.
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 danssethome --experimentalReturn to published releases with /dpm get danssethome --stable.
1.5.0
For a server running v1.4.0, this release is safe to drop in. Homes, commands, permissions and config keys all work as before. The one behaviour change is in usage reporting. If reporting is on, each event now includes a random server ID so that distinct servers can be counted. On first start the ID is generated and added as a server-id: line to plugins/trace/config.yml. The ID is a random UUID and does not identify any person, account or IP address. Servers that have turned usage reporting off, through the plugin config, the server-wide plugins/trace/config.yml, or DO_NOT_TRACK / TRACE_USAGE_REPORTING, never generate, read or write an ID. Minecraft 26.3 is now supported.
Changes
Compatibility
- Added Minecraft 26.3 to the supported versions (#104).
Usage reporting
- Each usage-reporting event now includes a random server ID as an
installtag. It is stored on theserver-id:line ofplugins/trace/config.yml, which is appended once below an explanatory comment, and every plugin on the server shares it. The rest of the file is left exactly as it was. Delete the line to get a new ID (#102). - The startup message and the
config.ymlcomments now mention the random server ID (#103). The details link now points to https://danielstephenson.dev/usage-reporting (#105).
Version
v1.4.0 → 1.5.0 — MINOR. Mechanical floor from comparing the two jars: PATCH.
Judgment: The vendored trace client (#102) now sends a new piece of data with every usage-reporting event: a random server ID. On first start with reporting enabled, it also appends a new server-id: line to plugins/trace/config.yml. That is new data being sent and written to disk, which the API-only check rated as additive INFO, so this goes up to minor. Nothing breaks: the commands, permissions, homes data format and the meaning of existing config keys are unchanged, and every existing opt-out still works and also stops the ID from being generated or written.
- no interface or storage difference observed between the jars
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- dansplugins.sethomesystem.trace.TraceClient: added public java.lang.String installId();
- dansplugins.sethomesystem.trace.TraceClient: added public static java.lang.String installIdFromFile(java.io.File);
- dansplugins.sethomesystem.trace.TraceClient$Builder: added public dansplugins.sethomesystem.trace.TraceClient$Builder installId(java.lang.String);
- dansplugins.sethomesystem.trace.TraceClient$Builder: added public dansplugins.sethomesystem.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.4.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
1.4.0
For a server running v1.3.0, this is a drop-in upgrade. Home records on disk use the same format, and commands, permissions and config keys are unchanged. Homes that fail to save, load or migrate now show up as warnings in the server log instead of quietly going missing. Players who have not set a home get a clear message from /home. If usage reporting is on, every event now includes the plugin version. You can also tag all reports from a server, for example to mark a test server.
Changes
Home storage
- When a home record or the record index can't be written, the server log shows a warning naming the player and file. Before, the failure was silent. (#89)
- Warnings are logged for a home record that can't be read, a record whose coordinates are malformed, and a record that has a world but is missing coordinates. A player who has never run
/sethomedoes not trigger a warning. (#89) - If moving the legacy
Medieval-Set-Homefolder fails, the log lists each file that couldn't be moved and says how many were left behind. The move is not tried again, so those files have to be moved by hand. (#89) - On a first start with no saved homes, the plugin no longer tries to read a missing index file. (#89)
Commands
/homewith no home set now says "You don't have a home set." Before, it said "Home location was null. Please contact the developer."/home <player>for a player with no home now says "That player doesn't have a home set." (#93)
Usage reporting
- Every usage-reporting event now carries the plugin version, not just the startup event. (#96)
- The shared
plugins/trace/config.ymlfile can now hold an optionaltags:block. Its tags are added to every event that plugins on the server report, for exampleci: "true"on a test server. When this release creates the file, it includes the example commented out. An existing file is never rewritten, so to use tags, add the block yourself. (#95)
Version
v1.3.0 → 1.4.0 — MINOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: The removed or changed public signatures on HomeRecord.save/load, the StorageService constructor and TraceClient.builder belong to plugin-internal classes, not to a published API, and the mechanical check already recorded them. The on-disk home record format is the same, and so are the commands, arguments, permissions and config keys. What changed for operators: storage failures are now logged, /home shows a clearer message, every usage event carries a version tag, and plugins/trace/config.yml can hold an optional server-wide tags block. These are new behaviour and new data sent, with nothing that breaks an existing server, so the minor floor stays.
- minor: storage path changed: src/main/java/dansplugins/sethomesystem/objects/HomeRecord.java
- minor: storage path changed: src/main/java/dansplugins/sethomesystem/services/StorageService.java
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- dansplugins.sethomesystem.objects.HomeRecord: removed/changed public void load(java.io.File);
- dansplugins.sethomesystem.objects.HomeRecord: removed/changed public void save(java.io.File);
- dansplugins.sethomesystem.objects.HomeRecord: added public void load(java.io.File, java.util.logging.Logger);
- dansplugins.sethomesystem.objects.HomeRecord: added public void save(java.io.File, java.util.logging.Logger);
- dansplugins.sethomesystem.services.StorageService: removed/changed public dansplugins.sethomesystem.services.StorageService(dansplugins.sethomesystem.data.PersistentData, java.io.File);
- dansplugins.sethomesystem.services.StorageService: added public dansplugins.sethomesystem.services.StorageService(dansplugins.sethomesystem.data.PersistentData, java.io.File, java.util.logging.Logger);
- dansplugins.sethomesystem.trace.TraceClient: removed/changed public static dansplugins.sethomesystem.trace.TraceClient$Builder builder(java.lang.String, java.lang.String);
- dansplugins.sethomesystem.trace.TraceClient: added public static dansplugins.sethomesystem.trace.TraceClient$Builder builder(java.lang.String, java.lang.String, java.lang.String);
- dansplugins.sethomesystem.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
v1.3.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
1.3.0
A server on 1.2.0 can drop this jar in and keep its homes: on first start the plugin moves any records left in plugins/Medieval-Set-Home into its own data folder and logs how many it moved. Two things are new that an operator should know about. The /home teleport delay is now configurable in config.yml, and the plugin now reports anonymous usage events (plugin name, version and command names — nothing about players or the server) to the author's trace server. Reporting is on by default, is announced in the console on every startup, and can be turned off per plugin or for the whole server.
Changes
Homes and storage
- Home records are now stored in the plugin's own data folder instead of a hard-coded
plugins/Medieval-Set-Homepath; records in the old folder are migrated automatically on startup, and the migration never overwrites a data folder that is already in use (#78) - A home set on the x = 0 or z = 0 axis is no longer discarded when it is loaded from disk (#72)
/sethomenow works for players who were already online when the plugin was enabled, instead of silently doing nothing (#72)/dsh forceloadnow loads records from disk (it previously saved), and/dsh forcesavenow writes the filename index along with the records so a save is complete (#65)
Configuration
- New
config.ymlwithteleport-delay-seconds(default 3, matching the previous hard-coded delay) controlling how long a player must stand still before/hometeleports them (#61)
Usage reporting
- The plugin sends a small usage event on startup and on each command, off the main thread, bounded, and dropped silently if the server is unreachable (#80)
- Reporting settings ship in the bundled
config.ymland are read through to those defaults, so aconfig.ymlfrom before this release keeps working and gains theusage-reportingblock on first start (#81, #82) - Every startup logs whether reporting is on, what is sent and how to turn it off; a server-wide switch at
plugins/trace/config.ymlis created on first start and turns reporting off for every plugin that uses it (#84)
Messages
- Player-facing messages now say "Dans Set Home", and an unrecognised
/dshsubcommand points at/dsh help(#75)
Upgrade notes
- Usage reporting is enabled by default. To turn it off for this plugin, set
usage-reporting.enabled: falseinplugins/<plugin folder>/config.yml; to turn it off for every plugin on the server, setenabled: falseinplugins/trace/config.yml. The environment variablesTRACE_USAGE_REPORTING=offorDO_NOT_TRACK=1also turn it off. Check the startup log line to confirm which applies. - Home records are moved out of
plugins/Medieval-Set-Homeon first start. Take a backup of that folder before upgrading if you want a copy; after the migration the plugin reads and writes only its own data folder. - If you had previously changed the teleport delay by other means, set
teleport-delay-secondsin the newconfig.yml; the default of 3 seconds matches 1.2.0.
Version
1.2.0 → 1.3.0 — MINOR. Mechanical floor from comparing the two jars: MINOR.
Judgment: Nothing here breaks a 1.2.0 server in a way the mechanical check missed. The move of home records from plugins/Medieval-Set-Home into the plugin's own data folder ships with an automatic, guarded migration on first start, so existing homes carry over. Usage reporting, the teleport-delay key and the server-wide trace switch are new, opt-out behaviour and new data written; the /dsh forceload and /dsh forcesave changes restore the behaviour those commands were always documented to have rather than changing their contract. The pom's 2.0.0-SNAPSHOT label is the maintainers' intent, not evidence of a break, so the floor stands.
- minor: default config key added: teleport-delay-seconds
- 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/sethomesystem/objects/HomeRecord.java
- minor: storage path changed: src/main/java/dansplugins/sethomesystem/services/StorageService.java
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- public class added: dansplugins.sethomesystem.config.ConfigManager
- public class added: dansplugins.sethomesystem.trace.TraceClient
- public class added: dansplugins.sethomesystem.trace.TraceClient$Builder
- dansplugins.sethomesystem.commands.HomeCommand: removed/changed public dansplugins.sethomesystem.commands.HomeCommand(dansplugins.sethomesystem.data.PersistentData, dansplugins.sethomesystem.MedievalSetHome);
- dansplugins.sethomesystem.commands.HomeCommand: added public dansplugins.sethomesystem.commands.HomeCommand(dansplugins.sethomesystem.data.PersistentData, dansplugins.sethomesystem.MedievalSetHome, dansplugins.sethomesystem.config.ConfigManager);
- dansplugins.sethomesystem.objects.HomeRecord: removed/changed public void load(java.lang.String);
- dansplugins.sethomesystem.objects.HomeRecord: removed/changed public void save();
- dansplugins.sethomesystem.objects.HomeRecord: added public void load(java.io.File);
- dansplugins.sethomesystem.objects.HomeRecord: added public void save(java.io.File);
- dansplugins.sethomesystem.services.CommandService: removed/changed public dansplugins.sethomesystem.services.CommandService(dansplugins.sethomesystem.data.PersistentData, dansplugins.sethomesystem.MedievalSetHome, dansplugins.sethomesystem.services.StorageService);
- dansplugins.sethomesystem.services.CommandService: added public dansplugins.sethomesystem.services.CommandService(dansplugins.sethomesystem.data.PersistentData, dansplugins.sethomesystem.MedievalSetHome, dansplugins.sethomesystem.services.StorageService, dansplugins.sethomesystem.config.ConfigManager);
- dansplugins.sethomesystem.services.StorageService: removed/changed public dansplugins.sethomesystem.services.StorageService(dansplugins.sethomesystem.data.PersistentData);
- dansplugins.sethomesystem.services.StorageService: added public dansplugins.sethomesystem.services.StorageService(dansplugins.sethomesystem.data.PersistentData, java.io.File);
- dansplugins.sethomesystem.services.StorageService: added public int migrateLegacyDataFolder();
- dansplugins.sethomesystem.services.StorageService: added public java.io.File getLegacyDataFolder();
</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 Dans-Set-Home'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/Dans-Set-Home/pull/66.
Drafted by Claude on behalf of Daniel Stephenson.
What's Changed
- Operators can now teleport to other players' homes. by @dmccoystephenson in https://github.com/Dans-Plugins/Dans-Set-Home/pull/58
- Modified the output of the help command. by @dmccoystephenson in https://github.com/Dans-Plugins/Dans-Set-Home/pull/59
Full Changelog: https://github.com/Dans-Plugins/Dans-Set-Home/compare/1.1.0...1.2.0
What's Changed
- Moved away from using the Singleton pattern. by @dmccoystephenson in https://github.com/Dans-Plugins/Dans-Set-Home/pull/57
Full Changelog: https://github.com/Dans-Plugins/Dans-Set-Home/compare/v1.0...1.1.0
Changes in Medieval Set Home v1.0
- Made sure that the plugin worked on 1.17.
- Refactored the plugin to use a CommandInterpreter class.
- Refactored the plugin to use a StorageManager class.
- Refactored the plugin to use a PersistentData class.
- Refactored the plugin to use an EventRegistry class.
- Abstracted out the PlayerJoinEvent handler method to its own class.
- Abstracted out the SetHome command into its own command class.
- Abstracted out the Home command into its own command class.
- Abstracted out the Help command into its own command class.
- Abstracted out the Force Save command into its own command class.
- Abstracted out the Force Load command into its own command class.
- Created permissions for every command, put them in the plugin.yml and designated which ones should be default.
- Integrated bStats with the plugin.
Changes in Medieval Set Home v0.6
- added /msh help command
- added /msh forcesave command for the console
- added /msh forceload command for the console
- fixed some print statements
This plugin allows you to
- set a home with /sethome
- go to your home with /home
Related plugins
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.
