aqupa 4 yıl önce
ebeveyn
işleme
74f6d78dd2

+ 4 - 0
data/mini/functions/rgb/game/check_conditions.mcfunction

@@ -4,13 +4,17 @@ execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"i
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"on_ground"}]}}] run function mini:rgb/game/conditions/on_ground
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"in_water"}]}}] run function mini:rgb/game/conditions/in_water
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"on_pumpkin"}]}}] run function mini:rgb/game/conditions/on_pumpkin
+execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"on_ice"}]}}] run function mini:rgb/game/conditions/on_ice
+execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"on_grass_block"}]}}] run function mini:rgb/game/conditions/on_grass_block
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"smokey"}]}}] run function mini:rgb/game/conditions/smokey
+execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"in_fire"}]}}] run function mini:rgb/game/conditions/in_fire
 
 # 操作相关
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"shift"}]}}] run function mini:rgb/game/conditions/shift
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"obtain_rule"}]}}] run function mini:rgb/game/conditions/obtain_rule
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"place_rule"}]}}] run function mini:rgb/game/conditions/place_rule
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"destroy_rule"}]}}] run function mini:rgb/game/conditions/destroy_rule
+execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"dig_ice"}]}}] run function mini:rgb/game/conditions/dig_ice
 
 # 分数相关
 execute as @e[type=marker,tag=rgb_rule,nbt={data:{enable:1b,conditions:[{type:"red_ge"}]}}] run function mini:rgb/game/conditions/red_ge

+ 10 - 0
data/mini/functions/rgb/game/conditions/dig_ice.mcfunction

@@ -0,0 +1,10 @@
+# as rule marker
+# 挖掘 value 个冰块
+
+execute store result score #temp_scr rgb_sys run data get entity @s data.player.conditions.dig_ice
+scoreboard players operation #temp_scr rgb_sys += @a[tag=rgb_op,limit=1] rgb_dig_ice
+
+execute store result score #temp rgb_sys run data get entity @s data.conditions[{type:"dig_ice"}].value
+execute if score #temp_scr rgb_sys < #temp rgb_sys run data modify entity @s data.enable set value 0
+
+execute store result entity @s data.player.conditions.dig_ice short 1 run scoreboard players get #temp_scr rgb_sys

+ 13 - 0
data/mini/functions/rgb/game/conditions/in_fire.mcfunction

@@ -0,0 +1,13 @@
+# as rule marker
+# 在火中 value/4 秒
+# 不在火中自动归零
+
+execute store result score #temp_scr rgb_sys run data get entity @s data.player.conditions.in_fire
+scoreboard players set #temp rgb_sys 0
+execute store success score #temp rgb_sys as @a[tag=rgb_op,limit=1] at @s if block ~ ~ ~ fire run scoreboard players add #temp_scr rgb_sys 1
+execute if score #temp rgb_sys matches 0 run scoreboard players set #temp_scr rgb_sys 0
+
+execute store result score #temp rgb_sys run data get entity @s data.conditions[{type:"in_fire"}].value
+execute if score #temp_scr rgb_sys < #temp rgb_sys run data modify entity @s data.enable set value 0
+
+execute store result entity @s data.player.conditions.in_fire short 1 run scoreboard players get #temp_scr rgb_sys

+ 13 - 0
data/mini/functions/rgb/game/conditions/on_grass_block.mcfunction

@@ -0,0 +1,13 @@
+# as rule marker
+# 站在草方块上 value/4 秒
+# 离开草方块自动归零
+
+execute store result score #temp_scr rgb_sys run data get entity @s data.player.conditions.on_grass_block
+scoreboard players set #temp rgb_sys 0
+execute store success score #temp rgb_sys as @a[tag=rgb_op,nbt={OnGround:1b}] if block ~ ~-1 ~ grass_block run scoreboard players add #temp_scr rgb_sys 1
+execute if score #temp rgb_sys matches 0 run scoreboard players set #temp_scr rgb_sys 0
+
+execute store result score #temp rgb_sys run data get entity @s data.conditions[{type:"on_grass_block"}].value
+execute if score #temp_scr rgb_sys < #temp rgb_sys run data modify entity @s data.enable set value 0
+
+execute store result entity @s data.player.conditions.on_grass_block short 1 run scoreboard players get #temp_scr rgb_sys

+ 13 - 0
data/mini/functions/rgb/game/conditions/on_ice.mcfunction

@@ -0,0 +1,13 @@
+# as rule marker
+# 站在冰块上 value/4 秒
+# 离开冰块自动归零
+
+execute store result score #temp_scr rgb_sys run data get entity @s data.player.conditions.on_ice
+scoreboard players set #temp rgb_sys 0
+execute store success score #temp rgb_sys as @a[tag=rgb_op,nbt={OnGround:1b}] if block ~ ~-1 ~ ice run scoreboard players add #temp_scr rgb_sys 1
+execute if score #temp rgb_sys matches 0 run scoreboard players set #temp_scr rgb_sys 0
+
+execute store result score #temp rgb_sys run data get entity @s data.conditions[{type:"on_ice"}].value
+execute if score #temp_scr rgb_sys < #temp rgb_sys run data modify entity @s data.enable set value 0
+
+execute store result entity @s data.player.conditions.on_ice short 1 run scoreboard players get #temp_scr rgb_sys

