Revamp control to be more accurate (#2513)

* Revamp control to be more accurate

Fixes stepAngleTowards to be clampAngle, 3 mob entity methods

I initially wanted to just map the shulker look control class, turns
out the whole look control system has some wrong names.

Signed-off-by: liach <liach@users.noreply.github.com>

* Update mappings/net/minecraft/entity/mob/MobEntity.mapping

Co-authored-by: enbrain <69905075+enbrain@users.noreply.github.com>

Co-authored-by: liach <liach@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: enbrain <69905075+enbrain@users.noreply.github.com>
This commit is contained in:
liach 2021-10-04 08:06:44 -05:00 committed by GitHub
parent 54912de905
commit 967ba53ab5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 108 additions and 36 deletions

View File

@ -1,7 +0,0 @@
CLASS net/minecraft/class_1332 net/minecraft/entity/ai/control/AquaticLookControl
FIELD field_30200 ADDED_PITCH I
FIELD field_30201 ADDED_YAW I
FIELD field_6357 maxYawDifference I
METHOD <init> (Lnet/minecraft/class_1308;I)V
ARG 1 entity
ARG 2 maxYawDifference

View File

@ -1,15 +1,27 @@
CLASS net/minecraft/class_1330 net/minecraft/entity/ai/control/BodyControl
FIELD field_30194 MAX_HEAD_YAW I
FIELD field_30195 MAX_ACTIVE_TICKS I
COMMENT The body control ensures a mob's head and body yaws are kept up with each other.
FIELD field_30194 BODY_KEEP_UP_THRESHOLD I
FIELD field_30195 ROTATE_BODY_START_TICK I
FIELD field_30196 ROTATION_INCREMENTS I
FIELD field_6354 lastHeadYaw F
FIELD field_6355 activeTicks I
FIELD field_6355 bodyAdjustTicks I
FIELD field_6356 entity Lnet/minecraft/class_1308;
METHOD <init> (Lnet/minecraft/class_1308;)V
ARG 1 entity
METHOD method_20243 rotateLook ()V
METHOD method_20244 rotateHead ()V
METHOD method_20245 rotateBody ()V
METHOD method_20243 keepUpBody ()V
COMMENT Keeps up the body yaw by ensuring it is within the {@linkplain
COMMENT MobEntity#getMaxHeadRotation max head rotation} from the head yaw.
METHOD method_20244 keepUpHead ()V
COMMENT Keeps up the head yaw by ensuring it is within the {@linkplain
COMMENT MobEntity#getMaxHeadRotation max head rotation} from the body yaw.
METHOD method_20245 slowlyAdjustBody ()V
COMMENT Gradually adjusts the body yaw toward the head yaw, starting after 10 ticks of
COMMENT {@linkplain #bodyAdjustTicks wait} and finishes by the 20th tick.
METHOD method_20246 isIndependent ()Z
METHOD method_20247 isMoving ()Z
METHOD method_6224 tick ()V
COMMENT Ticks the body control.
COMMENT
COMMENT @implSpec If the entity {@linkplain #isMoving() has moved}, its body yaw
COMMENT adjusts to its head yaw. Otherwise, if the entity is {@linkplain
COMMENT #isIndependent() not steered}, its head yaw adjusts to its body yaw.

View File

@ -1,11 +1,12 @@
CLASS net/minecraft/class_1333 net/minecraft/entity/ai/control/LookControl
FIELD field_6358 pitchSpeed F
FIELD field_6359 yawSpeed F
FIELD field_6360 active Z
COMMENT The look control adjusts a mob's rotations to look at a target position.
FIELD field_6358 maxPitchChange F
FIELD field_6359 maxYawChange F
FIELD field_6360 pending Z
FIELD field_6361 entity Lnet/minecraft/class_1308;
FIELD field_6362 lookZ D
FIELD field_6363 lookY D
FIELD field_6364 lookX D
FIELD field_6362 z D
FIELD field_6363 y D
FIELD field_6364 x D
METHOD <init> (Lnet/minecraft/class_1308;)V
ARG 1 entity
METHOD method_19615 lookAt (Lnet/minecraft/class_243;)V
@ -21,14 +22,23 @@ CLASS net/minecraft/class_1333 net/minecraft/entity/ai/control/LookControl
METHOD method_20433 shouldStayHorizontal ()Z
METHOD method_35111 lookAt (Lnet/minecraft/class_1297;)V
ARG 1 entity
METHOD method_36980 clampHeadYaw ()V
METHOD method_37355 (Ljava/lang/Float;)V
ARG 1 pitch
METHOD method_37356 (Ljava/lang/Float;)V
ARG 1 yaw
METHOD method_6225 getLookX ()D
METHOD method_6226 lookAt (Lnet/minecraft/class_1297;FF)V
ARG 1 entity
ARG 2 yawSpeed
ARG 3 pitchSpeed
ARG 2 maxYawChange
ARG 3 maxPitchChange
METHOD method_6227 getLookY ()D
METHOD method_6228 getLookZ ()D
METHOD method_6229 changeAngle (FFF)F
COMMENT Changes the angle from {@code from} to {@code to}, or by {@code max} degrees
COMMENT if {@code to} is too big a change.
COMMENT
COMMENT <p>This is the same as {@link MobEntity#changeAngle(float, float, float)}.
ARG 1 from
ARG 2 to
ARG 3 max
@ -36,7 +46,7 @@ CLASS net/minecraft/class_1333 net/minecraft/entity/ai/control/LookControl
ARG 1 x
ARG 3 y
ARG 5 z
ARG 7 yawSpeed
ARG 8 pitchSpeed
ARG 7 maxYawChange
ARG 8 maxPitchChange
METHOD method_6231 tick ()V
METHOD method_6232 isActive ()Z
METHOD method_6232 isPending ()Z

View File

@ -0,0 +1,14 @@
CLASS net/minecraft/class_1332 net/minecraft/entity/ai/control/YawAdjustingLookControl
COMMENT The yaw adjusting look control adjusts the entity's body yaw to be close to the
COMMENT head yaw. In vanilla, this is used by entities that cannot rotate their heads
COMMENT easily, such as axolotl and dolphin.
FIELD field_30200 ADDED_PITCH I
FIELD field_30201 ADDED_YAW I
FIELD field_6357 yawAdjustThreshold I
METHOD <init> (Lnet/minecraft/class_1308;I)V
ARG 1 entity
ARG 2 yawAdjustThreshold
METHOD method_37357 (Ljava/lang/Float;)V
ARG 1 pitch
METHOD method_37358 (Ljava/lang/Float;)V
ARG 1 yaw

View File

@ -48,7 +48,12 @@ CLASS net/minecraft/class_1308 net/minecraft/entity/mob/MobEntity
ARG 1 id
METHOD method_19540 setAttacking (Z)V
ARG 1 attacking
METHOD method_20240 getLookYawSpeed ()I
METHOD method_20240 getMaxLookYawChange ()I
COMMENT {@return the maximum degrees which the yaw can change when looking}
COMMENT
COMMENT <p>This is used by the look control.
COMMENT
COMMENT <p>The default return value is {@code 10}.
METHOD method_20417 updateGoalControls ()V
METHOD method_20636 canMobSpawn (Lnet/minecraft/class_1299;Lnet/minecraft/class_1936;Lnet/minecraft/class_3730;Lnet/minecraft/class_2338;Ljava/util/Random;)Z
ARG 0 type
@ -163,9 +168,13 @@ CLASS net/minecraft/class_1308 net/minecraft/entity/mob/MobEntity
METHOD method_5958 mobTick ()V
METHOD method_5959 initGoals ()V
METHOD method_5960 changeAngle (FFF)F
ARG 1 oldAngle
ARG 2 newAngle
ARG 3 maxChangeInAngle
COMMENT Changes the angle from {@code from} to {@code to}, or by {@code max} degrees
COMMENT if {@code to} is too big a change.
COMMENT
COMMENT <p>This is the same as {@link LookControl#changeAngle(float, float, float)}.
ARG 1 from
ARG 2 to
ARG 3 max
METHOD method_5961 isLeftHanded ()Z
METHOD method_5962 getMoveControl ()Lnet/minecraft/class_1335;
METHOD method_5963 createBodyControl ()Lnet/minecraft/class_1330;
@ -187,7 +196,14 @@ CLASS net/minecraft/class_1308 net/minecraft/entity/mob/MobEntity
ARG 1 upwardSpeed
METHOD method_5977 setAiDisabled (Z)V
ARG 1 aiDisabled
METHOD method_5978 getLookPitchSpeed ()I
METHOD method_5978 getMaxLookPitchChange ()I
COMMENT {@return the maximum degrees which the pitch can change when looking}
COMMENT
COMMENT <p>This is used by the look control.
COMMENT
COMMENT <p>It can return from {@code 1} for entities that can hardly raise their head,
COMMENT like axolotols or dolphins, or {@code 180} for entities that can freely raise
COMMENT and lower their head, like guardians. The default return value is {@code 40}.
METHOD method_5979 canSpawn (Lnet/minecraft/class_1936;Lnet/minecraft/class_3730;)Z
ARG 1 world
ARG 2 spawnReason
@ -197,7 +213,14 @@ CLASS net/minecraft/class_1308 net/minecraft/entity/mob/MobEntity
METHOD method_5984 updateEnchantments (Lnet/minecraft/class_1266;)V
ARG 1 difficulty
METHOD method_5985 getVisibilityCache ()Lnet/minecraft/class_1413;
METHOD method_5986 getBodyYawSpeed ()I
METHOD method_5986 getMaxHeadRotation ()I
COMMENT {@return the maximum degrees which the head yaw can differ from the body yaw}
COMMENT
COMMENT <p>This is used by the body control.
COMMENT
COMMENT <p>It can return from {@code 1} for entities that can hardly rotate their head,
COMMENT like axolotols or dolphins, or {@code 180} for entities that can freely rotate
COMMENT their head, like shulkers. The default return value is {@code 75}.
METHOD method_5987 isAiDisabled ()Z
METHOD method_5988 getLookControl ()Lnet/minecraft/class_1333;
METHOD method_5990 playSpawnEffects ()V

View File

@ -1,4 +1,5 @@
CLASS net/minecraft/class_1606 net/minecraft/entity/mob/ShulkerEntity
FIELD field_33765 SOUTH_VECTOR Lnet/minecraft/class_1160;
FIELD field_7337 openProgress F
FIELD field_7339 prevOpenProgress F
FIELD field_7340 teleportLerpTimer I
@ -53,3 +54,6 @@ CLASS net/minecraft/class_1606 net/minecraft/entity/mob/ShulkerEntity
ARG 2 shulker
CLASS class_1611 PeekGoal
FIELD field_7352 counter I
CLASS class_6376 ShulkerLookControl
METHOD <init> (Lnet/minecraft/class_1606;Lnet/minecraft/class_1308;)V
ARG 2 entity

View File

@ -72,7 +72,7 @@ CLASS net/minecraft/class_5762 net/minecraft/entity/passive/AxolotlEntity
CLASS class_5764 AxolotlLookControl
METHOD <init> (Lnet/minecraft/class_5762;Lnet/minecraft/class_5762;I)V
ARG 2 axolotl
ARG 3 maxYawDifference
ARG 3 yawAdjustThreshold
CLASS class_5765 AxolotlMoveControl
FIELD field_28340 axolotl Lnet/minecraft/class_5762;
METHOD <init> (Lnet/minecraft/class_5762;)V

View File

@ -240,11 +240,17 @@ CLASS net/minecraft/class_3532 net/minecraft/util/math/MathHelper
ARG 2 end
METHOD method_17822 sign (D)I
ARG 0 value
METHOD method_20306 stepAngleTowards (FFF)F
COMMENT Steps from {@code from} degrees towards {@code to} degrees, changing the value by at most {@code step} degrees.
ARG 0 from
ARG 1 to
ARG 2 step
METHOD method_20306 clampAngle (FFF)F
COMMENT Clamps {@code value}, as an angle, between {@code mean - delta} and {@code
COMMENT mean + delta} degrees.
COMMENT
COMMENT @return the clamped {@code value}
ARG 0 value
COMMENT the value to clamp
ARG 1 mean
COMMENT the mean value of the clamp angle range
ARG 2 delta
COMMENT the maximum difference allowed from the mean, must not be negative
METHOD method_20390 approximatelyEquals (DD)Z
ARG 0 a
ARG 2 b
@ -326,13 +332,23 @@ CLASS net/minecraft/class_3532 net/minecraft/util/math/MathHelper
ARG 0 string
ARG 1 fallback
METHOD method_34948 parseDouble (Ljava/lang/String;DD)D
COMMENT {@return the parsed double; {@code fallback} if {@code string} is not an
COMMENT double; or {@code min} if the parsed double is too small}
ARG 0 string
COMMENT the string to parse
ARG 1 fallback
COMMENT the fallback for unparsable {@code string}
ARG 3 min
COMMENT the minimum if the parsed value is too small
METHOD method_34949 parseInt (Ljava/lang/String;II)I
COMMENT {@return the parsed integer; {@code fallback} if {@code string} is not an
COMMENT integer; or {@code min} if the parsed integer is too small}
ARG 0 string
COMMENT the string to parse
ARG 1 fallback
COMMENT the fallback for unparsable {@code string}
ARG 2 min
COMMENT the minimum if the parsed value is too small
METHOD method_34951 getCumulativeDistribution ([D)[D
ARG 0 values
METHOD method_34952 multiplyColors (II)I