Przeglądaj źródła

钻石风暴部署

LTCatt 5 lat temu
rodzic
commit
ce0274d0de

+ 7 - 0
data/mini/functions/diamond/game_end.mcfunction

@@ -1,3 +1,10 @@
 # 游戏结束
 # 游戏结束
 forceload remove 1000 5000 1064 5064
 forceload remove 1000 5000 1064 5064
+
+# Gamerule 调整
 gamerule doDaylightCycle false
 gamerule doDaylightCycle false
+gamerule doLimitedCrafting true
+gamerule keepInventory true
+
+# 计算得分
+execute as @a[team=playing] run scoreboard players operation @s mini_score += @s diamond

+ 8 - 2
data/mini/functions/diamond/game_init.mcfunction

@@ -1,10 +1,11 @@
 # 初始化钻石地图
 # 初始化钻石地图
 forceload add 1000 5000 1064 5064
 forceload add 1000 5000 1064 5064
 
 
-scoreboard players set $finish_mode mem 1
+scoreboard players reset * diamond
+scoreboard players set $finish_mode mem 0
 
 
 # 调整时间
 # 调整时间
-time set 2000t
+time set 9400t
 
 
 # 生成地图
 # 生成地图
 setblock 1000 255 5000 minecraft:structure_block[mode=load]{metadata:"",mirror:"NONE",ignoreEntities:1b,powered:0b,seed:0L,author:"LTCat",rotation:"NONE",posX:0,mode:"LOAD",posY:-22,sizeX:20,posZ:0,integrity:1.0f,showair:0b,name:"mini:diamond",sizeY:23,sizeZ:20,showboundingbox:1b}
 setblock 1000 255 5000 minecraft:structure_block[mode=load]{metadata:"",mirror:"NONE",ignoreEntities:1b,powered:0b,seed:0L,author:"LTCat",rotation:"NONE",posX:0,mode:"LOAD",posY:-22,sizeX:20,posZ:0,integrity:1.0f,showair:0b,name:"mini:diamond",sizeY:23,sizeZ:20,showboundingbox:1b}
@@ -18,3 +19,8 @@ scoreboard players set $remove_resistance mem 1
 team modify playing friendlyFire true
 team modify playing friendlyFire true
 team modify playing collisionRule always
 team modify playing collisionRule always
 gamerule fallDamage true
 gamerule fallDamage true
+
+# Gamerule 调整
+# TODO: 换一个更好的让玩家合成的方法
+gamerule doLimitedCrafting false
+gamerule keepInventory false

+ 2 - 2
data/mini/functions/diamond/game_start.mcfunction

@@ -3,8 +3,8 @@ scoreboard players set $countdown mem 300
 
 
 # HUD
 # HUD
 execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay list health_disp
 execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay list health_disp
-execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay belowName health_disp
-execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay sidebar total_score
+execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay belowName diamond
+execute if score $mini_type mem matches 5 run scoreboard objectives setdisplay sidebar diamond
 scoreboard players set $bossbar_color mem 4
 scoreboard players set $bossbar_color mem 4
 scoreboard players set $countdown_max mem 300
 scoreboard players set $countdown_max mem 300
 scoreboard players set $bossbar_type mem 2
 scoreboard players set $bossbar_type mem 2

+ 3 - 0
data/mini/functions/diamond/init.mcfunction

@@ -0,0 +1,3 @@
+# 重置计分板
+scoreboard objectives remove diamond
+scoreboard objectives add diamond dummy "持有钻石数"

+ 12 - 0
data/mini/functions/diamond/player_death.mcfunction

@@ -0,0 +1,12 @@
+
+# 状态效果
+effect clear @s
+effect give @s saturation 1000000 0 true
+gamerule naturalRegeneration false
+
+# 复活特效
+effect give @s slowness 3 3 true
+effect give @s blindness 3 0 true
+
+# 传送玩家
+spreadplayers 1010 5010 6 9 under 245 false @s[team=playing,tag=!rejoining]

+ 7 - 6
data/mini/functions/diamond/player_enter.mcfunction

@@ -4,16 +4,17 @@ function lib:sounds/music/mini_slow
 title @s clear
 title @s clear
 title @s actionbar ""
 title @s actionbar ""
 
 
