HomeSpawnPlus (HSP) / SpawnControl: the most advanced Home/Spawn plugin for Bukkit. HSP has flexible events and strategies that you can customize for your unique needs. If you just want dead-simple home/spawn management, HSP can do that too, but you might find some other plugin easier to setup or understand. If you want full control and maximum flexibility to do whatever YOU want and not be limited by just basic /home and /spawn functionality, then HSP might be for you.

HSP's events and strategies, custom commands and integrations with plugins like WorldGuard and Multiverse allow you to completely control every aspect of spawns and homes, so that unique edge or setup you want, chances are good that HSP can do it for you.

Please read the FAQ before posting questions or tickets (especially Essentials users). Also there are Examples.


  • Official releases are on the Files tab of this page
  • Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk. Jenkins

HomeSpawnPlus has these Features:

  • Multi-world homes (one-home per world, multiple homes per world or even just one global home, your choice)
  • Specific control as to what happens on events such as player login, player death, typing /spawn or /home commands using strategies. Should the user always stay on the same world? Spawn at the nearest of multiple spawns (ie. graveyard concept)? Maybe they always go to a specific group spawn on that world (for PvP factions, perhaps)? Your choice.
  • Ability to set a one-time new player spawn point
  • Cooldowns and warmups Can be set to cancel on movement or damage. Advanced details here.
  • Economy support (via Vault) to optionally charge players for commands
  • Home limits, definable per-group or per-permission. More documentation.
  • Configurable per-world or per-permission for just about every option (events, cooldowns, warmups, costs, homeLimits)
  • Define your own custom commands Documentation here
  • WorldGuard region-spawn support (allow people to spawn at WG region spawn when inside that WG region)
  • Ability to visit homes other people have set, on any world (controlled by Permissions)
  • Language localization Also you can customize any message in HSP. Details here.
  • Home invites - documentation here
  • Set homes by clicking on a bed: read bed-related options documentation.
  • Dynmap integration built in, very configurable to meet your own needs
  • Persistence choice: Sqlite (default), MySQL or YAML
  • Standard YML config.yml: with live reloading in-game (/hsp rc)
  • Import home data from other plugins (Essentials 2.9, CommandBook 2.1 and SpawnControl v0.8)


  • Download HomeSpawnPlus.jar and put it in your Bukkit plugins folder
  • Startup Bukkit, HomeSpawnPlus will automatically put the default config.yml into plugins/HomeSpawnPlus/config.yml
  • Configure config.yml to your liking, then either '/hsp rc' to live reload the config, or restart your server.

Additional info

This plugin was designed to work with Vault, WEPIF, PEX, Permissions 2.x/3.x, or any Superperms-compatible plugin. Please read more about permissions here.

Under the hood: How HSP works


Spawn strategy documentation

Advanced Cooldown and Warmup information

User Command Reference

Admin Command Reference



Source Code

Metrics plugin

This plugin utilises Hidendra's plugin metrics system, which means that the following information is collected and sent to

A unique identifier The server's version of Java Whether the server is in offline or online mode The plugin's version The server's version The OS version/name and architecture The core count for the CPU The number of players online The Metrics version

Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.

Have an issue? Got a new idea?

If you find a bug or have an enhancement request, please create a ticket so I don't lose track of the request or issue in a comment stream. If you have a basic question, feel free to post in the comments here or visit the forums on

Thanks to @Timberjaw for the awesome work on SpawnControl that gave me a great base to start from!

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of DarkRyuZ7 DarkRyuZ7 Apr 22, 2015 at 01:19 UTC - 0 likes

    Using the newest Version of HSP, is causing an Error if i want to use YAML Storage....

    [02:45:51] [Server thread/ERROR]: [HomeSpawnPlus] Caught exception loading plugin, shutting down com.andune.minecraft.hsp.shade.commonlib.FeatureNotImplemented at [HomeSpawnPlus.jar:2.0]

    Known? Create Ticket?

  • Avatar of SanCarlo SanCarlo Apr 15, 2015 at 20:25 UTC - 0 likes

    Could you pls add a hook for the essentials "/back" command?

  • Avatar of andune andune Apr 08, 2015 at 07:41 UTC - 0 likes

    @bmlzootown: Go

    This is true, "d" is an alias for "delete" for the uber command "/home". While you can configure command aliases in HSP however you like, I don't believe I added any facility for changing the uber command mappings.

    One option is simply to disable uberCommands, at which point "/home" will resort to 1.7-style home command (not an Uber Command) and then this problem wouldn't exist.

  • Avatar of bmlzootown bmlzootown Apr 08, 2015 at 03:09 UTC - 0 likes

    A player mentioned to me earlier that if you name a home "d" (/sethome d) and then attempt to go to it (/home d), the plugin acts as if the player tried to delete the default home. Here's a screenshot: I didn't see anything mentioned in prior comments, so I thought I'd mention it.


  • Avatar of ThisUsernameIsMine ThisUsernameIsMine Mar 29, 2015 at 13:17 UTC - 0 likes

    I'm also having a problem, but with the /groupspawn <arg> command.

    Since a while (can't recall how long) i can't visit other groupspawns (as long as i enter an argument), instead it shows:

    A system error was encountered, please contact your administrator.

    and in the console:

    Resetting (deleting + setting) the groupspawn doesn't solve the problem either.

    I'm kinda worried the SQLite database got corrupted somehow as i'm pretty sure the dev build is compatible with Spigot 1.8.3.

    Tested with HSP dev build #628 / #629 @ latest compiled Spigot:



    [15:16:03 INFO]: This server is running CraftBukkit version git-Spigot-dbe012b-61ef214 (MC: 1.8.3) (Implementing API version 1.8.3-R0.1-SNAPSHOT)
    [15:16:03 INFO]: You are running the latest version

    Last edited Mar 29, 2015 by ThisUsernameIsMine

    My problem(s) with MyCommand and Ban Management

    Portable and Updatable Minecraft Launcher
    + +

    -:- Me on YouTube -:-

  • Avatar of puckman1971 puckman1971 Mar 25, 2015 at 10:46 UTC - 0 likes

    I really tried everything and my hosting guys did what you suggested but spigot is refusing to load the plugin. Even tried it on a local machine.

  • Avatar of AlbireoKel AlbireoKel Mar 19, 2015 at 00:41 UTC - 0 likes

    Thanks a lot for your answer and for your time, this is really nice of you. Actually, even in the same world, the command and the onDeath are returning different result.

    "In a more complex case where you have groupspawns scattered across worlds and want different behaviors depending on the group a person is in, you'll probably have to use per-permission strategies specific to each group." That's exactly our situation. :(

    Here's the verboseStrategyLogging's return As you can see, the locations selected by each event are not the same...

    Could you give me an example of a per-permission strategy for OnDeath spawn that would be specific for each group ? I read the events-config-example but I'm not really sure about how to use it.

    Thanks again !

  • Avatar of puckman1971 puckman1971 Mar 18, 2015 at 00:30 UTC - 0 likes

    The hosting guys had not changed the permissions for months, they have now made the change you suggested but it still does not work, the error I get from plugman is:

    That file is not a valid plugin

    Not sure how an error like that would be a permission thing to start with?

  • Avatar of andune andune Mar 17, 2015 at 17:43 UTC - 1 like

    @AlbireoKel: Go

    This is tickling a vague memory of a bug reported in the 1.7 series related to group spawns, but I don't recall if that was fixed or was worked around.

    Taking it at face value: You are using the same strategy in "/groupspawn" as you are in onDeath. In theory, this means HSP should be returning identical results for both, but that's not what you're seeing.

    My best guess as to the cause is the fact that groups in permission systems are world-specific (and so are HSP groupSpawns). So if you have multiple worlds and are expecting that someone dying in world X will be transported to world Y, this won't work. The behavior should be consistent between death and /groupspawn, however: so if you're standing on world X and you type /groupspawn or you die, you should get the same behavior.

    To fix to work the way you want, use spawnGroupSpecificWorld. In the simplest case, if all of your groupspawns are on a single world, you could just use that instead in your events below, ie: spawnGroupSpecificWorld:myworld. In a more complex case where you have groupspawns scattered across worlds and want different behaviors depending on the group a person is in, you'll probably have to use per-permission strategies specific to each group.

    Also one last troubleshooting step you could try, turn on verboseStrategyLogging. When you run /groupspawn or when a user dies, you'll see the results of HSP processing the strategies, so you can look for clues as to what is wrong. If that help, you can pastebin the results here and I can look for clues in it as well.

  • Avatar of andune andune Mar 17, 2015 at 17:21 UTC - 0 likes

    @puckman1971: Go

    It looks like you're running in a hosted environment? If so, you need to report this problem to your hosting service. They've locked down the java permissions such that it can't read environment variables, which apparently ebeans (built into Bukkit) depends on.

    Your other option is to not use ebeans, HSP can use YML files as the database instead. You might have to edit the plugin.yml in the jar and set "database: false" - unfortunately Bukkit provides no way for a plugin to do this dynamically.


Date created
Sep 26, 2011
Last update
Feb 09, 2015
Development stage
GNU Lesser General Public License version 3 (LGPLv3)
Curse link
Recent files