Interface BodyRotationController
- All Known Implementing Classes:
DefaultBodyRotationController
public interface BodyRotationController
Wrapper interface for controlling the body rotation of a living entity.
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.
Clarification
Head AngleThis 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 TypeMethodDescriptionfloat
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
tick()
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()
-