无实体全自动地皮(思路+少少少部分指令展示)

版本>1.18.60
前置指令
/scoreboard objectives add x dummy
/scoreboard objectives add z dummy
/scoreboard objectives add dx dummy
/scoreboard objectives add dz dummy
/scoreboard objectives add visit dummy
tag占用:indp ondp dp dpback dpbuy visit
结构占用:dp
购买地皮部分:(脉冲+连锁*n[无条件])
scoreboard players add @a x 0
scoreboard players add @a z 0
tag @p add dpbuy
execute @a[tag=dpbuy,scores={x=1..,z=1..}] ~~~ 购买失败输出
execute @a[tag=dpbuy,scores={x=0,z=0}] ~~~ 购买成功输出
execute @a[tag=dpbuy,scores={x=0,z=0}] ~~~ tag @s add dp
tag @a remove dpbuy
生成地皮部分:(脉冲+连锁*n[无条件],前半部分有条件)
summon armor_stand "dp" ~~~
tag @e[c=1,type=armor_stand,name="dp"] add dp
scoreboard players add x x 0
scoreboard players add z z 0
scoreboard players operation dx x = x x
scoreboard players operation dx x -= z z
scoreboard players test dx x 0 0
scoreboard players set z z 1 有
scoreboard players add x x 1 有
scoreboard players test dx x 1 *
scoreboard players operation x x >< z z 有
scoreboard players test dx x * -1
scoreboard players operation x x >< z z 有
scoreboard players add z z 1 有
scoreboard players operation @e[tag=dp] x = x x
scoreboard players operation @e[tag=dp] z = z z
execute @e[type=armor_stand,scores={x=1..,z=1..}] ~~~ tp @s 地皮集成开始位置
设定保存的模板x=n,z=m,可建筑区x=a,z=b
execute @e[type=armor_stand,scores={x=16..}] ~~~ tp @s ~16n~~
execute @e[type=armor_stand,scores={x=16..}] ~~~ scoreboard players remove @s x 16
execute @e[type=armor_stand,scores={x=8..}] ~~~ tp @s ~8n~~
execute @e[type=armor_stand,scores={x=8..}] ~~~ scoreboard players remove @s x 8
execute @e[type=armor_stand,scores={x=4..}] ~~~ tp @s ~4n~~
execute @e[type=armor_stand,scores={x=4..}] ~~~ scoreboard players remove @s x 4
execute @e[type=armor_stand,scores={x=2..}] ~~~ tp @s ~2n~~
execute @e[type=armor_stand,scores={x=2..}] ~~~ scoreboard players remove @s x 2
execute @e[type=armor_stand,scores={x=1..}] ~~~ tp @s ~1n~~
execute @e[type=armor_stand,scores={x=1..}] ~~~ scoreboard players remove @s x 1
execute @e[type=armor_stand,scores={z=16..}] ~~~ tp @s ~~~16m
execute @e[type=armor_stand,scores={z=16..}] ~~~ scoreboard players remove @s z 16
execute @e[type=armor_stand,scores={z=8..}] ~~~ tp @s ~~~8m
execute @e[type=armor_stand,scores={z=8..}] ~~~ scoreboard players remove @s z 8
execute @e[type=armor_stand,scores={z=4..}] ~~~ tp @s ~~~4m
execute @e[type=armor_stand,scores={z=4..}] ~~~ scoreboard players remove @s z 4
execute @e[type=armor_stand,scores={z=2..}] ~~~ tp @s ~~~2n
execute @e[type=armor_stand,scores={z=2..}] ~~~ scoreboard players remove @s z 2
execute @e[type=armor_stand,scores={z=1..}] ~~~ tp @s ~~~n
execute @e[type=armor_stand,scores={z=1..}] ~~~ scoreboard players remove @s z 1
支持961块地皮
execute @e[type=armor_stand,scores={x=0,z=0}] ~~~ tickingarea add ~~~ ~n-1~~m-1
execute @e[type=armor_stand,scores={x=0,z=0}] ~~~ structure load "dp" ~ 指定高度 ~
execute @e[type=armor_stand,scores={x=0,z=0}] ~~~ tp @a[tag=dp] 地皮上相对坐标
execute @e[type=armor_stand,scores={x=0,z=0}] ~~~ tickingarea remove "dp"
execute @e[type=armor_stand,scores={x=0,z=0}] ~~~ kill @s
tag @a remove dp
地皮主人判定部分(脉冲+连锁*n)
tag @a remove ondp(为拓展用的,必须加)
tag @a remove indp
execute @a ~~~ detect 地皮基层 bedrock -1 tag @s add ondp
execute @a ~~~ detect 倒数第二层 bedrock -1 tag @s add indp
scoreboard players add @a[tag=indp] visit 0
execute @a[scores={visit=0}] ~~~ summon armor_stand "dp" ~~~
execute @a[scores={visit=0}] ~~~ tag @e[c=1,type=armor_stand,name="dp"] add dp
execute @e[type=armor_stand,tag=dp] ~~~ scoreboard players operation @s x = @p x
execute @e[type=armor_stand,tag=dp] ~~~ scoreboard players operation @s z = @p z
execute @e[type=armor_stand,tag=dp] ~~~ scoreboard players operation @s dx = @p x
execute @e[type=armor_stand,tag=dp] ~~~ scoreboard players operation @s dz = @p z
execute @e[type=armor_stand,scores={x=1..,z=1..}] ~~~ tp @s 地皮集成开始位置
设定保存的模板x=n,z=m
execute @e[type=armor_stand,scores={x=16..}] ~~~ tp @s ~16n~~
execute @e[type=armor_stand,scores={x=16..}] ~~~ scoreboard players remove @s x 16
execute @e[type=armor_stand,scores={x=8..}] ~~~ tp @s ~8n~~
execute @e[type=armor_stand,scores={x=8..}] ~~~ scoreboard players remove @s x 8
execute @e[type=armor_stand,scores={x=4..}] ~~~ tp @s ~4n~~
execute @e[type=armor_stand,scores={x=4..}] ~~~ scoreboard players remove @s x 4
execute @e[type=armor_stand,scores={x=2..}] ~~~ tp @s ~2n~~
execute @e[type=armor_stand,scores={x=2..}] ~~~ scoreboard players remove @s x 2
execute @e[type=armor_stand,scores={x=1..}] ~~~ tp @s ~1n~~
execute @e[type=armor_stand,scores={x=1..}] ~~~ scoreboard players remove @s x 1
execute @e[type=armor_stand,scores={z=16..}] ~~~ tp @s ~~~16m
execute @e[type=armor_stand,scores={z=16..}] ~~~ scoreboard players remove @s z 16
execute @e[type=armor_stand,scores={z=8..}] ~~~ tp @s ~~~8m
execute @e[type=armor_stand,scores={z=8..}] ~~~ scoreboard players remove @s z 8
execute @e[type=armor_stand,scores={z=4..}] ~~~ tp @s ~~~4m
execute @e[type=armor_stand,scores={z=4..}] ~~~ scoreboard players remove @s z 4
execute @e[type=armor_stand,scores={z=2..}] ~~~ tp @s ~~~2n
execute @e[type=armor_stand,scores={z=2..}] ~~~ scoreboard players remove @s z 2
execute @e[type=armor_stand,scores={z=1..}] ~~~ tp @s ~~~n
execute @e[type=armor_stand,scores={z=1..}] ~~~ scoreboard players remove @s z 1
execute @e[type=armor_stand,tag=dp] ~~~ scoreboard players operation @s dx -= @a[scores={visit=0},x=~,y=-100,z=~,dx=n-1,dy=1000000,dz=m-1] x
execute @e[type=armor_stand,tag=dp] ~~~ scoreboard players operation @s dz -= @a[scores={visit=0},x=~,y=-100,z=~,dx=a-1,dy=1000000,dz=b-1] z
gamerule sendcommandfeedback false
execute @e[type=armor_stand,tag=dp,scores={dx=0,dz=0}] ~~~ scoreboard players add @s visit 1
execute @e[type=armor_stand,tag=dp,scores={dx=0,dz=0}] ~~~ scoreboard players operation @s visit += @e[r=0.01,type=armor_stand] visit
execute @e[type=armor_stand,tag=dp,scores={dx=0,dz=0,visit=3..}] ~~~ kill @e[r=0.01,type=armor_stand,tag=dp,scores={dx=0,dz=0,visit=3..}]
execute @e[type=armor_stand,tag=dp,scores={dx=0,dz=0}] ~~~ gamemode 0 @a[c=1,x=~(n-a)/2,y=-100,z=~(n-a)/2,dx=a-1,dy=1000000,dz=b-1,m=2]
title @a[scores={visit=1},tag=!indp,tag=ondp,m=0] actionbar 已离开地皮
title @a[scores={visit=1},tag=!indp,tag=ondp,m=2] actionbar 已停止拜访
execute @a[scores={visit=1},tag=!indp,tag=ondp,m=0] ~~~ gamemode 2 @s
gamerule sendcommandfeedback true
title @a[scores={visit=0},m=0] actionbar 欢迎回家
title @a[scores={visit=0},m=2] actionbar 正在拜访
scoreboard objectives remove visit
scoreboard objectives add visit dummy
scoreboard players add @a[tag=indp] visit 1