+ 10 - 0
data/mini/functions/rgb/game/conditions/take_damage.mcfunction

@@ -0,0 +1,10 @@
+# as rule marker
+# 受到 value 点伤害
+
+execute store result score #temp_scr rgb_sys run data get entity @s data.player.conditions.tack_damage
+execute as @a[tag=rgb_op,limit=1] if score @s rgb_tack_damage matches 1.. run scoreboard players operation #temp_scr rgb_sys += @s rgb_tack_damage
+
+execute store result score #temp rgb_sys run data get entity @s data.conditions[{type:"tack_damage"}].value
+execute if score #temp_scr rgb_sys < #temp rgb_sys run data modify entity @s data.enable set value 0
+
+execute store result entity @s data.player.conditions.tack_damage short 1 run scoreboard players get #temp_scr rgb_sys

+ 7 - 1
data/mini/functions/rgb/game/events/effect.mcfunction

@@ -3,4 +3,10 @@
 
 data modify entity @s data.effect set from entity @s data.events[{type:"effect"}].value
 
-execute if entity @s[nbt={data:{effect:"levitation_1_10"}}] run effect give @a[tag=rgb_op] minecraft:levitation 1 10
+execute if entity @s[nbt={data:{effect:"levitation_1_10"}}] run effect give @a[tag=rgb_op] minecraft:levitation 1 10
+
+execute if entity @s[nbt={data:{effect:"haste_1_2"}}] run effect give @a[tag=rgb_op] minecraft:haste 1 2
+
+execute if entity @s[nbt={data:{effect:"speed_1_1"}}] run effect give @a[tag=rgb_op] minecraft:speed 1 1
+
+execute if entity @s[nbt={data:{effect:"jump_boost_1_1"}}] run effect give @a[tag=rgb_op] minecraft:jump_boost 1 1

+ 7 - 0
data/mini/functions/rgb/game/handle_event.mcfunction

@@ -18,6 +18,13 @@ execute if data entity @s data.events[{type:"place_tnt"}] run function mini:rgb/
 execute if data entity @s data.events[{type:"place_ice_cage"}] run function mini:rgb/game/events/place_ice_cage
 execute if data entity @s data.events[{type:"place_powder_snow"}] run function mini:rgb/game/events/place_powder_snow
 
+# 实体事件
+execute if data entity @s data.events[{type:"summon_tnt"}] run function mini:rgb/game/events/summon_tnt
+execute if data entity @s data.events[{type:"summon_creeper"}] run function mini:rgb/game/events/summon_creeper
+
+# 杂项事件
+execute if data entity @s data.events[{type:"tp"}] run function mini:rgb/game/events/tp
+
 # 完成游戏
 execute if data entity @s data.events[{type:"finish"}] run function mini:rgb/game/events/finish
 

+ 7 - 1
data/mini/functions/rgb/init.mcfunction

@@ -18,4 +18,10 @@ scoreboard objectives add rgb_place_rule minecraft.used:armor_stand "RGB小游
 scoreboard objectives remove rgb_destroy_rule
 scoreboard objectives add rgb_destroy_rule minecraft.killed:armor_stand "RGB小游戏销毁规则计分板"
 scoreboard objectives remove rgb_shift
-scoreboard objectives add rgb_shift custom:sneak_time "RGB小游戏潜行时间"
+scoreboard objectives add rgb_shift custom:sneak_time "RGB小游戏潜行时间"
+scoreboard objectives remove rgb_dig_ice
+scoreboard objectives add rgb_dig_ice minecraft.mined:minecraft.ice "RGB小游戏挖掘冰块"
+scoreboard objectives remove rgb_take_damage
+scoreboard objectives add rgb_take_damage dummy "RGB小游戏受到伤害,为负表示回血"
+scoreboard objectives remove rgb_health
+scoreboard objectives add rgb_health dummy "RGB小游戏生命值"

+ 5 - 0
data/mini/functions/rgb/tick5.mcfunction

@@ -1,6 +1,9 @@
 # 挖出规则
 execute as @a[tag=mini_running] if score @s rgb_obtain_rule matches 1.. at @s run function mini:rgb/game/give_random_rule
 
+# 准备参数
+execute as @a[tag=mini_running] run scoreboard players operation @s rgb_take_damage -= @s rgb_health
+
 # 对每一个玩家进行条件检定和事件执行
 execute as @a[tag=mini_running] at @s run function mini:rgb/game/player_tick
 
@@ -9,6 +12,8 @@ scoreboard players set @a[tag=mini_running] rgb_obtain_rule 0
 scoreboard players set @a[tag=mini_running] rgb_place_rule 0
 scoreboard players set @a[tag=mini_running] rgb_destroy_rule 0
 scoreboard players set @a[tag=mini_running] rgb_shift 0
