From 4f898d4c2cb5f12019edeaa38f2d122701d88035 Mon Sep 17 00:00:00 2001 From: Seggan Date: Tue, 18 Aug 2026 15:06:37 -0400 Subject: [PATCH] Expose gravity and air drag --- build-data/paper.at | 2 ++ .../main/java/org/bukkit/entity/Entity.java | 21 +++++++++++++++++++ .../craftbukkit/entity/CraftEntity.java | 15 +++++++++++++ 3 files changed, 38 insertions(+) diff --git a/build-data/paper.at b/build-data/paper.at index 33797d11313e..c9c3d95312af 100644 --- a/build-data/paper.at +++ b/build-data/paper.at @@ -161,6 +161,8 @@ public net.minecraft.world.entity.Display$TextDisplay setText(Lnet/minecraft/net public net.minecraft.world.entity.Display$TextDisplay setTextOpacity(B)V public net.minecraft.world.entity.Entity DATA_TICKS_FROZEN public net.minecraft.world.entity.Entity FLAG_INVISIBLE +public net.minecraft.world.entity.Entity getAirDrag()F +public net.minecraft.world.entity.Entity getDefaultGravity()D public net.minecraft.world.entity.Entity getEncodeId()Ljava/lang/String; public net.minecraft.world.entity.Entity getFireImmuneTicks()I public net.minecraft.world.entity.Entity getSharedFlag(I)Z diff --git a/paper-api/src/main/java/org/bukkit/entity/Entity.java b/paper-api/src/main/java/org/bukkit/entity/Entity.java index 00376681df74..6379153628a8 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -910,6 +910,27 @@ final class Holder { */ void setGravity(boolean gravity); + /** + * Returns the default acceleration due to gravity (in blocks per tick). Ignores {@link Entity#hasGravity()}. + * + * @return the default acceleration due to gravity + */ + double getDefaultGravity(); + + /** + * Returns the acceleration due to gravity (in blocks per tick). If {@link Entity#hasGravity()} is true, returns 0. + * + * @return the acceleration due to gravity + */ + double getGravity(); + + /** + * Returns the air drag factor applied to this entity. + * + * @return the air drag factor + */ + float getAirDrag(); + /** * Gets the period of time (in ticks) before this entity can use a portal. * diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 0965a503160a..56b30655742f 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -931,6 +931,21 @@ public void setGravity(boolean gravity) { this.getHandle().setNoGravity(!gravity); } + @Override + public double getDefaultGravity() { + return this.getHandle().getDefaultGravity(); + } + + @Override + public double getGravity() { + return this.getHandle().getGravity(); + } + + @Override + public float getAirDrag() { + return this.getHandle().getAirDrag(); + } + @Override public int getPortalCooldown() { return this.getHandle().getPortalCooldown();