diff --git a/data/dl_load/function/load/all.mcfunction b/data/dl_load/function/load/all.mcfunction index 71480eb..85bf80d 100644 --- a/data/dl_load/function/load/all.mcfunction +++ b/data/dl_load/function/load/all.mcfunction @@ -13,6 +13,14 @@ data modify storage datalib:input message set value "Starting..." data modify storage datalib:input color set value "aqua" function datalib:systems/log/add with storage datalib:input {} +# RT Origin — Gate 1: watermark doğrulama +function datalib:_rt_origin +execute unless data storage datalib:engine {global:{rt_origin_verified:1b}} run return run tellraw @s {"text":"Exit code: 1 — rt_origin verification failed","color":"red"} + +# RT Origin — Gate 2: fork kontrolü +# fork_verified field yoksa onay kapısını aç (1b=orijinal, 0b=fork onaylı, her ikisi de geçer) +execute unless data storage datalib:engine global.fork_verified run return run function dl_load:load/fork + # Stage 2 debug summon minecraft:marker ~ ~ ~ {Tags:["datalib.stage2"],CustomName:'{"text":"DL"}'} execute as @e[type=minecraft:marker,tag=datalib.stage2,limit=1] run say Loading scoreboards... @@ -52,4 +60,8 @@ data modify storage datalib:input message set value "Loaded." data modify storage datalib:input color set value "green" function datalib:systems/log/add with storage datalib:input {} +# RT Origin verification +function datalib:_rt_origin +execute unless data storage datalib:engine {global:{rt_origin_verified:1b}} run return run tellraw @s {"text":"Exit code: 1 — rt_origin verification failed","color":"red"} + function dl_load:load/internal/finalize \ No newline at end of file diff --git a/data/dl_load/function/load/fork.mcfunction b/data/dl_load/function/load/fork.mcfunction new file mode 100644 index 0000000..9300140 --- /dev/null +++ b/data/dl_load/function/load/fork.mcfunction @@ -0,0 +1,27 @@ +# dl_load:load/fork +# Fork confirmation gate — called when fork_verified is not set. +# Player is prompted to confirm with /yes or /no. +# +# USAGE: +# /function dl_load:load/fork +# +# CONFIRM: /function dl_load:load/fork_yes +# CANCEL: /function dl_load:load/fork_no + +scoreboard objectives add dl.fork_gate dummy + +# Drop silently if a gate is already open +execute if score #pending dl.fork_gate matches 1 run return 0 + +scoreboard players set #pending dl.fork_gate 1 +scoreboard players set #confirmed dl.fork_gate 0 + +summon minecraft:marker ~ ~ ~ {Tags:["datalib.fork_gate"],CustomName:{"text":"DL"}} +execute as @e[type=minecraft:marker,tag=datalib.fork_gate,limit=1] run say [DL FORK GATE] This copy is not marked as a fork. +execute as @e[type=minecraft:marker,tag=datalib.fork_gate,limit=1] run say [DL FORK GATE] Do you want to continue? +execute as @e[type=minecraft:marker,tag=datalib.fork_gate,limit=1] run say [DL FORK GATE] YES: /function dl_load:load/fork_yes +execute as @e[type=minecraft:marker,tag=datalib.fork_gate,limit=1] run say [DL FORK GATE] NO: /function dl_load:load/fork_no +execute as @e[type=minecraft:marker,tag=datalib.fork_gate,limit=1] run say [DL FORK GATE] Auto-cancel fires in 30 seconds. +execute as @e[type=minecraft:marker,tag=datalib.fork_gate,limit=1] run kill @s + +schedule function dl_load:load/fork_no 30s replace diff --git a/data/dl_load/function/load/fork_no.mcfunction b/data/dl_load/function/load/fork_no.mcfunction new file mode 100644 index 0000000..a018f18 --- /dev/null +++ b/data/dl_load/function/load/fork_no.mcfunction @@ -0,0 +1,22 @@ +# dl_load:load/fork_no +# Fork confirmation gate — /no response or 30s timeout. +# Runs normal load, fork_verified is not set. +# +# USAGE: +# /function dl_load:load/fork_no + +# Guard: gate must be open +execute unless score #pending dl.fork_gate matches 1 run return 0 + +# Guard: already confirmed +execute if score #confirmed dl.fork_gate matches 1 run return 0 + +scoreboard players set #pending dl.fork_gate 0 + +schedule clear dl_load:load/fork_no + +summon minecraft:marker ~ ~ ~ {Tags:["datalib.fork_no"],CustomName:{"text":"DL"}} +execute as @e[type=minecraft:marker,tag=datalib.fork_no,limit=1] run say [DL FORK GATE] Cancelled — continuing with normal load. +execute as @e[type=minecraft:marker,tag=datalib.fork_no,limit=1] run kill @s + +function dl_load:load/yes diff --git a/data/dl_load/function/load/fork_yes.mcfunction b/data/dl_load/function/load/fork_yes.mcfunction new file mode 100644 index 0000000..837bb63 --- /dev/null +++ b/data/dl_load/function/load/fork_yes.mcfunction @@ -0,0 +1,26 @@ +# dl_load:load/fork_yes +# Fork confirmation gate — /yes response. +# Runs safe_load and sets fork_verified to 0b. +# +# USAGE: +# /function dl_load:load/fork_yes + +# Guard: gate must be open +execute unless score #pending dl.fork_gate matches 1 run return 0 + +# Guard: already confirmed +execute if score #confirmed dl.fork_gate matches 1 run return 0 + +scoreboard players set #confirmed dl.fork_gate 1 +scoreboard players set #pending dl.fork_gate 0 + +schedule clear dl_load:load/fork_no + +summon minecraft:marker ~ ~ ~ {Tags:["datalib.fork_yes"],CustomName:{"text":"DL"}} +execute as @e[type=minecraft:marker,tag=datalib.fork_yes,limit=1] run say [DL FORK GATE] Confirmed — running safe_load. +execute as @e[type=minecraft:marker,tag=datalib.fork_yes,limit=1] run kill @s + +# fork_verified = 0b (fork, confirmed by operator) +data modify storage datalib:engine global.fork_verified set value 0b + +function dl_load:safe_load/yes