From bbd13a9e9492e05ba70db124f72f5a4081178f7a Mon Sep 17 00:00:00 2001 From: runcows Date: Mon, 23 Feb 2026 23:52:15 +0900 Subject: [PATCH 01/10] Move placement to a single function that does all rotations --- .../function/machine/create.mcfunction | 12 ++++++++---- .../function/machine/place_rotated.mcfunction | 14 ++++++++++++++ .../function/machine/rotate/east.mcfunction | 14 -------------- .../function/machine/rotate/north.mcfunction | 14 -------------- .../function/machine/rotate/south.mcfunction | 14 -------------- .../function/machine/rotate/west.mcfunction | 14 -------------- 6 files changed, 22 insertions(+), 60 deletions(-) create mode 100644 gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction delete mode 100644 gm4_smelteries/data/gm4_smelteries/function/machine/rotate/east.mcfunction delete mode 100644 gm4_smelteries/data/gm4_smelteries/function/machine/rotate/north.mcfunction delete mode 100644 gm4_smelteries/data/gm4_smelteries/function/machine/rotate/south.mcfunction delete mode 100644 gm4_smelteries/data/gm4_smelteries/function/machine/rotate/west.mcfunction diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction index b9b50ac119..feedec2b84 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction @@ -4,10 +4,14 @@ # run from gm4_smelteries:machine/verify_place_down # place block depending on rotation -execute if score $single_rotation gm4_machine_data matches 1 run function gm4_smelteries:machine/rotate/south -execute if score $single_rotation gm4_machine_data matches 2 run function gm4_smelteries:machine/rotate/west -execute if score $single_rotation gm4_machine_data matches 3 run function gm4_smelteries:machine/rotate/north -execute if score $single_rotation gm4_machine_data matches 4 run function gm4_smelteries:machine/rotate/east +execute if score $single_rotation gm4_machine_data matches 1 run data modify storage gm4_smelteries:placement temp set value {facing:"south",Rotation:[0.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 2 run data modify storage gm4_smelteries:placement temp set value {facing:"west",Rotation:[90.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 3 run data modify storage gm4_smelteries:placement temp set value {facing:"north",Rotation:[180.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 4 run data modify storage gm4_smelteries:placement temp set value {facing:"east",Rotation:[-90.0f,0.0f]} + +function gm4_smelteries:machine/place_rotated with storage gm4_smelteries:placement temp + +data remove storage gm4_smelteries:placement temp # link cauldron stand to smeltery marker execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..0.1,tag=gm4_new_machine,limit=1] UUID[3] diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction new file mode 100644 index 0000000000..8e288f903a --- /dev/null +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction @@ -0,0 +1,14 @@ +# places the smeltery down based on rotation +# @s = player who placed the smeltery +# located at the center of the placed block, rotated same cardinal direction as @s +# run from gm4_smelteries:machine/create + +# place furnace +$setblock ~ ~ ~ furnace[facing=$(facing)]{CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} + +# summon cauldron display armor stand +$execute positioned ^ ^ ^1 run summon armor_stand ~ ~-1.5 ~ {NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_cauldron",Rotation:$(Rotation)} + +# summon display armor stand and marker entity +$summon armor_stand ~ ~-0.3 ~ {Small:1b,NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_stand",equipment:{head:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}}},Rotation:$(Rotation)} +$summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:$(Rotation)} diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/east.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/east.mcfunction deleted file mode 100644 index 0b9020dd10..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/east.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -# places the smeltery down based on rotation -# @s = player who placed the smeltery -# located at the center of the placed block -# run from gm4_smelteries:machine/create - -# place furnace -setblock ~ ~ ~ furnace[facing=east]{CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} - -# summon cauldron display armor stand -summon armor_stand ~-1 ~-1.5 ~ {NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_cauldron",Rotation:[-90.0f,0.0f]} - -# summon display armor stand and marker entity -summon armor_stand ~ ~-0.3 ~ {Small:1b,NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_stand",equipment:{head:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}}},Rotation:[-90.0f,0.0f]} -summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:[-90.0f,0.0f]} diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/north.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/north.mcfunction deleted file mode 100644 index ff349b42a7..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/north.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -# places the smeltery down based on rotation -# @s = player who placed the smeltery -# located at the center of the placed block -# run from gm4_smelteries:machine/create - -# place furnace -setblock ~ ~ ~ furnace[facing=north]{CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} - -# summon cauldron display armor stand -summon armor_stand ~ ~-1.5 ~1 {NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_cauldron",Rotation:[180.0f,0.0f]} - -# summon display armor stand and marker entity -summon armor_stand ~ ~-0.3 ~ {Small:1b,NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_stand",equipment:{head:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}}},Rotation:[180.0f,0.0f]} -summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:[180.0f,0.0f]} diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/south.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/south.mcfunction deleted file mode 100644 index be24ceb6e6..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/south.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -# places the smeltery down based on rotation -# @s = player who placed the smeltery -# located at the center of the placed block -# run from gm4_smelteries:machine/create - -# place furnace -setblock ~ ~ ~ furnace[facing=south]{CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} - -# summon cauldron display armor stand -summon armor_stand ~ ~-1.5 ~-1 {NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_cauldron",Rotation:[0.0f,0.0f]} - -# summon display armor stand and marker entity -summon armor_stand ~ ~-0.3 ~ {Small:1b,NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_stand",equipment:{head:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}}},Rotation:[0.0f,0.0f]} -summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:[0.0f,0.0f]} diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/west.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/west.mcfunction deleted file mode 100644 index d6d4771672..0000000000 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/rotate/west.mcfunction +++ /dev/null @@ -1,14 +0,0 @@ -# places the smeltery down based on rotation -# @s = player who placed the smeltery -# located at the center of the placed block -# run from gm4_smelteries:machine/create - -# place furnace -setblock ~ ~ ~ furnace[facing=west]{CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} - -# summon cauldron display armor stand -summon armor_stand ~1 ~-1.5 ~ {NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_cauldron",Rotation:[90.0f,0.0f]} - -# summon display armor stand and marker entity -summon armor_stand ~ ~-0.3 ~ {Small:1b,NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_stand",equipment:{head:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}}},Rotation:[90.0f,0.0f]} -summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:[90.0f,0.0f]} From 798ceba947f916c7f5d603b66caad9bd9c92d01c Mon Sep 17 00:00:00 2001 From: runcows Date: Tue, 24 Feb 2026 01:46:55 +0900 Subject: [PATCH 02/10] Item display migration + move entities to center of smeltery --- gm4_smelteries/beet.yaml | 2 +- .../function/furnace_lit.mcfunction | 3 +- .../function/furnace_unlit.mcfunction | 5 ++-- .../function/machine/destroy.mcfunction | 4 ++- .../function/machine/place_rotated.mcfunction | 26 +++++++++++++---- .../function/process.mcfunction | 1 + .../function/smelt/check_cook_time.mcfunction | 3 +- .../function/smelt/smelting.mcfunction | 28 +++++++++---------- .../function/upgrade_paths/1.9.mcfunction | 9 ++++++ .../1.9/cauldron_item_display.mcfunction | 17 +++++++++++ .../1.9/smeltery_item_display.mcfunction | 19 +++++++++++++ 11 files changed, 92 insertions(+), 25 deletions(-) create mode 100644 gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction create mode 100644 gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction create mode 100644 gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction diff --git a/gm4_smelteries/beet.yaml b/gm4_smelteries/beet.yaml index 626e49044a..5b413db329 100644 --- a/gm4_smelteries/beet.yaml +++ b/gm4_smelteries/beet.yaml @@ -1,6 +1,6 @@ id: gm4_smelteries name: Smelteries -version: 1.8.X +version: 1.9.X data_pack: load: . diff --git a/gm4_smelteries/data/gm4_smelteries/function/furnace_lit.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/furnace_lit.mcfunction index fdd0af5ffc..d069fb4693 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/furnace_lit.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/furnace_lit.mcfunction @@ -1,8 +1,9 @@ # run smeltery in lit state # @s = smeltery marker +# at @s # run from process -execute unless entity @s[tag=gm4_smeltery_lit] positioned ~ ~-0.3 ~ run item replace entity @e[type=armor_stand,tag=gm4_smeltery_stand,distance=..0.1,limit=1] armor.head with iron_block[custom_model_data={strings:["gm4_smelteries:block/smeltery_lit"]}] +execute unless entity @s[tag=gm4_smeltery_lit] run item replace entity @e[type=item_display,tag=gm4_smeltery_display,distance=..0.1,limit=1] contents with iron_block[custom_model_data={strings:["gm4_smelteries:block/smeltery_lit"]}] tag @s add gm4_smeltery_lit particle large_smoke ~ ~ ~ 0 0.3 0 0 5 normal @a diff --git a/gm4_smelteries/data/gm4_smelteries/function/furnace_unlit.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/furnace_unlit.mcfunction index a766534dd0..7f2e587c04 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/furnace_unlit.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/furnace_unlit.mcfunction @@ -1,7 +1,8 @@ # set smeltery to unlit state # @s = smeltery marker +# at @s # run from process -execute positioned ~ ~-0.3 ~ run item replace entity @e[type=armor_stand,tag=gm4_smeltery_stand,distance=..0.1,limit=1] armor.head with iron_block[custom_model_data={strings:["gm4_smelteries:block/smeltery_unlit"]}] -execute positioned ^ ^-1.5 ^-1 run item replace entity @e[type=armor_stand,tag=gm4_smeltery_cauldron,distance=..0.1,limit=1] armor.head with air +item replace entity @e[type=item_display,tag=gm4_smeltery_display,distance=..0.1,limit=1] contents with iron_block[custom_model_data={strings:["gm4_smelteries:block/smeltery_unlit"]}] +item replace entity @e[type=item_display,tag=gm4_smeltery_cauldron,distance=..0.1,limit=1] contents with air tag @s remove gm4_smeltery_lit diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction index d5bbd54ad3..5d75fc9f99 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction @@ -3,10 +3,12 @@ # located at @s # run from gm4_smelteries:machine/verify_destroy -# kill entities related to machine block +# kill entities related to machine block (armor stand kills needed for legacy compat) execute positioned ~ ~-0.3 ~ run kill @e[type=armor_stand,tag=gm4_smeltery_stand,limit=1,distance=..0.01] +kill @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] scoreboard players operation $current gm4_smelt_id = @s gm4_smelt_id execute positioned ^ ^-1.5 ^-1 as @e[type=armor_stand,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run kill @s +execute as @e[type=item_display,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run kill @s execute store result score $dropped_item gm4_machine_data run kill @e[type=item,distance=..1,nbt={Age:0s,Item:{id:"minecraft:furnace",count:1,components:{}}},limit=1,sort=nearest] kill @s diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction index 8e288f903a..56089f77a1 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction @@ -4,11 +4,27 @@ # run from gm4_smelteries:machine/create # place furnace -$setblock ~ ~ ~ furnace[facing=$(facing)]{CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} +$setblock ~ ~ ~ furnace[facing=$(facing)] +data merge block ~ ~ ~ {CustomName:{"translate":"gm4.second","fallback":"%1$s","with":[{"translate":"container.gm4.smeltery","fallback":"Smeltery"},[{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:offscreen"},{"translate":"gui.gm4.smeltery","fallback":"","font":"gm4:container_gui","color":"white"},{"text":" ","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:half_invert"},{"translate":"container.gm4.smeltery","fallback":"Smeltery","font":"gm4:default","color":"#404040"}]]}} -# summon cauldron display armor stand -$execute positioned ^ ^ ^1 run summon armor_stand ~ ~-1.5 ~ {NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_cauldron",Rotation:$(Rotation)} +# summon cauldron display +$summon item_display ~ ~ ~ {\ + CustomName:"gm4_smeltery_cauldron",\ + Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],\ + item_display:head,\ + brightness:{sky:15,block:15},\ + Rotation:$(Rotation),\ + transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0.1875f,-1.0f],scale:[0.625,0.625,0.625]}\ +} -# summon display armor stand and marker entity -$summon armor_stand ~ ~-0.3 ~ {Small:1b,NoGravity:1b,Marker:1b,Invulnerable:1b,Invisible:1b,Silent:1b,DisabledSlots:4144959,Tags:["gm4_no_edit","gm4_smeltery_stand","gm4_machine_stand","smithed.entity","smithed.strict","gm4_new_machine"],HasVisualFire:1b,CustomName:"gm4_smeltery_stand",equipment:{head:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}}},Rotation:$(Rotation)} +# summon display and marker entity +$summon item_display ~ ~ ~ {\ + CustomName:"gm4_smeltery_display",\ + Tags:["gm4_no_edit","gm4_smeltery_display","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],\ + item:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}},\ + item_display:head,\ + brightness:{sky:15,block:15},\ + Rotation:$(Rotation),\ + transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0.601f,0f],scale:[0.438,0.438,0.438]}\ +} $summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:$(Rotation)} diff --git a/gm4_smelteries/data/gm4_smelteries/function/process.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/process.mcfunction index af9d402411..dfa4bc57d1 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/process.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/process.mcfunction @@ -1,5 +1,6 @@ # smeltery processes # @s = smeltery +# at @s # run from main # update smeltery state diff --git a/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction index 6c21813291..bb28659116 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction @@ -1,5 +1,6 @@ # check furnace and store cooktime # @s = smeltery marker +# at @s # run from furnace_lit scoreboard players set $cook_time gm4_smelt_data -1 @@ -8,5 +9,5 @@ execute store result score $cook_time gm4_smelt_data run data get block ~ ~ ~ co # display ore tag @s add gm4_smeltery_processing scoreboard players operation $current gm4_smelt_id = @s gm4_smelt_id -execute if score $cook_time gm4_smelt_data matches 0.. positioned ^ ^-1.5 ^-1 as @e[type=armor_stand,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id positioned ^ ^1.5 ^1 run function gm4_smelteries:smelt/smelting +execute if score $cook_time gm4_smelt_data matches 0.. as @e[type=item_display,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run function gm4_smelteries:smelt/smelting tag @s remove gm4_smeltery_processing diff --git a/gm4_smelteries/data/gm4_smelteries/function/smelt/smelting.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/smelt/smelting.mcfunction index c0e7ce1b08..84f5b944bb 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/smelt/smelting.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/smelt/smelting.mcfunction @@ -4,23 +4,23 @@ # run from smelt/check_cook_time # check if the currently smeling item can be doubled -item replace entity @s armor.head with air +item replace entity @s contents with air execute unless items block ~ ~ ~ container.0 #gm4_smelteries:can_double run return run tag @e[type=marker,tag=gm4_smeltery_processing,limit=1,distance=..2] remove gm4_smeltery_smelting # update the cauldron block display -execute if items block ~ ~ ~ container.0 minecraft:gold_ore run item replace entity @s armor.head with minecraft:gold_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/gold_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:nether_gold_ore run item replace entity @s armor.head with minecraft:nether_gold_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/nether_gold_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:deepslate_gold_ore run item replace entity @s armor.head with minecraft:deepslate_gold_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/deepslate_gold_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:raw_gold run item replace entity @s armor.head with minecraft:raw_gold_block[custom_model_data={"strings":["gm4_smelteries:block/ore_display/raw_gold"]}] -execute if items block ~ ~ ~ container.0 minecraft:iron_ore run item replace entity @s armor.head with minecraft:iron_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/iron_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:deepslate_iron_ore run item replace entity @s armor.head with minecraft:deepslate_iron_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/deepslate_iron_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:raw_iron run item replace entity @s armor.head with minecraft:raw_iron_block[custom_model_data={"strings":["gm4_smelteries:block/ore_display/raw_iron"]}] -execute if items block ~ ~ ~ container.0 minecraft:copper_ore run item replace entity @s armor.head with minecraft:copper_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/copper_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:deepslate_copper_ore run item replace entity @s armor.head with minecraft:deepslate_copper_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/deepslate_copper_ore"]}] -execute if items block ~ ~ ~ container.0 minecraft:raw_copper run item replace entity @s armor.head with minecraft:raw_copper_block[custom_model_data={"strings":["gm4_smelteries:block/ore_display/raw_copper"]}] -execute if items block ~ ~ ~ container.0 minecraft:sand run item replace entity @s armor.head with minecraft:sand[custom_model_data={"strings":["gm4_smelteries:block/ore_display/sand"]}] -execute if items block ~ ~ ~ container.0 minecraft:red_sand run item replace entity @s armor.head with minecraft:red_sand[custom_model_data={"strings":["gm4_smelteries:block/ore_display/red_sand"]}] -execute if items block ~ ~ ~ container.0 minecraft:chorus_fruit run item replace entity @s armor.head with minecraft:chorus_flower[custom_model_data={"strings":["gm4_smelteries:block/ore_display/chorus_fruit"]}] +execute if items block ~ ~ ~ container.0 minecraft:gold_ore run item replace entity @s contents with minecraft:gold_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/gold_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:nether_gold_ore run item replace entity @s contents with minecraft:nether_gold_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/nether_gold_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:deepslate_gold_ore run item replace entity @s contents with minecraft:deepslate_gold_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/deepslate_gold_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:raw_gold run item replace entity @s contents with minecraft:raw_gold_block[custom_model_data={"strings":["gm4_smelteries:block/ore_display/raw_gold"]}] +execute if items block ~ ~ ~ container.0 minecraft:iron_ore run item replace entity @s contents with minecraft:iron_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/iron_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:deepslate_iron_ore run item replace entity @s contents with minecraft:deepslate_iron_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/deepslate_iron_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:raw_iron run item replace entity @s contents with minecraft:raw_iron_block[custom_model_data={"strings":["gm4_smelteries:block/ore_display/raw_iron"]}] +execute if items block ~ ~ ~ container.0 minecraft:copper_ore run item replace entity @s contents with minecraft:copper_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/copper_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:deepslate_copper_ore run item replace entity @s contents with minecraft:deepslate_copper_ore[custom_model_data={"strings":["gm4_smelteries:block/ore_display/deepslate_copper_ore"]}] +execute if items block ~ ~ ~ container.0 minecraft:raw_copper run item replace entity @s contents with minecraft:raw_copper_block[custom_model_data={"strings":["gm4_smelteries:block/ore_display/raw_copper"]}] +execute if items block ~ ~ ~ container.0 minecraft:sand run item replace entity @s contents with minecraft:sand[custom_model_data={"strings":["gm4_smelteries:block/ore_display/sand"]}] +execute if items block ~ ~ ~ container.0 minecraft:red_sand run item replace entity @s contents with minecraft:red_sand[custom_model_data={"strings":["gm4_smelteries:block/ore_display/red_sand"]}] +execute if items block ~ ~ ~ container.0 minecraft:chorus_fruit run item replace entity @s contents with minecraft:chorus_flower[custom_model_data={"strings":["gm4_smelteries:block/ore_display/chorus_fruit"]}] # check if the furnace is close to finish smelting execute if score $cook_time gm4_smelt_data matches 184..199 run function gm4_smelteries:smelt/prep_finish_smelt diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction new file mode 100644 index 0000000000..9f08776b8e --- /dev/null +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction @@ -0,0 +1,9 @@ +# @s = player +# at @s +# run via upgrade paths util + +execute as @e[type=minecraft:armor_stand,tag=gm4_smeltery_stand] at @s positioned ~ ~0.3 ~ \ + run function gm4_smelteries:upgrade_paths/1.9/smeltery_item_display + +execute as @e[type=minecraft:armor_stand,tag=gm4_smeltery_cauldron] at @s positioned ^ ^1.5 ^1 \ + run function gm4_smelteries:upgrade_paths/1.9/cauldron_item_display diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction new file mode 100644 index 0000000000..d82b352026 --- /dev/null +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction @@ -0,0 +1,17 @@ +# @s = gm4_smeltery_cauldron armor stand +# at center of smeltery +# run from upgrade_paths/1.9 + +# create item display +summon item_display ~ ~ ~ {\ + CustomName:"gm4_smeltery_cauldron",\ + Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],\ + item_display:head,\ + brightness:{sky:15,block:15},\ + transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0.1875f,-1.0f],scale:[0.625,0.625,0.625]}\ +} +# copy data from armor stand +execute rotated as @s run rotate @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] ~ ~ +item replace entity @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] contents from entity @s armor.head + +kill @s diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction new file mode 100644 index 0000000000..af424f6e0a --- /dev/null +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction @@ -0,0 +1,19 @@ +# @s = gm4_smeltery_stand armor stand +# at center of smeltery +# run from upgrade_paths/1.9 + +# create item display +summon item_display ~ ~ ~ {\ + CustomName:"gm4_smeltery_display",\ + Tags:["gm4_no_edit","gm4_smeltery_display","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],\ + item:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}},\ + item_display:head,\ + brightness:{sky:15,block:15},\ + Rotation:[0.0f,0.0f],\ + transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0.601f,0f],scale:[0.438,0.438,0.438]}\ +} +# copy data from armor stand +execute rotated as @s run rotate @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] ~ ~ +item replace entity @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] contents from entity @s armor.head + +kill @s From 0e146f93690c5b86a7e91a1bee14515946f5097d Mon Sep 17 00:00:00 2001 From: runcows Date: Tue, 24 Feb 2026 02:16:17 +0900 Subject: [PATCH 03/10] Remove `gm4_smelt_id` it is no longer needed with everything in the same place --- .../data/gm4_smelteries/function/init.mcfunction | 1 - .../gm4_smelteries/function/machine/create.mcfunction | 4 ---- .../gm4_smelteries/function/machine/destroy.mcfunction | 8 +++++--- .../function/smelt/check_cook_time.mcfunction | 3 +-- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/gm4_smelteries/data/gm4_smelteries/function/init.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/init.mcfunction index 57ec5ce0b0..063892e576 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/init.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/init.mcfunction @@ -1,5 +1,4 @@ scoreboard objectives add gm4_smelt_data dummy -scoreboard objectives add gm4_smelt_id dummy execute unless score smelteries gm4_modules matches 1 run data modify storage gm4:log queue append value {type:"install",module:"Smelteries"} execute unless score smelteries gm4_earliest_version < smelteries gm4_modules run scoreboard players operation smelteries gm4_earliest_version = smelteries gm4_modules diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction index feedec2b84..3c41f34217 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction @@ -13,10 +13,6 @@ function gm4_smelteries:machine/place_rotated with storage gm4_smelteries:placem data remove storage gm4_smelteries:placement temp -# link cauldron stand to smeltery marker -execute store result score $new gm4_smelt_id run data get entity @e[type=marker,distance=..0.1,tag=gm4_new_machine,limit=1] UUID[3] -scoreboard players operation @e[distance=..3,tag=gm4_new_machine] gm4_smelt_id = $new gm4_smelt_id - # mark block as placed playsound block.anvil.use block @a[distance=..4] ~ ~ ~ 1 0.8 scoreboard players set $placed_block gm4_machine_data 1 diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction index 5d75fc9f99..3560a47422 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction @@ -3,12 +3,14 @@ # located at @s # run from gm4_smelteries:machine/verify_destroy -# kill entities related to machine block (armor stand kills needed for legacy compat) +# legacy cleanup execute positioned ~ ~-0.3 ~ run kill @e[type=armor_stand,tag=gm4_smeltery_stand,limit=1,distance=..0.01] -kill @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] scoreboard players operation $current gm4_smelt_id = @s gm4_smelt_id execute positioned ^ ^-1.5 ^-1 as @e[type=armor_stand,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run kill @s -execute as @e[type=item_display,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run kill @s + +# kill entities related to machine block +kill @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] +kill @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] execute store result score $dropped_item gm4_machine_data run kill @e[type=item,distance=..1,nbt={Age:0s,Item:{id:"minecraft:furnace",count:1,components:{}}},limit=1,sort=nearest] kill @s diff --git a/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction index bb28659116..06887951bd 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/smelt/check_cook_time.mcfunction @@ -8,6 +8,5 @@ execute store result score $cook_time gm4_smelt_data run data get block ~ ~ ~ co # display ore tag @s add gm4_smeltery_processing -scoreboard players operation $current gm4_smelt_id = @s gm4_smelt_id -execute if score $cook_time gm4_smelt_data matches 0.. as @e[type=item_display,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run function gm4_smelteries:smelt/smelting +execute if score $cook_time gm4_smelt_data matches 0.. as @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] run function gm4_smelteries:smelt/smelting tag @s remove gm4_smeltery_processing From d4253da18310c6d11345e0c2e70bd840b286a31c Mon Sep 17 00:00:00 2001 From: runcows Date: Tue, 24 Feb 2026 02:23:31 +0900 Subject: [PATCH 04/10] Upgrade path adjustments --- gm4_smelteries/data/gm4_smelteries/function/main.mcfunction | 2 ++ .../data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction | 2 -- .../function/upgrade_paths/1.9/cauldron_item_display.mcfunction | 2 ++ .../function/upgrade_paths/1.9/smeltery_item_display.mcfunction | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gm4_smelteries/data/gm4_smelteries/function/main.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/main.mcfunction index 7b5e98cbb7..ff45cbca6d 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/main.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/main.mcfunction @@ -1,3 +1,5 @@ +# upgrade path, needs run before process +function gm4_smelteries:upgrade_paths/1.9 # process machine execute as @e[type=marker,tag=gm4_smeltery] at @s run function gm4_smelteries:process diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction index 9f08776b8e..4c7020da46 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction @@ -1,5 +1,3 @@ -# @s = player -# at @s # run via upgrade paths util execute as @e[type=minecraft:armor_stand,tag=gm4_smeltery_stand] at @s positioned ~ ~0.3 ~ \ diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction index d82b352026..4b1676ecba 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction @@ -13,5 +13,7 @@ summon item_display ~ ~ ~ {\ # copy data from armor stand execute rotated as @s run rotate @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] ~ ~ item replace entity @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] contents from entity @s armor.head +# copy entity version (we dont technically need to increment it) +scoreboard players operation @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] gm4_entity_version = @s gm4_entity_version kill @s diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction index af424f6e0a..7482d5a09d 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction @@ -15,5 +15,7 @@ summon item_display ~ ~ ~ {\ # copy data from armor stand execute rotated as @s run rotate @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] ~ ~ item replace entity @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] contents from entity @s armor.head +# copy entity version (we dont technically need to increment it) +scoreboard players operation @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] gm4_entity_version = @s gm4_entity_version kill @s From abd304dbe728ed1330f2dfef6524d904754bb1da Mon Sep 17 00:00:00 2001 From: runcows Date: Tue, 24 Feb 2026 02:35:18 +0900 Subject: [PATCH 05/10] update comment on upgrade path --- .../data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction index 4c7020da46..a74e1e72eb 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9.mcfunction @@ -1,4 +1,4 @@ -# run via upgrade paths util +# run from main and via upgrade paths util execute as @e[type=minecraft:armor_stand,tag=gm4_smeltery_stand] at @s positioned ~ ~0.3 ~ \ run function gm4_smelteries:upgrade_paths/1.9/smeltery_item_display From 723c1f29884357efb066542f6aa6869a390b6ecb Mon Sep 17 00:00:00 2001 From: runcows Date: Tue, 24 Feb 2026 06:02:19 +0900 Subject: [PATCH 06/10] increment entity version --- .../data/gm4_smelteries/function/machine/create.mcfunction | 2 +- .../upgrade_paths/1.9/cauldron_item_display.mcfunction | 4 ++-- .../upgrade_paths/1.9/smeltery_item_display.mcfunction | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction index 3c41f34217..78b78f2ac3 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction @@ -16,5 +16,5 @@ data remove storage gm4_smelteries:placement temp # mark block as placed playsound block.anvil.use block @a[distance=..4] ~ ~ ~ 1 0.8 scoreboard players set $placed_block gm4_machine_data 1 -scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 1 +scoreboard players set @e[distance=..2,tag=gm4_new_machine] gm4_entity_version 2 tag @e[distance=..3] remove gm4_new_machine diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction index 4b1676ecba..cfe642cf1f 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/cauldron_item_display.mcfunction @@ -13,7 +13,7 @@ summon item_display ~ ~ ~ {\ # copy data from armor stand execute rotated as @s run rotate @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] ~ ~ item replace entity @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] contents from entity @s armor.head -# copy entity version (we dont technically need to increment it) -scoreboard players operation @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] gm4_entity_version = @s gm4_entity_version +# increment entity version +scoreboard players set @e[type=item_display,tag=gm4_smeltery_cauldron,limit=1,distance=..0.01] gm4_entity_version 2 kill @s diff --git a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction index 7482d5a09d..27fca0cd32 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/upgrade_paths/1.9/smeltery_item_display.mcfunction @@ -15,7 +15,8 @@ summon item_display ~ ~ ~ {\ # copy data from armor stand execute rotated as @s run rotate @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] ~ ~ item replace entity @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] contents from entity @s armor.head -# copy entity version (we dont technically need to increment it) -scoreboard players operation @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] gm4_entity_version = @s gm4_entity_version +# increment entity version (this function handles the marker as well) +scoreboard players set @e[type=item_display,tag=gm4_smeltery_display,limit=1,distance=..0.01] gm4_entity_version 2 +scoreboard players set @e[type=marker,tag=gm4_smeltery,limit=1,distance=..0.01] gm4_entity_version 2 kill @s From 91633beb409901fbf49c8147dd759ca96428b0ed Mon Sep 17 00:00:00 2001 From: runcows Date: Wed, 25 Feb 2026 11:43:46 +0900 Subject: [PATCH 07/10] Macro naming changes --- .../gm4_smelteries/function/machine/create.mcfunction | 8 ++++---- .../function/machine/place_rotated.mcfunction | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction index 78b78f2ac3..622caee0c0 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/create.mcfunction @@ -4,10 +4,10 @@ # run from gm4_smelteries:machine/verify_place_down # place block depending on rotation -execute if score $single_rotation gm4_machine_data matches 1 run data modify storage gm4_smelteries:placement temp set value {facing:"south",Rotation:[0.0f,0.0f]} -execute if score $single_rotation gm4_machine_data matches 2 run data modify storage gm4_smelteries:placement temp set value {facing:"west",Rotation:[90.0f,0.0f]} -execute if score $single_rotation gm4_machine_data matches 3 run data modify storage gm4_smelteries:placement temp set value {facing:"north",Rotation:[180.0f,0.0f]} -execute if score $single_rotation gm4_machine_data matches 4 run data modify storage gm4_smelteries:placement temp set value {facing:"east",Rotation:[-90.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 1 run data modify storage gm4_smelteries:placement temp set value {facing:"south",rotation:[0.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 2 run data modify storage gm4_smelteries:placement temp set value {facing:"west",rotation:[90.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 3 run data modify storage gm4_smelteries:placement temp set value {facing:"north",rotation:[180.0f,0.0f]} +execute if score $single_rotation gm4_machine_data matches 4 run data modify storage gm4_smelteries:placement temp set value {facing:"east",rotation:[-90.0f,0.0f]} function gm4_smelteries:machine/place_rotated with storage gm4_smelteries:placement temp diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction index 56089f77a1..489ef8b20d 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/place_rotated.mcfunction @@ -1,6 +1,7 @@ # places the smeltery down based on rotation # @s = player who placed the smeltery # located at the center of the placed block, rotated same cardinal direction as @s +# with {facing, rotation} # run from gm4_smelteries:machine/create # place furnace @@ -13,7 +14,7 @@ $summon item_display ~ ~ ~ {\ Tags:["gm4_no_edit","gm4_smeltery_cauldron","gm4_machine_display","smithed.entity","smithed.strict","gm4_new_machine"],\ item_display:head,\ brightness:{sky:15,block:15},\ - Rotation:$(Rotation),\ + Rotation:$(rotation),\ transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0.1875f,-1.0f],scale:[0.625,0.625,0.625]}\ } @@ -24,7 +25,7 @@ $summon item_display ~ ~ ~ {\ item:{id:"minecraft:iron_block",count:1,components:{"minecraft:custom_model_data":{"strings":["gm4_smelteries:block/smeltery_unlit"]}}},\ item_display:head,\ brightness:{sky:15,block:15},\ - Rotation:$(Rotation),\ + Rotation:$(rotation),\ transformation:{left_rotation:[0f,0f,0f,1f],right_rotation:[0f,0f,0f,1f],translation:[0f,0.601f,0f],scale:[0.438,0.438,0.438]}\ } -$summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:$(Rotation)} +$summon marker ~ ~ ~ {Tags:["gm4_smeltery","gm4_machine_marker","smithed.block","smithed.entity","smithed.strict","gm4_new_machine"],CustomName:"gm4_smeltery",Rotation:$(rotation)} From 56370d4c7d8e9f5c4eca081a0e606220b4c76d16 Mon Sep 17 00:00:00 2001 From: runcows <124551271+runcows@users.noreply.github.com> Date: Wed, 25 Feb 2026 14:34:46 +0900 Subject: [PATCH 08/10] Update destroy.mcfunction with TODO to clean up legacy commands later --- .../data/gm4_smelteries/function/machine/destroy.mcfunction | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction b/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction index 3560a47422..fc3b492488 100644 --- a/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction +++ b/gm4_smelteries/data/gm4_smelteries/function/machine/destroy.mcfunction @@ -3,7 +3,7 @@ # located at @s # run from gm4_smelteries:machine/verify_destroy -# legacy cleanup +# legacy cleanup - TODO: remove this when we stop supporting the upgrade path execute positioned ~ ~-0.3 ~ run kill @e[type=armor_stand,tag=gm4_smeltery_stand,limit=1,distance=..0.01] scoreboard players operation $current gm4_smelt_id = @s gm4_smelt_id execute positioned ^ ^-1.5 ^-1 as @e[type=armor_stand,tag=gm4_smeltery_cauldron,distance=..0.01] if score @s gm4_smelt_id = $current gm4_smelt_id run kill @s From ef91ca0a00ab794a7334c26236649c6f9b2549d2 Mon Sep 17 00:00:00 2001 From: runcows Date: Wed, 25 Feb 2026 22:07:36 +0900 Subject: [PATCH 09/10] add me to credit :D --- gm4_smelteries/beet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/gm4_smelteries/beet.yaml b/gm4_smelteries/beet.yaml index 5b413db329..d88e3c2818 100644 --- a/gm4_smelteries/beet.yaml +++ b/gm4_smelteries/beet.yaml @@ -40,6 +40,7 @@ meta: - Misode - SpecialBuilder32 - BPR + - runcows Textures By: - Kyrius Icon Design: From 8849f5472d87b5cdb17091d9302959ba057083e1 Mon Sep 17 00:00:00 2001 From: runcows <124551271+runcows@users.noreply.github.com> Date: Wed, 25 Feb 2026 23:39:14 +0900 Subject: [PATCH 10/10] revert version bump --- gm4_smelteries/beet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gm4_smelteries/beet.yaml b/gm4_smelteries/beet.yaml index d88e3c2818..7d377b98f2 100644 --- a/gm4_smelteries/beet.yaml +++ b/gm4_smelteries/beet.yaml @@ -1,6 +1,6 @@ id: gm4_smelteries name: Smelteries -version: 1.9.X +version: 1.8.X data_pack: load: .