-# 状态效果
-effect clear @s
-effect give @s saturation 1000000 0 true
-gamerule naturalRegeneration false
+# 触发复活
+function mini:diamond/player_death
+effect give @s slowness 0
+effect give @s blindness 0
 
 
 # 设置玩家生命
 # 设置玩家生命
 attribute @s generic.max_health base set 20
 attribute @s generic.max_health base set 20
 
 
-# 传送玩家
-spreadplayers 1010 6010 4 6 under 255 false @s[team=playing,tag=!rejoining]
+# 计分板重置
+scoreboard players reset @s diamond
+scoreboard players set @s[team=playing,tag=!rejoining] diamond 0
 
 
 # 调整模式
 # 调整模式
 gamemode spectator @s[team=!debugging]
 gamemode spectator @s[team=!debugging]

+ 2 - 0
data/mini/functions/diamond/player_finished.mcfunction

@@ -0,0 +1,2 @@
+# 玩家成功时由玩家自己触发
+function mini:main/player_finished

+ 7 - 0
data/mini/functions/diamond/player_intro.mcfunction

@@ -0,0 +1,7 @@
+# 向单个玩家展示小游戏介绍
+tp @s[team=!debugging] 990.34 245.81 5021.73 2043.85 13.77
+tellraw @s ["",{"text":"\n >> 钻石风暴 >>\n\n","color":"gold","bold":true}," 制作铁镐, 挖取钻石, 然后保住自己的小命!\n"]
+tellraw @s ["",{"text": " <积分制> ","color":"red","bold": true}, {"text":"太阳落山时游戏即会结束, 然后根据物品栏中的钻石数决定排名。","color":"gray"}]
+tellraw @s ["",{"text": " <PVP> ","color":"light_purple","bold": true}, {"text":"死亡会掉落所有物品, 被击杀后立即复活。","color":"gray"}]
+tellraw @s ["",{"text": " <早期测试> ","color":"dark_red","bold": true}, {"text":"此游戏目前尚在早期测试, 可能非常不稳定!","color":"dark_red"}]
+tellraw @s ""

+ 9 - 0
data/mini/functions/diamond/tick20.mcfunction

@@ -0,0 +1,9 @@
+
+# 显示倒计时
+execute if score $countdown mem matches ..10 run title @a times 3 14 2
+execute if score $countdown mem matches ..10 run title @a subtitle {"score":{"name":"$countdown","objective":"mem"}}
+execute if score $countdown mem matches ..10 run title @a title [""]
+execute if score $countdown mem matches ..10 as @a at @s run function lib:sounds/hit2
+
+# 0s:游戏结束
+execute if score $countdown mem matches 0 run function mini:main/game_end

+ 2 - 0
data/mini/functions/diamond/tick5.mcfunction

@@ -0,0 +1,2 @@
+# 更新钻石数量
+execute as @a[team=playing] store result score @s diamond run clear @s diamond 0

+ 3 - 0
data/mini/functions/diamond/watcher_limit.mcfunction

@@ -0,0 +1,3 @@
+# 观察者限制飞行范围
+execute as @a[gamemode=spectator,x=1010,y=240,z=5010,distance=40..] run spectate
+tp @a[gamemode=spectator,x=1010,y=240,z=5010,distance=40..,team=!debugging] 1010 250 1010

+ 1 - 0
data/mini/functions/main/game_end.mcfunction

@@ -4,6 +4,7 @@ execute if score $mini_type mem matches 2 run function mini:tntrun/game_end
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_end
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_end
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_end
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_end
 execute if score $mini_type mem matches 5 run function mini:phantom/game_end
 execute if score $mini_type mem matches 5 run function mini:phantom/game_end
+execute if score $mini_type mem matches 6 run function mini:diamond/game_end
 
 
 # 计算排名
 # 计算排名
 tag @a remove mini_rank1
 tag @a remove mini_rank1

+ 1 - 0
data/mini/functions/main/game_init.mcfunction

@@ -9,3 +9,4 @@ execute if score $mini_type mem matches 2 run function mini:tntrun/game_init
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_init
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_init
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_init
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_init
 execute if score $mini_type mem matches 5 run function mini:phantom/game_init
 execute if score $mini_type mem matches 5 run function mini:phantom/game_init
+execute if score $mini_type mem matches 6 run function mini:diamond/game_init

+ 2 - 1
data/mini/functions/main/game_start.mcfunction

