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 3, 2012Giving it some more thought, I really like @necrodoom's suggestion. The idea for command usurping predates the Bukkit alias system and I think the alias system is a reasonable way for admins to accomplish the same objective. It's also less code for me to support and I expect it will work with Essentials without any headaches from their own custom remapping system.
In the next version, HSP will have the prefix "hsp" for ALL of it's commands. Thus if you have a conflict and decide you want "/home" to be mapped to HSP, you can simply make an alias for "/home -> /hsphome". Your users won't know the difference and you don't have to monkey with anything when you upgrade plugins; set and forget.
So for those handful of HSP users still on 1.6.x and waiting for a 1.7 fix for Essentials, give me a few days and I'll add some FAQ docs and give you a test build to let me know how it works.
-
View User Profile
-
Send Message
Posted Oct 3, 2012@Necrodoom
An interesting suggestion, Necrodoom. HSP does have aliases, such as "hsphome". Hanger, perhaps you want to try that: add an alias in bukkit.yml from "home" to "hsphome"?
Khobbits, you've been by once before and I appreciate your sincere desire to help. However, your statements are in conflict. At the end, you say: "I think the whole idea of trying to modify the standard way of doing things, and messing around with bukkit internal command handling is a bad idea, even with the best intentions in mind." At the beginning, you say: "To help with this, Essentials 'gives up' commands by default." (aka messing around with command handling)
I recall looking into Essentials code a month ago, you have a whole giant class dedicated to trying to "help" the user, messing around with Bukkit commands. The only difference might be your use of the qualifier 'internal'. That aside, the goals between HSP and Essentials are exactly the same, to help the admin not have to deal with hokey things like editing plugin.yml files or having to manage aliases. Each plugin tries to do the "right thing" as directed by the admin with a minimum of fuss.
Regarding 'forcing plugin to take priority': this is only done at the request of the admin - they must turn on a config option - and actually uses the exact same mechanism you do in Essentials, modifying Bukkit API Executors. The two plugins approaches are no different in this regard; there is no "opposite approach" here. So if your classifying HSP as these evil "other plugins" by your definition, Essentials is exactly the same. (Just so we're on the same page)
You mention sk89q's command system, which conceptually was the icebreaker that I modeled after (he showed it was possible to get it working, I wanted similar easy configuration for my users). I actually tried to use his first, but his was very specific to CommandBook/WorldEdit and not easily exportable by use for other plugins. However, my impl is no different in interaction with bukkit.yml, aliases should work fine.
TL;DR I will give figuring out this problem one more detailed pass now that I have a users configs who has the problem and can hopefully reproduce it locally. If I cannot figure out the conflict, I will suggest users use the bukkit.yml alias method. It's not the original easy configuration goal I was after, but it is a concrete way for the admin to tell Bukkit what they want done without having to monkey with plugin.yml files that get blown away every update.
Thank you both again for your sincere interest in resolving the problem, hats off to you both for your commitment to your users.
ps. to be clear, there are two mechanisms in HSP. 'commandUsurping', an admin configured option (off by default), works using Bukkit API in the same way Essentials does and has been in HSP since 1.0. The 1.7 command features work much like sk89q's system, there are no command definitions in plugin.yml, it is all dynamic and as a result, there are no DRY violations and my users can also define custom commands in their configs and fully disable HSP commands if they wish (again, similar to CommandBook).
-
View User Profile
-
Send Message
Posted Oct 3, 2012Bukkit already has methods for dealing with command conflicts, and remapping functions. You can do all of this in the bukkit.yml. To 'help' with this, Essentials 'gives up' commands by default.
Other plugins which try to intercept/modify the bukkit way of things to take the opposite approach, trying to force their plugin to take priority. While this may sound like a good thing to the developer, it generally just causes issues to people trying to use their plugin, because it behaves unexpectedly. It also means their plugin doesn't properly implement the bukkit api, and that causes problems with other plugins trying to hook commands (for example command signs or power tools).
Sk89q implemented a system similar to this for similar reasons, although it cooperates with the bukkit.yml allowing server owners ultimate control. The overall effect is that while being rather presumptuous, its well written enough to allow users to control the behaviour.
I think the whole idea of trying to modify the standard way of doing things, and messing around with bukkit internal command handling is a bad idea, even with the best intentions in mind.
-
View User Profile
-
Send Message
Posted Oct 3, 2012@andune: if you provide aliases for the commands like, hhome, using bukkit.yml to alias hhome over home should work if any error is found.
-
View User Profile
-
Send Message
Posted Oct 2, 2012@andune
Oh very good. Check this out:
http://forums.bukkit.org/threads/id-like-some-assistance-choosing-between-commandbook-and-essentials.94300/page-3#post-1301173
That's one of the Essentials devs. He definitely wants to help on any conflict issues. He also mentions how their command interception works. I PM'd KHobbits and necrodoom and asked them to look here.
I can modify the plugin.yml fine, and I don't update Essentials that often so if I need to move on the new features before we get this sorted I will give that a shot.
Thanks for the reply. I'll keep monitoring this.
-
View User Profile
-
Send Message
Posted Oct 2, 2012@Hangar
Yes, it seems there are still issues between HSP 1.7.2 and Essentials in some cases. It has been this way since 1.7 and I've tried gathering information from users to track it down, but I've never been able to reproduce the issue and the two work fine in all my tests. User @ccman972 recently sent me all his configs, so I'm hoping that using his configs I will be able to reproduce the issue locally and finally debug and fix it. As you've read, once you know you are an "affected" user (most HSP users seem to be fine), you should stay on 1.6.x until the issue is resolved.
Regarding the issue with usurpCommands and Essentials syntax, this is because Essentials does not actually turn off commands. It jumps through hoops to "hide" it's commands and pass control to other plugins. Very similar hoops I jump through with commandUsurping to map commands from other plugins to HSP.
The problem is really that Bukkit doesn't offer any system for dynamically controlling commands: a plugin author statically puts something into "plugin.yml" and very little control is offered beyond that. I'm optimistic the official API from Mojang will improve on this situation and give us a solution that gives devs and Server Admins much better control over commands so we can all stop jumping through hoops to accomplish this, such as server admins editing plugin.yml every upgrade. Which, btw, editing your Essentials plugin.yml would probably get you up and running since HSP & Essentials wouldn't conflict anymore. But of course you have to remember to do it every Essentials upgrade.
Stay tuned while I try @ccman972's configs to see if I can reproduce the problem, if not I will definitely take you up on your offer to help so I can hopefully resolve this pesky issue.
-
View User Profile
-
Send Message
Posted Oct 2, 2012@ccman972
Yes, 1.6.3 is the last version before the dynamic command system was introduced in 1.7. It seems even as of 1.7.2, some people running Essentials still have issues with conflicting commands between Essentials and HSP. I've run the latest versions of both in local test environments and have never been able to reproduce the issue.
Since you've uploaded your configs for both, I should be able to locally test your exact environment and if I'm lucky, I will finally be able to reproduce the issue. If so, it should be a straightforward debugging exercise for me to track down and resolve. Feel free to try 1.7.2 to see if you have success, but if not, sit tight on 1.6.3 and hope I'm able to reproduce the problem with the information you've given me.
-
View User Profile
-
Send Message
Posted Oct 2, 2012@andune
Thanks!
-
View User Profile
-
Send Message
Posted Oct 2, 2012@Q2Lummox
As I tell most people who post ideas in the comment stream, please open an enhancement request on the ticket tab. I frequently look over the ticket tab for outstanding bugs or enhancement requests as I'm doing new releases. If you post it here in the comment stream, I may have seen and even commented it on one time, but I forget if I don't see it in the enhancement list.
Your request seems reasonable so please open a ticket and I will get to it for next time. I usually post dev releases as I'm building the next one so you'll get access to early testing as soon as the feature is built.
-
View User Profile
-
Send Message
Posted Oct 2, 2012@JohOply
Yes. Use the backup & restore features (documented in admin commands).
First, run a backup with your sqlite database. Then verify your data is in the "backup.yml" file. Now change your bukkit.yml over to MySQL (beware this is a global setting, you might have other plugins that switch also) and restart Bukkit. HSP will detect the missing MySQL database and create a new (empty) one. Now just run /hsp restore OVERWITE (exact case is required) and HSP will restore your backup.yml into your new MySQL database. No restart required.
-
View User Profile
-
Send Message
Posted Oct 2, 2012@diannetea
The first issue is related to economy. I'm not sure from your list of plugins which economy plugin you're using (Essentials, perhaps?), but it's failing to print the "money display" properly when charging the player money. I will build a better protection into HSP to give a more clear error message in the future, but the issue is out of HSP's hands. I'm not sure if the issue is with Vault or your economy plugin. To workaround for now, set your costs to 0 in your HSP config.yml. Or you can play with different economy settings to try to fix now that you know the source of the problem.
The second issue is the same one you already reported: there is some sort of bug in your environment related to the Multiverse integration. The line of code it's breaking on should never NPE, because there is no valid condition under which the variables involved should be null. Consequently, I'm not able to reproduce the issue, because that variable is never null in my test environment. That said, it's possible there's some sort of error when HSP starts up that is causing the variable to be null, so if you can restart your server and look for any errors from when HSP starts up, that might help me find the cause. If there are no errors when it starts up, that would be useful information also.
Also, since I'm getting a lot of activity in the comment stream and it's hard to carry on multiple threads here, please feel free to open a ticket for these issues and I can deal with them individually there. Thank you for using pastebin, that's a big help!
-
View User Profile
-
Send Message
Posted Oct 2, 2012Hi!
Is there a way to convert Sqlit data to MySql please ?
-
View User Profile
-
Send Message
Posted Oct 2, 2012Also it throws an error every time someone uses /npc tphere (citizens)
http://pastebin.com/18hiaMHC
-
View User Profile
-
Send Message
Posted Oct 2, 2012Okay it is definitely a conflict with essentials (that by the way you can get around by editing the plugin.yml in essentials.jar and putting an x before the name of any commands that conflict)
But /sethome is broken as well, same versions as before
http://pastebin.com/dQPwnqVV
-
View User Profile
-
Send Message
Posted Oct 2, 2012Add to option to "spawn" in bed, if in a defined radius?.
That is, define the bed having a radius of 300 blocks, for example, if we are within that radius, "spawn" in our bed, but if we are out this radius, "spawn" in the nearest cemetery.
You could add that option in the next update? .... I thought you were going to add in this latest update you have posted :(
-
View User Profile
-
Send Message
Posted Oct 2, 2012@ccman972
Just to point out in case you aren't aware of it.
Is it correct that you're not using the latest version of HSP?
Your log shows HomeSpawnPlus v1.6.3
(i din't follow the conversation so don't bite me :D)
-
View User Profile
-
Send Message
Posted Oct 1, 2012I just upgraded from 1.6.2 to 1.7.2. /home and /sethome aren't working. I get no feedback at all when I type them. /spawn, /hsp, /homelist, /spawnlist all seem to work. /permcheck tells me I can use hsp.command.home as well as hsp.full (system is Vault: PermissionsEx). Making myself OP doesn't change anything. So it seems it's not permissions-related for me.
I enabled core.debug (is that supposed to be in the full config example? -doesn't look like it is FYI). Nothing is being reported in debug.log when I do /home but it does when I do /spawn. I'm also seeing the commands logged to the server console but it's like HSP isn't even trying to act on them. The disabledCommands section is all commented out and matches the default one in my config.
Reverting to 1.6.2 makes everything work again. I'll stay there until I get it sorted out. Versions and configs:
* CB RB 2377
* Essentials 293 - /spawn and /home are disabled in the Essentials config (disabled-commands:) so they don't try to override HSP. I've had it set this way since back when I implemented HSP.
* My config is here: http://pastebin.com/VexQzvUG
EDIT: I just turned on usurpCommands for /home and /sethome. Now when I do /home, I get a syntax prompt from Essentials (!amazingly!, since those 2 commands are disabled in the Essentials config): "/home [player:][name]". It's like HSP caused Essentials to actually do the usurping(??). With usurpCommands off, I get no feedback from *any* plugin when doing /home. And there are no errors in the console/server log.
EDIT 2: I turned off Essentials and HSP started working. So it feels like a plugin conflict to me, but I don't know what else I can do on my end. HSP's usurp... doesn't (for me), and those 2 commands are already disabled in Essentials. If you want me to try something else or give you more info about my setup, let me know. I'll try to watch this thread over the next few days. I was hoping to implement the new WG stuff for an adventure project.
EDIT 3: Oh, I see you mentioned commands not working in the forum thread. Has this been going on for a month? I will get you what you need if you are willing to fix it because never upgrading again simply isn't an option :)
Thanks.
-
View User Profile
-
Send Message
Posted Oct 1, 2012@diannetea
Thanks for the stack trace and details. I'm unable to reproduce the issue. According to the stack trace, the issue is related to HSP's Multiverse integration. I setup a test server with your exact plugin versions (Bukkit/HSP/Multiverse) and am unable to reproduce the error.
I've also poked through the code and am not entirely sure how the error is happening unless there is some other error happening that precedes this one. Can you see any other stack trace closer to startup of the Bukkit server from HSP that might indicate the root cause?
Do you know what is happening that causes the stack trace you posted; such an /mvtp command or some other teleport event?
Please open a ticket with your NPE exception and upload your HSP and Multiverse configs there, maybe there's something unique in your config that is causing an issue.
-
View User Profile
-
Send Message
Posted Oct 1, 2012@ccman972
Using your configs, I setup a server and confirmed:
Thanks for the detail, it was very easy to reproduce and confirm the issue. I will test with other permission systems and see if this issue is unique to PEX.
EDIT Confirmed, this bug is unique to PEX. I installed both PermissionsBukkit and bPerms and both worked fine with hsp.full whereas PEX did not. I will add a note in the FAQ and Permissions documentation to save future folks the headache.
-
View User Profile
-
Send Message
Posted Oct 1, 2012@diannetea
The stack trace and plugin info are a huge help. I will look into it. In the future, please use pastebin to share lots of information like this, it's much easier to read and doesn't flood the comments with walls of text. Or if you have a stack trace, consider opening a ticket here which also has a paste mechanism for stack traces and such.
I'll let you know what I find.