From 6c5e2e0b943ed4311fe1a44494f2adc860ca73df Mon Sep 17 00:00:00 2001
From: gsand <gsandowns@gmail.com>
Date: Sun, 8 Mar 2015 04:10:02 -0500
Subject: [PATCH] Configurable game mechanics changes


diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java
index f6a43c0..0e6f8c0 100644
--- a/src/main/java/net/minecraft/server/EntityBoat.java
+++ b/src/main/java/net/minecraft/server/EntityBoat.java
@@ -340,13 +340,7 @@ public class EntityBoat extends Entity {
                     if (!destroyEvent.isCancelled()) {
                     this.die();
                     if (this.world.getGameRules().getBoolean("doEntityDrops")) {
-                        for (k = 0; k < 3; ++k) {
-                            this.a(Item.getItemOf(Blocks.PLANKS), 1, 0.0F);
-                        }
-
-                        for (k = 0; k < 2; ++k) {
-                            this.a(Items.STICK, 1, 0.0F);
-                        }
+                        breakNaturally(); // PaperSpigot
                     }
                     } // CraftBukkit end
                 }
@@ -451,15 +445,7 @@ public class EntityBoat extends Entity {
                     if (!destroyEvent.isCancelled()) {
                     this.die();
                     if (this.world.getGameRules().getBoolean("doEntityDrops")) {
-                        int i;
-
-                        for (i = 0; i < 3; ++i) {
-                            this.a(Item.getItemOf(Blocks.PLANKS), 1, 0.0F);
-                        }
-
-                        for (i = 0; i < 2; ++i) {
-                            this.a(Items.STICK, 1, 0.0F);
-                        }
+                        breakNaturally(); // PaperSpigot
                     }
                     } // CraftBukkit end
                 }
@@ -495,4 +481,21 @@ public class EntityBoat extends Entity {
     public int m() {
         return this.datawatcher.getInt(18);
     }
+
+    /**
+     * PaperSpigot - Handles boat drops depending on the user's config setting
+     */
+    public void breakNaturally() {
+        if (this.world.paperSpigotConfig.boatsDropBoats) {
+            this.a(Items.BOAT, 1, 0.0F);
+        } else {
+            for (int k = 0; k < 3; ++k) {
+                this.a(Item.getItemOf(Blocks.PLANKS), 1, 0.0F);
+            }
+
+            for (int k = 0; k < 2; ++k) {
+                this.a(Items.STICK, 1, 0.0F);
+            }
+        }
+    }
 }
diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
index 7804086..9e2f4d1 100644
--- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
+++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
@@ -222,4 +222,10 @@ public class PaperSpigotWorldConfig
         removeUnloadedTNTEntities = getBoolean( "remove-unloaded.tnt-entities", true );
         removeUnloadedFallingBlocks = getBoolean( "remove-unloaded.falling-blocks", true );
     }
+
+    public boolean boatsDropBoats;
+    private void mechanicsChanges()
+    {
+        boatsDropBoats = getBoolean( "game-mechanics.boats-drop-boats", false );
+    }
 }
-- 
1.9.5.msysgit.1