+scoreboard players set @a[tag=mini_running] rgb_dig_ice 0
+execute as @a[tag=mini_running] run scoreboard players operation @s rgb_take_damage = @s rgb_health
 
 # 展示RGB计分
 execute as @a[tag=mini_running] run title @s actionbar [{"text":"R=","color": "red","bold": true},{"score":{"name": "@s","objective": "rgb_R"},"color": "red"},"  ",{"text":"G=","color": "green"},{"score":{"name": "@s","objective": "rgb_G"},"color": "green"},"  ",{"text":"B=","color": "blue"},{"score":{"name": "@s","objective": "rgb_B"},"color": "blue"}]

+ 2 - 2
data/mini/loot_tables/rgb/add_red.json

@@ -65,7 +65,7 @@
                     "functions": [
                         {
                             "function": "minecraft:set_nbt",
-                            "tag": "{conditions:[{name:'[{\"text\":\"失去\",\"color\":\"yellow\"},{\"text\":\"❤\",\"color\":\"red\"},{\"text\":\"x1\",\"color\":\"yellow\"}]',type:'get_damage',value:2s}],events:[{name:'{\"text\":\"R+3\",\"color\":\"red\"}',type:'add_red',value:3s}]}"
+                            "tag": "{conditions:[{name:'[{\"text\":\"失去\",\"color\":\"yellow\"},{\"text\":\"❤\",\"color\":\"red\"},{\"text\":\"≥1\",\"color\":\"yellow\"}]',type:'take_damage',value:2s}],events:[{name:'{\"text\":\"R+3\",\"color\":\"red\"}',type:'add_red',value:3s}]}"
                         }
                     ]
                 },
@@ -76,7 +76,7 @@
                     "functions": [
                         {
                             "function": "minecraft:set_nbt",
-                            "tag": "{conditions:[{name:'[{\"text\":\"失去\",\"color\":\"yellow\"},{\"text\":\"❤\",\"color\":\"red\"},{\"text\":\"x3\",\"color\":\"yellow\"}]',type:'get_damage',value:6s}],events:[{name:'{\"text\":\"R=15\",\"color\":\"red\"}',type:'set_red',value:15s}]}"
+                            "tag": "{conditions:[{name:'[{\"text\":\"失去\",\"color\":\"yellow\"},{\"text\":\"❤\",\"color\":\"red\"},{\"text\":\"≥3\",\"color\":\"yellow\"}]',type:'take_damage',value:6s}],events:[{name:'{\"text\":\"R=15\",\"color\":\"red\"}',type:'set_red',value:15s}]}"
                         }
                     ]
                 }

+ 13 - 2
data/mini/loot_tables/rgb/effect.json

@@ -10,7 +10,7 @@
                     "functions": [
                         {
                             "function": "minecraft:set_nbt",
-                            "tag": "{conditions:[{name:'{\"text\":\"R≥5\",\"color\":\"red\"}',type:'red_ge',value:20s},{name:'{\"text\":\"站在地上\",\"color\":\"yellow\"}',type:'on_ground',value:1s}],events:[{name:'{\"text\":\"脚下方块变为TNT\",\"color\":\"yellow\"}',type:'place_tnt'},{name:'{\"text\":\"R-1\",\"color\":\"red\"}',type:'add_red',value:-1s}]}"
+                            "tag": "{conditions:[{name:'{\"text\":\"R≥15\",\"color\":\"red\"}',type:'red_ge',value:15s}],events:[{name:'{\"text\":\"急迫 III\",\"color\":\"yellow\"}',type:'effect',value:'haste_1_2'}]}"
                         }
                     ]
                 },
@@ -21,7 +21,18 @@
                     "functions": [
                         {
                             "function": "minecraft:set_nbt",
-                            "tag": "{conditions:[{name:'{\"text\":\"G<5\",\"color\":\"green\"}',type:'green_l',value:5s},{name:'{\"text\":\"站在地上\",\"color\":\"yellow\"}',type:'on_ground',value:1s}],events:[{name:'{\"text\":\"漂浮5秒\",\"color\":\"yellow\"}',type:'effect',value:'float_lvl1_5s'},{name:'{\"text\":\"G+1\",\"color\":\"green\"}'}]}"
+                            "tag": "{conditions:[{name:'{\"text\":\"G≥15\",\"color\":\"green\"}',type:'green_ge',value:15s}],events:[{name:'{\"text\":\"跳跃提升 II\",\"color\":\"yellow\"}',type:'effect',value:'jump_boost_1_1'}]}"
+                        }
+                    ]
+                },
+                {
+                    "type": "minecraft:item",
+                    "name": "minecraft:armor_stand",
+                    "weight": 1,
+                    "functions": [
+                        {
+                            "function": "minecraft:set_nbt",
+                            "tag": "{conditions:[{name:'{\"text\":\"B≥15\",\"color\":\"green\"}',type:'blue_ge',value:15s}],events:[{name:'{\"text\":\"速度 II\",\"color\":\"yellow\"}',type:'effect',value:'speed_1_1'}]}"
                         }
                     ]
                 }