diff --git a/.meta/generate_helmets.js b/.meta/generate_helmets.js new file mode 100644 index 0000000..695cbdc --- /dev/null +++ b/.meta/generate_helmets.js @@ -0,0 +1,327 @@ +import fs from "node:fs/promises"; + +const NAMESPACE = "sixsides_cosmetics"; + +const LEATHER_HELMET_MODEL = Object.freeze({}); + +/** + * @typedef {{ + * name: { + * [lang: string]: string + * fallback: string + * color: Color = "white" + * bold?: boolean = true + * italic?: boolean = false + * } + * lore: { + * [lang: string]: string + * fallback: string + * color: Color = "white" + * bold?: boolean = true + * italic?: boolean = false + * } + * recipe: { + * type?: RecipeType = "shaped" + * category?: RecipeCategory = "equipment" + * key: {[key: string]: string} + * pattern: [string, string, string] + * } + * }} Item + * + * @typedef {"black" + * | "dark_blue" + * | "dark_green" + * | "dark_agua" + * | "dark_red" + * | "dark_purple" + * | "gold" + * | "gray" + * | "dark_gray" + * | "blue" + * | "green" + * | "aqua" + * | "red" + * | "light_purple" + * | "yellow" + * | "white" + * } Color + * + * @typedef {"shaped"} RecipeType + * @typedef {"equipment"} RecipeCategory + * + * @type {{[item: string]: Item}} + */ +const ITEMS = { + guz_ears: { + name: { + pt_br: "Orelhas de Lobo", + fallback: "Wolf Ears", + color: "white", + }, + lore: { + pt_br: "Você é um furry?", + fallback: "Are you a furry?", + }, + recipe: { + key: { + A: "minecraft:black_dye", + B: "minecraft:bone", + }, + pattern: [ + "A A", // + " # ", // + " B ", + ], + }, + }, + koi_horns: { + name: { + pt_br: "Chifres de Dragão", + fallback: "Dragon Horns", + color: "red", + }, + lore: { + pt_br: '"glub glub"', + fallback: '"glub glub"', + }, + recipe: { + key: { + A: "minecraft:bone", + B: "minecraft:salmon", + }, + pattern: ["A A", " # ", " B "], + }, + }, + miku_hair: { + name: { + pt_br: "Cabelo da Miku", + fallback: "Miku's Hair", + color: "aqua", + }, + lore: { + pt_br: + "MIKU MIKU BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMM", + fallback: + "MIKU MIKU BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMM", + }, + recipe: { + key: { + A: "minecraft:iron_nugget", + B: "minecraft:cyan_dye", + }, + pattern: ["A#A", "B B", "B B"], + }, + }, + neru_hair: { + name: { + pt_br: "Cabelo da Neru", + fallback: "Neru's Hair", + color: "yellow", + }, + lore: { + pt_br: + "I’m sobbing, I’m falling off. It’s not enough. Look, I’m burning! I’m yearning! But can I call it love?", + fallback: + "I’m sobbing, I’m falling off. It’s not enough. Look, I’m burning! I’m yearning! But can I call it love?", + }, + recipe: { + key: { + A: "minecraft:iron_nugget", + B: "minecraft:yellow_dye", + }, + pattern: [" #A", " B", " B"], + }, + }, + straw_hat: { + name: { + pt_br: "Chapéu de Palha", + fallback: "Straw Hat", + color: "yellow", + }, + lore: { + pt_br: "Provê um pouco de sombra para o seu rosto.", + fallback: "Provide a little shade for your head.", + }, + recipe: { + key: { + A: "minecraft:wheat", + }, + pattern: ["AAA", "A#A", "AAA"], + }, + }, + teto_hair: { + name: { + pt_br: "Cabelo da Teto", + fallback: "Teto's Hair", + color: "red", + }, + lore: { + pt_br: + "but i falter on the forethought. i keep on running like a chicken with its head cut off", + fallback: + "but i falter on the forethought. i keep on running like a chicken with its head cut off", + }, + recipe: { + key: { + A: "minecraft:iron_nugget", + B: "minecraft:red_dye", + }, + pattern: ["A#A", "B B"], + }, + }, +}; + +/** @type {Map { + if (!k.includes("_")) { + return false; + } + if (k.split("_").length != 2) { + return false; + } + return !["bold", "color", "fallback", "italic"].includes(k); + }); + + for (const [lang, text] of nameLangs) { + langFiles.set(lang, { + ...langFiles.get(lang), + [`${NAMESPACE}.item.${k}`]: text, + }); + } + + console.log(`${k}: Getting lore translations`); + + const loreLangs = Object.entries(v.lore).filter(([k, _]) => { + if (!k.includes("_")) { + return false; + } + if (k.split("_").length != 2) { + return false; + } + return !["bold", "color", "fallback", "italic"].includes(k); + }); + + for (const [lang, text] of loreLangs) { + langFiles.set(lang, { + ...langFiles.get(lang), + [`${NAMESPACE}.item.${k}.lore`]: text, + }); + } + + console.log(`${k}: Writing item model file`); + + await fs.mkdir(`./assets/${NAMESPACE}/items`, { recursive: true }); + await fs.writeFile( + `./assets/${NAMESPACE}/items/${k}.json`, + JSON.stringify( + { + __sixsides_generator: "generate_helmet.js", + model: { + type: "minecraft:model", + model: `${NAMESPACE}:item/${k}`, + }, + }, + null, + 2, + ), + ); + + console.log(`${k}: Writing recipe file`); + + await fs.mkdir(`./data/${NAMESPACE}/recipe`, { recursive: true }); + await fs.writeFile( + `./data/${NAMESPACE}/recipe/${k}.json`, + JSON.stringify( + { + __sixsides_generator: "generate_helmet.js", + type: "minecraft:crafting_shaped", + category: "equipment", + key: v.recipe.key, + pattern: v.recipe.pattern, + result: { + count: 1, + id: "minecraft:poisonous_potato", // This is the only item in minecraft that doesn't has an actual use + components: { + "!minecraft:consumable": {}, + "minecraft:enchantable": { value: 15 }, + "minecraft:enchantment_glint_override": false, + "minecraft:equippable": { + slot: "head", + equip_on_interact: true, + }, + "!minecraft:food": {}, + "minecraft:item_model": `${NAMESPACE}:${k}`, + "minecraft:item_name": { + type: "translatable", + translate: `${NAMESPACE}.item.${k}`, + fallback: v.name.fallback, + color: v.name.color, + bold: v.name.bold, + italic: v.name.italic, + }, + "minecraft:lore": [ + { + type: "translatable", + translate: `${NAMESPACE}.item.${k}.lore`, + fallback: v.lore.fallback, + color: v.lore.color, + bold: v.lore.bold, + italic: v.lore.italic, + }, + ], + "minecraft:repairable": { items: "minecraft:leather" }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1, + }, + }, + }, + null, + 2, + ), + ); +} + +for (const [lang, translations] of langFiles) { + console.log(`${lang}: Writing lang file`); + + await fs.mkdir(`./assets/${NAMESPACE}/lang`, { recursive: true }); + const content = await fs.readFile(`./assets/${NAMESPACE}/lang/${lang}.json`); + + await fs.writeFile( + `./assets/${NAMESPACE}/lang/${lang}.json`, + JSON.stringify( + { + ...JSON.parse(content.toString()), + ...translations, + }, + null, + 2, + ), + ); +} diff --git a/assets/minecraft/items/bone.json b/assets/minecraft/items/bone.json deleted file mode 100644 index b378ed4..0000000 --- a/assets/minecraft/items/bone.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "model": { - "type": "minecraft:condition", - "property": "minecraft:has_component", - "component": "minecraft:custom_data", - "on_true": { - "type": "minecraft:select", - "model": "minecraft:item/bone", - "property": "minecraft:component", - "component": "minecraft:custom_data", - "cases": [ - { - "when": [ - { - "sixsides_cosmetics:model": "GUZ_EARS" - } - ], - "model": { - "type": "minecraft:model", - "model": "sixsides_cosmetics:item/guz_ears" - } - } - ], - "fallback": { - "type": "minecraft:model", - "model": "minecraft:item/bone" - } - }, - "on_false": { - "type": "minecraft:model", - "model": "minecraft:item/bone" - } - } -} diff --git a/assets/minecraft/items/cyan_dye.json b/assets/minecraft/items/cyan_dye.json deleted file mode 100644 index ad99619..0000000 --- a/assets/minecraft/items/cyan_dye.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "model": { - "type": "minecraft:condition", - "property": "minecraft:has_component", - "component": "minecraft:custom_data", - "on_true": { - "type": "minecraft:select", - "model": "minecraft:item/cyan_dye", - "property": "minecraft:component", - "component": "minecraft:custom_data", - "cases": [ - { - "when": [ - { - "sixsides_cosmetics:model": "MIKU_HAIR" - } - ], - "model": { - "type": "minecraft:model", - "model": "sixsides_cosmetics:item/miku_hair" - } - } - ], - "fallback": { - "type": "minecraft:model", - "model": "minecraft:item/cyan_dye" - } - }, - "on_false": { - "type": "minecraft:model", - "model": "minecraft:item/cyan_dye" - } - } -} diff --git a/assets/minecraft/items/red_dye.json b/assets/minecraft/items/red_dye.json deleted file mode 100644 index b111711..0000000 --- a/assets/minecraft/items/red_dye.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "model": { - "type": "minecraft:condition", - "property": "minecraft:has_component", - "component": "minecraft:custom_data", - "on_true": { - "type": "minecraft:select", - "model": "minecraft:item/red_dye", - "property": "minecraft:component", - "component": "minecraft:custom_data", - "cases": [ - { - "when": [ - { - "sixsides_cosmetics:model": "TETO_HAIR" - } - ], - "model": { - "type": "minecraft:model", - "model": "sixsides_cosmetics:item/teto_hair" - } - } - ], - "fallback": { - "type": "minecraft:model", - "model": "minecraft:item/red_dye" - } - }, - "on_false": { - "type": "minecraft:model", - "model": "minecraft:item/red_dye" - } - } -} diff --git a/assets/minecraft/items/salmon.json b/assets/minecraft/items/salmon.json deleted file mode 100644 index a1a3cd7..0000000 --- a/assets/minecraft/items/salmon.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "model": { - "type": "minecraft:condition", - "property": "minecraft:has_component", - "component": "minecraft:custom_data", - "on_true": { - "type": "minecraft:select", - "model": "minecraft:item/salmon", - "property": "minecraft:component", - "component": "minecraft:custom_data", - "cases": [ - { - "when": [ - { - "sixsides_cosmetics:model": "KOI_HORNS" - } - ], - "model": { - "type": "minecraft:model", - "model": "sixsides_cosmetics:item/koi_horns" - } - } - ], - "fallback": { - "type": "minecraft:model", - "model": "minecraft:item/salmon" - } - }, - "on_false": { - "type": "minecraft:model", - "model": "minecraft:item/salmon" - } - } -} diff --git a/assets/minecraft/items/wheat.json b/assets/minecraft/items/wheat.json deleted file mode 100644 index c7bf3c0..0000000 --- a/assets/minecraft/items/wheat.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "model": { - "type": "minecraft:condition", - "property": "minecraft:has_component", - "component": "minecraft:custom_data", - "on_true": { - "type": "minecraft:select", - "model": "minecraft:item/wheat", - "property": "minecraft:component", - "component": "minecraft:custom_data", - "cases": [ - { - "when": [ - { - "sixsides_cosmetics:model": "STRAW_HAT" - } - ], - "model": { - "type": "minecraft:model", - "model": "sixsides_cosmetics:item/straw_hat" - } - } - ], - "fallback": { - "type": "minecraft:model", - "model": "minecraft:item/wheat" - } - }, - "on_false": { - "type": "minecraft:model", - "model": "minecraft:item/wheat" - } - } -} diff --git a/assets/minecraft/items/yellow_dye.json b/assets/minecraft/items/yellow_dye.json deleted file mode 100644 index 894b9c4..0000000 --- a/assets/minecraft/items/yellow_dye.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "model": { - "type": "minecraft:condition", - "property": "minecraft:has_component", - "component": "minecraft:custom_data", - "on_true": { - "type": "minecraft:select", - "model": "minecraft:item/yellow_dye", - "property": "minecraft:component", - "component": "minecraft:custom_data", - "cases": [ - { - "when": [ - { - "sixsides_cosmetics:model": "NERU_HAIR" - } - ], - "model": { - "type": "minecraft:model", - "model": "sixsides_cosmetics:item/neru_hair" - } - } - ], - "fallback": { - "type": "minecraft:model", - "model": "minecraft:item/yellow_dye" - } - }, - "on_false": { - "type": "minecraft:model", - "model": "minecraft:item/yellow_dye" - } - } -} diff --git a/assets/sixsides_cosmetics/items/gm08_helmet.json b/assets/sixsides_cosmetics/items/gm08_helmet.json new file mode 100644 index 0000000..decc9cd --- /dev/null +++ b/assets/sixsides_cosmetics/items/gm08_helmet.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/gm08_helmet" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/items/guz_ears.json b/assets/sixsides_cosmetics/items/guz_ears.json new file mode 100644 index 0000000..7af0c3b --- /dev/null +++ b/assets/sixsides_cosmetics/items/guz_ears.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/guz_ears" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/items/koi_horns.json b/assets/sixsides_cosmetics/items/koi_horns.json new file mode 100644 index 0000000..6177f10 --- /dev/null +++ b/assets/sixsides_cosmetics/items/koi_horns.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/koi_horns" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/items/miku_hair.json b/assets/sixsides_cosmetics/items/miku_hair.json new file mode 100644 index 0000000..4b76a48 --- /dev/null +++ b/assets/sixsides_cosmetics/items/miku_hair.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/miku_hair" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/items/neru_hair.json b/assets/sixsides_cosmetics/items/neru_hair.json new file mode 100644 index 0000000..cb201ec --- /dev/null +++ b/assets/sixsides_cosmetics/items/neru_hair.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/neru_hair" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/items/straw_hat.json b/assets/sixsides_cosmetics/items/straw_hat.json new file mode 100644 index 0000000..5c66d3a --- /dev/null +++ b/assets/sixsides_cosmetics/items/straw_hat.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/straw_hat" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/items/teto_hair.json b/assets/sixsides_cosmetics/items/teto_hair.json new file mode 100644 index 0000000..fec27be --- /dev/null +++ b/assets/sixsides_cosmetics/items/teto_hair.json @@ -0,0 +1,7 @@ +{ + "__sixsides_generator": "generate_helmet.js", + "model": { + "type": "minecraft:model", + "model": "sixsides_cosmetics:item/teto_hair" + } +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/lang/en_us.json b/assets/sixsides_cosmetics/lang/en_us.json index 6cf0aa4..b618f29 100644 --- a/assets/sixsides_cosmetics/lang/en_us.json +++ b/assets/sixsides_cosmetics/lang/en_us.json @@ -1,4 +1,5 @@ { + "sixsides_cosmetics.mcmeta.description": "%s - Small collection of cosmetics for your survival world.", "sixsides_cosmetics.item.guz_ears": "Wolf Ears", "sixsides_cosmetics.item.guz_ears.lore": "Are you a furry?", "sixsides_cosmetics.item.koi_horns": "Dragon Horns", @@ -10,6 +11,5 @@ "sixsides_cosmetics.item.straw_hat": "Straw Hat", "sixsides_cosmetics.item.straw_hat.lore": "Provide a little shade for your head.", "sixsides_cosmetics.item.teto_hair": "Teto's Hair", - "sixsides_cosmetics.item.teto_hair.lore": "but i falter on the forethought. i keep on running like a chicken with its head cut off", - "sixsides_cosmetics.mcmeta.description": "%s - Small collection of cosmetics for your survival world." -} + "sixsides_cosmetics.item.teto_hair.lore": "but i falter on the forethought. i keep on running like a chicken with its head cut off" +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/lang/pt_br.json b/assets/sixsides_cosmetics/lang/pt_br.json index 8989580..1d44ad0 100644 --- a/assets/sixsides_cosmetics/lang/pt_br.json +++ b/assets/sixsides_cosmetics/lang/pt_br.json @@ -1,4 +1,5 @@ { + "sixsides_cosmetics.mcmeta.description": "%s - Pequena coleção de cosméticos para seu mundo survival.", "sixsides_cosmetics.item.guz_ears": "Orelhas de Lobo", "sixsides_cosmetics.item.guz_ears.lore": "Você é um furry?", "sixsides_cosmetics.item.koi_horns": "Chifres de Dragão", @@ -10,6 +11,5 @@ "sixsides_cosmetics.item.straw_hat": "Chapéu de Palha", "sixsides_cosmetics.item.straw_hat.lore": "Provê um pouco de sombra para o seu rosto.", "sixsides_cosmetics.item.teto_hair": "Cabelo da Teto", - "sixsides_cosmetics.item.teto_hair.lore": "but i falter on the forethought. i keep on running like a chicken with its head cut off", - "sixsides_cosmetics.mcmeta.description": "%s - Pequena coleção de cosméticos para seu mundo survival." -} + "sixsides_cosmetics.item.teto_hair.lore": "but i falter on the forethought. i keep on running like a chicken with its head cut off" +} \ No newline at end of file diff --git a/assets/sixsides_cosmetics/lang/pt_pt.json b/assets/sixsides_cosmetics/lang/pt_pt.json index 8989580..1d44ad0 100644 --- a/assets/sixsides_cosmetics/lang/pt_pt.json +++ b/assets/sixsides_cosmetics/lang/pt_pt.json @@ -1,4 +1,5 @@ { + "sixsides_cosmetics.mcmeta.description": "%s - Pequena coleção de cosméticos para seu mundo survival.", "sixsides_cosmetics.item.guz_ears": "Orelhas de Lobo", "sixsides_cosmetics.item.guz_ears.lore": "Você é um furry?", "sixsides_cosmetics.item.koi_horns": "Chifres de Dragão", @@ -10,6 +11,5 @@ "sixsides_cosmetics.item.straw_hat": "Chapéu de Palha", "sixsides_cosmetics.item.straw_hat.lore": "Provê um pouco de sombra para o seu rosto.", "sixsides_cosmetics.item.teto_hair": "Cabelo da Teto", - "sixsides_cosmetics.item.teto_hair.lore": "but i falter on the forethought. i keep on running like a chicken with its head cut off", - "sixsides_cosmetics.mcmeta.description": "%s - Pequena coleção de cosméticos para seu mundo survival." -} + "sixsides_cosmetics.item.teto_hair.lore": "but i falter on the forethought. i keep on running like a chicken with its head cut off" +} \ No newline at end of file diff --git a/data/sixsides_cosmetics/recipe/guz_ears.json b/data/sixsides_cosmetics/recipe/guz_ears.json index 9f321de..6b61710 100644 --- a/data/sixsides_cosmetics/recipe/guz_ears.json +++ b/data/sixsides_cosmetics/recipe/guz_ears.json @@ -1,29 +1,32 @@ { + "__sixsides_generator": "generate_helmet.js", "type": "minecraft:crafting_shaped", "category": "equipment", "key": { "A": "minecraft:black_dye", - "B": "minecraft:leather_helmet", - "C": "minecraft:bone" + "B": "minecraft:bone", + "#": "minecraft:leather_helmet" }, - "pattern": ["A A", " B ", " C "], + "pattern": [ + "A A", + " # ", + " B " + ], "result": { "count": 1, - "id": "minecraft:bone", + "id": "minecraft:poisonous_potato", "components": { - "minecraft:custom_data": { - "sixsides_cosmetics:model": "GUZ_EARS" - }, - "minecraft:enchantable": { "value": 15 }, - "minecraft:enchantments": { - "minecraft:protection": 1 + "!minecraft:consumable": {}, + "minecraft:enchantable": { + "value": 15 }, "minecraft:enchantment_glint_override": false, "minecraft:equippable": { "slot": "head", - "damage_on_hurt": false, "equip_on_interact": true }, + "!minecraft:food": {}, + "minecraft:item_model": "sixsides_cosmetics:guz_ears", "minecraft:item_name": { "type": "translatable", "translate": "sixsides_cosmetics.item.guz_ears", @@ -38,9 +41,15 @@ "translate": "sixsides_cosmetics.item.guz_ears.lore", "fallback": "Are you a furry?", "color": "white", + "bold": false, "italic": true } - ] + ], + "minecraft:repairable": { + "items": "minecraft:leather" + }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1 } } -} +} \ No newline at end of file diff --git a/data/sixsides_cosmetics/recipe/koi_horns.json b/data/sixsides_cosmetics/recipe/koi_horns.json index 2d13e85..e57487e 100644 --- a/data/sixsides_cosmetics/recipe/koi_horns.json +++ b/data/sixsides_cosmetics/recipe/koi_horns.json @@ -1,29 +1,32 @@ { + "__sixsides_generator": "generate_helmet.js", "type": "minecraft:crafting_shaped", "category": "equipment", "key": { "A": "minecraft:bone", - "B": "minecraft:leather_helmet", - "C": "minecraft:salmon" + "B": "minecraft:salmon", + "#": "minecraft:leather_helmet" }, - "pattern": ["A A", " B ", " C "], + "pattern": [ + "A A", + " # ", + " B " + ], "result": { "count": 1, - "id": "minecraft:salmon", + "id": "minecraft:poisonous_potato", "components": { - "minecraft:custom_data": { - "sixsides_cosmetics:model": "KOI_HORNS" - }, - "minecraft:enchantable": { "value": 15 }, - "minecraft:equippable": { - "slot": "head", - "damage_on_hurt": false, - "equip_on_interact": true - }, - "minecraft:enchantments": { - "minecraft:protection": 1 + "!minecraft:consumable": {}, + "minecraft:enchantable": { + "value": 15 }, "minecraft:enchantment_glint_override": false, + "minecraft:equippable": { + "slot": "head", + "equip_on_interact": true + }, + "!minecraft:food": {}, + "minecraft:item_model": "sixsides_cosmetics:koi_horns", "minecraft:item_name": { "type": "translatable", "translate": "sixsides_cosmetics.item.koi_horns", @@ -38,9 +41,15 @@ "translate": "sixsides_cosmetics.item.koi_horns.lore", "fallback": "\"glub glub\"", "color": "white", + "bold": false, "italic": true } - ] + ], + "minecraft:repairable": { + "items": "minecraft:leather" + }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1 } } -} +} \ No newline at end of file diff --git a/data/sixsides_cosmetics/recipe/miku_hair.json b/data/sixsides_cosmetics/recipe/miku_hair.json index 9ac30ec..23b0f8a 100644 --- a/data/sixsides_cosmetics/recipe/miku_hair.json +++ b/data/sixsides_cosmetics/recipe/miku_hair.json @@ -1,45 +1,55 @@ { + "__sixsides_generator": "generate_helmet.js", "type": "minecraft:crafting_shaped", "category": "equipment", "key": { "A": "minecraft:iron_nugget", - "B": "minecraft:leather_helmet", - "C": "minecraft:cyan_dye" + "B": "minecraft:cyan_dye", + "#": "minecraft:leather_helmet" }, - "pattern": ["ABA", "C C", "C C"], + "pattern": [ + "A#A", + "B B", + "B B" + ], "result": { "count": 1, - "id": "minecraft:cyan_dye", + "id": "minecraft:poisonous_potato", "components": { - "minecraft:custom_data": { - "sixsides_cosmetics:model": "MIKU_HAIR" - }, - "minecraft:enchantable": { "value": 15 }, - "minecraft:enchantments": { - "minecraft:protection": 1 + "!minecraft:consumable": {}, + "minecraft:enchantable": { + "value": 15 }, "minecraft:enchantment_glint_override": false, "minecraft:equippable": { "slot": "head", - "damage_on_hurt": false, "equip_on_interact": true }, + "!minecraft:food": {}, + "minecraft:item_model": "sixsides_cosmetics:miku_hair", "minecraft:item_name": { "type": "translatable", "translate": "sixsides_cosmetics.item.miku_hair", "fallback": "Miku's Hair", "color": "aqua", + "bold": true, "italic": false }, "minecraft:lore": [ { "type": "translatable", "translate": "sixsides_cosmetics.item.miku_hair.lore", - "fallback": "", + "fallback": "MIKU MIKU BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMM", "color": "white", + "bold": false, "italic": true } - ] + ], + "minecraft:repairable": { + "items": "minecraft:leather" + }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1 } } -} +} \ No newline at end of file diff --git a/data/sixsides_cosmetics/recipe/neru_hair.json b/data/sixsides_cosmetics/recipe/neru_hair.json index a11f77a..0930a06 100644 --- a/data/sixsides_cosmetics/recipe/neru_hair.json +++ b/data/sixsides_cosmetics/recipe/neru_hair.json @@ -1,45 +1,55 @@ { + "__sixsides_generator": "generate_helmet.js", "type": "minecraft:crafting_shaped", "category": "equipment", "key": { "A": "minecraft:iron_nugget", - "B": "minecraft:leather_helmet", - "C": "minecraft:yellow_dye" + "B": "minecraft:yellow_dye", + "#": "minecraft:leather_helmet" }, - "pattern": [" BA", " C", " C"], + "pattern": [ + " #A", + " B", + " B" + ], "result": { "count": 1, - "id": "minecraft:yellow_dye", + "id": "minecraft:poisonous_potato", "components": { - "minecraft:custom_data": { - "sixsides_cosmetics:model": "NERU_HAIR" - }, - "minecraft:enchantable": { "value": 15 }, - "minecraft:enchantments": { - "minecraft:protection": 1 + "!minecraft:consumable": {}, + "minecraft:enchantable": { + "value": 15 }, "minecraft:enchantment_glint_override": false, "minecraft:equippable": { "slot": "head", - "damage_on_hurt": false, "equip_on_interact": true }, + "!minecraft:food": {}, + "minecraft:item_model": "sixsides_cosmetics:neru_hair", "minecraft:item_name": { "type": "translatable", "translate": "sixsides_cosmetics.item.neru_hair", "fallback": "Neru's Hair", - "color": "gold", + "color": "yellow", + "bold": true, "italic": false }, "minecraft:lore": [ { "type": "translatable", "translate": "sixsides_cosmetics.item.neru_hair.lore", - "fallback": "", + "fallback": "I’m sobbing, I’m falling off. It’s not enough. Look, I’m burning! I’m yearning! But can I call it love?", "color": "white", + "bold": false, "italic": true } - ] + ], + "minecraft:repairable": { + "items": "minecraft:leather" + }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1 } } -} +} \ No newline at end of file diff --git a/data/sixsides_cosmetics/recipe/straw_hat.json b/data/sixsides_cosmetics/recipe/straw_hat.json index a20ca4f..3bf7ab8 100644 --- a/data/sixsides_cosmetics/recipe/straw_hat.json +++ b/data/sixsides_cosmetics/recipe/straw_hat.json @@ -1,33 +1,37 @@ { + "__sixsides_generator": "generate_helmet.js", "type": "minecraft:crafting_shaped", "category": "equipment", "key": { "A": "minecraft:wheat", - "B": "minecraft:leather_helmet" + "#": "minecraft:leather_helmet" }, - "pattern": ["AAA", "ABA", "AAA"], + "pattern": [ + "AAA", + "A#A", + "AAA" + ], "result": { "count": 1, - "id": "minecraft:wheat", + "id": "minecraft:poisonous_potato", "components": { - "minecraft:custom_data": { - "sixsides_cosmetics:model": "STRAW_HAT" - }, - "minecraft:enchantable": { "value": 15 }, - "minecraft:enchantments": { - "minecraft:protection": 1 + "!minecraft:consumable": {}, + "minecraft:enchantable": { + "value": 15 }, "minecraft:enchantment_glint_override": false, "minecraft:equippable": { "slot": "head", - "damage_on_hurt": false, "equip_on_interact": true }, + "!minecraft:food": {}, + "minecraft:item_model": "sixsides_cosmetics:straw_hat", "minecraft:item_name": { "type": "translatable", "translate": "sixsides_cosmetics.item.straw_hat", "fallback": "Straw Hat", - "color": "gold", + "color": "yellow", + "bold": true, "italic": false }, "minecraft:lore": [ @@ -36,9 +40,15 @@ "translate": "sixsides_cosmetics.item.straw_hat.lore", "fallback": "Provide a little shade for your head.", "color": "white", + "bold": false, "italic": true } - ] + ], + "minecraft:repairable": { + "items": "minecraft:leather" + }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1 } } -} +} \ No newline at end of file diff --git a/data/sixsides_cosmetics/recipe/teto_hair.json b/data/sixsides_cosmetics/recipe/teto_hair.json index 7b5e901..444a8b0 100644 --- a/data/sixsides_cosmetics/recipe/teto_hair.json +++ b/data/sixsides_cosmetics/recipe/teto_hair.json @@ -1,45 +1,54 @@ { + "__sixsides_generator": "generate_helmet.js", "type": "minecraft:crafting_shaped", "category": "equipment", "key": { "A": "minecraft:iron_nugget", - "B": "minecraft:leather_helmet", - "C": "minecraft:red_dye" + "B": "minecraft:red_dye", + "#": "minecraft:leather_helmet" }, - "pattern": ["ABA", "C C"], + "pattern": [ + "A#A", + "B B" + ], "result": { "count": 1, - "id": "minecraft:red_dye", + "id": "minecraft:poisonous_potato", "components": { - "minecraft:custom_data": { - "sixsides_cosmetics:model": "TETO_HAIR" - }, - "minecraft:enchantable": { "value": 15 }, - "minecraft:enchantments": { - "minecraft:protection": 1 + "!minecraft:consumable": {}, + "minecraft:enchantable": { + "value": 15 }, "minecraft:enchantment_glint_override": false, "minecraft:equippable": { "slot": "head", - "damage_on_hurt": false, "equip_on_interact": true }, + "!minecraft:food": {}, + "minecraft:item_model": "sixsides_cosmetics:teto_hair", "minecraft:item_name": { "type": "translatable", "translate": "sixsides_cosmetics.item.teto_hair", "fallback": "Teto's Hair", "color": "red", + "bold": true, "italic": false }, "minecraft:lore": [ { "type": "translatable", "translate": "sixsides_cosmetics.item.teto_hair.lore", - "fallback": "", + "fallback": "but i falter on the forethought. i keep on running like a chicken with its head cut off", "color": "white", + "bold": false, "italic": true } - ] + ], + "minecraft:repairable": { + "items": "minecraft:leather" + }, + "minecraft:max_damage": 55, + "minecraft:max_stack_size": 1 } } -} +} \ No newline at end of file diff --git a/flake.nix b/flake.nix index 80eb68b..c2f74ee 100644 --- a/flake.nix +++ b/flake.nix @@ -29,7 +29,7 @@ set +a ''; buildInputs = with pkgs; [ - deno + nodejs gnumake jq zip diff --git a/makefile b/makefile index 669c255..54378c0 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,5 @@ release: clean + node ./.meta/generate_helmets.js jq --arg version $$(cat VERSION) '.pack.description.with[0].fallback = $$version' ./pack.mcmeta > ./pack.mcmeta.tmp mv ./pack.mcmeta.tmp ./pack.mcmeta find ./assets ./data pack.mcmeta -type f -print | zip SixSides\ Cosmetics\ \(v$$(cat VERSION)\).zip -@