ToughBoats
ToughBoats
ToughBoats v1.3
Are you sick of boats in Minecraft breaking if you look at them wrong? Smashing into bits and pieces if you run into a lily pad or brush the bank of a river? Ever think that maybe a boat should be a little more sturdy than something made of balsa?
Then this plugin is your answer.
ToughBoats is a very simple Bukkit plugin that will prevent any boat from being destroyed except by direct player interaction. In short, with ToughBoats installed, you can run your boats around, bang into things, rub the river edge, smash it into trees, whatever- and it will not break!
You CAN still break your boat by smacking it with a tool or your hand, in which case it will drop just as normal. Any damage from collisions, etc. will not be allowed to destroy the boat. Boats that are placed in lava and/or fire will be damaged and destroyed normally; this plugin only prevents destruction of boats on water!
No More Desync!
In addition, ToughBoats enables you to eliminate the desynchronization of players in boats that "drift" away from the server's location. With this feature enabled, every 60 seconds (default, configurable) the player is teleported to where the server believes they are, forcing the client to update their location. The player will experience a brief "hop" as they are teleported to their proper place. No more running into the shore when your client shows you a hundred blocks out in the ocean!
CONFIGURATION NOTE FOR V1.2
If you want to use the resync feature, you MUST enable it in config.yml! If you don't you'll only have access to the basic features of ToughBoats.
CONFIGURATION NOTE FOR V1.3
You can now disable boat protection while still using the player resync feature. Edit config.yml and set "protectboats" to false if you wish to disable boat protection. It defaults to true.
Installation
To install ToughBoats from scratch, you must first invent the universe. We'll assume you've done that part.
- Install a CraftBukkit server and configure it properly. More information here: http://wiki.bukkit.org/Setting_up_a_server
- Download ToughBoats.jar from the menu on the right.
- Copy ToughBoats jar to the folder called "plugins" on the server you created in step 1.
- Stop your server. You can do this by typing "stop" in the console.
- Start your server. ToughBoats is now installed.
Configuration
ToughBoats creates a configuration file called "config.yml" in the "ToughBoats" directory in your server's plugins directory. This is a text file you can edit with any standard text editor.
The config.yml file has several options. If you're upgrading from V1.0 of ToughBoats, I suggest you stop your server, DELETE config.yml, update the ToughBoats.jar file and restart your server. If you prefer, see the sample config.yml in the comments.
YOU MUST ENABLE THE "RESYNC" FEATURE MANUALLY BY CHANGING THE PROPER LINE IN CONFIG.YML! IT DEFAULTS TO BEING DISABLED.
Usage
Using ToughBoats could not be simpler.
- Log into your server.
- Collect the materials to build a boat. More information here: http://www.minecraftwiki.net/wiki/Boat
- Find an ocean, a river or a pond somewhere in your world.
- Place the boat in the body of water you located.
- Get into the boat by right-clicking it.
- Ride the boat by using the forward movement key. Steer using the mouse.
- Enjoy your boat not breaking when you run into things.
- When you are done riding, use the LEFT SHIFT key to get out of your boat.
- Recover the boat by striking it with a tool or your empty hand.
Permissions
ToughBoats has no permissions. If you can ride a boat, you can use it.
Commands
ToughBoats has no commands. It keeps boats from breaking by hitting things, what's to command?
Crafting Recipes
ToughBoats introduces no new crafting recipes. You build a boat, you ride the boat.
Support
If you need support feel free to post here or create a ticket.
To-Do
- Creeper explosions damage boats (or appear to in some cases). Determine if this is true and then determine whether to keep behavior or mitigate it.
- [FIXED] Boat position bugs in Minecraft (https://mojang.atlassian.net/browse/MC-26026) are more easily encountered when using ToughBoats because boats don't break and have to be replaced all the time. Investigate position fix or other mitigation strategy.
- [FIXED] Can't disable boat protection while still being able to use player resync.
Thank you for this plugin! Boats are virtually useless on vanilla without this.
A player of mine suggested allowing cacti to break boats, to allow boat collection systems to work. I wanted to implement this idea and a reload command, as some plugin development practice. Although ToughBoats worked perfectly in 1.8.3 anyway, I've updated everything to make sure it will last.
My fork can be found here, if anybody wants to use it. There are build instructions on the README. Please enjoy.
Works on Spigot 1.8 - thanks! Boats were unusable until I installed your plugin. FWIW, simply doing a /reload wasn't enough, I did need to /stop the server. (and my start script caught it and started spigot again)
Without toughboats: Sailing along about 30 blocks away from shore and BAM boat breaks and you're swimming; sailing along between maps and you get teleported BACK 100+ blocks. That really sucks when an already too long trip takes 2x as long.
So, thanks for the plug-in and you should enable resync by default... :D
Looks good, but why does it use Java networking classes?
Working great on my 1.7 spigot server. Thanks for the plugin! We've got a nice boat race map and it's usable now.
I'd like a feature where the boat *WILL* break unless there's a permission node.
So, for example, if someone has the toughboats.nobreak node, their boat will not break. However, someone without said node will have their boat break.
Thanks!
Does this work for 1.6.4?
Tip: Instead of #4 and #5 of Installation, you can also reload plugins without stopping the server via the /reload command.
Brilliant, will serve well in our boat races, thank you! :)
@techrosis
I'm not familiar with Denizens but I'll check it out. Sounds like both plugins are trying to sink the same event.
Plugin seems to be working just fine, however, it's causing a ton of NPE's on console with Denizens 0.9.2 something about a vehicledestroyrevent
@damnnicholas
Thanks very much!
Hey, i made a simple video both proving and explaining what this plugin does, even though it is awfully simple. You can find it here: http://www.youtube.com/watch?v=fmC8Vmjmm18&feature=youtu.be
EDIT: Reuploaded: http://www.youtube.com/watch?v=fmC8Vmjmm18&feature=youtu.be
Staff Edit: Please do not spam or advertise.
Oh, and unless you need it, turn off the "Debug" feature. It'll spam your console pretty good if you leave it on.
OK, with the v1.2 update coming out, I've added a few new configuration options. Since the old config.yml was so short, the best option is to delete it when you update the JAR, and you should get a brand new one when you start the server.
YOU MUST ENABLE THE RESYNC FEATURE BY CHANGING THE CONFIG.YML! IT DEFAULTS TO DISABLED.
Here is a sample config.yml:
V1.2 Coming Soon
I've been working on an update to ToughBoats that (I believe) fixes the current location desync issue. I'll be testing it a bit more on my server and when I'm satisfied that it works right I'll be publishing it here.
The update causes the plugin to force a resync of player position every minute (or at a configurable interval) while the player is in a boat. The player will experience a brief "hop" and the boat may jerk or slow down for a moment, but the player's location will be correct again.
A Couple of Issues
These aren't issues with ToughBoats specifically, but as I've used it on my server, I've found a couple of things that the use of ToughBoats either exacerbates or exposes. I know the JAR isn't approved yet, but once it is I want you to be aware of what you might run into. None of these issues are caused by ToughBoats.
First, Creeper explosions will damage a boat (I think). I've lost a boat or two to creepers and been unable to find one, the other dropped as an entity. I'll look into it further, but I don't consider it to be super high-priority.
Second, there's a lot of issues with position and boats. See here:
https://mojang.atlassian.net/browse/MC-26026
The problem seems to be in Minecraft, not Bukkit and definitely not ToughBoats. However, because ToughBoats lets boats last longer and you're more likely to use them where you might not have before because they're so fragile (rivers, shorelines, etc), you may run into this.
The behavior seems to be that the client and the server disagree on where you are located. When it happens, the boat can be thought by the server to be on the shore while you're out in the middle of the ocean and so you can't move even though there's nothing in front of you. Or you start taking damage from mobs on shore even though you're not in range according to your client.
At one point, I found myself far enough away that chunks weren't generating and I fell off the world.
So, use ToughBoats with caution. There is a plugin called GhostFix which may take care of this issue, but I'm looking into potentially automating the fix as part of ToughBoats. More to come as I figure it out. I'm still learning the Bukkit API, so bear with me.
Thanks!