璀璨LJT
本帖最后由 SHEEP_REALMS 于 2021-11-14 22:50 编辑

前言
在原版我的世界中,玩家拥有的数据条并不多,且都不可或缺,在某些地图中可能会将经验条另作他用,但是,在等级不同的情况下,经验条等比对应的经验也不同,不是很容易使用,而且有的时候只是制作生存模式的模组,不能修改经验条。如果使用bossbar,就要考虑在多人模式下的适用问题。


模组效果


本模组在经验条下额外提供了一条玩家栏,左边数字为当前数值,右边数字为最大数值,玩家栏会自动成比例改变。

使用方式
当前玩家栏数值和最大玩家栏数值分别储存在记分板的Playerbar1和MaxPlayerbar1中,修改数值玩家栏就会改变。若需多玩家使用不同的玩家栏,可根据文件中的提示直接复制;若需同一玩家拥有多个玩家栏,需手动调整font文件中的ascent参数。


占用
本模组占用了title actionbar用来显示法力条,请尽量不要使用,如有必要可以整合在法力条前后。


原理
使用单独的字体文件将玩家栏图片储存为特定文字,利用反向空格调整位置,并使用title actionbar显示。
tick.mcfunction
  1. scoreboard players operation @s playerbar1Temp1 = @s MaxPlayerbar1
  2. function playerbar:playerbar1/ten

  3. scoreboard players operation @s playerbar1Temp1 = @s Playerbar1
  4. scoreboard players operation @s playerbar1Temp1 *= #182 DIGIT
  5. scoreboard players operation @s playerbar1Temp1 /= @s MaxPlayerbar1
  6. function playerbar:playerbar1/bar

  7. execute store result score @s playerbar1Temp3 if entity @e[type=area_effect_cloud,tag=playerbar]
  8. scoreboard players operation @s playerbar1Temp1 = @s Playerbar1
  9. function playerbar:playerbar1/ten

  10. execute if score @s playerbar1Temp3 matches 2.. run function playerbar:playerbar1/place

  11. summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"text":"\\uc527\\uc527","font":"playerbar:playerbar1"}'}
  12. title @s actionbar {"selector":"@e[type=area_effect_cloud,tag=playerbar]"}
  13. scoreboard players reset @s playerbar1Temp1
  14. scoreboard players reset @s playerbar1Temp2
  15. scoreboard players reset @s playerbar1Temp3
  16. kill @e[type=area_effect_cloud,tag=playerbar]
复制代码
ten.mcfunction
  1. execute if score @s playerbar1Temp3 matches 2.. run scoreboard players remove @s playerbar1Temp3 1
  2. scoreboard players operation @s playerbar1Temp2 = @s playerbar1Temp1
  3. execute if score @s playerbar1Temp1 matches 10.. run scoreboard players operation @s playerbar1Temp1 %= #10 DIGIT
  4. execute if score @s playerbar1Temp1 matches 0..9 run function playerbar:playerbar1/digit
  5. execute if score @s playerbar1Temp2 matches 10.. run scoreboard players operation @s playerbar1Temp1 = @s playerbar1Temp2
  6. execute if score @s playerbar1Temp2 matches 10.. run scoreboard players operation @s playerbar1Temp1 /= #10 DIGIT
  7. execute if score @s playerbar1Temp2 matches 10.. run function playerbar:playerbar1/ten
复制代码
place.mcfunction
  1. scoreboard players remove @s playerbar1Temp3 1
  2. summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit_","font":"playerbar:playerbar1"}'}
  3. execute if score @s playerbar1Temp3 matches 2.. run function playerbar:playerbar1/place
复制代码
digit.mcfunction
  1. execute if score @s playerbar1Temp1 matches 0 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit0","font":"playerbar:playerbar1"}'}
  2. execute if score @s playerbar1Temp1 matches 1 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit1","font":"playerbar:playerbar1"}'}
  3. execute if score @s playerbar1Temp1 matches 2 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit2","font":"playerbar:playerbar1"}'}
  4. execute if score @s playerbar1Temp1 matches 3 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit3","font":"playerbar:playerbar1"}'}
  5. execute if score @s playerbar1Temp1 matches 4 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit4","font":"playerbar:playerbar1"}'}
  6. execute if score @s playerbar1Temp1 matches 5 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit5","font":"playerbar:playerbar1"}'}
  7. execute if score @s playerbar1Temp1 matches 6 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit6","font":"playerbar:playerbar1"}'}
  8. execute if score @s playerbar1Temp1 matches 7 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit7","font":"playerbar:playerbar1"}'}
  9. execute if score @s playerbar1Temp1 matches 8 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit8","font":"playerbar:playerbar1"}'}
  10. execute if score @s playerbar1Temp1 matches 9 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerdigit9","font":"playerbar:playerbar1"}'}
复制代码
bar.mcfunxtion
  1. execute if score @s playerbar1Temp1 matches 0 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerbar0","font":"playerbar:playerbar1"}'}
  2. execute if score @s playerbar1Temp1 matches 1 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerbar1","font":"playerbar:playerbar1"}'}
  3. execute if score @s playerbar1Temp1 matches 2 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerbar2","font":"playerbar:playerbar1"}'}
  4. execute if score @s playerbar1Temp1 matches 3 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerbar3","font":"playerbar:playerbar1"}'}
  5. execute if score @s playerbar1Temp1 matches 4 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerbar4","font":"playerbar:playerbar1"}'}
  6. execute if score @s playerbar1Temp1 matches 5 run summon minecraft:area_effect_cloud ~ ~ ~ {Tags:["playerbar"],CustomName:'{"translate":"playerbar5","font":"playerbar:playerbar1"}'}
  7. #下略
复制代码


更新日志
2021/1/25:更名为playerbar。
                  优化了函数的算法。
                  优化了使用方法。
                  对图片进行了压缩。



下载链接
链接:https://pan.baidu.com/s/1XihxQfGsTSERo6sR3WWFMg

提取码:JJHR



参考
minecraft wiki

[ruhuasiyu]Minecraft 原版模组入门教程

[tryashtar]字体黑科技 —— 潜影盒内容预览




振翮高飞
以后打怪:你不要过来啊,等我回个蓝

12tianxun
所以,有啥用呢?

爷就是pxj-
what?根本看不懂啊