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!


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.


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.


To install ToughBoats from scratch, you must first invent the universe. We'll assume you've done that part.

  1. Install a CraftBukkit server and configure it properly. More information here:
  2. Download ToughBoats.jar from the menu on the right.
  3. Copy ToughBoats jar to the folder called "plugins" on the server you created in step 1.
  4. Stop your server. You can do this by typing "stop" in the console.
  5. Start your server. ToughBoats is now installed.


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.



Using ToughBoats could not be simpler.

  1. Log into your server.
  2. Collect the materials to build a boat. More information here:
  3. Find an ocean, a river or a pond somewhere in your world.
  4. Place the boat in the body of water you located.
  5. Get into the boat by right-clicking it.
  6. Ride the boat by using the forward movement key. Steer using the mouse.
  7. Enjoy your boat not breaking when you run into things.
  8. When you are done riding, use the LEFT SHIFT key to get out of your boat.
  9. Recover the boat by striking it with a tool or your empty hand.


ToughBoats has no permissions. If you can ride a boat, you can use it.


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.


If you need support feel free to post here or create a ticket.


  • 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 ( 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.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of polaris_iv polaris_iv Apr 28, 2015 at 15:33 UTC - 0 likes

    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.

  • Avatar of smashedagainst smashedagainst Dec 19, 2014 at 06:26 UTC - 0 likes

    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

  • Avatar of fatso9000 fatso9000 Aug 02, 2014 at 05:58 UTC - 0 likes

    Looks good, but why does it use Java networking classes?

  • Avatar of rustyshakelford2 rustyshakelford2 Feb 04, 2014 at 05:37 UTC - 0 likes

    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.

  • Avatar of pacificfils pacificfils Dec 23, 2013 at 22:38 UTC - 0 likes

    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.


  • Avatar of bounce_raff bounce_raff Oct 22, 2013 at 01:55 UTC - 0 likes

    Does this work for 1.6.4?

  • Avatar of Vortakor Vortakor Aug 31, 2013 at 08:32 UTC - 0 likes

    Tip: Instead of #4 and #5 of Installation, you can also reload plugins without stopping the server via the /reload command.

  • Avatar of darrenstraight darrenstraight Aug 24, 2013 at 09:44 UTC - 0 likes

    Brilliant, will serve well in our boat races, thank you! :)

  • Avatar of Cyclometh Cyclometh Aug 04, 2013 at 19:09 UTC - 0 likes

    @techrosis: Go

    I'm not familiar with Denizens but I'll check it out. Sounds like both plugins are trying to sink the same event.


  • Avatar of techrosis techrosis Aug 04, 2013 at 12:33 UTC - 0 likes

    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

    Could not pass event VehicleDestroyEvent to Denizen v0.9.2-SNAPSHOT
            at org.bukkit.plugin.RegisteredListener.callEvent(
            at org.bukkit.plugin.SimplePluginManager.fireEvent(
            at org.bukkit.plugin.SimplePluginManager.callEvent(
            at net.minecraft.server.v1_6_R2.EntityBoat.l_(
            at net.minecraft.server.v1_6_R2.World.entityJoinedWorld(
            at net.minecraft.server.v1_6_R2.World.playerJoinedWorld(
            at net.minecraft.server.v1_6_R2.World.tickEntities(
            at net.minecraft.server.v1_6_R2.WorldServer.tickEntities(
            at net.minecraft.server.v1_6_R2.MinecraftServer.t(
            at net.minecraft.server.v1_6_R2.DedicatedServer.t(
            at net.minecraft.server.v1_6_R2.MinecraftServer.s(
    Caused by: java.lang.NullPointerException
            at net.aufdemrand.denizen.scripts.containers.core.WorldScriptHelper.vehicleDestroy(
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(
            at java.lang.reflect.Method.invoke(
            ... 13 more


Date created
Jul 28, 2013
Last update
Aug 04, 2013
Development stage
MIT License
Curse link
Recent files