Skip to content

Commit f742c0d

Browse files
committed
Keep existing components when crafting zauber armor
1 parent 1ea77fa commit f742c0d

7 files changed

Lines changed: 77 additions & 77 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# @s = result item
2+
# at center of cauldron block
3+
# run from recipes/armor/{{piece}}/{{flavor}}
4+
# with $components: the initial item components of the armor piece
5+
6+
$data modify entity @s Item.components merge value $(components)

gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/function/recipes/armor/select_piece.mcfunction

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ scoreboard players set $expected_item_amount gm4_zc_fullness 3
99
# the select_flavor functions are generated via beet from templates
1010
# generated with the help of bolt
1111
for piece_data in ctx.meta['armor_pieces']:
12-
execute unless score $recipe_success gm4_zc_data matches 1.. if data storage gm4_zauber_cauldrons:temp/cauldron/ingredients items[{count:1,components:{"minecraft:custom_data":{gm4_zauber_cauldrons:{item:f"minecraft:golden_{piece_data['piece']}"}}}}] run function f"gm4_zauber_cauldrons:recipes/armor/{piece_data['piece']}/select_flavor"
12+
execute unless score $recipe_success gm4_zc_data matches 1.. if data storage gm4_zauber_cauldrons:temp/cauldron/ingredients items[{count:1,id:f"minecraft:golden_{piece_data['piece']}"}] run function f"gm4_zauber_cauldrons:recipes/armor/{piece_data['piece']}/select_flavor"
1313

1414
# use water and play sound once a recipe ran
1515
execute if score $recipe_success gm4_zc_data matches 1 run function gm4_zauber_cauldrons:recipes/armor/use_cauldron

gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/function/armor/craft_piece.mcfunction

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
# at @s (center of block)
33
# run from recipe/armor/{{piece}}/select_flavor
44

5-
# templates/functions/armor/craft_piece.mcfunction
6-
75
# remove ingredients
86
execute align xyz run kill @e[type=item,dx=0,dy=0,dz=0]
97

108
# summon item
11-
# loot table is generated via beet from templates
12-
loot spawn ~ ~.2 ~ loot gm4_zauber_cauldrons:items/armor/{{piece}}/{{flavor}}
9+
# item modifier is generated via beet from templates
10+
summon item ~ ~.2 ~ {Tags:["gm4_zc_temp_armor_piece"],Item:{id:"minecraft:golden_{{piece}}",count:1}}
11+
execute as @e[type=item,dx=0,dy=0,dz=0,tag=gm4_zc_temp_armor_piece,limit=1] run function gm4_zauber_cauldrons:recipes/armor/init_piece with storage gm4_zauber_cauldrons:temp/cauldron/ingredients items[{count:1,id:"minecraft:golden_{{piece}}"}]
12+
item modify entity @e[type=item,dx=0,dy=0,dz=0,tag=gm4_zc_temp_armor_piece,limit=1] contents gm4_zauber_cauldrons:armor/{{piece}}/{{flavor}}
13+
tag @e[type=item,dx=0,dy=0,dz=0] remove gm4_zc_temp_armor_piece
1314

1415
# set flag
1516
scoreboard players set $recipe_success gm4_zc_data 1

gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/function/armor/select_flavor.mcfunction

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# at @s (center of block)
33
# run from recipe/armor/select_piece
44

5-
# templates/functions/armor/select_flavor.mcfunction
65
# generated with the help of bolt
76
for flavor_data in ctx.meta['armor_flavors']:
87
execute unless score $recipe_success gm4_zc_data matches 1.. if data storage gm4_zauber_cauldrons:temp/cauldron/ingredients items[{count:1,components:{"minecraft:custom_data":{gm4_zauber_cauldrons:{item:flavor_data['ingredient_item_id']}}}}] run function f"gm4_zauber_cauldrons:recipes/armor/{{piece}}/{flavor_data['flavor']}"
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
[
2+
{
3+
"function": "minecraft:set_name",
4+
"target": "item_name",
5+
"name": {
6+
"translate": "item.gm4.zauber_cauldrons.zauber_armor.{{piece}}",
7+
"fallback": "{{translate_fallback}}"
8+
}
9+
},
10+
{
11+
"function": "minecraft:set_components",
12+
"components": {
13+
"minecraft:custom_model_data": {"strings":["gm4_zauber_cauldrons:item/zauber_armor/{{flavor}}"]}
14+
}
15+
},
16+
{
17+
"function": "minecraft:set_custom_data",
18+
"tag": "{gm4_zauber_cauldrons:{item:\"zauber_armor\",type:\"{{piece}}\"}}"
19+
},
20+
{
21+
"function": "minecraft:set_attributes",
22+
"modifiers": [
23+
{
24+
"attribute": "minecraft:armor_toughness",
25+
"id": "gm4_zauber_cauldrons:armor_toughness_{{slot}}",
26+
"amount": 3,
27+
"operation": "add_value",
28+
"slot": "{{slot}}"
29+
},
30+
{
31+
"attribute": "minecraft:armor",
32+
"id": "gm4_zauber_cauldrons:armor_{{slot}}",
33+
"amount": {{armor_value}},
34+
"operation": "add_value",
35+
"slot": "{{slot}}"
36+
},
37+
{
38+
"attribute": "{{flavor_attribute}}",
39+
"id": "gm4_zauber_cauldrons:armor_{{flavor}}_{{slot}}",
40+
"amount": {{flavor_amount}},
41+
"operation": "{{flavor_operation}}",
42+
"slot": "{{slot}}"
43+
}
44+
]
45+
},
46+
{
47+
"function": "minecraft:set_lore",
48+
"mode": "append",
49+
"lore": [
50+
{
51+
"translate": "item.gm4.zauber_cauldrons.zauber_armor.magic",
52+
"fallback": "+%s%% Magic",
53+
"with": [
54+
"25"
55+
],
56+
"color": "blue",
57+
"italic": false
58+
}
59+
]
60+
}
61+
]

