MultiHome
MultiHome is a plugin to allow your users to set multiple home locations, giving each location a unique name. Supports economy, warmup and cooldown, home-on-death.
This project was developed in response to other multiple-home plugins only using home numbers. By using home names, it makes it so much easier to keep track of what home goes to what location.
Features
- Supports flat-file or MySQL storage of homes.
- Supports multi-world.
- Uses home names, rather than home numbers.
- Multiple per-user home locations.
- Can respawn player to their default home upon death.
- Can list and delete home locations.
- Optional warm-up, cool-down and max-homes settings for all Permissions groups. Global settings for undefined groups.
- Automatically imports home locations from Essentials, MyHome and MultipleHomes data directories.
- Can invite players to your home. Can globally invite all players to your home. Can impose a time limit on invites.
- Every piece of text displayed to the player can be customized!
- Supports Economy for pay-to-teleport servers.
- Supports Permissions, PermissionsEx, GroupManager and SuperPerms.
Installation
Simply download the JAR file, copy to your Bukkit server's "plugins" directory and reload plugins/restart server.
When the plugin generates it's data files for the first time, it will import and convert your home locations if you use any of the home plugins listed above.
Configuration
Configuration is done by editing the "plugins/MultiHome/config.yml" file. This file is generated when the plugin is loaded for the first time.
You can edit this file to change any messages sent to users. Useful for translating the messages into another language.
Basic layout of config.yml:
MultiHome: enableHomeOnDeath: false # Set this to "true" to enable the home-on-death feature. Remember to give users the correct permission. enableEconomy: false # Enable/disable economy (pay-to-teleport) dataStoreMethod: file # Method used to store home locations. May be "file" or "sql". messages: # All messages sent to users reside here. Check the config file, it's all self explanitory. default: # These settings are used when your permissions system does not support groups, or the players group is not found below. warmup: 0 # Time (in seconds) for teleport warmup cooldown: 0 # Time (in seconds) for teleport cooldown maxhomes: -1 # Max number of homes for users, -1 for unlimited. disruptWarmup: true # Cancel any teleport warmup if the player moves setHomeCost: 0 # Cost to user to set their default home location setNamedHomeCost: 0 # Cost to user to set a named home location homeCost: 0 # Cost to user to teleport to their default home namedHomeCost: 0 # Cost to user to teleport to a named home othersHomeCost: 0 # Cost to user to teleport to another players home locations (invited or admin) groups: # This section stores per-group settings default: # "default" is the group name # This section is identical to the "default" section above. dataStoreSettings: # Stores settings for each data store method, "file" and "sql" file: filename: homes.txt # Name of file to store home locations in. sql: url: jdbc:mysql://localhost/MultiHome # Server URL to MySQL server where homes are to be stored. user: MultiHome # Username for logging on to MySQL server. pass: MultiHome # Password to use when logging on to MySQL server.
Translations
Translations are always appreciated. Any translations available will be posted under the "Pages" tab above.
Translations available:
- English (default)
- Russian (by alexpsico)
Commands
- /home - Teleport to your default home location
- /home <name> - Teleport to a named home location
- /home <user>:<name> - Teleport to the home location of another user (need invite or correct permission)
- /sethome - Set your default home location
- /sethome <name> - Set a named home location
- /sethome <user>:<name> - Set the home location of another user (need invite or correct permission)
- /deletehome <name> - Delete named home location.
- /deletehome <player>:<name> - Delete another player's named home location. Permission required.
- /listhomes - List home locations for yourself.
- /listhomes <username> - List home locations for another player. Requires permission.
- /invitehome {<user>|*} - Invite another user (use "*" for global invite) to your default home location.
- /invitehome {<user>|*} <home> - Invite another user (use "*" for global invite) to your named home location.
- /invitehometimed {<user>|*} <time> - Invite another user (use "*" for global invite) to your default home for a short time.
- /invitehometimed {<user>|*} <time> <home> - Invite another user (use "*" for global invite) to your named home for a short time.
- /uninvitehome {<user>|*} - Retract invitation for another player to visit your default home.
- /uninvitehome {<user>|*} <home> - Retract invitation for another player to visit your named home.
- /listinvites - List invites open to you.
- /listmyinvites - List invites you have open to others.
Permissions
- multihome.defaulthome.go - Allow user to teleport to their default home location.
- multihome.defaulthome.set - Allow user to create their default home location.
- multihome.defaulthome.invite - Allow player to invite others to their default home.
- multihome.defaulthome.invitetimed - Allow player to invite others to their default home with a timer.
- multihome.defaulthome.uninvite - Allow player to retract invitations to their default home.
- multihome.namedhome.go - Allow user to teleport to a named home location.
- multihome.namedhome.set - Allow user to create a named home location.
- multihome.namedhome.delete - Allow user to delete a named home location.
- multihome.namedhome.list - Allow user to list their home locations.
- multihome.namedhome.invite - Allow player to invite others to their named home.
- multihome.namedhome.invitetimed - Allow player to invite others to their named home with a timer.
- multihome.namedhome.uninvite - Allow player to retract invitations to their named home.
- multihome.othershome.go - Allow user to teleport to another player's home without invite.
- multihome.othershome.set - Allow user to create another player's home.
- multihome.othershome.delete - Allow user to delete another player's named home location.
- multihome.othershome.list - Allow user to list home locations of another user.
- multihome.free.defaulthome.go - Teleporting to default home is always free.
- multihome.free.defaulthome.set - Setting default home is always free.
- multihome.free.namedhome.go - Teleporting to named home is always free.
- multihome.free.namedhome.set - Setting named home is always free.
- multihome.free.othershome.go - Teleporting to other players home is always free.
- multihome.listinvites.tome - Allow player to list invites open to them.
- multihome.listinvites.toothers - Allow player to list invites they have open to others.
- multihome.ignore.cooldown - Player will ignore the cooldown timer.
- multihome.ignore.warmup - Player will ignore the warmup timer.
- multihome.homeondeath - Player will be taken to their default home when respawning.
Acknowledgements
- Sleaker: This guy helped out so much on this project, providing support and code, I class him as a co-author. You rock!
- HereInPlainSight: Submitting a pull request to add PermissionsBukkit support.
- Maxis010: For providing basic support on the forum this thread.
Donate
Help keep the lights on.
Does this support the ability of stopping people from going to one of their homes if they aren't in the world for that home?
eg. 2 worlds: SMP1 and SMP2
Player 1 has a home in both worlds, eg: home1 and home2
They should first have to go to the world in question to get to the home on that world.
uHome supports it as: Multi-world support, you decide if players can move between worlds with their homes.
@GioboiMC
Alright, I spoke a little too hastily. If it's the void that's the major problem and not the stuck-in-blocks thing, try the new build here, but make sure you change the enableChunkResend option in the config file and restart the server. For those who know MultiHome's history, you'll know it had this functionality a while back. I merged it out because I heard the void issue it specifically addressed was fixed. But if that functionality can fix this issue (which sounds different but comes mysteriously soon after the chunk resend was taken out), I'm all for putting it in for testing. So for anyone having an issue with the void, please try this release (making sure to enable the option and restart) and please let me know how it's going.
Mind you there's a one second delay before the chunk is resent. So the chunk may get there too late. But if we put it too soon after, the chunk may get lost with the first for whatever reason. So this is going to be, uhh, interesting. Of course in my short amount of testing I couldn't get the issue to crop up. Either this is working great or I had bad luck since I actually want to see the issue.
https://github.com/downloads/HereInPlainSight/MultiHome/MultiHome-0.11.5.5.jar
@HereInPlainSight Daily I have to log on just to teleport people out of the void the instant the log in so that they don't die. I never once had any problem with MyHome. Could it be some glitch where it's teleporting people to the wrong part of a block? Or possibly not loading the chunk before the player gets there sometimes?
Okay. So.
@Grichecth
I see your pull request on MMA's github. Eventually at some point I will stop leaping at droids with my lightsaber in SWTOR long enough to fully break down your code, follow it through start to finish, and see about drafting it in. In the battle of lightsabers versus code, code is not winning, and for that and the delay, I apologize. <.<;
@GioboiMC
Since you referenced another plugin that supposedly teleports correctly, I went and looked at how they did teleporting, and in the end, they do it the exact same way.
What's this mean? It means there is no reasonable reason for teleporting to work with MyHome and not work with MultiHome (that I can see). Therefore, it's my belief that it's not working properly in MyHome either. MultiHome lets people teleport all over the place if they're allowed, and I'm willing to believe that people use MultiHome to teleport places more often, making the issue more pronounced than if they only have one home per world.
I would love to be proven wrong, I'd rather be able to fix the issue directly if possible rather than say 'it's not my problem'. I do not like bugs. If anyone has further evidence to add as for why this issue may be happening, please please let me know. If anyone sees some error in the code I've missed, please please let me know. I want to avoid people dying unnecessarily. (Acts of Herobrine excluded.)
Too many people are teleporting home and landing in the void/getting stuck in blocks. This did not happen when I was using MyHome and people are raging and want me to change it back. Please fix the problems with this plugin because I don't want to have to switch back to a single home plugin!
@HereInPlainSight
Oh great then I know, it's probably that bukkit bug that's causing it then. :) Will see if the next recommended build fixes it.
Thanks for your reply! :)
@HereInPlainSight
Just curious, I wrote a ticket regarding an issue with PEX (if a person has more than one group, it only uses the first group). Any chance you could look into it? =)
@Hampi90
The last I heard this was an unfixed bukkit bug existing in any teleportation plugin, and from my experience with the code MultiHome doesn't do anything crazy in that regard. If you can give me sufficient reason to believe it IS an issue solely in MultiHome though I'll take a look at it.
Thanks for that update!
I run with the latest released here on dev bukkit. But my players seem to fall out of the world or get stuck in blocks when they type /home. Not everytime but a few times a day.
Will see if this latest release that you posted will fix this. If not maybe it's something you could look into?
Not sure if it has to do with your plugin at all. :)
@Hampi90
I can never resist a polite request.
https://github.com/downloads/HereInPlainSight/MultiHome/MultiHome-0.11.5.2.jar
Changelog:
HereInPlainSight: Great to hear that you will update this. When can we expect an update? =)
@hoppertje2 That output is currently correct. bPerms uses SuperPerms, which is the default CraftBukkit permissions system. MultiHome will still read permission nodes correctly if they're set correctly via bPerms, even if they're set via a group. It's just MultiHome's config.yml file for group-specific options that won't work with the bPerms groups. THAT is what my update will fix after I confirm it doesn't break anything. I've released a few slightly-broken updates lately for various additions/changes I've made and I want to be more careful with the future ones. :)
@HereInPlainSight
07:38 PM [WARNING] [MultiHome] A permission plugin was not detected! Defaulting to CraftBukkit permissions system. 07:38 PM [WARNING] [MultiHome] Groups disabled. All players defaulting to "default" group.
This is what i got. I don't now that much about permissions so hope you can help me out. Don't think something will be wrong with the groups. Also thanks for the hints its case sensitive and that bperms automaticly lowercase them. It worked for the update.
Plugin list- lwc bperms worldedit worldgaurd boseeconomy essentials chestshop multiverse dynmap
@sillyrosster I do not see a CommandBook converter in the code, sorry. =/ @hoppertje2 bPerms works fine for permission nodes, I've confirmed my test server works just fine with proper permissions set via bPerms. I have a fix for config file groups to work with bPerms groups for the next release, though the caviat is that bPerms forces all groups to be lower case, so make sure all your groups in multihome's config match that as it's case sensitive.
@pascaltobias0
I also found this problem D:
Would I be able to convert from CommandBook homes?
Alright so reputedly the Register update didn't do anything for you econ users so I drafted in Vault as a soft dependency - if you don't have vault and you DON'T use an economy plugin, this doesn't affect you at all. If you don't have vault and DO have an economy plugin it probably wasn't working with MultiHome anyway. Getting Vault should fix that with this update.
Standard disclaimers apply, but so far Slixxkilla did some testing for me and he says it's all working fine except for a few quirks with Group Manager that I may or may not look into.
https://github.com/downloads/HereInPlainSight/MultiHome/MultiHome-0.11.5.jar
@HereInPlainSight
the new update seems to work fine. Just still unable to use charge feature even with register. Of course I am seeing where register is unable to hook. (not sure how to fix this yet) but maybe I will get it to work.
Im assuming i cant use both vault and register? if this is the case then i guess there isn't any hope cause every other plugin uses vault.
@slixxkilla There was a fan update of Register, so I compiled a new version of MultiHome with it. I don't have an economy plugin so you guys are really the only ones who can tell me if it works. If it doesn't work I'll look into Vault, but Register doesn't require any other plugins to work so I'd prefer to stick with it.
And just so anyone who wants to use this beta build is aware I've been working on a new command called /trimhomes that's kinda beta but has been working pretty solid through my meager testing so far. It trims people's homes back down to the max number they're configured to if it's used without any arguments, or to whatever number is input with the command. Obviously that's dangerous. So don't hand out the multihome.trimhomes permission unless you really need it and you may want to back up your homes.txt just in case I've missed anything obvious if you do try to use it. I'd rather anyone testing this have a backup of people's homes just in case until I've finalized the code.
https://github.com/downloads/HereInPlainSight/MultiHome/MultiHome-0.11.4.jar
@HereInPlainSight
Register is out of date best i can tell, i dont know if it works 1.2.4. I use Vault and most people probably do the same.
only problem so far. Says it charges money on chat but them doesn't do it actually. the console says it cant find my economy plugin.
BTW your plugin works great on 1.2.4 #2117.