Custom Models and Assets
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:
- The
customModelof the active stack form (fromconfig/dragonminez/forms/<group>.json). - The
customModelof the active race form (fromraces/<race>/forms/<group>.json). - The race's
customModel(fromraces/<race>/character.json). - The race's built-in default model (a custom race without
customModeluses 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.pngand 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
- Set
customModelin the race or form config. - Add
geo/entity/races/<model_key>.geo.json(plus_maleand_femalevariants if the race has gender). - Add the body textures under
textures/entity/races/<race_key>/(and gender variants if needed). - For layered races, add face textures for every eye, nose and mouth index you use.
- Reload resources and run
/dmzreload. Sometimes you will need to restart the game.