Interface BodyRotationController

All Known Implementing Classes:
DefaultBodyRotationController

public interface BodyRotationController
Wrapper interface for controlling the body rotation of a living entity.

Clarification

Head Angle
This is the clamped angle used when the entity is moving and looking around at the same time. In this case, the body takes the initiative and limit the head angle.

Body Angle
This is the clamped angle used when the entity is standing still and looking around at the same time. In this case, the head takes the initiative and drag the body along.
  • Method Summary

    Modifier and Type
    Method
    Description
    float
     
    float
     
    float
     
    float
     
    int
     
    int
     
    float
     
    float
     
    float
     
    float
     
    boolean
     
    boolean
     
    boolean
     
    void
    setBodyClampUneven(boolean flag)
     
    void
    setHeadClampUneven(boolean flag)
     
    void
    setMaxBodyAngle(float angle)
    If body clamp is even, set the max body angle for both sides.
    Otherwise, only set the angle on the positive side.
    void
    setMaxHeadAngle(float angle)
    If head clamp is even, set the max head angle for both sides.
    Otherwise, only set the angle on the positive side.
    void
    setMinBodyAngle(float angle)
    If body clamp is uneven, set the angle on the negative side.
    Otherwise, this method has no effect.
    void
    setMinHeadAngle(float angle)
    If head clamp is uneven, set the angle on the negative side.
    Otherwise, this method has no effect.
    void
    setPlayerMode(boolean flag)
    Toggle player rotation mode.
    If true, the body would act like the player's body rotation.
    Otherwise, the body would auto rotate to match the head's rotation after a certain period of time.
    void
    setRotationDelay(int delay)
    Set the wait time before the body auto rotates to match the head's rotation.
    For example, if delay = 60, the entity would rotate its head, stop, and wait 3 seconds before rotating its body.
    void
    setRotationDuration(int duration)
    Set the time it takes to auto rotates back to the head's rotation.
    For example, if duration = 60, the entity would rotate its head, stop, wait 0.5 second, and takes 3 seconds to match body rotation to the head rotation.
    void
    setStableAngle(float angle)
    Set the stable angle before correcting back to the clamped angle.
    For example, if the clamp = 50, and the stable angle = 15, the body can be 65 degrees away from the head before snapping back to 50 degrees away.
    This causes the "sudden jerk" effect on all entity body rotation.
    void
    setYBodyRot(float rot)
     
    void
    setYHeadRot(float rot)
     
    default void
    Update method that is called every tick only if the entity does not have a body rotation controller by default.
  • Method Details

    • tick

      default void tick()
      Update method that is called every tick only if the entity does not have a body rotation controller by default.
    • setYHeadRot

      void setYHeadRot(float rot)
    • getYHeadRot

      float getYHeadRot()
    • getXHeadRot

      float getXHeadRot()
    • setYBodyRot

      void setYBodyRot(float rot)
    • getYBodyRot

      float getYBodyRot()
    • setHeadClampUneven

      void setHeadClampUneven(boolean flag)
    • setBodyClampUneven

      void setBodyClampUneven(boolean flag)
    • isHeadClampUneven

      boolean isHeadClampUneven()
    • isBodyClampUneven

      boolean isBodyClampUneven()
    • setMaxHeadAngle

      void setMaxHeadAngle(float angle)
      If head clamp is even, set the max head angle for both sides.
      Otherwise, only set the angle on the positive side.
      Parameters:
      angle - angle in degrees
    • setMaxBodyAngle

      void setMaxBodyAngle(float angle)
      If body clamp is even, set the max body angle for both sides.
      Otherwise, only set the angle on the positive side.
      Parameters:
      angle - angle in degrees
    • setMinHeadAngle

      void setMinHeadAngle(float angle)
      If head clamp is uneven, set the angle on the negative side.
      Otherwise, this method has no effect.
      Parameters:
      angle - angle in degrees
    • setMinBodyAngle

      void setMinBodyAngle(float angle)
      If body clamp is uneven, set the angle on the negative side.
      Otherwise, this method has no effect.
      Parameters:
      angle - angle in degrees
    • getMaxHeadAngle

      float getMaxHeadAngle()
    • getMaxBodyAngle

      float getMaxBodyAngle()
    • getMinHeadAngle

      float getMinHeadAngle()
    • getMinBodyAngle

      float getMinBodyAngle()
    • setStableAngle

      void setStableAngle(float angle)
      Set the stable angle before correcting back to the clamped angle.
      For example, if the clamp = 50, and the stable angle = 15, the body can be 65 degrees away from the head before snapping back to 50 degrees away.
      This causes the "sudden jerk" effect on all entity body rotation.
      Parameters:
      angle - angle in degrees
    • getStableAngle

      float getStableAngle()
    • setPlayerMode

      void setPlayerMode(boolean flag)
      Toggle player rotation mode.
      If true, the body would act like the player's body rotation.
      Otherwise, the body would auto rotate to match the head's rotation after a certain period of time.
    • isPlayerMode

      boolean isPlayerMode()
    • setRotationDelay

      void setRotationDelay(int delay)
      Set the wait time before the body auto rotates to match the head's rotation.
      For example, if delay = 60, the entity would rotate its head, stop, and wait 3 seconds before rotating its body.
      Parameters:
      delay - delay in ticks
    • getRotationDelay

      int getRotationDelay()
    • setRotationDuration

      void setRotationDuration(int duration)
      Set the time it takes to auto rotates back to the head's rotation.
      For example, if duration = 60, the entity would rotate its head, stop, wait 0.5 second, and takes 3 seconds to match body rotation to the head rotation.
      Parameters:
      duration - duration in ticks.
    • getRotationDuration

      int getRotationDuration()