Set Homes gives every player a menu of their homes. Left-click one to teleport. Right-click it to rename it, move it, change its icon, or delete it.
Source | Report a bug | Donate | Discord
- A menu, or a list of commands. Homes live in a chest-style GUI. Players open it with
/homesor by right-clicking the configured "Home Item". - Every home gets its own icon. Pick any Minecraft item when you create a home, or change it later to whatever you are holding. A base, a mine and a farm stop looking identical.
- Rename, move and delete in-game. Right-click any home to manage it. Deleting always asks first, so nobody loses a base to a misclick.
- Teleports that do not kill you. Set Homes checks the destination and relocates you to the nearest safe spot rather than dropping you into blocks, lava, or a fall.
- Switch without losing anything. One command imports every home from EssentialsX or Set Homes v1, and shows you exactly what it will do before it does it.
- Per-rank home limits. Give donors more homes than default players with LuckPerms groups, or set one server-wide limit.
- Permissions you can change from the config. Every
sh2.*node has a sensible default, and any of them can be moved inconfig.yml. No permissions plugin required.
- Drop the jar into your
pluginsfolder and restart the server. - Run
/sethome basewhere you are standing. - Run
/homesand click it.
That is genuinely the whole setup. Player permissions default to granted, so your players can create and use homes the moment the plugin loads. See Permissions if you want to change that.
| Command | What it does |
|---|---|
/sethome [name] |
Creates a home where you stand. |
/home [name] |
Teleports you to a home. |
/homes |
Opens the homes menu. |
/delhome <name> |
Deletes a home. |
/uhome <name> |
Moves one of your homes to where you are standing. |
Names are optional on /sethome and /home. Leave the name off and both use a home called default. Home names are unique per player and ignore case, so base and Base are the same home.
All commands + alias
| Command | Long form | What it does |
|---|---|---|
/sethome [name] [icon] [description] |
/create-home |
Creates a home where you stand. With no name it is called default. |
/home [name] |
/go-home |
Teleports you to a home. With no name it goes to default. |
/homes |
- | Opens the homes menu. |
/delhome <name> |
/delete-home |
Deletes a home. |
/uhome <name> |
/move-home |
Moves one of your homes to where you are standing. |
/list-homes |
- | Lists your homes in chat. Click a name to teleport. |
/give-homes-item |
- | Gives you the item that opens the menu. |
On /sethome, a second word that names a real item becomes the icon, and everything after it is the description. So /sethome base stone house creates base with a stone icon and the description "house". If you wanted the whole phrase as the description, put d in the icon position: /sethome base d stone house. The reply names the icon it chose, so there is never any guessing.
Admin commands
| Command | What it does |
|---|---|
/set-max-homes [group] <number> (alias /setmax) |
Sets the home limit, per LuckPerms group or server-wide. |
/get-player-homes <player> |
Lists another player's homes. |
/home-of <player> <home> (long form /go-player-home) |
Teleports you to another player's home. |
/delhome-of <player> <home> (long form /delete-player-home) |
Deletes another player's home. |
/uhome-of <player> <home> (long form /move-player-home) |
Moves another player's home to where you are standing. |
/blacklist add <world...> (alias /add-to-blacklist) |
Stops homes being set in a world. |
/blacklist remove <world...> (alias /remove-from-blacklist) |
Lifts the restriction again. |
/blacklist list (alias /get-blacklisted-dimensions) |
Shows which worlds are blacklisted. |
/import-homes <sethomes|essentialsx> [confirm] |
Imports homes from another plugin. Dry-run unless confirm is given. |
The three blacklist commands are one command with three aliases. Nothing you already type changes: /add-to-blacklist world_nether still adds that world, and /get-blacklisted-dimensions still lists them. Give worlds by the name the server knows them by, in lower case, which on a default setup means world, world_nether and world_the_end.
The three commands that take a player accept anyone who has saved homes, whether or not they are online. Tab completion only offers online players, because there is no lookup for every stored name.
Open your homes with /homes, or right-click the homes item. Then:
| Action | What happens |
|---|---|
| Left-click a home | Teleports you there |
| Right-click a home | Opens the management menu below |
| Rename | Opens an anvil prompt for the new name |
| Move home here | Repoints the home at where you are standing |
| Set icon to held item | The home's icon becomes whatever you are holding |
| Delete | Asks for confirmation first |
The management menu is controlled by sh2.manage-homes, which defaults to granted.
Changing a home's icon works the same way. Hold the item you want and click Set icon to held item:
By default players wait three seconds before a teleport fires, and moving cancels it, so a home is not a free escape from a fight. Set delay: 0 for instant teleports, or cancelOnMove: false to let players walk during the countdown.
Before it drops anyone anywhere, Set Homes checks the destination is safe to stand in. If a home has been built over, flooded with lava, or left hanging above a drop, the player is moved to the nearest safe spot instead, or the teleport is canceled and they are told why. Turn it off with teleportSafety: false.
Nothing here needs a permissions plugin. Out of the box, every player can create, list, teleport to and manage their own homes, and operators get everything else.
Two bundles group the nodes, so you can move a whole role in one line:
| Bundle | Default | Contains |
|---|---|---|
sh2.player |
everyone | sh2.create-home, sh2.go-home, sh2.list-homes, sh2.delete-home, sh2.teleport, sh2.give-homes-item, sh2.manage-homes, sh2.move-home |
sh2.admin |
OP | sh2.player, plus every admin and bypass node |
Full permission list
| Permission | Default | Allows |
|---|---|---|
sh2.create-home |
everyone | Creating homes |
sh2.go-home |
everyone | Using the go-home command |
sh2.teleport |
everyone | Actually teleporting to a home |
sh2.list-homes |
everyone | Listing homes in chat, and /homes |
sh2.delete-home |
everyone | Deleting your own homes |
sh2.give-homes-item |
everyone | Getting the menu item |
sh2.manage-homes |
everyone | Renaming, moving, re-iconing and deleting from the GUI |
sh2.move-home |
everyone | Moving your own home with /uhome |
sh2.set-max-homes |
OP | Setting home limits |
sh2.get-player-homes |
OP | Viewing another player's homes |
sh2.go-player-home |
OP | Teleporting to another player's home |
sh2.delete-player-home |
OP | Deleting another player's home |
sh2.move-player-home |
OP | Moving another player's home |
sh2.add-to-blacklist |
OP | Blacklisting a world |
sh2.remove-from-blacklist |
OP | Un-blacklisting a world |
sh2.get-blacklisted-dimensions |
OP | Listing blacklisted worlds |
sh2.import-homes |
OP | Importing from another plugin |
sh2.update-notify |
OP | Being told on join that a newer release exists |
sh2.bypass-max-homes |
OP | Creating homes past the configured maximum, whether the limit is server-wide or per group |
sh2.bypass-blacklist |
OP | Creating a home in a blacklisted world, moving a home into one, and teleporting to a home already in one |
sh2.bypass-teleport-delay |
OP | Teleporting with no countdown, and not being canceled by moving |
These nodes are granted by the bundles, which is why denying a bundle takes its whole set away at once. Granting or denying an individual node works exactly as the table describes.
Note that sh2.move-home sits in sh2.player, not behind sh2.manage-homes. If you took sh2.manage-homes away to stop players relocating their homes, deny sh2.move-home as well or /uhome gives the ability back.
Uncomment the permissions: block in config.yml and list the nodes you want to move:
permissions:
sh2.manage-homes: false
sh2.get-player-homes: true
sh2.import-homes: opAccepted values are true (everyone), false (nobody), op (operators only) and not-op (everyone except operators). A deny applies to operators too, so use op if you want a node gone for everyone except them.
You can name a bundle here as well as a single node, so sh2.player: false moves all eight player nodes in one line. There is no wildcard, so list whatever you want changed. If a line does not seem to take effect, check the server log at startup: anything the plugin could not read is named there.
This only changes a default. If you run LuckPerms or similar, an explicit grant or deny there still wins. The config block decides what happens to a player the permissions plugin says nothing about.
Take care with sh2.import-homes. Anyone who can run /import-homes <source> confirm can write homes for every player on the server, so granting it to everyone is a real risk.
Other ways to set permissions
With LuckPerms, the equivalent one-liner is:
/lp group default permission set sh2.player true
Without touching config.yml at all, the server's own permissions.yml can wrap the nodes in a rank of your own:
myserver.moderator:
default: false
children:
sh2.player: true
sh2.get-player-homes: true
sh2.go-player-home: trueThen grant myserver.moderator to whoever should have it.
Settings live in plugins/SetHomesTwo/config.yml on your server, written the first time the plugin starts. Edit it in any text editor, save, then restart the server. There is no in-game reload command, so changes do not apply until the server comes back up.
The file is commented throughout, and every message the plugin sends can be rewritten in it. These are the settings most servers actually change:
| Setting | Default | What it does |
|---|---|---|
delay |
3 |
Seconds you must stand still before teleporting. 0 is instant. |
cancelOnMove |
true |
Cancel the teleport if the player moves during the countdown. |
teleportSafety |
true |
Relocate to the nearest safe spot instead of teleporting into danger. |
maxHomeEnabled |
false |
Turn home limits on. |
maxHomesType |
groups |
singular for one server-wide limit, groups for per-rank limits. |
openHomeItem |
compass |
The item players right-click to open the menu. |
defaultHomeItem |
white_wool |
Icon a home gets when the player names none. |
inventoryTitle |
Your homes |
Title of the homes menu. |
maxHomeNameLength |
32 |
Longest home name allowed. |
permissions |
commented out | Changes the default of any sh2.* node. See Changing permissions. |
Per-rank limits need LuckPerms and maxHomesType: groups.
That table is only the common settings. For the complete list, see default-config.yml, the file your config.yml is first written from. Every setting the plugin has is in there, commented in place.
Your config.yml is written once and never touched again. Installing the plugin, updating the jar and restarting the server all leave the file exactly as you last saved it, so a setting added in a later release will not appear in a file written by an earlier one. Anything missing falls back to its default, so nothing breaks, but you cannot change a setting you cannot see.
To pick a new setting up, copy the key out of default-config.yml into your file and restart. To start clean, rename your config.yml and restart. A fresh one is written with everything in it, and you can copy your old values across.
Your players keep their homes. The old plugin does not even need to be running, because the importer reads its data files directly.
- Stop the server.
- Move the old plugin's jar out of
plugins/and keep it somewhere safe rather than deleting it. That jar is your way back. Leave its data folder exactly where it is: the importer readsplugins/SetHomes/orplugins/Essentials/userdata/and never writes to either. - Start the server. Set Homes creates its own folder and an empty database. No homes are visible yet, and the console tells you how many are waiting.
- Run
/import-homes sethomes(or/import-homes essentialsx). This is a preview only. It reports how many homes it would import and warns about any it would skip, and changes nothing. - Happy with the numbers? Run it again with
confirmon the end. - Paste any settings the config report listed into
plugins/SetHomesTwo/config.yml, then restart the server. Nothing is written there automatically, and there is no in-game reload, so a pasted setting does nothing until the server comes back up.
The jar has to move before the import, not after. Set Homes v2 will not start while a Set Homes v1 jar is still in plugins/. Both plugins provide /sethome, /home and /delhome, and v1 usually takes priority and wins those names regardless the load order.
You are reminded until you import. While plugins/SetHomes/homes.yml still holds homes and none have been imported here, every startup says so in the console, and anyone holding sh2.import-homes gets the same reminder in chat on join. Both stop for good once any home exists here.
Existing homes are never overwritten, so re-running the import is always safe. Homes in worlds that no longer exist are skipped with a warning naming the world.
Set Homes v1 told base and Base apart, while home names here ignore case. A player holding both keeps both: the second is imported under the next free name, so Base arrives as Base2, named in the report and the server log.
You can go back at any time. The old plugin's data folder is never written to, so rolling back is mostly putting its jar back.
Rolling back to your old plugin
- Stop the server.
- Put the old plugin's jar back in
plugins/and take the Set Homes jar out. - Start the server. Both data folders are untouched, so the old plugin picks up where it left off.
Homes your players created under Set Homes live only in plugins/SetHomesTwo/database/homes.db, which the old plugin cannot read, so they are invisible while you stay rolled back. Nothing is lost, and they come back with the plugin. Re-import when you return, to pick up anything created in the old plugin meanwhile.
What else the Set Homes v1 import brings across
- The v1 world blacklist, added to your Set Homes v2 blacklist alongside the homes. Re-running never adds a world twice.
- A report of your v1
config.yml, listing any setting that has an equivalent here and the key to put it under. Nothing is written toconfig.ymlautomatically. The table further down has the same mapping for pasting in by hand. - Player names, read from the server's own player list. That means
/get-player-homes,/home-of,/delhome-ofand/uhome-ofwork on an imported player straight away, for anyone this server has seen before. A player the server has never seen imports with no name and is picked up automatically on their first join.
Set Homes v1: what each command and permission became
| Set Homes v1 | Set Homes v2 |
|---|---|
/sethome [name] [description] |
/sethome [name] [icon] [description] |
/home [name] |
/home [name] |
/homes [player] |
/list-homes for your own list, /get-player-homes <player> for someone else's. /homes now opens the menu instead. |
/delhome [name] |
/delhome <name> |
/uhome <name> [description] |
/uhome <name> |
/home-of <player> [home] |
/home-of <player> <home> |
/delhome-of <player> [home] |
/delhome-of <player> <home> |
/uhome-of <player> [home] |
/uhome-of <player> <home> |
/blacklist <add|remove> <world> |
/blacklist <add|remove|list> <world...> |
/setmax <group> <number> |
/setmax, or the long form /set-max-homes |
| v1 permission | v2 permission |
|---|---|
homes.home |
sh2.go-home, plus sh2.teleport to actually arrive |
homes.sethome |
sh2.create-home |
homes.delhome |
sh2.delete-home |
homes.gethomes |
sh2.get-player-homes |
homes.home-of |
sh2.go-player-home |
homes.delhome-of |
sh2.delete-player-home |
homes.uhome |
sh2.move-home |
homes.uhome-of |
sh2.move-player-home |
homes.blacklist_add |
sh2.add-to-blacklist |
homes.blacklist_remove |
sh2.remove-from-blacklist |
homes.blacklist_list |
sh2.get-blacklisted-dimensions |
homes.setmax |
sh2.set-max-homes |
homes.config_bypass |
sh2.bypass-max-homes, sh2.bypass-blacklist and sh2.bypass-teleport-delay |
homes.strike |
Nothing |
homes.* |
sh2.admin |
Worth knowing before you copy a permissions file across:
homes.config_bypassis three nodes now. In v1 it let a player exceed the home limit, set homes in blacklisted worlds, and skip the teleport delay and cooldown, all at once. Grant all threesh2.bypass-*nodes to reproduce that. Nothing is lost on the cooldown, because v2 has no cooldown feature.- Your v1 unnamed home is called
default. The importer files it under that name, and a bare/sethomeor/homeuses the same name, so both keep working exactly as they did./home-of steve defaultreaches an imported unnamed home. /sethometakes a description straight after the name again, as it did in v1. v2 adds an optional icon in between, so a second word naming a real item is read as the icon./sethome base d my main baseforces the default icon and keeps the whole phrase.- The one-letter aliases are not provided. v1 registered
/h,/sh,/dh,/lh,/ho,/dho,/uh,/uho,/bland/sm. If your players are used to them, map them yourself in the server's owncommands.yml. /homesmeans something different. In v1 it printed a chat list. In v2 it opens the homes menu, and/list-homesprints the chat list.
Set Homes v1: config.yml settings and their v2 equivalent
v1 config.yml |
v2 config.yml |
Note |
|---|---|---|
tp-delay |
delay |
direct |
tp-cancelOnMove |
cancelOnMove |
direct |
max-homes.<group> |
maxHomes.<group> |
also set maxHomesType: groups and maxHomeEnabled: true. A v1 value of 0 means unlimited; leave that group out of maxHomes in v2 rather than setting it to 0, which would cap it at zero homes instead. |
max-homes-msg |
maxHomesReached |
direct. v1's § color codes paste in unchanged |
tp-cancelOnMove-msg |
movedWhileTeleporting |
direct. v1's § color codes paste in unchanged |
tp-cooldown |
none | v2 has no cooldown feature |
tp-cooldown-msg |
none | follows the above |
If your v1 server had no permissions plugin, max-homes was never in force. v1 logs Could not connect to a permissions plugin! Config setting "max-homes" will be ignored! at startup and ignores the caps entirely, so the numbers in your v1 config may never have applied to anyone. Copying them across does not newly restrict your players either: Set Homes in groups mode also declines to enforce without LuckPerms, and says so at startup. Install LuckPerms if you want per-rank limits to actually take effect.
How do my players teleport home?
Three ways, all equivalent: /home <name>, opening /homes and left-clicking, or right-clicking the assigned "Home Item" from /give-homes-item.
Only OPs can create homes. How do I let everyone in?
Update to 1.1.0 or later. On older versions every permission defaulted to OP; they now default to granted for players. If you use a permissions plugin that denies unlisted nodes, grant sh2.player, which covers every ordinary player node in one go.
How do I turn a permission off without installing a permissions plugin?
See Changing permissions.
A player says one of their homes shows "Cannot teleport here: dimension blacklisted". Why?
The world that home is in has been blacklisted, so the home is listed but not reachable. Check /blacklist list. Either take the world off the list with /blacklist remove <world>, or move the home somewhere else with /uhome-of <player> <home> while standing where it should go.
How do I give donors more homes than everyone else?
Install LuckPerms, set maxHomeEnabled: true and maxHomesType: groups, then run /set-max-homes <group> <number> for each rank.
Can I run it alongside EssentialsX?
You can, but the two will split three command names between them. EssentialsX declares /sethome, /home and /delhome as its own commands, while Set Homes declares them as aliases of /create-home, /go-home and /delete-home. Bukkit never lets an alias take a name another plugin already owns, so EssentialsX keeps all three whatever the load order, and homes set with them go into EssentialsX's files while /homes reads ours.
Unlike Set Homes v1, EssentialsX does not stop Set Homes from starting, so nothing warns you about the split. If you want Set Homes handling homes, follow the migration steps above, moving the EssentialsX jar out before you import. If you keep EssentialsX for everything else it does, disable those three commands in its own config instead. Set Homes' own names, /homes, /list-homes, /create-home, /go-home and /delete-home, always reach Set Homes either way.
Where are homes stored?
In a SQLite database in plugins/SetHomesTwo/. Nothing external to install and nothing to configure.
- Paper or Spigot 1.21+
- Java 21, which Minecraft 1.21 servers already require
- Optional: LuckPerms, only for per-rank home limits
Found a bug or want a feature? Open an issue on GitHub. It gets seen faster than a comment on this page.
Source | Report a bug | Donate | Discord
- Set Homes Two can now take over from Set Homes v1. /import-homes brings your homes and world blacklist across and lists any v1 config settings that have an equivalent here, the v1 commands and aliases work again, and the plugin tells you at startup when homes are still waiting to be imported.
- Tab completion for /import-homes now offers the import sources and then confirm, instead of suggesting player names on every argument. Usage messages also name the command you actually typed, so /uhome-of now says Usage: /uhome-of rather than naming the full command behind the alias.
- decrease generated jar file size
- If Set Homes v1 homes are sitting in plugins/SetHomes/homes.yml and you have not imported them yet, the console now says so at startup, naming the file, how many homes are waiting and the command to run. Anyone with sh2.import-homes gets the same reminder in chat when they join. Both stop on their own as soon as any home exists here, so an upgraded server can no longer look empty without explanation.
- Added the Set Homes v1 admin commands. /home-of teleports you to another player's home, /delhome-of deletes one, and /uhome-of moves one to where you are standing. /uhome moves one of your own homes. All of them work on players who are offline, as long as they have saved homes, and player and home names now match without regard to case. On a server upgrading from an earlier release, each player has to log in once before the offline lookup can find them.
- /sethome and /home work with no arguments again, creating and finding a home called default, which is the name an unnamed Set Homes v1 home is imported under. /sethome also takes a description straight after the name as it did in v1, so a second word that names an item is read as the icon and the reply tells you which one it chose. Put d in the icon position to keep the whole phrase as the description.
- Tab completion now matches anywhere in a name, not only from the start, so typing net completes to world_nether and ase finds a home called base. Names that start with what you typed are still listed first, so nothing you already do changes.
- /import-homes sethomes now lists any v1 config.yml settings that have a Set Homes Two equivalent, and the key to set each one under, so a migrating admin does not have to discover a changed teleport delay or a vanished per-group home limit by accident. Nothing is written to config.yml automatically; the report just tells you what to paste in.
- Importing from Set Homes v1 no longer loses a home whose name differs only in capitalisation. Set Homes v1 allowed one player to hold both 'base' and 'Base', while home names here ignore case, so the second one is now imported under the next free name such as 'Base2' instead of being silently dropped. The import report and the server log both name it, and the preview now reports the same numbers as the confirm that follows it.
- Corrected the spelling in a few of the messages the plugin sends, so they read the same way as the rest of the plugin. The wording of the teleport and import messages is otherwise unchanged. An existing config.yml is not touched, so any message you have already customized stays exactly as you set it.
- The plugin now sends anonymous usage counts to bStats, so the maintainers can see which commands, menu buttons and settings are used, and whether database errors are happening in the wild. Nothing personal is sent, and the bStats switch in plugins/bStats/config.yml turns it off.
- Fixed the world blacklist only ever being enforced on the first three worlds of a server. Blacklisting any world beyond those reported success and then did nothing. It is enforced from this release on, so if you have blacklisted more than three worlds, run /blacklist list before you update. Homes in a world that starts being enforced stop being reachable by players who do not hold sh2.bypass-blacklist.
- /blacklist add and /blacklist remove no longer report success when the database write actually failed. A failure now says so and the world is left as it was. Permission overrides in config.yml are also matched without regard to the case you write the node in, so a line like SH2.manage-homes now applies rather than being logged as applied and quietly ignored.
- Set Homes now publishes to the original Set Homes project page, so servers running the older Set Homes are offered this as an update on the page they already watch. The download is named SetHomes rather than SetHomesTwo. The plugin folder and your existing config.yml are unaffected.
- /set-max-homes now has the alias /setmax, matching Set Homes v1. Its usage message also names whichever form you typed, rather than always naming /set-max-homes.
- Importing from Set Homes v1 or EssentialsX now resolves each player's name from the server's own player cache, so admin commands like /get-player-homes and /home-of work on a migrated player immediately instead of requiring them to log in first. A player the server has never seen still imports fine; they are picked up on their next join, same as before.
- The Set Homes v1 import report no longer applies the colour codes found in v1 messages, so a coloured v1 message no longer turns the rest of the advice line red or unreadable. Codes are shown as an ampersand instead, and the note says where to copy the exact original from. Also, the "you have no homes yet" notice now uses the same wording and is shown as plain information rather than red from /homes, /list-homes and the homes menu alike.
- Permission defaults can now be changed from config.yml with no permissions plugin installed. Uncomment the permissions block and set any sh2 node to true, false, op or not-op. Two bundles, sh2.player and sh2.admin, move a whole role at once, and three new bypass permissions were added for admins: sh2.bypass-max-homes, sh2.bypass-blacklist and sh2.bypass-teleport-delay. Operators hold those three by default, the same way Set Homes v1 granted homes.config_bypass through homes.*, so an operator is not held to the teleport delay, the world blacklist or the home limit. Set any of them to false in the permissions block if you would rather they were.
- Set Homes now refuses to start when a Set Homes v1 jar is still in your plugins folder, and the console says which file to move and what to run next. Both plugins provide /sethome, /home and /delhome and v1 wins those names, so running the two side by side used to split your players' homes between them with nothing in the log to show for it.
- /import-homes sethomes now brings across the Set Homes v1 world blacklist along with the homes, so a server that had worlds blocked in v1 does not silently lose that protection on migration. Re-running the import never blacklists a world twice.
- Fixed the update notice repeating on every join. An available release is now announced once and then held back for
updateReminderDays(7 by default) before it is mentioned again; a newer release is still announced straight away. SetupdateReminderDays: 0to announce each release exactly once.
- Added an update notice: the console at startup, and admins holding
sh2.update-notifyas they join, are told when a newer release is on GitHub. SetcheckForUpdates: falseto stop the plugin making the request at all.
Behaviour changes to be aware of before updating:
-
Home names are now unique per player without regard to case, so you can no longer create both
baseandBase. Homes you already have are untouched, including any existing duplicates. -
/delete-homenow deletes a single home. Previously it deleted every home whose name matched, so a player with duplicate names lost all of them at once. -
The plugin now requires Java 21 to run (previously Java 9). Minecraft 1.21 servers already require Java 21, so most setups need no change.
-
Added a home management menu: right-click a home in the homes GUI to rename it, move it to where you are standing, set its icon to the item you are holding, or delete it. Deleting asks for confirmation first, and renaming opens an anvil prompt for the new name.
-
Added a "Right click to edit home" hint to homes in the list, shown only to players who are able to manage them.
-
Added the
sh2.manage-homespermission, which controls the management menu and defaults to granted. -
Added config keys for the management menu:
manageHomeTitle,renamePromptTitle,manageHomeHint,maxHomeNameLength, the button item and name pairs, and the new success and error messages. Seedefault-config.yml. -
Fixed home updates and deletes not being scoped to the owning player.
-
Fixed the homes list hiding a home behind the previous-page button once a player had 46 or more homes, and showing an empty second page to a player with exactly 45 homes.
- Added
/sethome,/delhome, and/homeas classic aliases for/create-home,/delete-home, and/go-home. - Player permissions (create-home, go-home, list-homes, delete-home, teleport, give-homes-item) now default to granted for all players; admin permissions still default to OP.
- Added the
/homescommand, which opens the homes GUI directly;/list-homesstill prints the chat listing. - Added
/import-homesto import homes from Set Homes v1 or EssentialsX (dry-run by default, passconfirmto apply). - Added a teleport safety check that relocates players to the nearest safe spot, or cancels the teleport, when a home would put them in blocks, lava, or a dangerous fall.
- Teleport destination chunks are now loaded during the countdown, so arriving at a distant home is smoother.
- Fixed stale teleport attempts surviving a server restart, which could block a player's next teleport (finishes #14).
- Fixed error when maxHomesType is groups and LuckPerms is not installed. The limit is now skipped with a console warning instead.
- Added go-home and list-homes commands.
- Fixed issue where players missing sh2.teleport could not break blocks.
- Fixed issue where a player who has an open homes gui has their inventory overwritten by the next person to open a homes gui.





