Custom Models and Assets

From DragonMineZ Wiki
Revision as of 04:15, 13 October 2026 by Neb (talk | contribs) (Sync from dragonminez-wiki repository)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Custom models and assets let races and forms use your own geometry, body textures and faces. You don't need to build a separate add-on for this, but you do need to edit JSON config files and add assets to a resource pack.

How the model is chosen

DragonMineZ picks the model key in this order:

  1. The customModel of the active stack form (from config/dragonminez/forms/<group>.json).
  2. The customModel of the active race form (from races/<race>/forms/<group>.json).
  3. The race's customModel (from races/<race>/character.json).
  4. The race's built-in default model (a custom race without customModel uses the Human model).

Source: src/main/java/com/dragonminez/client/model/DMZPlayerModel.java.

Built-in model keys

You can point any race or form at a model that already ships with DragonMineZ. These keys also bring that model's textures and faces with them:

Family Keys
Human / Saiyan human, saiyan, buffed, buffedg3, 4arms, ssj4gt, ssj4d, oozaru
Namekian namekian, namekian_orange, namekian_buffed
Majin majin, majin_super, majin_ultra, majin_evil, majin_kid, janemba_imperfect, janemba_fat, janemba_super
Frost Demon frostdemon, frostdemon_second, frostdemon_third, frostdemon_final, frostdemon_fifth, frostdemon_fp, frostdemon_mecha, frostdemon_metalcore
Bio-Android bioandroid, bioandroid_base, bioandroid_semi, bioandroid_perfect, bioandroid_ultra, bioandroid_xeno, bioandroid_xenofp
Glind glindtrueform, trascended (uses the female model for female characters)

The special key finalbase (used by the Ultimate stack form) switches back to the race's own base model for the built-in races.

Any other key is a custom model key and follows the conventions below.

Geometry files

Custom model files are looked up at this namespace and path, for race models and form models:

assets/dragonminez/geo/entity/races/<model_key>.geo.json

If the race has hasGender: true, DragonMineZ appends the gender suffix instead:

assets/dragonminez/geo/entity/races/<model_key>_male.geo.json
assets/dragonminez/geo/entity/races/<model_key>_female.geo.json

If the file is not found, the player falls back to the default Human model. This suffix behavior comes from DMZPlayerModel#resolveCustomModel.

Extra head parts chosen in character customization (the race's headBones) are taken from assets/dragonminez/geo/entity/raceparts.geo.json first, then from the race model itself, so you can add your own ear or horn bones directly to your model.

Body textures

For custom model keys, body textures live in a folder named after the race key: assets/dragonminez/textures/entity/races/<race_key>/.

Layered races (isLayered: true in character.json) use three grayscale layers per body type, tinted with the three body colors:

  • <model_key>_<bodyType>_layer1.png (body color 1)
  • <model_key>_<bodyType>_layer2.png (body color 2)
  • <model_key>_<bodyType>_layer3.png (body color 3)
  • With gender: <model_key>_male_<bodyType>_layer1.png, <model_key>_female_<bodyType>_layer1.png and so on.

The number of body types offered in character customization is the number of consecutive <model_key>[_male|_female]_<n>_layer1.png files found, starting at 0. If the race has useVanillaSkin: true, body type 0 is the player's own Minecraft skin and your textures start at 1. A missing layer1 for a body type falls back to body type 0.

Non-layered races (isLayered: false) use a single texture tinted with body color 1: <model_key>.png, or <model_key>_male.png / <model_key>_female.png with gender.

Source: src/main/java/com/dragonminez/client/util/SkinGathererProvider.java, src/main/java/com/dragonminez/client/util/TextureCounter.java.

Face textures

Layered custom races draw their own face from this folder:

assets/dragonminez/textures/entity/races/<race_key>/faces/

The files follow this naming pattern:

  • <model_key>_eye_<eyesType>_0.png (white of the eye)
  • <model_key>_eye_<eyesType>_1.png (eye color 1)
  • <model_key>_eye_<eyesType>_2.png (eye color 2)
  • <model_key>_eye_<eyesType>_3.png (eyebrows, hair color)
  • <model_key>_nose_<noseType>.png (skin color)
  • <model_key>_mouth_<mouthType>.png (skin color)

A missing index falls back to _0. The customization screen offers your own eyes, noses and mouths first (counted from the files above, starting at 0), followed by all of the Human ones, so players can also give your race a Human face.

Non-layered custom races borrow the Human face entirely. When a race renders the player's Minecraft skin (body type 0 with useVanillaSkin: true), no face textures are drawn on top.

Source: src/main/java/com/dragonminez/client/render/layer/DMZSkinLayer.java (renderCustomFace).

Assigning your model key

Pick one place:

  • The race's default model: races/<race>/character.json → customModel
  • A specific form: races/<race>/forms/<group>.json → forms.<form>.customModel
  • A stack form: forms/<group>.json → forms.<form>.customModel

Then add the matching geometry and textures to your resource pack. See Custom Races and Custom Forms for the other fields.

Transformation animations

A form's transformationAnimation can name any animation defined in the player animation files under assets/dragonminez/animations/entity/races/ (movement, combat, ki, transf, skp, evs). To add your own, ship a copy of transf.animation.json in your resource pack that keeps the built-in entries and adds your animation, then reference its name from the form config.

Checklist

  1. Set customModel in the race or form config.
  2. Add geo/entity/races/<model_key>.geo.json (plus _male and _female variants if the race has gender).
  3. Add the body textures under textures/entity/races/<race_key>/ (and gender variants if needed).
  4. For layered races, add face textures for every eye, nose and mouth index you use.
  5. Reload resources and run /dmzreload. Sometimes you will need to restart the game.