Перейти к содержимому
Mineforgian

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.


📁 Directory Structure
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.json model is the entry point, rename this to whatever item you want to edit.
  • It uses nested minecraft:condition logic to detect active keybinds like:
    • key.forward, key.back, key.left, key.right, and key.sneak.
  • Based on the key pressed, it loads a different model from custom_item_models/bucket/, which links to a texture in custom_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

  1. Use a Different Item

    • Copy and rename bucket.json to another item path (e.g. carrot_on_a_stick.json).
    • Update paths inside the file to match your new model/texture folder.
  2. 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.
  3. Link Your Own Textures

    • Change the textures.layer0 property in each sub-model (left.json, right.json, etc.) to use your custom textures.
  4. Add More Conditions

    • Include additional states like key.use, key.jump, etc., by expanding the logic tree in the main .json.
  5. Use Misode's Item Generator


⚠️ 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

  1. My other packs

  2. Donations <3


Центр версий

2 версий
  • Релиз26 КБ
  • Релиз13 КБ

Ченджлог

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):

  1. key.sneak
    
  2. key.sprint + key.forward (Sprint Forward)
    
  3. key.sprint + movement keys (Left → Back → Right)
    
  4. key.forward
    
  5. key.left
    
  6. key.back
    
  7. key.right
    
  8. 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

Комментарии

Загружаем…