gm4_zauber_cauldrons/data/gm4_zauber_cauldrons/templates/loot_table/zauber_armor.json

Lines changed: 2 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -8,77 +8,8 @@
88
"name": "minecraft:golden_{{piece}}",
99
"functions": [
1010
{
11-
"function": "minecraft:set_name",
12-
"name": {
13-
"translate": "item.gm4.zauber_cauldrons.zauber_armor.{{piece}}",
14-
"fallback": "{{translate_fallback}}",
15-
"italic": false
16-
}
17-
},
18-
{
19-
"function": "minecraft:set_components",
20-
"components": {
21-
"minecraft:custom_model_data": {"strings":["gm4_zauber_cauldrons:item/zauber_armor/{{flavor}}"]}
22-
}
23-
},
24-
{
25-
"function": "minecraft:copy_custom_data",
26-
"source": {
27-
"type": "minecraft:storage",
28-
"source": "gm4_zauber_cauldrons:temp/cauldron/ingredients"
29-
},
30-
"ops": [
31-
{
32-
"source": "items[{count:1,tag:{gm4_zauber_cauldrons:{item:\"minecraft:golden_{{piece}}\"}}}].tag",
33-
"target": "{}",
34-
"op": "merge"
35-
}
36-
]
37-
},
38-
{
39-
"function": "minecraft:set_custom_data",
40-
"tag": "{gm4_zauber_cauldrons:{item:\"zauber_armor\",type:\"{{piece}}\"}}"
41-
},
42-
{
43-
"function": "minecraft:set_attributes",
44-
"modifiers": [
45-
{
46-
"attribute": "minecraft:armor_toughness",
47-
"id": "gm4_zauber_cauldrons:armor_toughness_{{slot}}",
48-
"amount": 3,
49-
"operation": "add_value",
50-
"slot": "{{slot}}"
51-
},
52-
{
53-
"attribute": "minecraft:armor",
54-
"id": "gm4_zauber_cauldrons:armor_{{slot}}",
55-
"amount": {{armor_value}},
56-
"operation": "add_value",
57-
"slot": "{{slot}}"
58-
},
59-
{
60-
"attribute": "{{flavor_attribute}}",
61-
"id": "gm4_zauber_cauldrons:armor_{{flavor}}_{{slot}}",
62-
"amount": {{flavor_amount}},
63-
"operation": "{{flavor_operation}}",
64-
"slot": "{{slot}}"
65-
}
66-
]
67-
},
68-
{
69-
"function": "minecraft:set_lore",
70-
"mode": "append",
71-
"lore": [
72-
{
73-
"translate": "item.gm4.zauber_cauldrons.zauber_armor.magic",
74-
"fallback": "+%s%% Magic",
75-
"with": [
76-
"25"
77-
],
78-
"color": "blue",
79-
"italic": false
80-
}
81-
]
11+
"function": "minecraft:reference",
12+
"name": "gm4_zauber_cauldrons:armor/{{piece}}/{{flavor}}"
8213
}
8314
]
8415
}

gm4_zauber_cauldrons/generate.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,13 @@ def generate_armor_recipes(ctx: Context, armor_flavors: CSV, armor_pieces: CSV):
6969
{
7070
f"data/gm4_zauber_cauldrons/function/recipes/armor/{piece_data['piece']}/select_flavor.mcfunction": "data/gm4_zauber_cauldrons/templates/function/armor/select_flavor.mcfunction",
7171
f"data/gm4_zauber_cauldrons/function/recipes/armor/{piece_data['piece']}/{flavor_data['flavor']}.mcfunction": "data/gm4_zauber_cauldrons/templates/function/armor/craft_piece.mcfunction",
72+
f"data/gm4_zauber_cauldrons/item_modifier/armor/{piece_data['piece']}/{flavor_data['flavor']}.json": "data/gm4_zauber_cauldrons/templates/item_modifier/zauber_armor.json",
7273
f"data/gm4_zauber_cauldrons/loot_table/items/armor/{piece_data['piece']}/{flavor_data['flavor']}.json": "data/gm4_zauber_cauldrons/templates/loot_table/zauber_armor.json"
7374
}
7475
],
7576
"render": {
7677
"function": "*",
78+
"item_modifier": "*",
7779
"loot_table": "*"
7880
}
7981
},

0 commit comments

Comments
 (0)