From b7c43fbff1dffef1b4c9c4e57633d8c16606db58 Mon Sep 17 00:00:00 2001 From: sk89q Date: Sun, 25 Sep 2011 11:20:51 -0700 Subject: [PATCH] Boat get/set (double) occupied acceleration, (double) unoccupied deceleration, (boolean) work on land. Good values to maximize boat utility: 0.6 (fast accel.), 0.99 (no loss of boat), true/false, respectively. --- .../java/net/minecraft/server/EntityBoat.java | 22 +++++++++++++--- .../bukkit/craftbukkit/entity/CraftBoat.java | 26 +++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java index 3ffb55a530..a2d94b74e1 100644 --- a/src/main/java/net/minecraft/server/EntityBoat.java +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -28,6 +28,9 @@ public class EntityBoat extends Entity { // CraftBukkit start public double maxSpeed = 0.4D; + public double occupiedDeceleration = 0.2D; + public double unoccupiedDeceleration = -1; + public boolean landBoats = false; @Override public void collide(Entity entity) { @@ -233,9 +236,22 @@ public class EntityBoat extends Entity { } if (this.passenger != null) { - this.motX += this.passenger.motX * 0.2D; - this.motZ += this.passenger.motZ * 0.2D; + this.motX += this.passenger.motX * occupiedDeceleration; // CraftBukkit + this.motZ += this.passenger.motZ * occupiedDeceleration; // CraftBukkit } + // CraftBukkit start - block not in vanilla + else if (unoccupiedDeceleration >= 0) { + this.motX *= unoccupiedDeceleration; + this.motZ *= unoccupiedDeceleration; + // Kill lingering speed + if (motX <= 0.00001) { + motX = 0; + } + if (motZ <= 0.00001) { + motZ = 0; + } + } + // CraftBukkit end // CraftBukkit d3 = this.maxSpeed; @@ -255,7 +271,7 @@ public class EntityBoat extends Entity { this.motZ = d3; } - if (this.onGround) { + if (this.onGround && !landBoats) { // CraftBukkit this.motX *= 0.5D; this.motY *= 0.5D; this.motZ *= 0.5D; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java index 284fdd79d3..721b653e3e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java @@ -22,6 +22,32 @@ public class CraftBoat extends CraftVehicle implements Boat { } } + public double getOccupiedDeceleration() { + return boat.occupiedDeceleration; + } + + public void setOccupiedDeceleration(double speed) { + if (speed >= 0D) { + boat.occupiedDeceleration = speed; + } + } + + public double getUnoccupiedDeceleration() { + return boat.unoccupiedDeceleration; + } + + public void setUnoccupiedDeceleration(double speed) { + boat.unoccupiedDeceleration = speed; + } + + public boolean getWorkOnLand() { + return boat.landBoats; + } + + public void setWorkOnLand(boolean workOnLand) { + boat.landBoats = workOnLand; + } + @Override public String toString() { return "CraftBoat";