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 Oct 5, 2012@ThisUsernameIsMine
Yes it shows home names, if set. If you type "/homes" and see your home names, then try typing "/hlo player" where player is yourself. The listing should be almost exactly the same.
If you're not seeing names listed, it's probably because that player has not set any named homes. HSP allows users to set a home with no name (ie. just /sethome), so to easily distinguish between multiple homes with no name (on different worlds), HSP also prints the unique id of the home. It does this for all homes, whether the have a name or not.
-
View User Profile
-
Send Message
Posted Oct 5, 2012Ok problem solved, i have the hsp only working for wg regions :)
-
View User Profile
-
Send Message
Posted Oct 5, 2012@andune
Sweet! :)
Is there a way to list the named homes by (user-entered) name, instead of their ID? I only seem to get homes by ID.
-
View User Profile
-
Send Message
Posted Oct 5, 2012Hi andune, sorry yes bukkit is doint he teleport to the default world, hps is working well, so i have a question... how can i make bukkit DON'T have more priority than other plugin? because is teleporting me when i die to the default spawn even having other plugin trying to teleport me to another location, but (as i said before) if i set a delay iget teleported to default spawn (bukkit) and then to the location i want...
-
View User Profile
-
Send Message
Posted Oct 5, 2012@Mayhem777
If HSP is returning default, as you show, then its event handler is essentially this:
Yes, it's doing NOTHING. The fact that you're going to Bukkit's default spawn is because it's Bukkit doing the teleporting, not HSP.
You said when you uninstall HSP it suddenly works, though? The only thing I can think to explain that behavior is your other plugin/script is detecting the presence of other listeners to the respawn event and doing something different in that case. As you can see from the above code example, there's no reason in HSP to explain the behavior you are seeing, it's not doing anything to change or modify the event in any way.
As I mentioned in my previous comment that if you arrived at this juncture (HSP is doing nothing but you're still seeing the strange behavior), you need to work with the other plugin author to find out if s/he's doing something weird such as detecting other listeners.
-
View User Profile
-
Send Message
Posted Oct 5, 2012I made another test, i make the script 1 sec slower, so when i die hsp teleports me to default spawn AND THEN the script teleports me again to the point i want, so hps handles my teleport on death, even in default, or EVEN COMENTED!
-
View User Profile
-
Send Message
Posted Oct 5, 2012I get this, and i get teleported to the default spawn of the default world:
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] Strategy evaluation started, type=ondeath player=CraftPlayer{name=Goty}
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] (strategy homeMultiWorld) result is [loc={null}, home=null, spawn={null}]
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] (strategy spawnLocalWorld) result is [loc={null}, home=null, spawn={null}]
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] Evaluation chain complete, result = [loc={null}, home=null, spawn={null}]
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] Strategy evaluation started, type=crossworldteleport player=CraftPlayer{name=Goty}
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] (strategy default) result is [loc={null}, home=null, spawn={null}]
2012-10-05 16:39:43 [INFO] [HomeSpawnPlus] Evaluation chain complete, result = explicit default
-
View User Profile
-
Send Message
Posted Oct 5, 2012@Mayhem777
Have you turned on verboseStrategyLogging as I suggested? That will tell you exactly what HSP is doing. Given your strategy, assuming the player dies outside of a WG region with a spawn flag, you should see something like:
In this example I'm showing my login with strategies spawnNewPlayer and default. The key part is the last two lines, which say that the result location is null and the chain result is "explicit default". This means HSP does NOTHING.
If your other plugin does SOMETHING, whether it's before or after HSP and HSP spits out a null location like above, then HSP isn't changing anything, it's just passing through silently.
Since the behavior you're describing doesn't match the above, I'm guessing your HSP verbose output looks different. If it does look the same (your HSP is doing nothing) and you're still getting the same behavior where the other plugin isn't doing anything, then it's possible there's something really bizarre going on in your other plugin and you may have to get that author involved to figure it out.
-
View User Profile
-
Send Message
Posted Oct 5, 2012@ThisUsernameIsMine
Use the /homelistother command (alias /hlo). The output looks exactly the same as /homes except it shows it for other players.
-
View User Profile
-
Send Message
Posted Oct 5, 2012Besides being able to visit and set other player's default or named homes, is there also a way to somehow list them? It would be great is this was possible :)
-
View User Profile
-
Send Message
Posted Oct 5, 2012Ok i'll try thanks :)
EDIT: sorry i can't do it...
onDeath:
- spawnWGregion
- default
and
onDeath:
- spawnWGregion
When i die hsp always takes me to the default spawn in the world, it i remove hsp the other plugin takes me to the graveyard (the other plugin death point)
-
View User Profile
-
Send Message
Posted Oct 4, 2012@Mayhem777
Follow the FAQ to turn on verboseStrategyLogging. That will tell you exactly what HSP is trying to do. Compare that to what you want to have happen.
Now, you need to decide how you want things to work. You say you have a plugin that respawns them in a certain location: presumably this means onDeath? Does this mean you no longer want HSP to handle onDeath events? If so, it's a simple matter:
Or just comment out onDeath altogether - same effect.
Now you might be thinking, but wait, I don't want my HSP onDeath commented out - I just don't want it used when people are supposed to be going through this script in some-other-plugin?
There are two ways to do this. One is that HSP provides direct support for some-other-plugin, like it does for WorldGuard. In this case, you can make strategies (like the ones for WG) that allow HSP to yield control to the other plugin. It seems unlikely I'd make this for you unless it was a large plugin with a lot of users. Of course HSP is open source, so you could make it yourself.
The second way is that you give HSP some way to know when this is happening. The easiest would be to set a permission. So if someone starts on this script in some other plugin, you might set the permission "playerOnTutorial". Then you can use HSP's per-permission strategy to do nothing when the the permission is set, and use your default onDeath chain when is isn't.
-
View User Profile
-
Send Message
Posted Oct 4, 2012I have a huge problem.. i have another plugin to create scripts, i want to make players fallow a script to respawn on a saved location, but hps takes always more priority even on "lowest" what can i do? thanks!
-
View User Profile
-
Send Message
Posted Oct 4, 2012@Hangar
Hangar, I used to have this alias, but it was only on a few commands and it was lost in the conversion to the new command system. The current dev release (available on Changelog page) add an "hsp"-prefixed alias for all HSP commands (ie. /hsphome, /hspspawn, etc). Give it a go and let me know.
-
View User Profile
-
Send Message
Posted Oct 4, 2012@ccman972
He said they were built-in already below. What .jar are you talking about?
"HSP does have aliases, such as "hsphome"."
-
View User Profile
-
Send Message
Posted Oct 4, 2012@andune
When I decided to work on the command handler in Essentials I set out with a few goals in mind: a) dont mess with the command handler b) act passively c) treat other plugins with higher priority
The essentials command handler doesn't touch the built in bukkit command system, it just contains two passive components:
a) Loops through each plugin's command descriptor to work out what commands each plugin has. It does so using the public methods and does so in a read only way. b) When a command is passed to Essentials it checks the map generated by step a, and if it finds a match, it simply tells bukkit to forward the command to that plugin.
It will in no way interact with the command handler or mess with bukkit behaviour, and only uses bukkit api methods.
The reason I use the modifier 'Internal' is for that specific reason. The way I do things, should be predictable for as far as it completely follows the bukkit api, so other plugins should be able to interact with it as normal, including for things like command signs, and command cool down scripts.
As to necrodoom's suggestion, the way we do it, is register the command with its normal command and a more obscure alias, so we register 'home' and 'ehome'. This means if someone was using 'MyHome' but wanted essentials /home, they could set up a bukkit alias, to map home -> ehome.
-
View User Profile
-
Send Message
Posted Oct 3, 2012@andune
/hsphome gives me the generic, white error:
I also get an aliasing error in the console on startup:
I confirm my HSP version to be 1.7.2 also there in the console. Is this because you're not registering commands like most plugins or whatever? Are you planning to register those hspxxxx ones for the new version?
Thanks.
-
View User Profile
-
Send Message
Posted Oct 3, 2012@andune
erm... i'm not sure how this could've happened, but the nodes weren't there anymore.
but... i had two instances of the server running (oops! and facepalm)...
It all works now! :) (soz for this epic failure:$)
-
View User Profile
-
Send Message
Posted Oct 3, 2012@ThisUsernameIsMine
The permission should be: "hsp.command.guest", using one of your examples. However, looking through HSP code, as best I can see this isn't functioning as intended (I'll need to do some testing).
What should work is defining your own permission, as in:
Or just call it "hsp.command.customspawn" and give them al the same permission, however you want to do it. The permission is supposed to happen automatically so I'll do some testing locally and fix it if it's not, but for now this should workaround the issue. Let me know if you find otherwise.
Note that being an op is irrelevant, HSP only checks op if you're using "op-only" permission system. A lot of people seem to expect that op should be equivalent to the old "*" node regardless of if you're using a permission system; maybe I'll change it to do exactly that.
-
View User Profile
-
Send Message
Posted Oct 3, 2012I somehow can't get newly added named spawns to work as /nameofspawn command/shortcut, using custom events. I'm getting a 'You don't have permission to do that', while being an op.
The named spawns are named correctly and i have the required permission nodes (using Vault)
My HSP config: http://dev.bukkit.org/paste/6338/