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 21, 2013@DigitalKlepto
im not sure exactly how far into the vanilla/bukkit files this goes, but it does seem that it is somehow (whether on purpose or not) affecting parts of minecraft that it should not be touching. but with the inventory locking of all claimed horses with armor/saddle (after removal of the plugin) you will definitely need to kill all claimed horses. if they are locatable you can do what i did, enchant a horse egg with sharpness 1000 and right click the horse to make a near-copy baby. then kill the adult. that was the best/only way i could do it without having to wipe every horse on the server. i am currently using MTC horses and the plugin called 'Horses' MTC offers a very simple and effective horse claiming and protection but no teleportation. and i use 'Horses' to offer my players an assortment of virtual horses that they can summon and dismiss in any world if they desire to take their horses with them. the 'virtual horses' are totally separate to the normal ones, so the two plugins do not overlap negatively.
im not saying that this is the best, or only way to fix these issues. all i can say is this is how i went about cleaning up these problems caused by this plugin. it seems to be doing just fine now that all the leftover horses, and chunk problems have been fixed. and i have not had any issues with either 'Horses' or MTC horses.
good luck, feel free to PM me on here with any other issues. ill do my best to help you where i can.
-
View User Profile
-
Send Message
Posted Aug 21, 2013@mal67
Thanks for your help. I see you've helped others here as well. It's a shame the plugin author hasn't even logged in for 2 days with all this mess going on, but your help is appreciated. One last question. I've been following the comments on this plugin for a couple of days now, since I started having issues on my server, and it seems that this plugin may also be hooking into the bukkit.yml in ways that it probably shouldn't be doing as well, or at least that was my understanding from some comments I read last night. I understand that if I swap plugins, I'm likely going to have to kill every horse that's been claimed since we started using it. What worries me though is what else this plugin has hooked into, and the problems that might cause going forward if I fully remove it.
-
View User Profile
-
Send Message
Posted Aug 21, 2013@DigitalKlepto
oh im sorry, i totally forgot that was a plugin.
im using the ClearLag plugin - http://dev.bukkit.org/server-mods/clearlagg/, it allows an OP to teleport to chunk coords like
/lagg tpchunk -51 23 world
-
View User Profile
-
Send Message
Posted Aug 21, 2013@mal67
This may be a silly question, but even with a few months under my belt, I would still consider myself to be new to owning and operating a Minecraft server. I know full well how to teleport to specific coordinates on a map, but how do I teleport to a specific chunk? I know chunks are 16 x 16, and I'm sure there is a bit of math involved to translate coordinate location to chunk location, but if you could explain or point me in the direction of somewhere that explains it, so I don't screw it up, I would be very appreciative.
-
View User Profile
-
Send Message
Posted Aug 21, 2013@DigitalKlepto
you need to teleport to that chunk and kill any horse within like 200 blocks of it. in hopes of killing the horse thats causing the issue. you may need to do it a few times even after restarts as it tends to duplicate horses when it is unable to teleport properly.
if you get a similar issue about a chunk being in the wrong location ,instead of an entity. you will need to regen the chunk. if that doesnt fix it, you will need to find which region its in "use chunkinfo from worldedit" and delete that file in the worlds folder on your server. then restart teh server and load the chunks anew.
sorry you are having these problems. its best to find another plugin for the time being. there doesnt seem to be a way to safely and effectively teleport horses. especially if you have multiple worlds.
@Bobcat00
the only reason i tried this plugin was hoping for a simple effective teleportation method. and this one claimed to have multi-world support.
-
View User Profile
-
Send Message
Posted Aug 21, 2013Alright, first off, I am on version 0.0.7 of this plugin. I know I'm a few versions behind, but it looks like that might have actually kept me from having some of these issues on my server.
I am having issues though. They started last night. A player alerted me that they were unable to teleport their horse to them, and if they teleported to their horse's location, there was nothing there. The data in the .yml files seem to be in order, and we can transfer the horse to different owners, but could not rename, kill, or teleport the now 'phantom' horse.
I saw no errors in the console for any of this, however tonight, I keep seeing the following for a different player's horse -
9:57:17 PM CONSOLE: [WARNING] Wrong location for EntityHorse['6Becky'/1023402, l='world', x=-815.22, y=47.00, z=380.52] in world 'world'! 9:57:17 PM CONSOLE: [WARNING] Entity is at -815.2153219347902,380.52081489572913 (chunk -51,23) but was stored in chunk -407,191
Are these problems that can be easily resolved? For now, I have disabled the plugin and put an announcement that we need to leave horses alone until we can get things sorted.
-
View User Profile
-
Send Message
Posted Aug 21, 2013mal67, I don't allow myhorse.comehere and haven't had any chunk-related problems. Perhaps not allowing players to teleport their horses would help avoid problems.
-
View User Profile
-
Send Message
Posted Aug 21, 2013I really like the idea of this plugin. I hope your able to get the bugs fixed.
I wish factions plugin would add something like this to there plugin ability. like...faction horses. :)
If you leave the faction, you lose your horse claim..or something. that would be cool :)
-
View User Profile
-
Send Message
Posted Aug 21, 2013KrustyLv, uninstall the plugin ASAP, then kill every horse in every world you have. and keep a very close eye out for errors that say similar things to 'WARNING: chunk -7 10 was stored in -7 10 but found in -48 24'
if you do, find the chunk, and find which region file it is, then delete the region file in side your map folder and restart.
@CommodoreAlpha - this build, is NOT a beta. beta builds are generally accepted to be daily drivers with a few minor concerns. this is an ALPHA or Pre build, the developer needs to understand proper build labeling. and acknowledge that his plugin has such catastrophic errors that are breaking servers still.
-
View User Profile
-
Send Message
Posted Aug 21, 201321.08 13:41:58 [Multicraft] Skipped 37 lines due to rate limit (30/s) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.EntityHorse.l_(EntityHorse.java:740) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.EntityInsentient.l_(EntityInsentient.java:150) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.EntityLiving.l_(EntityLiving.java:1249) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.Entity.l_(Entity.java:245) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.EntityInsentient.x(EntityInsentient.java:111) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.EntityLiving.x(EntityLiving.java:225) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.EntityLiving.aI(EntityLiving.java:460) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.DataWatcher.getByte(SourceFile:79) 21.08 13:41:41 [Server] SEVERE Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Byte 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:413) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:481) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:239) 21.08 13:41:41 [Server] SEVERE at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:575) 21.08 13:41:41 [Server] SEVERE net.minecraft.server.v1_6_R2.ReportedException: Ticking entity
-
View User Profile
-
Send Message
Posted Aug 21, 2013Is it ok if i make a plugin review on YouTube for this? All credit will be given.
-
View User Profile
-
Send Message
Posted Aug 21, 2013I suggest the plugin author adding a big disclaimer banner on the top of the page and claim your work as an highly experimental plugin. This plugin still needs loads of work IMO.
-
View User Profile
-
Send Message
Posted Aug 20, 2013Considering the amount of backlash this plugin has been receiving, I think it only appropriate to put a warning label on top of the page, and mark the plugin as "Experimental" for the time being. Yes, I know it says "Beta" and "Beta" versions of anything aren't always supposed to work as expected, but that's not good enough of a warning.
I've noticed you may have been "ignoring" certain comments, but do bear in mind it would help if you could be more open about the plugin's progress/status, and at least respond to every comment (that isn't spam), good or bad.
Let me give you an example of a situation, a bit like this one, that is an example of how one can better handle a catastrophic situation: bPermissions. There were a few majour bugs, one of which I recall wiping your permissions.
Yes, having your permissions wiped is serious, but did the author idly stand by and let the negative comments go unanswered? No. The main developer actively responded, while pointing out what the (probable) nature of the issue is, and worked feverishly (I presume) to iron out the issues. Yes, damage has been done, and yes, people were angry, but the developer of that plugin was responsible about it. And that is what really matters.
The least I hope you could do is be a bit more responsive, and warn players about the issues with the current builds with a very obvious label. At most, you could explain the situation, the nature of the issue, be responsive to most comments, all while working on bugfixes. And do bear in mind, we all (should) know bugfixes take awhile to get right, but if you can't fix the bugs in this current situation, a different approach might be in order, such as a recode, or maybe even help from another developer.
-
View User Profile
-
Send Message
Posted Aug 20, 2013I'm using 0.1.4 with no serious problems; no lag. But I'm disappointed at the author's apparent lack of testing of his own plugin.
-
View User Profile
-
Send Message
Posted Aug 20, 20132 weeks later, all my broken horses have been found and deleted. all the (102) duplicated horses that were stuck in unloaded chunks (outside my worldborder) have been killed ...i hope..
and all my chunk relocation errors have been repaired... and yet this plugin still has not put a large disclaimer on the site, and people keep breaking their servers with it.... wonderful job
-
View User Profile
-
Send Message
Posted Aug 20, 2013MyHorse 0.1.5 is horribly broken. Players can now get an undead horse/donkey by typing </mh comehere>
Changed back to 0.1.4, restore horses.yml backup, everything is fine now.
-
View User Profile
-
Send Message
Posted Aug 20, 2013DoggyOnFire, i have been using the 0.1.5 the whole day, everything seems to be in order now, we can tame, add name, lock, sell it. Only after a while, some tamed horse/s disappears (in both OP and player modes) but still on the /myhorse list, if i use /myhorse goto [#], i'm teleported to its location but that horse is invisible. And if i use the /myhorse comehere...it comes visible but it is an untamed animal now, and the saddle and armor placed are gone. So i tried riding it a few times to tame it, upon riding it gives a different name... the name that appears is not what i gave it but another player's tamed horse name. If i dismount, and ride it again, another name is seen.
I tried that scenario 3 times and it gave the same result. One good thing on this version is the horse entities do not cause lag now unlike the 0.1.3 version.
I hope these results would be helpful to you in some way.
DaddyBee
-
View User Profile
-
Send Message
Posted Aug 19, 2013Hope the horse info page and horse names can be added to language file :)
-
View User Profile
-
Send Message
Posted Aug 19, 2013@DoggyOnFire
Couldn't you use Unique Entity ID and getLocation even load chunk with something like this: getLocation().getChunk().load(); ?
-
View User Profile
-
Send Message
Posted Aug 19, 2013Even I deleted all my horse data, today all users re protected the horse, it still got error...
When I type /mh list
org.bukkit.command.CommandException: Unhandled exception executing command 'mh' in plugin MyHorse v0.1.5 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:191) at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523) at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:954) at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:872) at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:829) 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.IllegalArgumentException: PartialName cannot be null at org.apache.commons.lang.Validate.notNull(Validate.java:203) at org.bukkit.craftbukkit.v1_6_R2.CraftServer.matchPlayer(CraftServer.java:366) at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.getWorldDataByPlayerName(WorldsHolder.java:421) at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.getWorldPermissionsByPlayerName(WorldsHolder.java:471) at com.dogonfire.myhorse.PermissionsManager.getGroup(PermissionsManager.java:285) at com.dogonfire.myhorse.MyHorse.getHorseNameColorForPlayer(MyHorse.java:198) at com.dogonfire.myhorse.Commands.CommandList(Commands.java:842) at com.dogonfire.myhorse.Commands.onCommand(Commands.java:93) at com.dogonfire.myhorse.MyHorse.onCommand(MyHorse.java:365) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ... 15 more