Browse Source

阶段 7 就位

LTCatt 6 years ago
parent
commit
da392da9f1

+ 1 - 0
data/ltw/functions/clock/tick2.mcfunction

@@ -7,6 +7,7 @@ execute if score $state mem matches 3 run function ltw:state/3/tick2
 execute if score $state mem matches 4 run function ltw:state/4/tick2
 execute if score $state mem matches 5 run function ltw:state/5/tick2
 execute if score $state mem matches 6 run function ltw:state/6/tick2
+execute if score $state mem matches 7 run function ltw:state/7/tick2
 execute if score $state mem matches 8 run function ltw:state/8/tick2
 
 # 全局倒计时

+ 2 - 0
data/ltw/functions/clock/tick20.mcfunction

@@ -6,6 +6,8 @@ execute if score $state mem matches 3 run function ltw:state/3/tick20
 execute if score $state mem matches 4 run function ltw:state/4/tick20
 execute if score $state mem matches 5 run function ltw:state/5/tick20
 execute if score $state mem matches 6 run function ltw:state/6/tick20
+execute if score $state mem matches 7 run function ltw:state/7/tick20
+execute if score $state mem matches 8 run function ltw:state/8/tick20
 
 # 全局倒计时
 execute if score $countdown mem matches 1.. run scoreboard players remove $countdown mem 1

+ 1 - 0
data/ltw/functions/main/player_enter_rejoin.mcfunction

@@ -15,5 +15,6 @@ execute if score $state mem matches 3 run function ltw:state/3/player_enter
 execute if score $state mem matches 4 run function ltw:state/4/player_enter
 execute if score $state mem matches 5 run function ltw:state/5/player_enter
 execute if score $state mem matches 6 run function ltw:state/6/player_enter
+execute if score $state mem matches 7 run function ltw:state/7/player_enter
 execute if score $state mem matches 8 run function ltw:state/8/player_enter
 tag @s remove rejoining

+ 1 - 0
data/ltw/functions/main/player_enter_watcher.mcfunction

@@ -18,5 +18,6 @@ execute if score $state mem matches 3 run function ltw:state/3/player_enter
 execute if score $state mem matches 4 run function ltw:state/4/player_enter
 execute if score $state mem matches 5 run function ltw:state/5/player_enter
 execute if score $state mem matches 6 run function ltw:state/6/player_enter
+execute if score $state mem matches 7 run function ltw:state/7/player_enter
 execute if score $state mem matches 8 run function ltw:state/8/player_enter
 tag @s remove rejoining

+ 16 - 0
data/ltw/functions/state/7/player_enter.mcfunction

@@ -0,0 +1,16 @@
+# 对单个玩家的处理(如果玩家中途加入就会执行此函数)
+title @s clear
+title @s actionbar ""
+
+# 重置玩家血量上限
+execute as @a run attribute @s generic.max_health base set 20
+
+# 状态效果
+effect clear @s
+effect give @s saturation 1000000 0 true
+gamerule naturalRegeneration true
+effect give @s blindness 1000000 0 true
+
+# 自由旁观
+gamemode spectator @s
+spectate

+ 38 - 0
data/ltw/functions/state/7/state_enter.mcfunction

@@ -0,0 +1,38 @@
+# 要求系统进入状态 7(小游戏阶段结束,初始化奖励房)
+scoreboard players set $state mem 7
+execute as @a run function ltw:state/7/player_enter
+
+# HUD
+scoreboard objectives setdisplay belowName total_score_disp
+scoreboard objectives setdisplay sidebar total_score
+scoreboard objectives setdisplay list total_score_disp
+
+# 初始化倒计时
+scoreboard players set $countdown mem 12
+
+# 初始化地图
+forceload add 0 2000 50 2050
+kill @e[type=item]
+
+# 生成地图
+setblock 0 10 2000 minecraft:structure_block{mode:"LOAD",name:"ltw:select"}
+setblock 0 11 2000 minecraft:redstone_block
+
+# 生成奖励物品
+execute store result score $t_player_count mem if entity @a[tag=!watcher]
+# scoreboard players set $t_player_count mem 8
+execute if score $t_player_count mem matches 1.. positioned 9.0 12.5 2012.5 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 2.. positioned 5.0 12.5 2012.5 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 3.. positioned 1.5 12.5 2009.0 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 4.. positioned 1.5 12.5 2005.0 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 5.. positioned 5.0 12.5 2001.5 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 6.. positioned 9.0 12.5 2001.5 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 7.. positioned 12.5 12.5 2005.0 run function item:bonus_item/rank/random
+execute if score $t_player_count mem matches 8.. positioned 12.5 12.5 2009.0 run function item:bonus_item/rank/random
+
+# 生成拾取窗口
+execute as @e[type=item] at @s run fill ~-0.2 ~ ~-0.2 ~0.2 ~ ~0.2 air
+execute as @e[type=item] at @s run fill ~-0.2 ~1 ~-0.2 ~0.2 ~1 ~0.2 barrier
+
+# 防止幽灵实体,分 tick 执行
+schedule function ltw:state/7/state_enter2 1t

