✅ Supported Inputs
Sneaking
Triggers when the player is holding the sneak key (default: Shift)
Overrides all other inputs
Supports 8-direction movement:
Forward, Backward, Left, Right
Diagonals: Forward-Left, Forward-Right, Backward-Left, Backward-Right
Sprinting + Movement
Triggers when sprint key is held (default: Ctrl)
Directional combinations include:
Sprint + Forward
Sprint + Forward-Left / Forward-Right
Sprint + Backward / Backward-Left / Backward-Right
Sprint + Left / Right
Only activates if Sneak is not pressed
Directional Movement (Walking)
Triggered when neither Sprint nor Sneak is held
Supports:
Forward, Backward, Left, Right
Diagonals: Forward-Left, Forward-Right, Backward-Left, Backward-Right
Still
When no directional keys are pressed
🧠 Behavior Notes
Conditions are checked in priority order; higher inputs override lower ones
Diagonal detection is now supported for Sneaking, Sprinting, and Walking
Only key inputs are evaluated — no tracking of mouse, velocity, or physics-based movement
🧭 Priority Summary (Highest to Lowest):
key.sneak + directional keys (including diagonals)
key.sprint + key.forward (and diagonals)
key.sprint + other directions (Left → Backward → Right)
Directional movement (Forward → Left → Backward → Right → diagonals)
No movement keys → still
Root: Check if Sneak is pressed ├── Sneak (key.sneak) → Directional checks: │ ├── Forward + Left → sneaking_forward_left │ ├── Forward + Right → sneaking_forward_right │ ├── Back + Left → sneaking_backward_left │ ├── Back + Right → sneaking_backward_right │ ├── Forward → sneaking_forward │ ├── Backward → sneaking_backward │ ├── Left → sneaking_left │ ├── Right → sneaking_right │ └── None → sneaking_still └── Else → Check Sprint ├── Sprint (key.sprint) → Directional checks: │ ├── Forward + Left → sprinting_forward_left │ ├── Forward + Right → sprinting_forward_right │ ├── Back + Left → sprinting_backward_left │ ├── Back + Right → sprinting_backward_right │ ├── Forward → sprinting_forward │ ├── Backward → sprinting_backward │ ├── Left → sprinting_left │ ├── Right → sprinting_right │ └── None → sprinting_still └── Else → Walking Directional checks: ├── Forward + Left → forward_left ├── Forward + Right → forward_right ├── Back + Left → backward_left ├── Back + Right → backward_right ├── Forward → forward ├── Backward → backward ├── Left → left ├── Right → right └── None → still
✅ Supported Inputs
Sneaking
Triggers when the player is holding the sneak key (default: Shift)
Overrides all other inputs
Sprinting + Forward
Triggers when both sprint and forward keys are held (default: Ctrl + W)
Only activates if Sneak is not pressed
Sprinting + Other Directions
Sprint + Left / Back / Right
Detected after sprinting forward fails
Directional Movement
Forward
Left
Backward
Right
These are checked only when sprinting is not active
Still
When none of the above keys are held
🧠 Behavior Notes
Conditions are checked in order, meaning higher inputs override lower ones
This supports only one direction at a time, based on the order of evaluation (no diagonal detection)
Only key inputs are tracked — no use of mouse movement, velocity, or other gameplay states
🧭 Priority Summary (Highest to Lowest):
-
key.sneak
-
key.sprint + key.forward (Sprint Forward)
-
key.sprint + movement keys (Left → Back → Right)
-
key.forward
-
key.left
-
key.back
-
key.right
-
No movement keys → still
Root: Check if Sneak is pressed ├── Sneak (key.sneak) → custom_item_models/bucket/sneaking └── Else → Check Sprint ├── Sprint (key.sprint) → Check Forward │ ├── Forward (key.forward) → custom_item_models/bucket/sprinting │ └── Else → Check Left │ ├── Left (key.left) → custom_item_models/bucket/left │ └── Else → Check Back │ ├── Back (key.back) → custom_item_models/bucket/backwards │ └── Else → Check Right │ ├── Right (key.right) → custom_item_models/bucket/right │ └── Else → custom_item_models/bucket/still └── Else → Check Forward ├── Forward (key.forward) → custom_item_models/bucket/forwards └── Else → Check Left ├── Left (key.left) → custom_item_models/bucket/left └── Else → Check Back ├── Back (key.back) → custom_item_models/bucket/backwards └── Else → Check Right ├── Right (key.right) → custom_item_models/bucket/right └── Else → custom_item_models/bucket/still