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
Players can hit from horses but not be injured while on a horse, making PvP somewhat disastrous. Is there anything i've missed that can fix this?
What the hell? This plugin works fine with 1.6.4 as for me, stop annoying the author...
i didn't bother to do groups
Is this project inactive?
@laacis2
I forgot to mention, Even my horse groups reset during server restarts, so yeah, basically nothing works properly for me :/
I am using this plugin without problems. Horses DO NOT duplicate when teleported. However i initially disabled stables, and inter world use also.
Completely Buged in 1.6.4, horses duplicate when teleported... and god knows what else, I already stoped using the virtual stables as they where really glitchy with donkeys.
I will be disabling HorseKeep completely untill it is safe to use in newest versions.
Would love to see this get added, and the economy feature added! Great job dude!
how set in french ?
today had the error in the log, it got 1.6.4
--------------------------2013-09-25 22:39:56 [SEVERE] Could not pass event EntityDeathEvent to HorseKeep v0.2.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.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463) at org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:344) at net.minecraft.server.v1_6_R3.EntityInsentient.dropDeathLoot(EntityInsentient.java:202) at net.minecraft.server.v1_6_R3.EntityLiving.die(EntityLiving.java:765) at net.minecraft.server.v1_6_R3.EntityHorse.die(EntityHorse.java:701) at net.minecraft.server.v1_6_R3.EntityLiving.damageEntity(EntityLiving.java:717) at net.minecraft.server.v1_6_R3.EntityAnimal.damageEntity(SourceFile:128) at net.minecraft.server.v1_6_R3.EntityHorse.damageEntity(EntityHorse.java:251) at net.minecraft.server.v1_6_R3.EntityHuman.attack(EntityHuman.java:889) at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:1148) at net.minecraft.server.v1_6_R3.Packet7UseEntity.handle(SourceFile:36) at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:230) at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37) at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:132) at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:594) at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:240) at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:483) at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:415) at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583) Caused by: java.lang.NullPointerException at main.java.com.gmail.falistos.HorseKeep.HorseKeep.onDeath(HorseKeep.java:740) at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown Source) 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) ... 23 more
Bug: Horsekeep groups get reset on each server restart.
Pls update to Minecraft 1.6.4 thnx.
@Tapsa78
I had the same problem with summon in WorldGuard region with mob spawning disabled. I ended up preventing that command in those regions.
Now if your region already had some disabled-cmds, this will overwrite, so be careful to check if there ARE are commands first with:
and write down the list of commands if any.
And if there are any, you can add like this:
Replace <previous-value> with what you got from the /region info command.
@Tapsa78
The same thing happened to me - I looked at the config and could see that particular horse had no co-ordinates like the others. I dont know if providing some co-ordinates (not in safezone) could help, I ended up replacing the horse lol.
We discovered another bug yesterday with HorseKeep. One player tried to summon his horse in an area where WorldGuard protection prevents all mob spawning. HorseKeep failed with an error (didn't get a copy of the message unfortunately) The horse did not appear but it was marked as not stored in the config. Therefore the player's horse is now basically lost as it does not exist in the world but according to HorseKeep is not in the stable either. I tried manually editing the config and running /horse reload but that didn't seem to change anything, so I'm not sure if that command is broken too? I'll see if I can get his horse back by editing the config while the server is shutdown, but here is another thing that you'll hopefully have time to look at soon.
@CapnDuckface
Using horsesplus you can spawn them in. I am able to put a saddle on them and ride them. Didn't do anything different, just spawned them in. (I Think you can spawn them in with essentials too)
HELP PLEASE :(
2013-09-03 09:13:26 [SEVERE] Could not pass event EntityDeathEvent to HorseKeep v0.2.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.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:345)
at net.minecraft.server.v1_6_R2.EntityInsentient.dropDeathLoot(EntityInsentient.java:199)
at net.minecraft.server.v1_6_R2.EntityLiving.die(EntityLiving.java:742)
at net.minecraft.server.v1_6_R2.EntityHorse.die(EntityHorse.java:678)
at net.minecraft.server.v1_6_R2.EntityLiving.damageEntity(EntityLiving.java:694)
at net.minecraft.server.v1_6_R2.EntityAnimal.damageEntity(SourceFile:128)
at net.minecraft.server.v1_6_R2.EntityHorse.damageEntity(EntityHorse.java:245)
at net.minecraft.server.v1_6_R2.EntityHuman.attack(EntityHuman.java:874)
at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:1142)
at net.minecraft.server.v1_6_R2.Packet7UseEntity.handle(SourceFile:36)
at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:235)
at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:125)
at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:592)
at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:239)
at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:481)
at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:413)
at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
Caused by: java.lang.NullPointerException
at main.java.com.gmail.falistos.HorseKeep.HorseKeep.onDeath(HorseKeep.java:740)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 23 more
Help !!!!
2013-09-03 09:13:26 [SEVERE] Could not pass event EntityDeathEvent to HorseKeep v0.2.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.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
at org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:345)
at net.minecraft.server.v1_6_R2.EntityInsentient.dropDeathLoot(EntityInsentient.java:199)
at net.minecraft.server.v1_6_R2.EntityLiving.die(EntityLiving.java:742)
at net.minecraft.server.v1_6_R2.EntityHorse.die(EntityHorse.java:678)
at net.minecraft.server.v1_6_R2.EntityLiving.damageEntity(EntityLiving.java:694)
at net.minecraft.server.v1_6_R2.EntityAnimal.damageEntity(SourceFile:128)
at net.minecraft.server.v1_6_R2.EntityHorse.damageEntity(EntityHorse.java:245)
at net.minecraft.server.v1_6_R2.EntityHuman.attack(EntityHuman.java:874)
at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:1142)
at net.minecraft.server.v1_6_R2.Packet7UseEntity.handle(SourceFile:36)
at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:235)
at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:125)
at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:592)
at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:239)
at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:481)
at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:413)
at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
Caused by: java.lang.NullPointerException
at main.java.com.gmail.falistos.HorseKeep.HorseKeep.onDeath(HorseKeep.java:740)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 23 more
@Tapsa78
I'm working on this issue, but I don't have much time to work on HorseKeep for now :)
@BLTwitch
Yes don't worry, I'll setup a github page
@mbcx2
Mhhh, adding this into next release ;)
@sir_brando
Mind sharing your secret? I literally just figured it out with and editing plug-in, but how were you able to do it? Sorry if this is likely slightly unrelated to the topic.
If this is possible through HorseKeep. I'd appreciate the incite.