MyHorse
MyHorse let's your players have more control over their horses!
Simple, easy and lightweight.
- Name your horse
- Protect it from stealing & inventory theft
- Protect it from dying (Owned horses are invulnerable)
- Protect it from being unleashed by others
- Simple transfer of ownership of horses (great for buying/selling!)
- Put your horse for sale (Right-click to buy it)
- Keep a list of your owned horses
- Teleport to your owned horses
- Teleport your owned horses to you
- Option to allow putting a chest on any type of horse
Select your horse
Simply mount your horse to select it as your currently selected horse.
By default, only the owner can mount his horse.
Naming
To name your selected horse simply use the command:
/myhorse name <horsename>
When your horse has a name, it is only ridable by you
Anti Theft
After taming your horse, the horse is "locked" and can only be used and accessed by its owner. To allow others to use your horse, use the commands:
/myhorse lock /myhorse unlock
Come here!
After selecting your horse, you can summon it to you with the command:
/myhorse comehere
My horses?
See a list of your owned horses with the command:
/myhorse list
How cool is my horse?
Check out the info about your selected horse with the command:
/myhorse info
Goto my horse!
After seeing the list of your horses, you can goto any of them with command:
/myhorse goto <id>
Note that this command is disabled in config.yml by default
Set a new owner for your horse
After selecting your horse, you can set a new owner for it with the command:
/myhorse setowner <ownername>
Go away!
Set your selected horse free with the command:
/myhorse goaway
Sell that horse
Set your selected horse for sale with the command:
/myhorse sell <price>
Any player with the myhorse.buy permission node can now right-click to buy the horse.
(Note that Vault is required for this feature)
Spawn a horse
Admin can spawn any type of horse with the command:
/myhorse spawn <normal|mule|undead|skeleton> <baby>
Multiple Worlds
Set the worlds you wish to enable MyHorse in the config.yml file:
Worlds: - world - world_nether - world_the_end
Damage Types
Configure the types of damage which owned horses should be protected from in the config.yml file:
DamageProtection: - PROJECTILE - POISON - MELTING - MAGIC - CUSTOM - DROWNING - FIRE - FIRE_TICK - ENTITY_ATTACK - BLOCK_EXPLOSION - ENTITY_EXPLOSION - LIGHTNING - LAVA
All valid damage types and their descriptions can be found here
Permission Groups
You can set certain values for MyHorse for your groups in the config.yml file:
default: HorseNameColor: WHITE MaximumHorses: 3 Member: HorseNameColor: GOLD MaximumHorses: 10
All valid colors can be found here
Note that MyHorse will automatically detect your permission groups and write default settings in your config.yml.
Text
Not happy with the text of the plugin?
Just change the file /lang/english.yml to whatever you want!
Note that MyHorse auto-downloads the language file from my server at www.doggycraft.dk.
This can be disabled by using the DownloadLanguageFile setting in the config.yml.
Installation
Put the MyHorse.jar file in your /plugins folder and you are ready to go!
Commands
| Command | Description |
|---|---|
| myhorse | Show the basic info |
| myhorse name | Gives your selected horse a name |
| myhorse comehere | Teleports your selected horse to you |
| myhorse goaway | Sets your selecte horse free |
| myhorse list | Lists all your owned horses |
| myhorse goto <id> | Teleports to a specific horse from the list |
| myhorse setowner <playername> | Sets a new owner for your selected horse |
| myhorse addfriend <playername> | Adds a friend for your selected horse |
| myhorse removefriend <playername> | Removes a friend for your selected horse |
| myhorse kill | Kills your selected horse |
| myhorse reload | Reloads configuration from disk |
| myhorse sell <amount> | Sets your selected horse for sale |
| myhorse claim | Claims the horse you have mounted |
| myhorse select <id> | Selects a horse from your list |
| myhorse spawn <horsetype> <baby> | Spawn a horse of a specific type |
Permission Nodes
- myhorse.* - Player can do everything below
- myhorse.list - Player can see a list of his owned horses
- myhorse.goto - Player can teleport to his owned horses
- myhorse.comehere - Player can teleport his selected horse to himself
- myhorse.lock - Player can lock his horse
- myhorse.unlock - Player can unlock his horse
- myhorse.name - Player can name his horse
- myhorse.setowner - Player can set new owner for his horse
- myhorse.addfriend - Player can add friends for his horse
- myhorse.removefriend - Player can remove friends for his horse
- myhorse.info - Player can display info about his horse
- myhorse.buy - Player can buy horses
- myhorse.sell - Player can sell horses
- myhorse.goaway - Player can set his selected horse free
- myhorse.kill - Player can kill his selected horse
- myhorse.claim - Player can claim un-owned horses
- myhorse.select - Player can select a horse from his list of owned horses
- myhorse.help - Player can see the help page
- myhorse.bypass.mount - Player can bypass mount protection
- myhorse.bypass.leash - Player can bypass leash protection
- myhorse.bypass.inventory - Player can bypass inventory protection
- myhorse.admin - Player can operate on a horse owned by any player
- myhorse.spawn - Player can spawn horses
- myhorse.updates - Player gets notifications about updates to MyHorse
Configuration
| Setting | Description | Default Value |
|---|---|---|
| Settings.ServerName | Name of the server | "Your Server" |
| Settings.Worlds | List of worlds in which MyHorse is enabled | <list of world names> |
| Settings.DamageProtection | What types of damage are horses protected from? | <list> |
| Settings.AllowChestsOnAllHorses | Players are able to put a chest on any type of horse | false |
| Settings.DownloadLanguageFile | Should MyHorse auto-download language file? | true |
| Settings.MetricsOptOut | Do not send metrics to mcstats.org | false |
| Settings.DisplayUpdateNotifications | Show notifications about new updates to MyHorse | true |
Disclaimers
This plugin contacts curse.com and checks for newer versions by using the Curse ServerMOD API.
Opting out of this service can be done by editing config.yml and changing DisplayUpdateNotifications to false.
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 config.yml and changing MetricsOptOut to true.
Want to contribute? MyHorse is open source!
Check out the official repository on github
-
View User Profile
-
Send Message
Posted Aug 3, 2013Thanks for the feedback!
Most of these issues should now be fixed in version 0.1.0 available here
-
View User Profile
-
Send Message
Posted Aug 2, 2013Still many bug...s
2013-08-03 08:07:31 [INFO] KelvinKamHK issued server command: /mh goaway 2013-08-03 08:07:31 [INFO] [MyHorse v0.0.9] Name cannot be null 2013-08-03 08:07:31 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'mh' in plugin MyHorse v0.0.9 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189) at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523) at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:962) at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:880) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:837) at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49) at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at com.dogonfire.myhorse.HorseManager.setOwnerForHorse(HorseManager.java:282) at com.dogonfire.myhorse.Commands.CommandGoAway(Commands.java:582) at com.dogonfire.myhorse.Commands.onCommand(Commands.java:146) at com.dogonfire.myhorse.MyHorse.onCommand(MyHorse.java:318) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ... 15 more 2013-08-03 08:07:43 [INFO] KelvinKamHK issued server command: /mh goaway 2013-08-03 08:07:43 [INFO] [MyHorse v0.0.9] Name cannot be null 2013-08-03 08:07:43 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'mh' in plugin MyHorse v0.0.9 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189) at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523) at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:962) at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:880) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:837) at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49) at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116) at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.NullPointerException at com.dogonfire.myhorse.HorseManager.setOwnerForHorse(HorseManager.java:282) at com.dogonfire.myhorse.Commands.CommandGoAway(Commands.java:582) at com.dogonfire.myhorse.Commands.onCommand(Commands.java:146) at com.dogonfire.myhorse.MyHorse.onCommand(MyHorse.java:318) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ... 15 more
-
View User Profile
-
Send Message
Posted Aug 2, 2013What's these?
Settings: Worlds: - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {} - !!java.util.UUID {}
Also, I am OP Too many Horse in my list, /mh list
And.... can i use /myhorse getid to check horse ID?
-
View User Profile
-
Send Message
Posted Aug 2, 2013I'm using 0.0.9 with GroupManager. I don't understand what you're doing with the 'groups' section in your config file. The groups you have listed are 'global groups'. People aren't member of global groups. They simply inherit those permissions. In fact, my Member group has no global group inheritance at all. So I don't know how this would apply to the settings in the config file.
I tried to add my real groups (Member, Moderator, Admin, etc), but your plugin overwrote them.
-
View User Profile
-
Send Message
Posted Aug 2, 2013Changes: Horses can no longer travel through portals to world in which they are now "enabled" Horses killed with /mh kill is now removed from list
Thank you @DoggyOnFire
-
View User Profile
-
Send Message
Posted Aug 2, 2013@DoggyOnFire
I have tried both ways. I am op and my staff have the myhorse.bypass.mount. None of us can mount owned horses. Also I have myhorse.admin and I still am unable - also when I do /myhorse list I get the entire server list of horses which makes it impossible to see my actual list :(
-
View User Profile
-
Send Message
Posted Aug 2, 2013can you make it so people can't put leads on a claimed horse?
-
View User Profile
-
Send Message
Posted Aug 2, 2013@DyreCraft
Have you tried with op or myhorse.bypass.mount?
-
View User Profile
-
Send Message
Posted Aug 2, 2013myhorse.admin is still not allowing us to be able to mount any horse. It still gives the "hands off" message.
-
View User Profile
-
Send Message
Posted Aug 2, 2013@Bobcat00
Yes.
-
View User Profile
-
Send Message
Posted Aug 2, 2013With 0.0.9, are claimed horses protected against other people killing them and against creeper explosions?
-
View User Profile
-
Send Message
Posted Jul 31, 20132013-07-31 19:55:28 [INFO] FireW0lf issued server command: /myhorse name Baffusucks 2013-07-31 19:55:28 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'myhorse' in plugin MyHorse v0.0.8 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189) at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523) at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:964) at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:882) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:839) at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49) at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296) at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118) at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37) at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.ChatColor.White at java.lang.Enum.valueOf(Enum.java:236) at org.bukkit.ChatColor.valueOf(ChatColor.java:13) at com.dogonfire.myhorse.MyHorse.getHorseNameColorForPlayer(MyHorse.java:157) at com.dogonfire.myhorse.Commands.CommandSetName(Commands.java:474) at com.dogonfire.myhorse.Commands.onCommand(Commands.java:264) at com.dogonfire.myhorse.MyHorse.onCommand(MyHorse.java:304) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ... 15 more
Upon trying to name a horse
-
View User Profile
-
Send Message
Posted Jul 31, 2013When it says, you have claimed this horse. You have not yet tamed it. Perhaps it should say you attempt to tame or somthing
-
View User Profile
-
Send Message
Posted Jul 31, 2013Opon killing a horse. He remains in your list and you can teleport to his location.
-
View User Profile
-
Send Message
Posted Jul 31, 20132013-07-31 19:29:01 [SEVERE] Could not pass event EntityTameEvent to MyHorse v0.0.8 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 org.bukkit.craftbukkit.v1_6_R2.event.CraftEventFactory.callEntityTameEvent(CraftEventFactory.java:256) at net.minecraft.server.v1_6_R2.PathfinderGoalTame.e(PathfinderGoalTame.java:49) at net.minecraft.server.v1_6_R2.PathfinderGoalSelector.a(PathfinderGoalSelector.java:104) at net.minecraft.server.v1_6_R2.EntityInsentient.bh(EntityInsentient.java:419) at net.minecraft.server.v1_6_R2.EntityLiving.c(EntityLiving.java:1391) at net.minecraft.server.v1_6_R2.EntityInsentient.c(EntityInsentient.java:303) at net.minecraft.server.v1_6_R2.EntityAgeable.c(EntityAgeable.java:87) at net.minecraft.server.v1_6_R2.EntityAnimal.c(SourceFile:32) at net.minecraft.server.v1_6_R2.EntityHorse.c(EntityHorse.java:712) at net.minecraft.server.v1_6_R2.EntityLiving.l_(EntityLiving.java:1254) at net.minecraft.server.v1_6_R2.EntityInsentient.l_(EntityInsentient.java:147) at net.minecraft.server.v1_6_R2.EntityHorse.l_(EntityHorse.java:740) at net.minecraft.server.v1_6_R2.World.entityJoinedWorld(World.java:1354) at net.minecraft.server.v1_6_R2.World.playerJoinedWorld(World.java:1335) at net.minecraft.server.v1_6_R2.World.tickEntities(World.java:1223) at net.minecraft.server.v1_6_R2.WorldServer.tickEntities(WorldServer.java:480) at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:572) at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486) at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419) at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.ChatColor.White at java.lang.Enum.valueOf(Enum.java:236) at org.bukkit.ChatColor.valueOf(ChatColor.java:13) at com.dogonfire.myhorse.MyHorse.getHorseNameColorForPlayer(MyHorse.java:157) at com.dogonfire.myhorse.EventListener.onEntityTameEvent(EventListener.java:279) 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) ... 24 more
Just got this, any idea whats wrong?
-
View User Profile
-
Send Message
Posted Jul 31, 2013I use creative gates on my server, that means there are portals here and there that teleport you around the world. When you ride a horse into one it will disappear. Trying to summon the horse says that it is too far away. I teleported to the nether and found I could summon him there! Perhaps a config option to summon horses across worlds would be useful. Or a feature to block them going to the nether!
-
View User Profile
-
Send Message
Posted Jul 31, 2013the command '/myhorse kill' kills the horse but it still remain in to '/myhorse list' Is it a bug?
Can you create some Admin command like: /myhorse select <integer> <player>
With this command an admin can selects other horses and operates on it
-
View User Profile
-
Send Message
Posted Jul 31, 2013/myhorse sell and /myhorse buy - are buggy as I remember in 0.0.7 version if players writes /myhorse sell 250000 and other guy which types buy and even if doesn't have that amount of cash it sells and other players get that amount from nowhere.
Sorry for grammar I didn't correct any mistakes, because I don't have much time now.
-
View User Profile
-
Send Message
Posted Jul 31, 2013@AlphaFarer
Thanks! For version 0.0.9, I have changed protection to only cover the following types of damage:
Any other type of damange WILL do damage to the horse.
Later, this will be configurable in the config file as well.
-
View User Profile
-
Send Message
Posted Jul 31, 2013For those who run GroupManager, please edit your config.yml and remove the "g:" infront of your group names there. This should do the trick for getting horsename colors etc. working.
There is also a new version 0.0.9 available here