v2.0 - in development - ALPHA

  • In development, release uncertain. Changelog

v1.7.8 - Apr 6, 2014

  • remove dependency on CraftBukkit; eliminates breaks simply because of changing CraftBukkit versions. Hooray!
  • fix for issue #247; duplicate onJoin event due to faulty onNewPlayer logic
  • some minor code cleanup contributed to the project

v1.7.7.2 - Dec 23, 2013 (CRAFTBUKKIT-1.7.2-R0.2)

  • built for CraftBukkit v1.7.2 ONLY

v1.7.7.1 - (never officially released, Jenkins only) (CRAFTBUKKIT-1.6.4-R1.0)

  • built for CraftBukkit v1.6.4 ONLY

v1.7.7 - Aug 4, 2013 (CRAFTBUKKIT-1.6.2-R0.1)

  • built for CraftBukkit v1.6.2 ONLY
  • fix bug with modeSourceWorld not working properly (re-open of DBO ticket #188)
  • DBO ticket #208: print nice message (instead of NPE) if admin forgets to set WorldBorder when using spawnWorldRandom
  • github issue #4: fix for safeTeleport on Forge servers
  • fixes for some time-related messages in German localization (thanks seema23!)

v1.7.6 - May 05, 2013 (CRAFTBUKKIT-1.5.2-R1.0)

  • built for CraftBukkit v1.5.2 ONLY
  • support for Multiverse integration with Multiverse 2.5

v1.7.5 - Apr 04, 2013 (CRAFTBUKKIT-1.5.1-R1.0)

  • fixed NPE bug with /homeinvite when trying to send an invite to a home you don't own
  • addition of "/hsp dd" admin command to look for any home playerName case dups. For example, if a home "foo" exists for both player "Julie" and "julie", this will delete the oldest of the two. In general this is only caused by servers that have run in offline mode and allowed players to create homes that aren't tied to valid minecraft IDs. Backup your database before running this command!
  • addition of "/hsp lc" admin command to convert all player names for homes in the database to lowercase. In practice this isn't all that useful right now since HSP currently ignores case when searching player homes, but this might be combined with a future config option to enforce lowercase names instead of proper case for admins that prefer it. Backup your database before running this command!
  • Ticket #175: fix for /home NPE related to using strategies that produce no result
  • addition of "core.recordLastLocation" which can be used to disable Last Location logging
  • ignore case for name safety check in /homedelete and /homerename, only matters for offline servers
  • Ticket #183: Fix for disabling /sethome when falling beneath the world

v1.7.4 - Jan 31, 2013 (CRAFTBUKKIT-1.4.7-R1.0)

  • compatible with CraftBukkit v1.4.7 ONLY
  • Ticket #162 - added homeMinecraftBedSpawn
  • Ticket #168 - No command classes found (conflict with Honeypot plugin)
  • Ticket #169 - NPE with dynmap named spawns integration
  • Ticket #164 - command to rename spawns and homes (/spawnrename and /homerename)
  • Ticket #163 - Made ebean player name queries case-insensitive

v1.7.3.2 - Dec 23, 2012 (CRAFTBUKKIT-1.4.6-R0.1 BETA)

  • compatible with CraftBukkit v1.4.6 ONLY

v1.7.3.1 - Dec 9, 2012 (CRAFTBUKKIT-1.4.5-R1.0 RB)

  • Update to be compatible with latest CraftBukkit development releases (intentional break by Bukkit team) Details here:
  • Maven adjusted to always use CraftBukkit LATEST, and there are only two references to CraftBukkit code in HSP so future API breaks can be updated and new plugin built in about 30 seconds, by myself or anyone else
  • Ticket #147: added "include-named-spawns" dynmap option

v1.7.3 - Nov 14, 2012 (CRAFTBUKKIT-1.4.5-R0.2 BETA and earlier)

  • Ticket #140: fixed Exception when using trailing \ on commands
  • added "hsp" prefixed alias for all commands (/hsphome, /hspspawn, /hsphomelist, etc)
  • removed usurpCommands config option, use Bukkit aliases instead (with aforementioned /hsp prefix commands)
  • Ticket #138: added ModeDistanceLimits strategy. Specific support for home distance limits, might generically work with other strategies too.
  • fixed issue in localized messages when using $ in substitute values (most commonly a result of economy price messages)
  • Ticket #148: NPE due to deleted worlds. This only fixes the specific stack trace, no additional work was done at this time to test this scenario, it's entirely possible deleted worlds will break elsewhere in HSP.
  • Bukkit 1.4.4 compatibility: Bukkit 1.4.4 changed some methods to final that HSP had used prior to Bukkit ever having them in the API. Made HSP compatible with these new changes.

v1.7.2 - Sep 29, 2012

  • fixed a bug when using /homeinvite to the same player/home created an exception
  • fixed unreported bug where an expiring HomeInvite would delete the associated Home also
  • fixed unreported bug that prevented /homeinvite working for an offline player if the exact name was used
  • fixed homeInvite NPE when associated home was deleted
  • added robust reflections implementation for dyanmic Command Registration
  • fixed NFE when /homeinvitedelete was given non-numeric input
  • added command usages back (they were lost in the dynamic command conversion with 1.7). Bonus: they are now localizable
  • Ticket #116: added customizable teleporting messages:

v1.7.1 - Aug 26, 2012

  • fixed issue with new modeExcludeNewPlayerSpawn not being usable
  • fixed issue with command usurping and CommandBook
  • made onRegionEnter/Exit pick up world context automatically for world-specific rules
  • additions to spawnLastLocation strategy to allow it to respond better to custom events
  • added '*' as an option for commands.disabledCommands to turn off all default HSP commands
  • disabled setting of Permission on PluginCommand objects, not all Permission systems play nice with this Bukkit superperms feature
  • fix issue with default event chains not being found

v1.7 - Aug 25, 2012

  • database upgrade: HSP will upgrade automatically, but to be safe you should backup your database before upgrading!
  • new strategies: SpawnLastLocation and SpawnLocalPlayerSpawn
  • new modes: ModeRememberSpawn and ModeRememberLocation
  • new WorldGuard mode: modeInRegion
  • Extensive direct Multiverse integration with many new modes and events
  • See example7 for example of new modes in action
  • New command system which allows HSP to map commands dynamically at runtime
  • New command system also fully enables "disabledCommands" feature so you can completely disable commands you don't want to use
  • Custom event commands (uses new command system)
  • Implemented new events "onRegionEnter" and "onRegionExit"
  • added "onNewPlayer" event for new players. If no result is returned, HSP will fall through to "onJoin" which maintains backwards compatibility
  • Ticket #133: added Spanish locale (thanks Consalvo!)
  • Ticket #123: added modeExcludeNewPlayerSpawn
  • Ticket #125: fix for Essentials conversion

v1.6.3 - Aug 22, 2012

  • some performance tuning
  • added built-in performance monitoring, tunable via core.warnPerformanceMillis config option
  • added Brazilian Portuguese translation (locale pt-br). Thanks Guichaguri!
  • changed core.reloadChunkOnTeleport default to false (fixes
  • Ticket #131: modeRequiresBed not working

v1.6.2 - Aug 2, 2012

  • Ticket #118: error when using spawnWorldRandom strategy
  • cleaned up some spurious warning messages related to some missing default config settings
  • added "core.bedHomeOverwritesDefault" flag for determining how bed home vs default home (/sethome) interact (default = true)
  • fixed spurious "location is different than where HSP sent player" messages
  • validated working with Craftbukkit 1.3.1 dev builds

v1.6.1 - Jul 8, 2012

  • made strategies no longer case-sensitive in the configuration
  • added "nearestHomeOrSpawn" strategy
  • added some extra warnings to hopefully detect configuration issues and reduce the number of support tickets
  • added Portuguese translation (locale pt) - thanks @Traki08!
  • updated German translation (locale de) - thanks @Jobsti2!
  • new event "onNamedSpawnCommand" for controlling named spawn behavior
  • new strategies for controlling safe spawn and random spawn behavior: modeYBounds, modeNoWater, modeNoLilyPad, modeNoIce, modeNoLeaves
  • improvements to safe teleport to reduce occurance of non-safe teleports, especially noticeable with random strategies
  • added "" and "include-named-homes" options (default home is always included). Check "config_defaults.yml" for syntax.
  • implemented player name best matching for several commands (/hlo, /homeo, /hi, /sho). /dho (delete) still requires exact match as a safety measure.

v1.6 - Jun 30, 2012

  • added /permcheck command (alias /pc) for checking permissions
  • added plugin metrics (from LWC author Hidendra, website Edit "plugins/PluginMetrics/config.yml" and set "opt-out: true" if you wish to opt out of all mcstats reporting.
  • Ticket #112: added permission for named spawns. By default this behavior is off, controlled by the "core.spawnNamedPermissions" config option. If enabled, HSP will check for permission: "hsp.command.spawn.named.<spawnname>" in order for the player to have permission to use the named teleport
  • Enhancement request: "resetOnDeath" cooldown config option. Can be used per-permission, per-world or in default cooldown sections
  • Ticket #114: random world spawn. Added 'spawnWorldRandom' strategy
  • Ticket #114: random named spawn. Added 'spawnNamedRandom' strategy
  • added "spawnRegionRandom" strategy for spawning at a completely random location inside a worldGuard region
  • Ticket #104: /sethome and bedHome don't play nice together
  • lots of testing and fixes to dynmap integration (it works now!)
  • Ticket #106: fixed the annoying "your home bed was missing or obstructed" message
  • Ticket #102: added French localizaton (thanks JohOply!)

v1.5.5 - May 12, 2012

  • bugfix (unreported) for MODE_HOME_NO_BED not working
  • Ticket #96: home name is "null" message in /homeinvite
  • Ticket #98: delete homes with ID
  • Ticket #71: bug with singleGlobalHome home limits
  • Ticket #51: dynmap integration added - BETA FEATURE: untested, looking for testers & feedback

v1.5.4.1 - May 5, 2012

  • bugfix for an NPE on teleport, reported in comments
  • made safe teleporting default to ON, can be disabled in config

v1.5.4 - May 4, 2012

  • converted build system over to maven (finally stood up my own nexus repository required to host dependent artifacts that aren't maven enabled). This simplifies the build process to git cloning the source and then just running 'mvn install'. Easy!
  • Ticket #95: added time string messages to cooldowns, ie: "32 minutes 25 seconds remaining"
  • Ticket #94: safe teleport, now settable via "config.safeTeleport" option
  • Ticket #92: bed home request. See new bedHome documentation available at:
  • localized time strings (only en provided for now until my volunteer translators provide new translations)
  • Ticket #89: home cost multiplier

v1.5.3 - April 20, 2012

  • Ticket #93: named homes not working
  • startup delay resolved. Default 'EBEANS' storage just uses Bukkit ebeans now. To use Persitance Reimplemented ( which enables live-reload (among other benefits, check link), you can use PERSISTANCE_REIMPLEMENTED_EBEANS storage engine, at the cost of a 0.75 second delay at startup.
  • Added startup warnings for anyone using Essentials or CommandBook that also gives brief instructions for how to make those plugins play nice with HSP.
  • Updated Essentials home converter to Essentials 2.9 (most current version).
  • Added converter for CommandBook. Since CommandBook can already import MyHomes and Warpz0r, this means users of those plugins can use the CommandBook converter script and then import that into HSP. link:

v1.5.2 - April 18, 2012

  • Major refactor of strategies. End result if things were done right is there should be no noticeable change to end users. However, the refactor includes some performance improvements as well as signficantly more maintainable code, which also increases the chance others can easily create and contribute their own strategies.
  • fix for home invites sent for homes without a name

v1.5.1 - April 15, 2012

  • simplified the /hi command (a suggestion by @Infuscu). The /hi (homeinvite) command arguments are reversed to now be "/hi player homename", so that if you only have one home, you only have to type "/hi player".
  • in addition, I have added the "id #" of a home to /homelist and modified /hi to accept an ID, so you can type "/hi player 4" to invite player to your home with the id #4.
  • fixed a localization bug for a homeinvite message
  • added "core.bedhome2clicks" option (default: true), which enables or disables the 2-click requirement for setting a bed home
  • added "core.bedHomeMustBeNight" option (default: false) which requires that it be night time in order to use the bed to save a home (single player mechanics)

v1.5 - April 15, 2012

  • refactored storage subsystem in preparation for home invite feature
  • coded full YAML backend on new storage subsystem; storage type YAML for individual YAML files per object (home/spawn/player) or YAML_SINGLE_FILE for a large single data file. YAML storage types are cached in memory for fast, efficient access. You can use the backup/restore feature to backup an existing SQL database, then convert to YAML and restore if you want to switch.
  • Ticket #28: home invite feature enhancement. Local testing works good, but needs mass-testing so I'm looking forward to feedback on this feature. Read the documentation.
  • Ticket #77: show MC spawn (use /spawnlist -m)
  • added /setmapspawn for changing a map's spawn point (not really useful for HSP in any way, just a general utility command)
  • added /groupquery command for troubleshooting group problems
  • added /homelistother command to list other people's homes (permission: hsp.command.homelistother, alias: /hlo)
  • BREAKING CHANGE: old-style permission "" no longer works; use new-style "" (old-style permission has been deprecated since 1.0 six months ago, finally cleaning up the code)
  • Ticket #72: fixed WorldGuard compatibility to work with newest WorldGuard 5.5 changes
  • added Dutch translation; locale nl (thanks @Dunncann!)

v1.4.3 - March 4, 2012

  • fixed a reported bug with new installations throwing DB version upgrade errors
  • saved an extra permission check on block place when using 'bedsethome'. Thanks to @Chrisjon for reporting the issue.
  • Ticket #73: HSP throws NPE if World doesn't exist (R6 issue)
  • Ticket #74: issue with first spawn when using Bukkit world-container setting, issue fixed for all strategies

v1.4.2 - February 23, 2012

  • This release is compatible with R5 (the new Bukkit event system)
  • Ticket #69: Fix Russian encoding (again)
  • Fix for WorldEdit error message printed on startup with latest release versions of WorldEdit (5.2, 5.3 in the future)

v1.4.1 - February 15, 2012

  • Ticket #70: first spawn not working correctly
  • Ticket #69: Russian encoding wrong (hopefully fixed, need confirmation)
  • fixed a bug related to bed homes when using MODE_HOME_BED_ONLY, which resulted in the bed homes not being used at all
  • converted persistence engine to "Bukkit Persistance Reimplemented" - the main effect here is that HSP is now friendly to live reloading using plugins such as PluginReloader, thus it can be live-reloaded for upgrades or plugin testing (mostly helps me as the developer)

v1.4 - February 10, 2012

  • added German locale (de) - thanks Jobsti!
  • added Russian locale (ru) - thanks MSTrus!
  • "core.newPlayerStrategy" option added and default is changed to PLAYER_DAT which looks for "player.dat" file int he default world. If you have issues with newPlayer detection not working like you expect you can change this to "ORIGINAL" or "BUKKIT" (for Bukkit's .isNewPlayer() method), although I suspect most people will prefer the PLAYER_DAT method since that will depend exclusively on the "player.dat" file, which is how most people expect new player detection to work.
  • Ticket #18: added "modeRequiresBed" to require existence of a bed for other home strategies in a given strategy chain. See the strategy documentation for more details.
  • Ticket #64: "price%" showing up when charging players using default english localization

v1.3.1 - January 14, 2012

  • finished off localization of strings, HSP strings are now fully localized. Now it just needs translations other than just English!
  • fixed a bug with limit cascading (unreported)
  • Ticket #47: permission system "op" taking precedence over "superperms"
  • Ticket #50: WEPIF not being used when using WorldEdit release 5.0
  • Ticket #54: NPE related to HSP localization in /home command
  • Ticket #48: Support for /groupspawn group arguments (permission: hsp.command.groupspawn.named)

v1.3 - January 1, 2012

  • enhancement, Ticket #22: /homedelete to accept w:world argument
  • enhancement, Ticket #29: stuck in chunk hole when teleporting
  • enhancement, Ticket #23: i18n (internationalization) support (config option: core.locale)
  • added "core.defaultMessageColor" option for changing default message color
  • message localization is NOT complete! There are a LOT more strings to be added, I've just gotten the work started (maybe 25% done).
  • will need volunteers for additional langauges. English ("en") is the only one provided at this time.
  • BIG BIG thanks to Hidendra (LWC) for letting me adapt his localizaton code for HSP's use

Documentation for localization changes coming soon.

v1.2.2 - December 29, 2011

  • Bugfix release
  • Ticket #37/#38/#40: first spawn not working properly
  • Ticket #36: SQL CONSTRAINT error due to new player check not working (related to #37 above)
  • Ticket #42: /setspawn not setting default spawn (related to #37 above)
  • Ticket #43: "basic" config being copied into config_defaults.yml
  • Ticket #39: NoClassDefError for WEPIF: now prints warning if using old version of WorldEdit instead
  • Ticket #32: implement "group.XYZ" groups for Superperms (code borrowed from WEPIF)

v1.2.1 - December 25, 2011

  • Ticket #33: fixed a bug in some situations with new player checks on PLAYER_JOIN

v1.2 - December 25, 2011

  • Ticket #24/#25/#30: cooldowns per-permission, per-world and per-home
  • Ticket #24: warmups per-permission and per-world
  • Ticket #24: cost per-permisson and per-world
  • Ticket #25: add cooldown for /sethome
  • Ticket #25: separate timer for "home-named" and "sethome-named"
  • added a "basic" config.yml that is copied in place if none exists. This is a bit simpler for new users to understand - the "config-defaults.yml" always contains the full listing of options available.
  • added /spawnlist and /spawndelete commands
  • added "spawnLocalRandom" strategy for spawning at a random spawn point on the local world

v1.1.3 - December 19, 2011

  • Ticket #31: bugfix for /sethome taking money when player is at home limit

v1.1.2 - December 17, 2011

  • Ticket #27: fix permissions for perm systems not supporting superperms
  • some code cleanup/refactoring
  • The above changes come with a new config option "permissions" which allow you to select which permission system you want to use. By default it will go through the list and use the first available, but now you can change it if you want (for example, maybe you prefer to use WEPIF instead of Vault). Check "config_defaults.yml" in your HomeSpawnPlus directory for an example.

v1.1.1 - December 8, 2011

  • Ticket #21: fix for HSP throwing NPE when a world has been deleted
  • Ticket #21: fix for "/homelist <world>" not working properly
  • added "onNamedHomeCommand" event type, called when player types "/home name". New strategy "homeNamedHome" was added to match. This doesn't change default functionality any, but it allows admins to influence the outcome of a player typing "/home name" using home modes - for example you could use "modeHomeNoBed" to disallow players using their bed homes on "/home name".
  • added ability for HSP to respond to console commands to "/hsp" (so you can "/hsp rc" to reload the config from the console, for example)

v1.1 - December 4, 2011

  • Ticket #15: fixed a bug with modeHomeNoBed strategy
  • Ticket #16: better firstLogin detection, check world/players/player.dat
  • Ticket #17: fixed an NPE bug with /groupspawn command if no groupspawn is defined
  • Ticket #19: fixed issue with warmups being canceled due to movement detection being too sensitive
  • Ticket #13: new feature, config param "homeLimits.singleGlobalHome" to enforce a single global home that always changes when using /sethome (or a bed)
  • new permission "hsp.singleGlobalHomeExempt" to be exempt from "singleGlobalHome" restriction
  • added WorldEdit WEPIF support, which supports more permission systems for those who have WorldEdit (only used if Vault is not present)
  • Fixed permission->world->global spawn strategies so they fall through. Before, if a perm.onHomeCommand strategy was defined, but not perm.onDeath and a player died who matched the perm, they would not get the world-specific or global onDeath like you would expect. This is fixed.

v1.0.2 - November 29, 2011

  • fixed permission "hsp.command.sethome.named" to be correct
  • added modeHomeNoBed mode strategy

v1.0.1 - November 27, 2011

  • fixed a new SQL-related bug related to setting bed homes
  • no upgrade instructions; just use 1.0.1 instead of 1.0

v1.0 - November 27, 2011

NOTE, NOTE, NOTE!! This version and above is ONLY for MC 1.0 on Bukkit builds #1464 or higher! (recommend latest #1519 and above!). Stay on HSP v0.9.1 until you've upgraded to #1464 or higher!**

  • added ability for HSP to have multiple named homes per world (if you give your players access to /sethome)
  • added config options to limit the number of homes globally, per-world or per-permission group (defaults to 1 per world, which maintains the same behavior before this feature was added)
  • added per-world event control capabilities, so that you can define an event strategy chain that takes place only on a specific world
  • added per-permission event control capabilities
  • added new "onGroupSpawn" event type so that admins can define custom strategy chains even for /groupspawn
  • many new strategies added, see web strategy doc for full details
  • strategy "modes" added, which modify how existing strategies work to provide additional flexbility and control
  • changed base command permission to no longer need ".use" suffix. ".use" suffix is deprecated but still works for now.
  • new strategies required some small DB schema changes, added additional code to make DB upgrade seamless even for SQLite users
  • updated configuration to use Bukkit's new preferred YamlConfiguration classes (This is where the 1.0 requirement comes from)
  • fixed a bug that prevented groupspawn from working properly
  • added a "config_defaults.yml" file which will always contain the most current plugin defaults (for admin's reference)
  • new user commands added: /homelist, /deletehome, /setdefaulthome, /homeother
  • new op commands added: /sethomeother, /homedeleteother

v0.9.1 - November 26, 2011

This is a bugfix release. All of these bugs are already fixed in the 1.0 codeline, but as it may be a bit more time before I get 1.0 out the door, I wanted to put a small patch release out there that fixes some of the bugs that were reported. Thanks to those who reported issues.

  • fixed bug ticket #10: /groupspawn not working
  • fixed bug ticket #11: /spawn NPE (Vault-related)
  • fixed bug ticket #12: /home <player> unintentionally working for everyone

v0.9 - November 12, 2011

  • new feature: WorldGuard region-spawn support via "spawnWGregion" strategy
  • new feature: Economy fees using optional Vault dependency
  • new feature: spawnSpecificWorld strategy
  • new feature: spawnNamedSpawn strategy
  • new command: /setdefaultspawn to allow for defining the default spawn out of multiple named spawns that might exist in a world
  • new feature: usurpCommands - admin can specify commands s/he wants this plugin to takeover if other plugins are using it (ie. usurp "/home" from CommandBook, which loads first alphabetically)
  • new feature: implemented "spawnNearest" spawn strategy

v0.8 - September 27, 2011

  • changed base permission prefix from 'HomeSpawnPlus' to 'hsp'
  • added flexible spawn/home strategies, see default 'config.yml' or documentation
  • added warmup capability
  • added firstLogin capability for newbie spawning
  • conceptual notion of "nearest" spawn/home introduced, strategy not fully implemented yet
  • config options have changed, automatically move old one out of the way and copy the new default into place
  • implemented data backup and restore (use /hsp backup, /hsp restore)
  • added Superperms permission nodes
  • BUGFIX: fixed problem that prevented sleeping in beds at night
  • BUGFIX: fixed a bug that prevented group spawning from working properly

v0.7 - July 17, 2011

  • made it so "defaultWorld" is also the default spawn world for new players
  • added "core.defaultPermissions" so admins can enable defaultPermissions if they aren't using a Permission-compatible plugin
  • added an option for telling HomeSpawnPlus to track player last logout location and send them there on next login (if onJoin="default"), instead of letting default Bukkit track location, which seems to get it wrong sometimes (sends people to surface or down into lava, etc)

v0.6.2 - July 9, 2011

  • Added ability for players to delete their homes (/home delete)
  • Fixed multihome spawning

v0.6.1 - July 3, 2011

  • Fixed issue with players being mistaken for new and sent back to spawn whenever they logged in if they had no home set

v0.6 - July 2, 2011

  • Added config option for choosing in-memory cache
  • Fixed bugs related to in-memory cache
  • Fixed a bug with spawning on death using wrong config setting

v0.5.1 - July 1, 2011

  • Fixed command cooldowns.
  • Fixed some permissions issues

v0.5 - July 1, 2011

  • Added support for setting home using a bed
  • First public release

v0.4 - Jun 30, 2011

  • Added support for visiting other players homes, protected by permissions
  • Lots of testing, lots of bug fixes


  • Added conversion utilities from Essentials and SpawnControl
  • Added additional config options for controlling spawn behavior
  • Added ability to disable every command just by using config options, to allow admins to easily deal with command conflicts with any other plugins


  • Lots of refactored code to support MySQL backend using Bukkit persistence
  • Added YML config files
  • Permission 3.0 support


  • Initial version (originally based on fork of SpawnControl v0.8)