From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: SoSeDiK Date: Wed, 11 Jan 2023 20:59:02 +0200 Subject: [PATCH] Expand Pose API diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java index ee5a27ba09ec4100dbedab4f190cf74549ce858e..e56808a884a4fda9a891468a787b3dff9303debc 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -840,6 +840,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * @param sneak true if the entity should be sneaking */ void setSneaking(boolean sneak); + + /** + * Sets the entity's current {@link Pose}. + * + *

Note: While poses affect some things like hitboxes, they do not change the entity's state + * (e.g. having {@link Pose#SNEAKING} does not guarantee {@link #isSneaking()} being {@code true}). + * + *

If applied to the {@link Player}, they might see a different pose client-side. + * + * @param pose a new {@link Pose} + * @see #setPose(Pose, boolean) + */ + default void setPose(@NotNull Pose pose) { + setPose(pose, false); + } + + /** + * Sets the entity's current {@link Pose}. + * + *

Note: While poses affect some things like hitboxes, they do not change the entity's state + * (e.g. having {@link Pose#SNEAKING} does not guarantee {@link #isSneaking()} being {@code true}). + * + *

If applied to the {@link Player}, they might see a different pose client-side. + * + * @param pose a new {@link Pose} + * @param fixed whether the new {@link Pose} should stay until manually changed + */ + void setPose(@NotNull Pose pose, boolean fixed); + + /** + * Checks whether the entity has a fixed {@link Pose} + * + * @see #setPose(Pose, boolean) + * @return whether the entity has a fixed {@link Pose} + */ + boolean hasFixedPose(); // Paper end /**