HerobrineXia 5 лет назад
Родитель
Сommit
b24f977764

+ 1 - 1
data/mini/functions/trade/game/villager_init.mcfunction

@@ -1,5 +1,5 @@
 # 每个玩家生成村民
-summon villager 1000 5 5000 {NoAI:1b,Tags:["TradeMarker","TradePlayer","newVillager"],Invulnerable:1b,Silent:1b,Offers:{},VillagerData:{level:2,type:"jungle"},Xp:10}
+summon villager 1000 5 5000 {NoAI:1b,Tags:["TradeMarker","TradePlayer","newVillager","upgradeVillager"],Invulnerable:1b,Silent:1b,Offers:{},VillagerData:{level:2,type:"jungle"},Xp:10}
 # 设置对应的积分
 scoreboard players operation @e[type=villager,tag=newVillager] player_id = @s player_id
 tag @e[type=villager,tag=newVillager] remove newVillager

+ 7 - 0
data/mini/functions/trade/game/villager_level_up.mcfunction

@@ -0,0 +1,7 @@
+execute store result score @s temp2 run data get entity @s Xp
+execute if entity @s[nbt={VillagerData:{level:4}}] if score @s Xp matches 250.. run tag @s add upgradeVillager
+execute if entity @s[nbt={VillagerData:{level:4}}] if score @s Xp matches 250.. run data modify entity @s VillagerData.level set value 5
+execute if entity @s[nbt={VillagerData:{level:3}}] if score @s Xp matches 150.. run tag @s add upgradeVillager
+execute if entity @s[nbt={VillagerData:{level:3}}] if score @s Xp matches 150.. run data modify entity @s VillagerData.level set value 4
+execute if entity @s[nbt={VillagerData:{level:2}}] if score @s Xp matches 70.. run tag @s add upgradeVillager
+execute if entity @s[nbt={VillagerData:{level:2}}] if score @s Xp matches 70.. run data modify entity @s VillagerData.level set value 3

+ 17 - 0
data/mini/functions/trade/game/villager_new_trade.mcfunction

@@ -0,0 +1,17 @@
+execute if entity @s[nbt={VillagerData:{level:2}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[0]
+execute if entity @s[nbt={VillagerData:{level:2}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[1]
+execute if entity @s[nbt={VillagerData:{level:2}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[2]
+execute if entity @s[nbt={VillagerData:{level:2}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[3]
+execute if entity @s[nbt={VillagerData:{level:3}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[4]
+execute if entity @s[nbt={VillagerData:{level:3}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[5]
+execute if entity @s[nbt={VillagerData:{level:3}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[6]
+execute if entity @s[nbt={VillagerData:{level:3}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[7]
+execute if entity @s[nbt={VillagerData:{level:4}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[8]
+execute if entity @s[nbt={VillagerData:{level:4}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[9]
+execute if entity @s[nbt={VillagerData:{level:4}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[10]
+execute if entity @s[nbt={VillagerData:{level:4}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[11]
+execute if entity @s[nbt={VillagerData:{level:5}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[12]
+execute if entity @s[nbt={VillagerData:{level:5}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[13]
+execute if entity @s[nbt={VillagerData:{level:5}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[14]
+execute if entity @s[nbt={VillagerData:{level:5}}] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[15]
+tag @s remove upgradeVillager

+ 7 - 0
data/mini/functions/trade/game/villager_update_trade.mcfunction

@@ -0,0 +1,7 @@
+# 判断村民是否升级
+function mini:trade/game/villager_level_up
+
+# 判断是否增加交易
+execute if entity @s[tag=upgradeVillager] run function mini:trade/game/villager_new_trade
+
+# 判断空交易

+ 1 - 5
data/mini/functions/trade/game_init.mcfunction

@@ -38,13 +38,9 @@ gamerule doMobLoot true
 summon villager 1000 5 5000 {NoAI:1b,Tags:["TradeMarker","TradeOrigin"],Invulnerable:1b,Silent:1b,Offers:{},CustomName:'{"text":"使用生物雷达是作弊行为哦!","color":"red"}'}
 # 设置交易列表
 execute as @e[type=villager,tag=TradeOrigin] at @s run function mini:trade/game/set_trade
-
 # 玩家村民生成
 execute as @a[team=playing] run function mini:trade/game/villager_init
 # 复制交易列表
-execute as @e[type=villager,tag=TradePlayer] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[0]
-execute as @e[type=villager,tag=TradePlayer] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[1]
-execute as @e[type=villager,tag=TradePlayer] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[2]
-execute as @e[type=villager,tag=TradePlayer] run data modify entity @s Offers.Recipes append from entity @e[type=villager,tag=TradeOrigin,limit=1] Offers.Recipes[3]
+execute as @e[type=villager,tag=TradePlayer] run function mini:trade/game/villager_update_trade
 # 村民碰撞箱处理
 team join playing @e[type=villager,tag=TradePlayer]

+ 2 - 0
data/mini/functions/trade/tick2.mcfunction

@@ -7,3 +7,5 @@ tp @e[type=villager,tag=TradePlayer,tag=!tpPlayer] 1000 5 5000
 execute as @e[tag=tpPlayer] at @s run particle end_rod ~ ~0.1 ~ 0.15 0.1 0.15 0 3 normal @a
 # 往手上塞纸
 execute as @a[team=playing] unless data entity @s Inventory[{Slot:8b,tag:{game_item:1b},Count:1b}] run function mini:trade/game/paper_show
+# 刷新交易
+execute as @e[type=villager,tag=TradePlayer] run function mini:trade/game/villager_update_trade