mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 04:56:50 +01:00
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.
This commit is contained in:
parent
8f8c62b71b
commit
b7c43fbff1
2 changed files with 45 additions and 3 deletions
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue