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 cbea8b9088fff5f08a47f6b26d7554d00710eb9f..252ae4b7a002b34533988e0a574a24af8573a125 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -816,6 +816,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 /**