summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsk89q <the.sk89q@gmail.com>2011-09-25 11:20:51 -0700
committersk89q <the.sk89q@gmail.com>2011-09-25 11:20:51 -0700
commitb7c43fbff1dffef1b4c9c4e57633d8c16606db58 (patch)
tree0f6541a82f657e6b321c88030dfb91838e0a6521
parent8f8c62b71b76675903405df4f7f11edc1a7c6db6 (diff)
downloadcraftbukkit-b7c43fbff1dffef1b4c9c4e57633d8c16606db58.tar
craftbukkit-b7c43fbff1dffef1b4c9c4e57633d8c16606db58.tar.gz
craftbukkit-b7c43fbff1dffef1b4c9c4e57633d8c16606db58.tar.lz
craftbukkit-b7c43fbff1dffef1b4c9c4e57633d8c16606db58.tar.xz
craftbukkit-b7c43fbff1dffef1b4c9c4e57633d8c16606db58.zip
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.
-rw-r--r--src/main/java/net/minecraft/server/EntityBoat.java22
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java26
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 3ffb55a5..a2d94b74 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 284fdd79..721b653e 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";