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 May 31, 2012@andune
Wow thanks the spawnGroupSpecificWorld:A Works like a charm ^^
-
View User Profile
-
Send Message
Posted May 30, 2012<<reply 731685="">>
The comment is basically that "groupSpawn" behavior is local to a world, not global across all worlds. This has more to do with the history of permission systems and how this feature was designed.
To enable something like what you described, you'd have to use the "spawnGroupSpecificWorld" strategy. Say you have Group 1 and 2. And you have worlds A and B. You define groupspawn for group 1 and 2 on A. Which, as you say, when on A, works fine. In order for the same to work on B, you need to use the strategy "spawnGroupSpecificWorld:A". You don't even need per-world or per-permission strategies, just use this instead of "spawnGroup" and now whether they are on world A or B, they will spawn at the groupspawn set for them in world A.
-
View User Profile
-
Send Message
Posted May 30, 2012<<reply 731910="">>
Regarding random spawn, HSP has a 'spawnLocalRandom' strategy that will pick a random spawn on the local world. The advantage is that you can integrate that in whatever way you like in your event strategies, rather than the blunt tool of "either HSP or anther plugin wins". If you do want to turn down HSP's priority so that another plugin can "win" the event location, you can do that too (there's a config option for it).
Regarding your question of per-permission/per-world precedence, HSP uses per-permission as the highest precedence because permission systems can turn permissions on/off for specific worlds. An example of how this could work is that instead of tying your per-permission strategies to a group, you might instead group them (to minimize confusion) into just 2 or 3 policies and tie them to a permission like "hsp.policy.1". For example:
<
>>events:
permission:
policy1:
permissions:
- hsp.policy.1
onJoin:
....
<
Now assign "hsp.policy.1" permission to the 2 or 3 groups that share that policy (it doesn't look like it's different for every group in your config). Or if it is different for each, consider using something like "hsp.group.supervisor", so the player can still be in "group.supervisor", but you can disable the "hsp.group.supervisor" permission on worlds you don't want it on.
Now on this other world where you want something else to happen (such as your other plugin to work instead), just use your permission system to remove the "hsp.policy.1" permission for that world.
I'll say right now that I won't help you with permission systems, they are their own set of problems/issues that I don't support, but suffice to say that most permission systems support this per-world permission concept and if you need help with that, you should ask the permission authors/supporters how you would go about doing that in your chosen permission system.
-
View User Profile
-
Send Message
Posted May 30, 2012andune: Can world specific per-permission based spawn stragegies be used/set-up?
I have a plugin called Random Spawn. I basically want people to spawn at a random location in one specific world, but HSP's permission based stragegies somehow overrule the world-specified stragegies.
My current setup looks like this: http://dev.bukkit.org/paste/5471/
-
View User Profile
-
Send Message
Posted May 30, 2012@andune
Thanks for the info , but to be honest i dint get a thing what was going on.Sorry its not like im not trying its just a dont see the link with my problem , its rather confusing and just started using your plugin.
i checked the debug it only saying basically that they dint not find a groupspawn in this world which is not ofcoarse but dont get that its in a other world. "sorry to bother you ^^
-
View User Profile
-
Send Message
Posted May 30, 2012@deathwing911
Someone else had the same question a few pages back, so linking the answer here:
http://dev.bukkit.org/server-mods/homespawnplus/?page=6#c328
-
View User Profile
-
Send Message
Posted May 30, 2012Greetings , i use your plugin on my pvp server and its awesome but have a question, Lets say i have 2 worlds A and B , and 2 teams 1 and 2 .
if i set groupspawn team1 in world A and team 2 in world B the teams in there worlds will properly spawn at there groupspawn all fine.
But the problem is when Team 2 dies in world A for example , Team 2 wont respawn in their world setgroupspawn.
Only if they die in the same world of the groupspawn is set that works. Any thoughts ? Thanks**
-
View User Profile
-
Send Message
Posted May 29, 2012Oh neat... that solves my problem nicely. andune, you're my hero!
-
View User Profile
-
Send Message
Posted May 29, 2012@empathdemon
Note that it's certainly possible to use per-permission strategies to emulate /groupspawn behavior in a more deterministic manner. For example:
in this example, rather than using /setgroupspawn, you would use "/setspawn groupSpawn1", and then assign the permission "my.group.permission" (which obviously is whatever permission you want it to be) to the group you want to use it.
I think this is actually a great example of where HSP's flexibility shines. While the core "/groupspawn" behavior doesn't map well to your use case, you can re-map the /groupspawn command to do whatever you want, in this case assign per-permission strategies that will work regardless of what the primary group is.
Note that HSP's per-permission strategies evaluate in deterministic FIFO order: the entries are evaluated in the order listed, so the first entry to match (a valid permission and strategy) will be the one executed for the given event.
-
View User Profile
-
Send Message
Posted May 28, 2012Unfortunately, after a bit of experimentation, PEX doesn't seem to work that way. It adds new groups to the top of the player's groups, and it moves pro-/demoted groups to the bottom - don't ask me why. Then it seems to report groups in that order, not the order of the group definitions. This means it's impossible to predict which group will be listed first, as far as I can tell.
I'll twiddle with it for a little longer before giving up. It's a damn shame. Having group spawns was an elegant solution, but it's not worth sacrificing the ability to have multiple groups.
As far as supporting multiple groups with your addon, I don't blame you for not wanting to add a feature like this. I'm a little surprised that more people aren't using them though, as they're terribly useful.
-
View User Profile
-
Send Message
Posted May 28, 2012@empathdemon
Regarding a 'primary group designation', I'm not aware of such. However, if you read the Permissions page for HSP, it documents how to specify a permission system. HSP includes support specifically for PEX (since I use it), so you could move that higher in the list to use direct PEX api calls instead of the Vault abstraction. The direct PEX integration just grabs the first group PEX returns, which should at least be a determinate ordering, so you can order your PEX groups according to which one you want returned (probably the first one in the list is returned).
Regarding the use of permissions, this pattern is generally followed throughout HSP, for example you'll note all the by-permission settings for events, costs, cooldowns, etc. The "groupspawn" feature was inherited from the original SpawnControl, which was based on the Perm2 notion of groups, which was a single primary group construct. I've never ported over this "permission" vs "primary group" concept to groupspawn; and while I certainly could undertake such an endeavor, you would immediately have challenges such as, what if a person is a member of 3 different groups, which one do you pick? It would require a different implementation to address this concern than what is there today.
I may tackle that some day, but for now, it is an interesting data point that you are the first user in about a year of HSP to ask for multiple groupspawn groups, so the feature finds itself among a small userbase considering the large amount of issues it raises to be done properly.
-
View User Profile
-
Send Message
Posted May 28, 2012Thanks for the reply, andune.
You say groupspawn asks Vault "What is this user's primary group" - is there an actual designation for a primary group? That would certainly solve my problem. Or should I go bug the Vault/PEX maintainers for that tidbit? =)
Alternatively, can a permissions node be tested on groupSpawn? Each of my primary groups has a dummy group.groupname node. A little counter-intuitive, but it would solve the issue of multiple groups.
Thanks again... again!
-
View User Profile
-
Send Message
Posted May 28, 2012@empathdemon
A few questions there.
First regarding costs, yes the settings you pasted + Vault are all you need (of course an economy plugin behind Vault). If you are having problems, try turning on "core.debug" and see if the debug messages (in plugins/HomeSpawnPlus/debug.log) help you diagnose the problem further.
Regarding groups, HSP punts the handling to Vault or WEPIF (WorldEdit), so it supports whatever they do. The general case for HSP "groupspawn" is that it checks only one group. To say another way, HSP asks the permission system "What is this user's primary group?" and will act accordingly.
-
View User Profile
-
Send Message
Posted May 28, 2012Great plugin! I'm having trouble getting it to charge users for /spawn though. I have Vault installed.
Are these the only values I need to enable, or is there something... else... somewhere? =P
Thanks!
EDIT: I'm using PEX, which allows membership in multiple groups. Only one main group ladder has a groupspawn, but there are secondary laddered groups which help gate access to different areas (and, in the future, town memberships). I've turned on verboseStrategyLogging and found the player has no groupSpawn. But he does! When I use /groupquery <user> I only get a single group response (not the one with groupSpawn set, obviously). It appears that may be the root of my problem.
Further EDIT: Indeed, when I removed the user from the extra group, /groupquery reported only the main group, and /spawn (rerouted to groupspawn) correctly charged him and sent him to the right place. Alas!
Does HSP support multiple group memberships, and if so how to I enable it? If not, is there a hack or workaround?
Thanks again
-
View User Profile
-
Send Message
Posted May 27, 2012@GrumpleStache
Though I'm not sure of the root cause, the stack trace is saying there is a bug when trying to print the "insufficient funds" message. This is either a bug in the string localization that has never been encountered before (possible) or a problem with Vault and your economy plugin of choice. I'll look into it more later when I have the chance, please open a ticket, paste the stack trace there and include the details about your economy setup and also your HSP config.yml.
-
View User Profile
-
Send Message
Posted May 27, 2012I know i am doing something wrong. curious whether using groupmanager is my problem. this error is thrown when my players attempt to warp to home. No errors are thrown when they use the /home command. only when the warp is initiated. someone please help!
17:51:35 [WARNING] Task of 'HomeSpawnPlus' generated an exception java.lang.IndexOutOfBoundsException: No group 9 at java.util.regex.Matcher.start(Unknown Source) at java.util.regex.Matcher.appendReplacement(Unknown Source) at java.util.regex.Matcher.replaceAll(Unknown Source) at java.lang.String.replaceAll(Unknown Source) at org.morganm.homespawnplus.i18n.LocaleStringReplacerImpl.getMessage(LocaleStringReplacerImpl.java:78) at org.morganm.homespawnplus.HomeSpawnUtils.getLocalizedMessage(HomeSpawnUtils.java:65) at org.morganm.homespawnplus.HomeSpawnUtils.sendLocalizedMessage(HomeSpawnUtils.java:86) at org.morganm.homespawnplus.command.BaseCommand.printInsufficientFundsMessage(BaseCommand.java:114) at org.morganm.homespawnplus.command.BaseCommand.applyCost(BaseCommand.java:138) at org.morganm.homespawnplus.commands.Home.access$1(Home.java:1) at org.morganm.homespawnplus.commands.Home$1.run(Home.java:119) at org.morganm.homespawnplus.manager.WarmupManager$PendingWarmup.run(WarmupManager.java:326) at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:126) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:524) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:450) at net.minecraft.server.ThreadServerApplication.run(SourceFile:49
-
View User Profile
-
Send Message
Posted May 27, 2012@HammyHavoc
The admin commands page documents the '/hspconvert' command:
http://dev.bukkit.org/server-mods/homespawnplus/pages/admin-command-reference/
-
View User Profile
-
Send Message
Posted May 26, 2012The author of SpawnControl mentioned exporting data to this, how would I go about doing that?
-
View User Profile
-
Send Message
Posted May 26, 2012@EndyHUN
Update what? HSP runs fine with the latest versions of Bukkit.
-
View User Profile
-
Send Message
Posted May 26, 2012Update pls.