+ 0 - 0
data/ltw/functions/state/8/state_enter2.mcfunction → data/ltw/functions/state/7/state_enter2.mcfunction


+ 3 - 0
data/ltw/functions/state/7/tick2.mcfunction

@@ -0,0 +1,3 @@
+# 固定旁观
+execute as @a run spectate
+tp @a 0 10000 1000 0 0

+ 7 - 0
data/ltw/functions/state/7/tick20.mcfunction

@@ -0,0 +1,7 @@
+# 显示倒计时
+title @a times 3 14 2
+title @a subtitle {"score":{"name":"$countdown","objective":"mem"}}
+title @a title "选择奖励"
+
+# 退出状态
+execute if score $countdown mem matches 7 run function ltw:state/8/state_enter

+ 0 - 3
data/ltw/functions/state/8/player_enter.mcfunction

@@ -2,9 +2,6 @@
 title @s clear
 title @s actionbar ""
 
-# 重置玩家血量上限
-execute as @a run attribute @s generic.max_health base set 20
-
 # 状态效果
 effect clear @s
 effect give @s saturation 1000000 0 true

+ 0 - 27
data/ltw/functions/state/8/state_enter.mcfunction

@@ -7,33 +7,6 @@ scoreboard objectives setdisplay belowName total_score_disp
 scoreboard objectives setdisplay sidebar total_score
 scoreboard objectives setdisplay list total_score_disp
 
-# 初始化地图
-forceload add 0 2000 50 2050
-kill @e[type=item]
-
-# 生成地图
-setblock 0 10 2000 minecraft:structure_block{mode:"LOAD",name:"ltw:select"}
-setblock 0 11 2000 minecraft:redstone_block
-
-# 生成奖励物品
-execute store result score $t_player_count mem if entity @a[tag=!watcher]
-# scoreboard players set $t_player_count mem 8
-execute if score $t_player_count mem matches 1.. positioned 9.0 12.5 2012.5 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 2.. positioned 5.0 12.5 2012.5 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 3.. positioned 1.5 12.5 2009.0 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 4.. positioned 1.5 12.5 2005.0 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 5.. positioned 5.0 12.5 2001.5 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 6.. positioned 9.0 12.5 2001.5 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 7.. positioned 12.5 12.5 2005.0 run function item:bonus_item/rank/random
-execute if score $t_player_count mem matches 8.. positioned 12.5 12.5 2009.0 run function item:bonus_item/rank/random
-
-# 生成拾取窗口
-execute as @e[type=item] at @s run fill ~-0.2 ~ ~-0.2 ~0.2 ~ ~0.2 air
-execute as @e[type=item] at @s run fill ~-0.2 ~1 ~-0.2 ~0.2 ~1 ~0.2 barrier
-
-# 防止幽灵实体,分 tick 执行
-schedule function ltw:state/8/state_enter2 1t
-
 # 判断进入下一轮小游戏或结束
 # execute if score $game_type mem matches 1 if score $round mem matches ..5 run function ltw:state/7/continue_gameparty
 # execute if score $game_type mem matches 1 if score $round mem matches 6.. run function ltw:main/game_end

+ 0 - 0
data/ltw/functions/state/8/tick20.mcfunction


+ 1 - 1
data/test/functions/generate_bonus.mcfunction

@@ -2,6 +2,6 @@
 
 tag @a remove watcher
 scoreboard players set $round mem 4
-function ltw:state/8/state_enter
+function ltw:state/7/state_enter
 scoreboard players set $state mem 0
 gamemode creative @a