Trims

Armor trims are a customization system that allows players to add decorative patterns to their armor pieces. Trims consist of two components: materials (which determine the color/texture) and **patterns ** (which determine the shape/design). Kore provides type-safe DSL builders for creating custom trim materials and patterns.

Trim Materials

Trim materials define the color palette and appearance when a trim is applied to armor. Each material specifies:

  • Asset name: Points to the color palette texture
  • Description: The text shown in-game when hovering over trimmed armor
  • Override armor materials: Optional per-armor-type color overrides (e.g., different colors for netherite vs. iron armor)

Basic Usage

trimMaterial("ruby", TrimColorPalettes.AMETHYST, textComponent("Ruby Trim")) {
	description("Ruby", Color.RED)
}
Kotlin

This creates a trim material file at data/<namespace>/trim_material/ruby.json.

Material with Armor Overrides

Some materials look different depending on the base armor material. For example, netherite armor uses a darker variant:

trimMaterial("custom_gold", TrimColorPalettes.GOLD, textComponent("Custom Gold")) {
	description("Custom Gold Trim", Color.GOLD)
	overrideArmorMaterial(ArmorMaterial.NETHERITE, Color.hex("4a3c2e"))
}
Kotlin

You can also set multiple overrides at once:

trimMaterial("rainbow", TrimColorPalettes.AMETHYST, textComponent("Rainbow")) {
	description("Rainbow Trim")
	overrideArmorMaterials(
		ArmorMaterial.IRON to Color.hex("c0c0c0"),
		ArmorMaterial.GOLD to Color.hex("ffd700"),
		ArmorMaterial.DIAMOND to Color.hex("00ffff"),
		ArmorMaterial.NETHERITE to Color.hex("4a4a4a")
	)
}
Kotlin

Generated JSON

A trim material generates JSON like this:

{
	"asset_name": "minecraft:amethyst",
	"description": {
		"text": "Ruby",
		"color": "#FF0000"
	}
}
JSON

With armor overrides:

{
	"asset_name": "minecraft:gold",
	"description": {
		"text": "Custom Gold Trim",
		"color": "gold"
	},
	"override_armor_materials": {
		"netherite": "#4a3c2e"
	}
}
JSON

Trim Patterns

Trim patterns define the visual design applied to armor. Each pattern specifies:

  • Asset ID: Points to the pattern texture model
  • Description: The text shown in-game when hovering over trimmed armor
  • Decal: Whether the pattern should render as a decal overlay (like netherite patterns)

Basic Usage

trimPattern("stripes", Models.TRIMS_MODELS_ARMOR_COAST, textComponent("Stripes")) {
	description("Striped Pattern", Color.GRAY)
}
Kotlin

This creates a trim pattern file at data/<namespace>/trim_pattern/stripes.json.

Pattern as Decal

Setting decal = true makes the pattern render as an overlay, which is useful for patterns that should appear on top of the base armor texture without replacing it (similar to how netherite trim patterns work):

trimPattern("overlay", Models.TRIMS_MODELS_ARMOR_SENTRY, textComponent("Overlay"), decal = true) {
	description("Overlay Pattern")
}
Kotlin

Generated JSON

A trim pattern generates JSON like this:

{
	"asset_id": "minecraft:trims/models/armor/coast",
	"description": {
		"text": "Striped Pattern",
		"color": "gray"
	},
	"decal": false
}
JSON

With decal enabled:

{
	"asset_id": "minecraft:trims/models/armor/sentry",
	"description": {
		"text": "Overlay Pattern"
	},
	"decal": true
}
JSON

See Also

  • Chat Components - For trim description text formatting
  • Tags - Organize trim materials and patterns into groups

External Resources