mirror of
https://github.com/Minestom/Minestom.git
synced 2025-01-03 23:17:48 +01:00
Hacky fix for the player velocity
This commit is contained in:
parent
be31c4e03d
commit
88db08001a
@ -289,7 +289,9 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
|
|||||||
this.lastUpdate = time;
|
this.lastUpdate = time;
|
||||||
|
|
||||||
// Velocity
|
// Velocity
|
||||||
if (!PlayerUtils.isNettyClient(this)) {
|
boolean applyVelocity = (PlayerUtils.isNettyClient(this) && hasVelocity())
|
||||||
|
|| !PlayerUtils.isNettyClient(this);
|
||||||
|
if (applyVelocity) {
|
||||||
final float tps = MinecraftServer.TICK_PER_SECOND;
|
final float tps = MinecraftServer.TICK_PER_SECOND;
|
||||||
float newX = position.getX() + velocity.getX() / tps;
|
float newX = position.getX() + velocity.getX() / tps;
|
||||||
float newY = position.getY() + velocity.getY() / tps;
|
float newY = position.getY() + velocity.getY() / tps;
|
||||||
@ -301,9 +303,11 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
|
|||||||
if (chunkUnloaded)
|
if (chunkUnloaded)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!PlayerUtils.isNettyClient(this) && !noGravity) { // players handle gravity by themselves
|
//if (!PlayerUtils.isNettyClient(this) && !noGravity) { // players handle gravity by themselves
|
||||||
|
if (!noGravity) {
|
||||||
velocity.setY(velocity.getY() - gravityDragPerTick * tps);
|
velocity.setY(velocity.getY() - gravityDragPerTick * tps);
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
Vector newVelocityOut = new Vector();
|
Vector newVelocityOut = new Vector();
|
||||||
Vector deltaPos = new Vector(
|
Vector deltaPos = new Vector(
|
||||||
@ -320,6 +324,11 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
|
|||||||
float drag;
|
float drag;
|
||||||
if (onGround) {
|
if (onGround) {
|
||||||
drag = 0.5f; // ground drag
|
drag = 0.5f; // ground drag
|
||||||
|
|
||||||
|
// Stop player velocity
|
||||||
|
if (PlayerUtils.isNettyClient(this)) {
|
||||||
|
velocity.zero();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
drag = 0.98f; // air drag
|
drag = 0.98f; // air drag
|
||||||
}
|
}
|
||||||
@ -329,7 +338,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
|
|||||||
sendSynchronization();
|
sendSynchronization();
|
||||||
|
|
||||||
if (shouldSendVelocityUpdate(time)) {
|
if (shouldSendVelocityUpdate(time)) {
|
||||||
sendPacketToViewers(getVelocityPacket());
|
sendPacketToViewersAndSelf(getVelocityPacket());
|
||||||
lastVelocityUpdateTime = time;
|
lastVelocityUpdateTime = time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -472,6 +481,12 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer {
|
|||||||
return velocity;
|
return velocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasVelocity() {
|
||||||
|
return velocity.getX() != 0 ||
|
||||||
|
velocity.getY() != 0 ||
|
||||||
|
velocity.getZ() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
public void setVelocity(Vector velocity) {
|
public void setVelocity(Vector velocity) {
|
||||||
EntityVelocityEvent entityVelocityEvent = new EntityVelocityEvent(this, velocity);
|
EntityVelocityEvent entityVelocityEvent = new EntityVelocityEvent(this, velocity);
|
||||||
callCancellableEvent(EntityVelocityEvent.class, entityVelocityEvent, () -> {
|
callCancellableEvent(EntityVelocityEvent.class, entityVelocityEvent, () -> {
|
||||||
|
@ -213,6 +213,15 @@ public class Vector implements Cloneable {
|
|||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Vector{" +
|
||||||
|
"x=" + x +
|
||||||
|
", y=" + y +
|
||||||
|
", z=" + z +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a new vector.
|
* Get a new vector.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user