HomeSpawnPlus
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.
Versions
- 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)
Installation:
- 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
Examples
Spawn strategy documentation
Advanced Cooldown and Warmup information
User Command Reference
Admin Command Reference
Permissions
Changelog
Source Code
Metrics plugin
This plugin utilises Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
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 forums.bukkit.org.
Thanks to @Timberjaw for the awesome work on SpawnControl that gave me a great base to start from!
-
View User Profile
-
Send Message
Posted Jan 17, 2015@keytastic
Turn on core.verboseStrategyLogging. What happens when HSP processes events will be verbosely printed out to the server log and you can figure out what's happening.
Some possibilities:
I'm sure there are lots of other possibilities, but best thing is to look at verboseStrategyLogging output and if you can't figure it out from there, zip up your HomeSpawnPlus plugin directory and pastebin your server log entries into a ticket and I'll try to help.
-
View User Profile
-
Send Message
Posted Jan 16, 2015Hey, love the plugin! I've been using it for awhile, and I'm very glad to see you're still updating it!
I'm having a strange issue that I can't fix, however. Here's what I want:
But no matter what I try, new players always start in the default survival world and other players retain their positions when they relog.
-
View User Profile
-
Send Message
Posted Jan 11, 2015@RedJon28
Latest dev builds are at Jenkins. Old Bukkit rules prohibited a direct link without some special wording, I'm not sure if that applies anymore, so just look up on this main project page under 'Versions' for the Jenkins link.
For your second request:
Or if you had a specific spawn in mind instead of the default one, just use spawnNamedSpawn:spawnName. Don't forget each of those config sections go in their respective config files in HSP 2.0 config/ directory
-
View User Profile
-
Send Message
Posted Jan 10, 2015@andune
ps works PERFECT!
-
View User Profile
-
Send Message
Posted Jan 7, 2015@RedJon28
The "missing write method" should be fixed in the latest build (#586). The rest of that message is normal and completely benign. I have no control over it, the ebeans server built into Bukkit spits out those messages when it starts up. Despite the spam and the ominous sounding "ERROR ebean.properties not found", everything is fine and will work normally.
-
View User Profile
-
Send Message
Posted Jan 7, 2015@andune
plz help i get this error on startup everytime.
07.01 14:07:54 [Server] INFO Entities enhanced[0] subclassed[7] 07.01 14:07:54 [Server] ERROR Bean property com.andune.minecraft.hsp.entity.PlayerSpawn.spawn has missing writeMethod . Should it be transient? 07.01 14:07:54 [Server] INFO SubClassFactory parent ClassLoader [org.bukkit.plugin.java.PluginClassLoader] 07.01 14:07:54 [Server] INFO DataSourcePool [HomeSpawnPlus] autoCommit[false] transIsolation[SERIALIZABLE] min[2] max[20] 07.01 14:07:54 [Server] ERROR ebean.properties not found
-
View User Profile
-
Send Message
Posted Jan 4, 2015@RedJon28
Yes, HSP can do that. You need to decide what you want to have happen and then you can shape HSP event/strategies to do that.
For example, if they die on the kitpvp world, should they go to a home on that world first if they have it set, and if no home then to the local spawn? Or should homes be ignored for that world entirely? Do you want them to respawn at the same spawn every time or one of several, or possibly at a completely random location?
And then what do you want to have happen outside of kitpvp, on other worlds? Give it some thought, write down what you want to have happen and then dive into HSP examples and strategy/events that can help you achieve your desired state.
-
View User Profile
-
Send Message
Posted Jan 4, 2015@andune
Can this plugin that if you die in a world you spawn in that world not the main spawn? (using mutliverse and have a kitpvp world and i need them to respawn in that world when they die)
PLZ help thx=) and cool plugin
-
View User Profile
-
Send Message
Posted Jan 3, 2015@andune
We're running on a dedicated machine, SSD, with over 15 gigs of ram allocated to the server. However, it's on the newest spigot with about 40 other plugins, so things were already expected to be somewhat unstable in the environment.
I kept the same general config between versions, so it wasn't caused by any switch in the options there. I had been searching for a way to reduce our lag spikes for a few days, and finally one spike caused a full crash that gave me some thread error logs to read through. It does seem to have been stuck on the YAML save after a player had used a home command to teleport. http://pastebin.com/rseqgdj2
There was a spike associated with a /home command in the start of that paste, the server got hung up for a while, kicking a large number of players from lag, then 70 seconds after the initial command the rest timed out and the server crashed.
Though we're not having any issues with it since updating, I have set the recordLastLocation to false as a precaution.
-
View User Profile
-
Send Message
Posted Jan 2, 2015@dunkeroni
Thanks for the report. While I did do a lot of optimization and code refactoring for 2.0, I don't recall any specific thing done that would cause such a drastic difference just by switching versions, not changing config options. There are some new options that can be enabled such as core.inMemoryCache that were built specifically to improve performance in certain situations, but you didn't mention using anything like that.
The two things I know of that can cause lag, specifically on teleport, are: 1) using recordLastLocation with YAML files on a large server. Every time the player teleports, HSP records the location and writes it to disk, which for a larger servers with several hundred or thousand users, eventually will be large enough to cause lag. The core.inMemoryCache option can be used to address this issue.
2) safeTeleport (on by default) on a slow server. Bukkit has done a lot of non-main-thread tuning regarding the loading of chunks, so when a teleport happens, the player is teleported before all chunks around him/her have been loaded and Bukkit continues on serving other players while the chunks around the teleported person load in an async thread.
If using safeTeleport, HSP does an evaluation of the targeted teleport location PRIOR to the teleport, so Bukkit cannot "fire and forget" the teleport, it has to load enough chunks right away to serve HSP's interrogation of the blocks. In most situations, especially with the majority of teleports being "safe", this results in a single chunk being loaded and the player being teleported, which on fast servers with SSD disk, is a non-event.
In other circumstances, perhaps where the targeted location is NOT safe and just so happens to fall on the border of 4 chunks, safeTeleport might require Bukkit to load 4 chunks in order to do processing. On a slower server that is loading chunks off a 5400 rpm disk, for example, this can result in noticeable lag since the server has to stop and wait for those chunks to be loaded before processing other events.
The fix here is obvious: turn off core.safeTeleport. I leave it on by default because it seems to be a useful feature that most people enjoy and most MC servers are either small enough that it doesn't matter or big enough that they run on dedicated hardware, so it's a very rare case where this actually causes an issue.
Outside of those two scenarios, for which the defaults remain the same between 1.7 and 2.0, I'm not sure of what could have caused such a drastic difference between the two versions. But, as I said, HSP 2.0 did include a major refactor and some intentional performance improvements and was developed over a period of 2 years, so it's entirely possible I fixed something and just don't remember it. In any case, I'm glad 2.0 performs much better - I just wish I knew why. :)
-
View User Profile
-
Send Message
Posted Jan 2, 2015@TomXPro
There is no direct integration with Lifestones, so you cannot use HSP to setup rules on death that check for lifestones and then do something else if they don't exist.
If you prefer to have Lifestones controlling your onDeath sequences and don't want to do anything different, then just set your HSP onDeath event to default and HSP will do nothing, ensuring Lifestones gets the event and has control.
If your goal is to have Lifestones do something if set and then have HSP do something else if there is no Lifestone, that would require an integration with HSP, much like I've done with plugins like Multiverse or Worldguard, where HSP can do special things since it has knowledge of how those plugins work.
Example 2 goes into events.yml, yes. The examples were all written for pre-2.0 and while they work fine in 2.0, the configs in 2.0 are broken out so as to be more approachable to new folks and not have a single monstrous config.yml file. The individual configs maintain the exact same syntax so all examples work the same, you just have to put them in the appropriate config file.
-
View User Profile
-
Send Message
Posted Jan 1, 2015@dunkeroni
Thank you for this information friend.
-
View User Profile
-
Send Message
Posted Jan 1, 2015Running Spigot 1.8; Our players were experiencing frequent lag spikes causing time-outs to affect upwards of two dozen clients at once using the older version of HSP. About every other day it would cause a full crash. If anyone else is experiencing similar behavior, I suggest you update to the newer builds. #578 at http://andune.com/jenkins/job/HomeSpawnPlus_v20/ seems to have solved the majority of our lag issues. Keep up the good work, @andune.
-
View User Profile
-
Send Message
Posted Jan 1, 2015This plugins seems to be awesome!
I will give it a try. Thanks for keeping development!
Happy New Year
Edit: Uhm, btw, do you think, HSP is compatible with Lifestones? http://dev.bukkit.org/bukkit-plugins/lifestones/
You can call me an idiot, but where do I have to put in my config for example 2 (graveyrads)? Is it events.yml?
-
View User Profile
-
Send Message
Posted Dec 25, 2014@andune
Though @ThisUsernameIsMine linked to an example, just to explicitly cover the first situation, you would setup a custom homeLimit permission in homeLimits.yml as I mentioned, like so:
In this example, anybody with permission "donator.worldXYZ" would have a perWorld limit of 5 homes. As I explained, you would use your permission plugin to assign this permission to your donators only on the world you wanted them to have 5 homes instead of the default.
-
View User Profile
-
Send Message
Posted Dec 25, 2014@H1DD3NxN1NJA
Thanks to @ThisUsernameIsMine for the helpful reply.
Regarding donators homes, yes, use the perPermission settings and give your donators a permission that only they have in the world you want (you need to use your Permissions plugin to do this - all of them that I know of support per-world permission). You can make up your own permissions. For example, you might choose "donator.worldXYZ" and assign it to your donators only on world XYZ. Then in HSP, use the homeLimits config to give "donator.worldXYZ" some higher limits, which of course will only take effect on that world since that's the only world you've assigned that permission on. Make sense?
Regarding disabling spawn, the easiest way to is to disable any HSP processing on spawn events, most notable is "onJoin", ie:
In this configuration, HSP won't do anything onJoin, so whatever other plugin you have running will control the on-join spawn behavior. For commands, HSP is fairly unique in that you can explicitly disable commands and it won't process them at all, so the other plugin is guaranteed to get the /spawn command instead. Here's an example for commands.yml:
With this set, HSP won't even register the /spawn command at all, so some other plugin will get it. If you have multiple other plugins that register /spawn commands, you will have to deal with their system for disabling the ones you don't want, which usually involves cracking open the JAR and editing the plugin.yml.
-
View User Profile
-
Send Message
Posted Dec 23, 2014@H1DD3NxN1NJA
1. There are some examples on this page ;)
Albeit a bit outdated (last page update of Example 4 was Jul 08, 2012) they are still usable.
Example 4 discusses per-permission home limits and some advanced "mode" settings for home events. (authors own config): http://dev.bukkit.org/bukkit-plugins/homespawnplus/pages/examples/example04/
The file to edit for this is under HomeSpawnPlus\config\homeLimits.yml, in which you'll find some documentation
2. There may be more and/or better ways to do this but i found some settings in HomeSpawnPlus\config\core.yml which can be changed to achieve the things you want.
Andune probably knows some more tricks and/or tweaks to do this so check back regularly (or enable "new comment" notifications in the top right corner of this page @ Subscriptions)
-
View User Profile
-
Send Message
Posted Dec 23, 20142 questions: 1: is there a way to have donators have more set homes in world A then world B 2: is there a way to disable the spawn part and just keep the perworld homes cause I have a great per world spawn plugin (spawnX_Reborn) and I don't want this plugin to over ride it.
Please reply soon thank you
-
View User Profile
-
Send Message
Posted Dec 14, 2014@andune
New players spawn in the default world (same world where newPlayerSpawn is located), so in this case those messages don't make sense =/
edit: is it possible to initiate a remote spawn-event for other players i.e. by using /spawn playername? (as with EssentialsSpawn)
-
View User Profile
-
Send Message
Posted Dec 14, 2014@ThisUsernameIsMine
I suppose that could make sense, if the auth plugin you were using were constantly trying to teleport the player to some location every time they moved at all. Those events are coming pretty fast, multiple per second. The crossworld teleport doesn't make sense, unless they are logging in on a default world and that plugin is trying to send them somewhere else, and the teleport is failing for some reason. Then HSP would see that plugin trying to teleport them crossworld repeatedly and the logs you showed make sense in that scenario.