如何手搓Java数据包
这次咱们用到的是数据包中的functions,用这个Functions做一点特殊的物品,那么下文开始制作。
#首先
先创建一个任意名称的文件夹,然后在文件夹里面创建一个data的新文件夹和一个pack.mcmeta文件,然后咱们先在data文件夹里面再创建两个新文件夹,一个是MC原版的命名空间另一个是我们自定义的新命名空间,那么我们先在data文件夹里面创建一个minecraft的文件夹,然后再创建一个Tutorial_pack的文件夹,接下来我们在/data/minecraft/路径下的Minecraft文件夹里创建一个tags文件夹,并再到这个tags文件夹里再创建一个functions文件夹。
#接下来
咱们先到/data/minecraft/tags/functions路径下的functions文件夹里创建一个load.json和一个tick.json的文件。
提示:load.json文件中的代码意思是当玩家在地图里面输入/reload并回车时就会运行的命令,
tick.json文件中的代码意思是重复执行某条命令,接下来开始写这两个文件里的代码:
load.json:
{"replace":false,"values":["Tutorial_pack:load"]};
tick.json:
{"replace":false,"values":["Tutorial_pack:tick"]}
#第2部分(Tutorial_pack内部文件)
首先在/data/Tutorial_pack/路径下的文件夹内再创建一个functions文件夹,咱们在这个functions文件夹里面创建三个新文件:
load.mcfunction
pos.load.mcfunction
tick.mcfunction
开始继续写代码时间,三个文件里面不同的指令。
load.mcfunction中含有的指令:
#创建记分板
scoreboard objectives add pos_store dummy
scoreboard objectives add hp health
scoreboard objectives add login dummy
scoreboard objectives add signin dummy
#创建boss栏并显示在上方的位置
bossbar add pos [{"text":"所属坐标值>>","color":"blue","bold":true},{"text":" ","color":"red"},{"text":" X:","color":"red","bold":true},{"score":{"name":"x","objective":"pos_store"},"color":"red"},{"text":" ","color":"yellow"},{"text":"Y:","color":"yellow","bold":true},{"score":{"name":"y","objective":"pos_store"},"color":"yellow"},{"text":" ","color":"green"},{"text":"Z:","color":"green","bold":true},{"score":{"name":"z","objective":"pos_store"},"color":"green"},{"text":"您的血量:"},{"score":{"name":"@p","objective":"hp"}},{"text":" "},{"text":"<<","color":"blue","bold":true}]
#预设置
bossbar set pos players @p
bossbar set pos color green
bossbar set pos style notched_10
bossbar set pos max 20
#加载成功之后输出
tellraw @a [{"text":"[","color":"blue","bold":true,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"GoldPack","color":"yellow","bold":true,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"]","color":"blue","bold":true,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"内置数据包加载完毕","color":"green","bold":true,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false}]
pos.mcfunction文件中含有的指令:
#获取坐标
execute store result score x pos_store run data get entity @p Pos[0] 1000
execute store result score y pos_store run data get entity @p Pos[1] 1000
execute store result score z pos_store run data get entity @p Pos[2] 1000
#显示在快捷物品栏
title @a actionbar [{"text":"所属坐标值>>","color":"blue","bold":true},{"text":" ","color":"red"},{"text":" X:","color":"red","bold":true},{"score":{"name":"x","objective":"pos_store"},"color":"red"},{"text":" ","color":"yellow"},{"text":"Y:","color":"yellow","bold":true},{"score":{"name":"y","objective":"pos_store"},"color":"yellow"},{"text":" ","color":"green"},{"text":"Z:","color":"green","bold":true},{"score":{"name":"z","objective":"pos_store"},"color":"green"},{"text":" "},{"text":"您的血量:","color":"green","bold":true},{"score":{"name":"@p","objective":"hp"}},{"text":" "},{"text":"<<","color":"blue","bold":true}]
#使记分板的数值与boss栏的数值保持同步(这么做是为了方便下一步的制作)
execute store result bossbar pos value run data get entity @a[limit=1] Health
execute store result score @p hp run data get entity @a[limit=1] Health
tick.mcfunction文件中含有的指令:
#运行主文件
function gold_pack:pos
#使boss栏的坐标实时显示
bossbar set pos name [{"text":"所属坐标值>>","color":"blue","bold":true},{"text":" ","color":"red"},{"text":" X:","color":"red","bold":true},{"score":{"name":"x","objective":"pos_store"}},{"text":" ","color":"yellow"},{"text":"Y:","color":"yellow","bold":true},{"score":{"name":"y","objective":"pos_store"}},{"text":" ","color":"green"},{"text":"Z:","color":"green","bold":true},{"score":{"name":"z","objective":"pos_store"}},{"text":" "},{"text":"<<","color":"blue","bold":true}]
#达到或超过限定数值(20)时变色
execute if score @p hp matches ..20 run bossbar set pos color green
execute if score @p hp matches 20.. run bossbar set pos color red
这次数据包玩法就这样,可以自己制作,当然这个只是用来快速锁定坐标的。