Stables
What does it do?
Stables is a plugin that assists with Horse ownership, protection, and other horse related things. Vanilla has no ownership or tracking of horses, only if it has been broken or not. Stables changes this behavior.
Important MC1.11 Notes!
This new version (1.9.11) MAY NOT WORK WITH OLDER MC VERSIONS! It has ONLY been tested with MC 1.11!
MC 1.11 changed a lot with horses. As of Stables v1.9.11, some changes must be made in order to accommodate Llamas, Donkeys, Mules, Zombie horses and Skeleton Horses. In your config.yml, In the "animals" section, you MUST add these to the "allowed" list. Anything NOT in the allowed list will NOT be covered by Stables! (example: allowed: HORSE, ZOMBIE_HORSE, SKELETON_HORSE, LLAMA, DONKEY)
Again, as far as 1.11 is concerned Mules, Donkeys, Zombie/Skeleton horses are NOT Horses, and must be entered SEPARATELY into the config!
As of right this moment, Llama carpet does NOT save. Testing of this version has been VERY limited. Please report any and all bugs via tickets - Be as specific in your reports as possible!
Another note: v1.9.11 will create a new table in your database for stored/stabled horses, and copy all the values over, converting what needs to be converted. For safety purposes, the old table will NOT be removed. It will just no longer be used. I would suggest NOT deleting it yourself for a bit, in case you need to restore a previous version.
All localization messages are still 'Horse' and 'Steed' specific. New default messages will be added in time. As always, you can edit them yourself in the 'language.yml' file.
Requirements
- To use COST based virtual stables, Vault is required. Free storage does not require any additional plugins.
Current Features
- Protect Horses from configurable outside damages, including PVP, Environmental (falling/lava) and Monsters
- Adds recipes for Horse Armor (Barding), Name Tags and Saddles
- Now has customizable recipes for these items!
- Adds 'ownership' to horses so others cannot steal them - Use a name tag on a horse to claim it!
- Store horses in virtual stables, and recover them!
- Abilities for Admin/Staff to Remove Ownership
- Sets a max amount of horses one player can own
- Anyone with the stables.admin permission can use horses without permission
- Allow a friend to ride a claimed horse
- Lure a horse from the wild using an item (defaults Golden Carrot - Other suggestions would be Emeralds, Golden Apples)
- Horse Spawning, including ZOMBIE and SKELETON horses!
- Teleport, Summon and Locate your claimed Horses!
- Allows staff to rename horses without changing ownership
- UUID storage for databases -
- Uses connections to 'api.mojang.com' and 'sessionserver.mojang.com' if UUID cannot be resolved on the server.
What's in store for new releases?
- Horse Trading
- (NPC) Races
- Horse purchasing (from NPC)
Permissions & Commands
Please see the Permissions & Config Page here.
How does it work?
Name a horse to claim it as your own. Hit it (as the owner) with a new Name Tag (un-renamed) to free it!
- To name a horse, you have to get a NAME TAG. Use the NAME TAG in an ANVIL and change it's name to what you want the horse to be called. Then USE (Right Click) The Horse with the NAMED NAME TAG to name it. This is a VANILLA MINECRAFT feature - it is not included with Stables. This action, however, is what will claim a horse with the Stables plugin.
- You can also set the config to 'AutoOwn = true' - This will automatically claim a horse as soon as it is tamed!
Stables also prevents horses from being killed by players, mobs, environmental, or any combination of these. All options are 100% toggle-able through the config.
Virtual Stables
This feature can be disabled by the admins by setting the 'allowCommand' config option to false, and then just not creating any stable signs.
To create a stable, simply place a sign with [stables] as the first line. Stables will take over from there. If 'allowCommand' is disabled, you can ONLY use the Virtual Stables feature with a sign. Punch the sign, or type /stables store to store a horse. Please note: Storage does *NOT* save chests right now, nor will it save saddles. This is a known bug.
- Please note: The stables does *NOT* save Horse Speed. This is a Minecraft/Bukkit shortfall, and will be addressed as soon as there is a way to do so.
The Config
Please see the Permissions & Config Page here.
Recipes
Stables makes several items craftable - specifically Saddles, Barding (Horse Armor) and Name Tags.
Setting the config option for hard mode recipes will change all ingots/bars to blocks instead.
Localization & Custom Messages
Upon the first run, a file called 'language.yml' will be generated. This will have all the phrases, in English. You may change the phrases to whatever you'd like, or any language you'd like.
They just say that they get a message that says "You do not have permission to craft nametag" There are no errors in console as far as I can tell and all the recipes are enabled in the config.
As for the TP thing that would prob explain why another plugin I used didn't let members tp their horses like it claimed it would lol.
Is there anything else I can try? I am at a loss right now :x
@EpicATrain
That was an oversight in the original creation when it started saving to the database ... U nfortunately there is no fix aside from using /stables clearhorses on the owner. :(
@Shreaders
There's no crafting permissions at all - The 4 listed are the only 4 in the plugin at the moment. What's happening when they try? Do you have the recipe enabled? When you start the plugin, does it say it's been enabled (the recipe, not the plugin - check your console).
re: Teleport - Because there's no real ownership of horses in Minecraft, the only method I can figure out for teleport at the moment is *VERY* bad to use, as it has to loop through ALL the mobs in the game until it finds your horse. I will go ahead and add this to 1.5, but just be aware that it is ia BAD method, and it likely WILL Cause lag if used a lot/too often.
Can you add a command that lets your teleport your horse to you, or allows you to TP while on your horse and your horse goes with you? This would be exceptionally useful!
EDIT: Are there any perms for this plugin other than the few you gave us? My players are saying they don't have permissions to craft name tags.
Quick Question, how do I find or remove dead horses belonging to players? I have a few players that it says they can't claim any more horses but their claimed horses are dead. Ideas?
@danisblack9
What permissions?
@EpicATrain
http://dev.bukkit.org/bukkit-plugins/stables/files/12-stables-1-4c/
As long as you don't have Theft on, they should not be able ot use leads on horses they don't own.
Permissions please!
Also, does 1.4 also limit the leads?
Sure... I'll download 1.4... if you give me a download link. I don't see it anywhere.
@adenslayer
Hmm ... I'll see if I can't figure out why that's occurring ... doesn't make much sense, especially because it's not called at any time when a player joins.
@EpicATrain
Upgrade to 1.4c Train - see if that corrects your error.
1.3B Error, not sure how it's affecting my server.
http://pastebin.com/313HE7et
@raum
It comes up after the server starts up, once the first player joins the server after it starts up
@adenslayer
Did it continue after a reboot or reload? There's no reason why that should be coming up at all ...
Got this error in console. Running Spigot build # 1009
2013-07-07 00:24:42 [SEVERE] Exception in thread "Craft Scheduler Thread - 0" 2013-07-07 00:24:42 [SEVERE] org.apache.commons.lang.UnhandledException: Plugin stables v1.4b generated an exception while executing task 45 at org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.NullPointerException: Nodes must be provided. at org.yaml.snakeyaml.nodes.NodeTuple.<init>(NodeTuple.java:28) at org.yaml.snakeyaml.representer.BaseRepresenter.representMapping(BaseRepresenter.java:168) at org.yaml.snakeyaml.representer.SafeRepresenter$RepresentMap.representData(SafeRepresenter.java:213) at org.bukkit.configuration.file.YamlRepresenter$RepresentConfigurationSection.representData(YamlRepresenter.java:23) at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:95) at org.yaml.snakeyaml.representer.BaseRepresenter.representMapping(BaseRepresenter.java:161) at org.yaml.snakeyaml.representer.SafeRepresenter$RepresentMap.representData(SafeRepresenter.java:213) at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:95) at org.yaml.snakeyaml.representer.BaseRepresenter.represent(BaseRepresenter.java:65) at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:271) at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:262) at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:234) at org.yaml.snakeyaml.Yaml.dump(Yaml.java:209) at org.bukkit.configuration.file.YamlConfiguration.saveToString(YamlConfiguration.java:38) at org.bukkit.configuration.file.FileConfiguration.save(FileConfiguration.java:54) at com.ivalicemud.stables.Stables.saveHorseConfig(Stables.java:478) at com.ivalicemud.stables.Stables$1.run(Stables.java:62) at org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftTask.run(CraftTask.java:58) at org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) ... 3 more
2013-07-07 00:25:48 [SEVERE] Exception in thread "Craft Scheduler Thread - 3" 2013-07-07 00:25:48 [SEVERE] org.apache.commons.lang.UnhandledException: Plugin stables v1.4b generated an exception while executing task 45 at org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.NullPointerException: Nodes must be provided. at org.yaml.snakeyaml.nodes.NodeTuple.<init>(NodeTuple.java:28) at org.yaml.snakeyaml.representer.BaseRepresenter.representMapping(BaseRepresenter.java:168) at org.yaml.snakeyaml.representer.SafeRepresenter$RepresentMap.representData(SafeRepresenter.java:213) at org.bukkit.configuration.file.YamlRepresenter$RepresentConfigurationSection.representData(YamlRepresenter.java:23) at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:95) at org.yaml.snakeyaml.representer.BaseRepresenter.representMapping(BaseRepresenter.java:161) at org.yaml.snakeyaml.representer.SafeRepresenter$RepresentMap.representData(SafeRepresenter.java:213) at org.yaml.snakeyaml.representer.BaseRepresenter.representData(BaseRepresenter.java:95) at org.yaml.snakeyaml.representer.BaseRepresenter.represent(BaseRepresenter.java:65) at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:271) at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:262) at org.yaml.snakeyaml.Yaml.dumpAll(Yaml.java:234) at org.yaml.snakeyaml.Yaml.dump(Yaml.java:209) at org.bukkit.configuration.file.YamlConfiguration.saveToString(YamlConfiguration.java:38) at org.bukkit.configuration.file.FileConfiguration.save(FileConfiguration.java:54) at com.ivalicemud.stables.Stables.saveHorseConfig(Stables.java:478) at com.ivalicemud.stables.Stables$1.run(Stables.java:62) at org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftTask.run(CraftTask.java:58) at org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) ... 3 more
@KJ_Shipp
1.4 has 4 tiers - VIP1, VIP2, VIP3 and everyone else.
Raum, do you think you could implement a tiered ownership-amount for different ranks? Also, what about adding a max-owned bypass for admins/OP's? If you could, I, and my players would greatly appreciate it. Thanks.
Thanks Raum! I think the number one complaint/problem is players using leads on other player's horses to steal/cause grief.
@EpicATrain
Leads: Will fix this Who Owns: Adding a command for this Stealing Horses: If theft is off, this shouldn't be possible. Can a horse TP: It can be done - however since ther is no ownership IN Minecraft, it is not a good thing to do, as you have to loop through *ALL* The mobs in the game to find a horse.
@Lakuspakus
Check the horses.yml - It is likely counting the dead horses. I will fix this in the next release. As for despawning horses: If the horse doesn't actually DIE - it won't be removed from the database. I'll look into this as well.
Also the number one problem we have is players using leads on horses - players are abusing the crap out of this. Can you set it up so that players can ONLY use leads on horses they own?
This would seriously cut down on the crap I as an admin would have to go through.