Skip to main content
Dan's Plugins Community
HomeNewsGuidesLeaderboardAboutRoad MapCommissionsDev PortalAccount
All plugins
Dan's Set Home icon

Dan's Set Home

0

4 servers
Latest: v1.5.0
146 downloads on GitHub
Tested on Minecraft 26.2
1,537 downloads on SpigotMC

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.

world
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

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.

Usage of every plugin


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 GitHub
Development build
Pre-release
October 14, 2026· 4 downloads

Automated 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 --experimental

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

Dans-Set-Home-1.5.1-SNAPSHOT.jar (58.1 KB)

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 install tag. It is stored on the server-id: line of plugins/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.yml comments 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.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.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 /sethome does not trigger a warning. (#89)
  • If moving the legacy Medieval-Set-Home folder 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

  • /home with 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.yml file can now hold an optional tags: block. Its tags are added to every event that plugins on the server report, for example ci: "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.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.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-Home path; 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)
  • /sethome now works for players who were already online when the plugin was enabled, instead of silently doing nothing (#72)
  • /dsh forceload now loads records from disk (it previously saved), and /dsh forcesave now writes the filename index along with the records so a save is complete (#65)

Configuration

  • New config.yml with teleport-delay-seconds (default 3, matching the previous hard-coded delay) controlling how long a player must stand still before /home teleports 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.yml and are read through to those defaults, so a config.yml from before this release keeps working and gains the usage-reporting block 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.yml is 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 /dsh subcommand points at /dsh help (#75)

Upgrade notes

  • Usage reporting is enabled by default. To turn it off for this plugin, set usage-reporting.enabled: false in plugins/<plugin folder>/config.yml; to turn it off for every plugin on the server, set enabled: false in plugins/trace/config.yml. The environment variables TRACE_USAGE_REPORTING=off or DO_NOT_TRACK=1 also turn it off. Check the startup log line to confirm which applies.
  • Home records are moved out of plugins/Medieval-Set-Home on 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-seconds in the new config.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

Full Changelog: https://github.com/Dans-Plugins/Dans-Set-Home/compare/1.1.0...1.2.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
BlueMap Medieval Factions

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

Dan's Spawn System

Allows players to use signs to select a custom spawn in their world.

Nether Access Controller

Allows operators to control who has access to the nether.

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