
Dev's Directional Movement Based Textures Template
A template resource pack used to make textures that change based on the players movement.
- Загрузки
- 118
- Подписчики
- 2
- Обновлён
- 10 мая 2025 г.
- Лицензия
- CC-BY-4.0
Опубликован 10 мая 2025 г.
🎮 Dev's Directional Movement Based Textures Template (Minecraft Resource Pack)
This is a template resource pack for Minecraft that allows item textures to dynamically change based on player key input — such as movement keys or sneaking.
It leverages Minecraft’s model predicate system (minecraft:condition and keybind_down) introduced in 1.20.5+ snapshots.
assets/
└── minecraft/
├── items/
│ └── bucket.json <- Main model that loads conditionally
├── models/
│ └── custom_item_models/
│ └── bucket/
│ ├── forwards.json
│ ├── backwards.json
│ ├── left.json
│ ├── right.json
│ ├── sprinting.json
│ ├── sneaking.json
│ └── still.json <- Sub-models per movement key
└── textures/
└── item/
└── custom_item_textures/
└── bucket/
├── forwards.png
├── backwards.png
├── left.png
├── right.png
├── sprinting.png
├── sneaking.png
└── still.png <- Custom textures linked to sub-models
🛠 How It Works
- The
item/bucket.jsonmodel is the entry point, rename this to whatever item you want to edit. - It uses nested
minecraft:conditionlogic to detect active keybinds like:key.forward,key.back,key.left,key.right, andkey.sneak.
- Based on the key pressed, it loads a different model from
custom_item_models/bucket/, which links to a texture incustom_item_textures/bucket/. - It can detect the sneak key, the sprint key and the directional keys.
- The sneak texture overwrites all others then the sprint texture overwrites the rest followed up by the cardinal directions.
✏️ How to Customize
Use a Different Item
- Copy and rename
bucket.jsonto another item path (e.g.carrot_on_a_stick.json). - Update paths inside the file to match your new model/texture folder.
- Copy and rename
Add More Folders for Modular Support
- Create new folders under
custom_item_models/for each item type (e.g.,sword/,shield/). - Each folder can contain unique movement-based sub-models.
- Create new folders under
Link Your Own Textures
- Change the
textures.layer0property in each sub-model (left.json,right.json, etc.) to use your custom textures.
- Change the
Add More Conditions
- Include additional states like
key.use,key.jump, etc., by expanding the logic tree in the main.json.
- Include additional states like
Use Misode's Item Generator
- (https://misode.github.io/assets/item/).
- Copy and paste the contents of
bucket.jsonto the bottom right of the website and easily edit the json. - Donate to Misode cause they're cool. (https://ko-fi.com/misode)
⚠️ Limitations
Experimental Feature:
This uses features only available in Minecraft 1.20.5+.Client-Side Only:
It works based on local keybind inputs, not actual movement, velocity, or server-side conditions.One Input at a Time:
The system processes inputs sequentially, so combining multiple simultaneous key presses is complex without deep nesting.Keybinds Only:
Only supports detecting keys like:key.forward,key.back,key.left,key.right,key.jump,key.sneaketc.- It does not detect mouse movement or other conditions.
✅ Great For
- Tools that visually indicate player movement.
- Gadgets or accessories with reactive visuals.
- Animated HUD-style items (compass-like behavior, indicators, etc.).
📌 License
You may use this template freely. Attribution is required unless otherwise stated.
🔗 Links
My other packs
- CurseForge (https://www.curseforge.com/members/theonetruedev/projects)
- Modrinth (https://modrinth.com/dashboard/projects)
Donations <3
Центр версий
2 версийЧенджлог
1.0Релиз1.21.3, 1.21.4, 1.21.5 · 10 мая 2025 г.
✅ 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
1.0Релиз1.21.3, 1.21.4, 1.21.5 · 10 мая 2025 г.
✅ 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.sneakkey.sprint + key.forward (Sprint Forward)key.sprint + movement keys (Left → Back → Right)key.forwardkey.leftkey.backkey.rightNo 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
Комментарии
Загружаем…