From dffdfd9c95ccc6d5e7917a95645ea1252280c839 Mon Sep 17 00:00:00 2001 From: BPR02 Date: Tue, 9 Dec 2025 18:57:49 -0800 Subject: [PATCH 1/3] make apple trees check a region before being placed --- .../function/sapling/generate_tree.mcfunction | 2 ++ .../data/gm4_apple_trees/tags/block/tree_placeable.json | 8 ++++++++ 2 files changed, 10 insertions(+) create mode 100644 gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json diff --git a/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction b/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction index c3346e0a19..fbc0b1e72d 100644 --- a/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction +++ b/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction @@ -5,6 +5,8 @@ # place jigsaw gm4_apple_trees:apple_trees gm4_apple_trees:trunk 2 ~ ~1 ~ # jigsaw generation not usable after world-gen due to inherent position-based randomizaton +execute store result score $blocks_moved gm4_apple_data run clone ~-4 ~1 ~-4 ~4 ~7 ~4 ~-4 ~1 ~-4 filtered #gm4_apple_trees:tree_placeable force +execute unless score $blocks_moved gm4_apple_data matches 567 run return fail function gm4_apple_trees:sapling/grow/generate_random_tree execute if block ~ ~-1 ~ grass_block run setblock ~ ~-1 ~ dirt execute positioned ~ ~1 ~ as @e[type=armor_stand,tag=gm4_apple_uninitialized,distance=..6] run function gm4_apple_trees:leaf/initialize diff --git a/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json b/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json new file mode 100644 index 0000000000..cbd8848e9c --- /dev/null +++ b/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json @@ -0,0 +1,8 @@ +{ + "values": [ + "#minecraft:replaceable_by_trees", + "#air", + "#minecraft:logs", + "#minecraft:saplings" + ] +} From 7a22aabbeab4b787930fb93e1ac7eb67285e8060 Mon Sep 17 00:00:00 2001 From: BPR02 Date: Tue, 23 Dec 2025 13:35:40 -0800 Subject: [PATCH 2/3] use predicate to check blocks --- gm4_apple_trees/beet.yaml | 3 +++ .../function/sapling/generate_tree.mcfunction | 3 +-- .../predicate/valid_placement.json | 22 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 gm4_apple_trees/data/gm4_apple_trees/predicate/valid_placement.json diff --git a/gm4_apple_trees/beet.yaml b/gm4_apple_trees/beet.yaml index 00477f96c4..56f35512cc 100644 --- a/gm4_apple_trees/beet.yaml +++ b/gm4_apple_trees/beet.yaml @@ -2,6 +2,9 @@ id: gm4_apple_trees name: Apple Trees version: 2.5.X +require: + - bolt + data_pack: load: . diff --git a/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction b/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction index fbc0b1e72d..b72273b1eb 100644 --- a/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction +++ b/gm4_apple_trees/data/gm4_apple_trees/function/sapling/generate_tree.mcfunction @@ -5,8 +5,7 @@ # place jigsaw gm4_apple_trees:apple_trees gm4_apple_trees:trunk 2 ~ ~1 ~ # jigsaw generation not usable after world-gen due to inherent position-based randomizaton -execute store result score $blocks_moved gm4_apple_data run clone ~-4 ~1 ~-4 ~4 ~7 ~4 ~-4 ~1 ~-4 filtered #gm4_apple_trees:tree_placeable force -execute unless score $blocks_moved gm4_apple_data matches 567 run return fail +execute unless predicate gm4_apple_trees:valid_placement run return fail function gm4_apple_trees:sapling/grow/generate_random_tree execute if block ~ ~-1 ~ grass_block run setblock ~ ~-1 ~ dirt execute positioned ~ ~1 ~ as @e[type=armor_stand,tag=gm4_apple_uninitialized,distance=..6] run function gm4_apple_trees:leaf/initialize diff --git a/gm4_apple_trees/data/gm4_apple_trees/predicate/valid_placement.json b/gm4_apple_trees/data/gm4_apple_trees/predicate/valid_placement.json new file mode 100644 index 0000000000..2f9187d009 --- /dev/null +++ b/gm4_apple_trees/data/gm4_apple_trees/predicate/valid_placement.json @@ -0,0 +1,22 @@ +check = [] +for x in range(-4,5): + for y in range(1,8): + for z in range(-4,5): + check.append( + { + "condition": "minecraft:location_check", + "offsetX": x, + "offsetY": y, + "offsetZ": z, + "predicate": { + "block": { + "blocks": "#gm4_apple_trees:tree_placeable" + } + } + } + ) + +{ + "condition": "minecraft:all_of", + "terms": check +} From 3e94fed6add3f8463523b146b2be6ecbdee9584d Mon Sep 17 00:00:00 2001 From: Misode Date: Tue, 23 Dec 2025 23:46:42 +0100 Subject: [PATCH 3/3] Format block tag --- .../data/gm4_apple_trees/tags/block/tree_placeable.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json b/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json index cbd8848e9c..b03fe5d190 100644 --- a/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json +++ b/gm4_apple_trees/data/gm4_apple_trees/tags/block/tree_placeable.json @@ -1,8 +1,8 @@ { "values": [ - "#minecraft:replaceable_by_trees", - "#air", + "#minecraft:air", "#minecraft:logs", + "#minecraft:replaceable_by_trees", "#minecraft:saplings" ] }