@@ -2,4 +2,5 @@ execute if score $mini_type mem matches 1 run function mini:parkour/game_start
 execute if score $mini_type mem matches 2 run function mini:tntrun/game_start
 execute if score $mini_type mem matches 2 run function mini:tntrun/game_start
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_start
 execute if score $mini_type mem matches 3 run function mini:hotpm/game_start
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_start
 execute if score $mini_type mem matches 4 run function mini:colormatch/game_start
-execute if score $mini_type mem matches 5 run function mini:phantom/game_start
+execute if score $mini_type mem matches 5 run function mini:phantom/game_start
+execute if score $mini_type mem matches 6 run function mini:diamond/game_start

+ 1 - 0
data/mini/functions/main/init.mcfunction

@@ -2,6 +2,7 @@
 function mini:tntrun/init
 function mini:tntrun/init
 function mini:parkour/init
 function mini:parkour/init
 function mini:phantom/init
 function mini:phantom/init
+function mini:diamond/init
 
 
 # 计分板初始化
 # 计分板初始化
 scoreboard objectives remove mini_score
 scoreboard objectives remove mini_score

+ 1 - 0
data/mini/functions/main/player_death.mcfunction

@@ -1,2 +1,3 @@
 # 玩家死亡后触发
 # 玩家死亡后触发
 execute if score $mini_type mem matches 5 run function mini:phantom/player_failed
 execute if score $mini_type mem matches 5 run function mini:phantom/player_failed
+execute if score $mini_type mem matches 6 run function mini:diamond/player_death

+ 2 - 1
data/mini/functions/main/player_enter.mcfunction

@@ -13,4 +13,5 @@ execute if score $mini_type mem matches 1 run function mini:parkour/player_enter
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_enter
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_enter
 execute if score $mini_type mem matches 3 run function mini:hotpm/player_enter
 execute if score $mini_type mem matches 3 run function mini:hotpm/player_enter
 execute if score $mini_type mem matches 4 run function mini:colormatch/player_enter
 execute if score $mini_type mem matches 4 run function mini:colormatch/player_enter
-execute if score $mini_type mem matches 5 run function mini:phantom/player_enter
+execute if score $mini_type mem matches 5 run function mini:phantom/player_enter
+execute if score $mini_type mem matches 6 run function mini:diamond/player_enter

+ 2 - 1
data/mini/functions/main/player_intro.mcfunction

@@ -3,4 +3,5 @@ execute if score $mini_type mem matches 1 run function mini:parkour/player_intro
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_intro
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_intro
 execute if score $mini_type mem matches 3 run function mini:hotpm/player_intro
 execute if score $mini_type mem matches 3 run function mini:hotpm/player_intro
 execute if score $mini_type mem matches 4 run function mini:colormatch/player_intro
 execute if score $mini_type mem matches 4 run function mini:colormatch/player_intro
-execute if score $mini_type mem matches 5 run function mini:phantom/player_intro
+execute if score $mini_type mem matches 5 run function mini:phantom/player_intro
+execute if score $mini_type mem matches 6 run function mini:diamond/player_intro

+ 0 - 10
data/mini/functions/main/show_result.mcfunction

@@ -3,13 +3,3 @@
 execute if entity @a[tag=mini_rank2] if entity @a[tag=mini_rank3] run tellraw @s [{"text":"\n >> 小游戏结束 >>\n\n","color":"gold","bold":true},{"text": " 第一名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank1]","color":"white","bold": false},{"text": "\n 第二名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank2]","color":"white","bold": false},{"text": "\n 第三名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank3]","color":"white","bold": false},"\n"]
 execute if entity @a[tag=mini_rank2] if entity @a[tag=mini_rank3] run tellraw @s [{"text":"\n >> 小游戏结束 >>\n\n","color":"gold","bold":true},{"text": " 第一名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank1]","color":"white","bold": false},{"text": "\n 第二名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank2]","color":"white","bold": false},{"text": "\n 第三名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank3]","color":"white","bold": false},"\n"]
 execute if entity @a[tag=mini_rank2] unless entity @a[tag=mini_rank3] run tellraw @s [{"text":"\n >> 小游戏结束 >>\n\n","color":"gold","bold":true},{"text": " 第一名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank1]","color":"white","bold": false},{"text": "\n 第二名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank2]","color":"white","bold": false},"\n"]
 execute if entity @a[tag=mini_rank2] unless entity @a[tag=mini_rank3] run tellraw @s [{"text":"\n >> 小游戏结束 >>\n\n","color":"gold","bold":true},{"text": " 第一名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank1]","color":"white","bold": false},{"text": "\n 第二名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank2]","color":"white","bold": false},"\n"]
 execute unless entity @a[tag=mini_rank2] run tellraw @s [{"text":"\n >> 小游戏结束 >>\n\n","color":"gold","bold":true},{"text": " 第一名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank1]","color":"white","bold": false},"\n"]
 execute unless entity @a[tag=mini_rank2] run tellraw @s [{"text":"\n >> 小游戏结束 >>\n\n","color":"gold","bold":true},{"text": " 第一名 - ","color":"green","bold": false},{"selector": "@a[tag=mini_rank1]","color":"white","bold": false},"\n"]
