Materials
Description
JsonMaterials is a file format used to define materials within the mod. They can be found/added in mod-id:miapi/materials/any-path-and-file-name.json These materials can have various stats such as hardness, density, flexibility, etc.,
Required Fields
translation
The language key of the material, points to the language file.
icon
the Icon of the Material, can either be the path to a texture or a more complex icon, for that see this as an example
color
The Hex color of the Material. Please use RGB and NOT RGBA here.
Optional Fields
Module Stats
Module stats is a weird subcategory.
Any open key can be used to define a Module stats, such as hardness
or mining level
, for Example these can be dynamicly called from by calling [material.hardness] in a complex double as reference.
groups
a list of group keys. by default stone
wood
metal
bone
glass
fabric
crystal
gemstone
flint
rod
fletching
smithing
are used
items
A List of Items to create the Material, can either be "item", "tag" or "ingredient". requires also a "value" to define the value in relation to the cost of the modules.
properties
This is a complex field . It is a key -> properties map. Those keys can be referenced by Modules to search for Material Properties.
Default keys include
default
handheld
tool
blade
head
axe
pickaxe
hammer
hoe
shovel
armor
helmet
chest
pants
boots
Example:
{..."properties":{"default":{"fireproof":true}}}
hidden_properties
This field is similar to properties, but wont display in UI
display_properties
This field is similar to properties, but they wont apply, but show up in the UI. This is useful to communicate Material information to the player.
Color Palette
Color Palettes should be defined for all actual materials, and they need to be under the key color_palette
They can have different Types:
grayscale_map
This is a Map where brigthness values of the raw texture are mapped to direct color values. Example
from_material_palette_image
This is a Map where brightness values of the raw texture are mapped to direct color values. Unlike the grayscale_map this uses a 1x256 texture to remap instead Example
image_generated
This requires the json to mention a texture and this texture will be used to generate a palette similar to how generated Materials work.
"color_palette": {"type": "image_generated","atlas": "block","texture": "minecraft:block/dirt"}
image_generated_item
This requires the json to mention a valid ItemId. This might be easier to use than the option above
"color_palette": {"type": "image_generated_item","item": "minecraft:dirt"}
overlay_texture
This overlays a Texture over the existing Model, allowing for cooler looking custom motives. Well repeating texures are recommended. Example
layered_mask
This mask between two other Color Palettes via a Texture. Example:
"color_palette": {"type": "layered_mask","base": {"type": "grayscale_map","colors": {"24": "2D0500","68": "4A0800","107": "720C00","150": "720C00","190": "BB2008","255": "E32008"}},"layer": {"type": "grayscale_map","colors": {"24": "002d00","68": "005300","107": "007b18","150": "009529","190": "00aa2c","216": "17dd62","255": "41f384"}},"mask": {"type": "texture","atlas": "block","texture": "minecraft:block/water_still"}}
Component Materials
TODO: they might get reworked. TODO: decide and document them