HorseKeep
Description
Protect your horses from being stolen, with lot of features for Horse management (virtual stable, teleportation...)
This plugin require Vault.
Features
- When you right click a horse with a saddle, it will be automatically protected and nobody will be able to mount it.
- You can set horse protection limit (amount of horses that can be protected)
- If you try to mount horse that you don't own, you will be ejected and you will see horse's owner name in chat
- Add members (riders) for your horse, they will be able to mount your horse
- You can optionally disable horse damages from members.
- TP horse to your position with a simple command
- TP all owned horses to your position
- Set identifiers to your horses (used in commands)
- Un-protect horse, so anyone can take it
- Alert to owner when one of his horses die
- List all owned horses with their identifiers
- Store horse in a virtual stable
- Summon horse from your virtual stable (keep inventory, horse colors/style, health...)
- Localization (default English)
- Admin: Bypass protections and/or limits
- Admin: Transfer horse ownership
- Admin: Can use all commands even if not owner of horse (and list player horses)
How to use HorseKeep
- Right click on a horse with a saddle
- Your horse is now protected, and he will be given a default identifier. Example: 54
- Use /horse id <identifier> <new-identifier> if you want to change identifier. Example: /horse id 54 myhorse
- You can teleport horse to your position by using /horse tp <identifier>. Example: /horse tp myhorse
Commands
See here: http://dev.bukkit.org/bukkit-plugins/horsekeep/pages/commands-and-permissions/
Permissions
See here: http://dev.bukkit.org/bukkit-plugins/horsekeep/pages/commands-and-permissions/
Configuration
# Default horse protection limit by player horsesDefaultLimit: 3 # Disable horse damage from mobs & environment (fall, suffocation...) disableHorseEnvironmentalDamage: true # Disable horse damage from any player disableHorseDamage: false # Disable horse damage from horse members and owner disableHorseDamageFromMembers: true # Used for setting default identifier to horses **don't change this** internalIncrementalIdentifier: 1 # Custom horse protection limit, with permission horsekeep.groups.<group-name> groups: - vip: 5 - staff: 10
Issues
- Can't teleport horses between worlds (you can store horse and summon it in another world)
- Sometimes (bukkit bug?), horses are deleted, and cannot be teleported
- Horse teleportation take alot of CPU, use it carefully or disable it
If you found bug, please report it with tickets
Upcoming features
- Economy (charge player when teleport/protect horse)
- Buy horse
- More admin commands
- WorldGuard integration
- Horse spawns
- Horse lives
- Buy horse health
- Light version of the plugin
Plugin still in Development
HorseKeep can change (configuration, permissions, commands...) at any time during development.
Horses data may not change, so your players will not loose their horses when updating.
Misc
Developer Builds
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.
Source
You can download HorseKeep source from my github : https://github.com/britaniacraft/horsekeep
Important
Don't set horsesDefaultLimit to 1 for now, it cause some bugs. Working on this issue.
@britaniacraft
Yea, i rode into a wall and it started suffocating, that one isn't as big of a deal but i just wanted to point it out.
@RCEKH
Just download 0.1.2 http://dev.bukkit.org/bukkit-plugins/horsekeep/files/5-0-1-2-beta/
i have follow error by server restart :[HorseKeep] HorseKeep v0.1 attempted to register an invalid EventHandler method signature "public boolean com.gmail.falistos.HorseKeep.HorseKeep.onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String[])" in class com.gmail.falistos.HorseKeep.HorseKeep
and that :
2013-07-07 17:01:58 [INFO] RCE_KH issued server command: /horse list 2013-07-07 17:01:58 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'horse' in plugin HorseKeep v0.1 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189) at org.bukkit.craftbukkit.v1_6_R1.CraftServer.dispatchCommand(CraftServer.java:523) at net.minecraft.server.v1_6_R1.PlayerConnection.handleCommand(PlayerConnection.java:983) at net.minecraft.server.v1_6_R1.PlayerConnection.chat(PlayerConnection.java:901) at net.minecraft.server.v1_6_R1.PlayerConnection.a(PlayerConnection.java:858) at net.minecraft.server.v1_6_R1.Packet3Chat.handle(SourceFile:49) at net.minecraft.server.v1_6_R1.NetworkManager.b(NetworkManager.java:293) at net.minecraft.server.v1_6_R1.PlayerConnection.d(PlayerConnection.java:118) at net.minecraft.server.v1_6_R1.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R1.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R1.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R1.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R1.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R1.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R1.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at com.gmail.falistos.HorseKeep.KHorse.getOwnedHorses(KHorse.java:261) at com.gmail.falistos.HorseKeep.KHorse.getOwnedHorses(KHorse.java:250) at com.gmail.falistos.HorseKeep.HorseKeep.onCommand(HorseKeep.java:95) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ... 15 more
@gv1222
@britaniacraft
Nope still not working, unless you have some new version out? :D But even with it not working, I can see it is well designed and easy to understand! The permissions confuse me though, horsekeep.protect stops you from protecting your horses?
Anyway, I look forward to a fix, happy to help out if needed.
@britaniacraft
The plugin seems to be working great so far but i found a few bugs id like to report. When you have the environmental damage disabled in the config horses still take fall damage, mob damage and suffocation damage so it seems it isn't working correctly right now. Also i blew up while riding a horse and it caused an error: http://pastebin.com/8vJrtEQB . Also, would it be possible to add another storage format like sqllite for the horse data? Storing all the horses in the flat file config is going to start slowing down when you have tons of horses to read/load. Thanks for the great work
P.S The error with clicking horses doesnt happen on my server using spigot build #999
@Melonking
It works now for you? :)
I really like the simple design of this though, would be great if it worked for all animals too, then you could protect whole farms.
@DarkenInsanity
Add me on Skype, we'll test it and fix
falistos1
EDIT: Tested build on a fresh bukkit installation, no errors.. strange :(
@Melonking
You're right it's broken I just tested it.
@britaniacraft
Here's the error from right clicking horses
2013-07-07 14:27:52 [SEVERE] Could not pass event PlayerInteractEntityEvent to HorseKeep v0.1 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at net.minecraft.server.v1_6_R1.PlayerConnection.a(PlayerConnection.java:1106) at net.minecraft.server.v1_6_R1.Packet7UseEntity.handle(SourceFile:36) at net.minecraft.server.v1_6_R1.NetworkManager.b(NetworkManager.java:293) at net.minecraft.server.v1_6_R1.PlayerConnection.d(PlayerConnection.java:118) at net.minecraft.server.v1_6_R1.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R1.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R1.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R1.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R1.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R1.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R1.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at com.gmail.falistos.HorseKeep.KHorse.getOwnedHorses(KHorse.java:261) at com.gmail.falistos.HorseKeep.KHorse.getOwnedHorses(KHorse.java:250) at com.gmail.falistos.HorseKeep.HorseKeep.onEntityInteract(HorseKeep.java:601) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 14 more
Im not sure this is working, I rclick on a horse with a saddle and nothing happens, I just mount it. /horse works, but /horse list is still empty.
Same thing on 0.1 and 0.1.2 using Libigot #269
@MrREOM
@rasnyderiii
- Protection of all horses: Yes, next build! - Change type: I'll try
@DarkenInsanity
Update plugin with latest build : http://dev.bukkit.org/bukkit-plugins/horsekeep/files/5-0-1-2-beta/
If error show up again, give me steps to reproduce this bug
Horse Tp and Horse tpall give this error code
2013-07-07 06:52:34 [SEVERE] Could not pass event PlayerInteractEntityEvent to HorseKeep v0.1 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at net.minecraft.server.v1_6_R1.PlayerConnection.a(PlayerConnection.java:1106) at net.minecraft.server.v1_6_R1.Packet7UseEntity.handle(SourceFile:36) at net.minecraft.server.v1_6_R1.NetworkManager.b(NetworkManager.java:293) at net.minecraft.server.v1_6_R1.PlayerConnection.d(PlayerConnection.java:118) at net.minecraft.server.v1_6_R1.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R1.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R1.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R1.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R1.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R1.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R1.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at com.gmail.falistos.HorseKeep.KHorse.isHorseOwner(KHorse.java:145) at com.gmail.falistos.HorseKeep.KHorse.canMountHorse(KHorse.java:91) at com.gmail.falistos.HorseKeep.HorseKeep.onEntityInteract(HorseKeep.java:618) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
Can you add change horse into Skeleton and Undead ;)
Can you make it so there's an option to not kill horses even those that haven't been with a saddle yet?
@lilblue22
@herobrinedoe
Thanks !
Awesome!
@britaniacraft Amazing work!!