-
-# 记分
-# scoreboard players add @s[tag=mini_rank1,team=!watching] total_score 3
-# scoreboard players add @s[tag=mini_rank1,team=!watching] total_score_disp 3
-# scoreboard players add @s[tag=mini_rank2,team=!watching] total_score 2
-# scoreboard players add @s[tag=mini_rank2,team=!watching] total_score_disp 2
-# scoreboard players add @s[tag=mini_rank3,team=!watching] total_score 1
-# scoreboard players add @s[tag=mini_rank3,team=!watching] total_score_disp 1
-# scoreboard players add @s[tag=mini_rank4,team=!watching] total_score 0
-# scoreboard players add @s[tag=mini_rank4,team=!watching] total_score_disp 0

+ 1 - 0
data/mini/functions/main/tick20.mcfunction

@@ -2,6 +2,7 @@
 # 触发单个模块
 # 触发单个模块
 execute if score $mini_type mem matches 1 run function mini:parkour/tick20
 execute if score $mini_type mem matches 1 run function mini:parkour/tick20
 execute if score $mini_type mem matches 5 run function mini:phantom/tick20
 execute if score $mini_type mem matches 5 run function mini:phantom/tick20
+execute if score $mini_type mem matches 6 run function mini:diamond/tick20
 
 
 # 结束游戏判定
 # 结束游戏判定
 function mini:main/check_game_end
 function mini:main/check_game_end

+ 1 - 0
data/mini/functions/main/tick5.mcfunction

@@ -3,6 +3,7 @@
 execute if score $mini_type mem matches 1 run function mini:parkour/tick5
 execute if score $mini_type mem matches 1 run function mini:parkour/tick5
 execute if score $mini_type mem matches 3 run function mini:hotpm/tick5
 execute if score $mini_type mem matches 3 run function mini:hotpm/tick5
 execute if score $mini_type mem matches 5 run function mini:phantom/tick5
 execute if score $mini_type mem matches 5 run function mini:phantom/tick5
+execute if score $mini_type mem matches 6 run function mini:diamond/tick5
 
 
 # 同步生命值
 # 同步生命值
 scoreboard players reset * temp
 scoreboard players reset * temp

+ 2 - 1
data/mini/functions/main/watcher_limit.mcfunction

@@ -3,4 +3,5 @@ execute if score $mini_type mem matches 1 run function mini:parkour/watcher_limi
 execute if score $mini_type mem matches 2 run function mini:tntrun/watcher_limit
 execute if score $mini_type mem matches 2 run function mini:tntrun/watcher_limit
 execute if score $mini_type mem matches 3 run function mini:hotpm/watcher_limit
 execute if score $mini_type mem matches 3 run function mini:hotpm/watcher_limit
 execute if score $mini_type mem matches 4 run function mini:colormatch/watcher_limit
 execute if score $mini_type mem matches 4 run function mini:colormatch/watcher_limit
-execute if score $mini_type mem matches 5 run function mini:phantom/watcher_limit
+execute if score $mini_type mem matches 5 run function mini:phantom/watcher_limit
+execute if score $mini_type mem matches 6 run function mini:diamond/watcher_limit

+ 8 - 0
data/test/functions/mini/diamond.mcfunction

@@ -0,0 +1,8 @@
+# 测试用:快速开始钻石风暴
+team join playing @a
+function ltw:state/0/start_gameparty
+scoreboard players set $round mem 5
+scoreboard players set $mini_type mem 6
+function mini:main/game_init
+function ltw:state/4/state_enter
+say 已开始单个测试游戏!