SweetHomes
A bed-based home system that feels natural.
Place a bed. Name it. Teleport back anytime.
✦ Why SweetHomes?
Unlike traditional home plugins that rely on arbitrary coordinates, SweetHomes ties homes to physical beds in your world. This creates a more immersive and intuitive experience — players interact with something real, not just a command.
- Intuitive: Place a bed, name it, done. No confusing commands.
- Visual: Interactive chest GUI for Java, native forms for Bedrock.
- Social: Share homes with friends via an invite system.
- Modern: Folia support, Paper Dialog API, MiniMessage formatting.
- Lightweight: Single JAR, no hard dependencies beyond Paper/Spigot.
✦ Features
Homes are created by placing beds in the world. When a player places a bed, a naming prompt appears automatically:
- Paper 1.21.7+: Native dialog text input (no chat spam!)
- Older versions: Chat-based naming with configurable timeout
- Bedrock players: Native Floodgate form input
- Auto-naming fallback if the player doesn't respond
- Clean chest inventory with custom icons per home
- Left-click → Teleport | Right-click → Delete | Shift+Left-click → Change icon
- Delete confirmation screen with three options: Abandon, Break Bed, or Cancel
- Icon selection GUI with 30+ blocks, items, and mob heads
- Bedrock players get equivalent Floodgate forms automatically
- Invite-based sharing with clickable [Accept] / [Deny] chat buttons
- Shared homes appear in the receiver's GUI and tab completion
- Automatic cascade: renames and deletions sync to all receivers
- Offline notifications — players are notified on next login
- Separate permission tiers for sharing and receiving limits
- Configurable warmup countdown with action bar display
- Cancel on move or damage (both toggleable)
- Cooldown between teleports
- Custom particles and sounds at origin and destination
- Bypass permissions for VIP/staff
- Players can abandon a home without breaking the bed
- Other players can claim abandoned beds by right-clicking them
- Great for towns, public and roleplay servers
- After death, the homes GUI opens automatically
- Players can choose which home to respawn at — or stay at the default spawn
- Toggleable via config
%sweethomes_count%— Number of homes%sweethomes_limit%— Home limit (shows ∞ for unlimited)%sweethomes_remaining%— Remaining home slots%sweethomes_list%— Comma-separated home names%sweethomes_home_<name>_world%— World, X, Y, Z, creation date per home
✦ Compatibility
- Server versions: 1.16.5 — 1.21+ (Paper, Spigot, Folia)
- Java version: 21+
- Folia: Fully supported — uses region-aware schedulers and async teleport
- Bedrock: Full support via Floodgate — native forms, no chat input needed
- Languages: English, Portuguese, Spanish (MiniMessage format, easily extensible)
✦ Storage
Three interchangeable storage backends:
- YAML — Per-player files (default, no setup needed)
- SQLite — Single local database file
- MySQL — Remote database for multi-server setups
/home migrate <from> <to>.✦ Commands
Code:
/home — Open the homes GUI
/home tp <name> — Teleport to a home
/home list — List all your homes
/home rename <name> — Rename a home
/home delete <name> — Delete a home
/home abandon <name> — Abandon (keep bed in world)
/home break <name> — Delete and physically break the bed
/home share <name> <player> — Share a home
/home unshare <name> <player> — Revoke sharing
/home accept / deny — Respond to share invites
/home shared — List shared/received homes
/home import <source|auto> — Import from another plugin (admin)
/home migrate <from> <to> — Migrate storage backend (admin)
/home reload — Reload configuration (admin)
✦ Permissions
Code:
homes.use — Basic access (default: everyone)
homes.admin — Admin commands (default: op)
homes.limit.<1-10> — Set home limit per rank
homes.limit.unlimited — Unlimited homes (default: op)
homes.warmup.bypass — Skip teleport warmup
homes.cooldown.bypass — Skip teleport cooldown
homes.share — Allow sharing homes (default: everyone)
homes.share.limit.<1-10> — Max homes a player can share out
homes.share.limit.unlimited
homes.share.receive.<1-10> — Max shared homes a player can receive
homes.share.receive.unlimited
✦ Developer API
SweetHomes provides a clean API for other plugins to interact with:
Java:
SweetHomesAPI api = SweetHomesProvider.get();
// Get homes
List<Home> homes = api.getHomes(playerUUID);
Home home = api.getHome(playerUUID, "MyHome");
// Create, delete, rename, teleport
api.createHome(uuid, "Base", location, headBlock, footBlock);
api.deleteHome(uuid, "Base");
api.renameHome(uuid, "Base", "New Base");
api.teleportToHome(player, uuid, "New Base");
Custom Bukkit Events:
HomeCreateEventHomeDeleteEventHomeRenameEventHomeTeleportEventHomeShareEvent
✦ Feature Toggles
Every major feature can be individually enabled or disabled in
config.yml:
Code:
features:
sharing: true
abandoned-beds: true
respawn-gui: true
icon-selection: true
bed-break-detection: true
chat-naming: true
✦ Soft Dependencies
- Floodgate — Bedrock support with native forms
- PlaceholderAPI — External placeholders
Built with ❤ by Arthemis Studios
