本数据包为开发者提供了一些实用的函数,兼容 Minecraft 所有版本(除了无法安装数据包的版本)。
但由于数据包涉及命令较多,所以较低版本可能无法使用所有函数。
请同时安装资源包以提供本地化内容(v3.2+),否则数据包语言将为zh_cn,或者使用模组版本。
本数据包的模组版本是通过 Modrinth 打包的,与数据包版本同步更新,内容与数据包版本完全一致。
以下是数据包 v3.2 本地化更新前的百科说明,将不会在未来更新,请在 GitHub 或数据包内的 README.md 文件中查看最新的函数说明。
本数据包遵循开源协议 GNU GENERAL PUBLIC LICENSE。
本数据包为开发者提供了一些实用的函数,兼容 Minecraft 所有版本(除了无法安装数据包的版本)。
但由于数据包涉及命令较多,所以较低版本可能无法使用所有函数,下文将不会分别注明所有函数的适用版本。
本数据包的模组版本是通过 Modrinth 打包的,与数据包版本同步更新,内容与数据包版本完全一致。
本数据包加载后会在每 tick 创建一次记分项 dfl_enable 并将所有实体在此记分项中的分数设为 1,便于依赖于本数据包的数据包或模组检测本数据包是否加载。
范例:
#在数据包加载时执行:
scoreboard objectives add dfl_enable dummy
scoreboard players set @e dfl_enable 0
#如果未加载:
execute unless score @n dfl_enable matches 1
#如果加载:
execute if score @n dfl_enable matches 1
注意:有些函数的用法下附有“前置函数”,这些函数执行前必须执行一次前置函数。
有些函数用法后带有 {xx:"xx"} 这些函数为宏函数,在使用时需通过 {<参数名>:"<内容>"} 传入参数(用法中的参数为默认参数,为作者开发时测试过的推荐参数,或作者测试使用的参数),参数名(如 num)在正文中表现为:{num}。参数格式可参考函数用法,特殊格式会说明。
Start
此分类中的函数建议在数据包加载(重载)时执行。
关闭特殊伤害
函数用法:/function dfl:start/nodamage。
固定重生点为 0 0
函数用法:/function dfl:start/setworldspawn。
将世界重生点设为 0 0 0;
将重生点半径设为 0;
此时玩家会固定重生在坐标 0 0 的最高方块上。
开启死亡榜
函数用法:/function dfl:start/show/death。
显示玩家血量
函数用法:/function dfl:start/show/health。
显示玩家经验等级
函数用法:/function dfl:start/show/level。
显示玩家血条
函数用法:/function dfl:start/show/health_list。
dfl:start/show/health_list函数效果
快速新建队伍
函数用法:/function dfl:start/addteam {team_blue:"blue",team_red:"red",prefix_blue:"blue",prefix_red:"red"}。
Tick
此分类中的函数建议每 Tick 执行一次。
软封禁玩家
函数用法:/function dfl:tick/ban。
注意:此函数执行者必须为要被封禁的玩家,可以使用 execute 命令;
通过不断 tp 玩家到 0 0 0,将模式设为冒险以及不断给予玩家负面 Buff 来实现软封禁;
必须每 Tick 执行一次;
范例:/execute as @a[tag=ban] run function dfl:tick/ban。
效果如下:
dfl:tick/ban函数效果
信标鞘翅起飞
函数用法:/function dfl:tick/beacon_fly。
一键负面 Buff
函数用法:/function dfl:tick/debuff。
给予函数执行者以下 Debuff:
slowness;
mining_fatigue;
nausea;
darkness;
hunger;
weakness;
poison;
unluck;
trial_omen。
铁块电梯
函数用法:/function dfl:tick/iron_block_elevator。
实体过多清除实体
函数用法:/function dfl:tick/kill {num:"1000"}。
dfl:tick/kill函数效果
实体密度过大清除实体
函数用法:/function dfl:tick/kill_better {num:"50"}。
前置函数:/function dfl:lib/entity_density。
体验优化
函数用法:/function dfl:tick/relax。
开启死亡不掉落;
给予玩家夜视;
给予玩家发光;
移除玩家的黑暗效果。
显示实体数
函数用法:/function dfl:tick/show_entity。
前置函数:/function dfl:lib/entity。
在玩家动作栏(快捷栏上方)显示实时实体数量;
效果如下:
dfl:tick/show_entity函数效果
关闭玩家友伤及碰撞
函数用法:/function dfl:tick/team。
添加名为 dfl 的队伍,并将所有玩家加入此队伍;
注意:由于同一实体无法加入多个队伍,如果想要使用玩家组队功能请勿启用此函数;
关闭队伍友伤;
关闭队伍内碰撞;
如果不是每 Tick 运行一次此函数,请确保在每位新玩家加入后运行一次此函数。
TNT 实体密度过大清除 TNT
函数用法:/function dfl:tick/kill_tnt {num:"200"}。
无权限玩家自杀
函数用法:/function dfl:tick/suicide。
大范围替换方块
函数用法:/function dfl:tick/change_block {new:"glass",old:"stone",num:"30"}。
永昼+永晴
函数用法:/function dfl:tick/always_sunny。
关闭昼夜更替;
关闭天气更替;
将时间设为白天;
将天气设为晴朗。
清除单个物品并执行命令
函数用法:/function dfl:tick/clear_run_a {name:"stone",run:"tp ~ ~100 ~"}。
清除指定物品并执行多次命令
函数用法:/function dfl:tick/clear_run_b {name:"sand",run:"give @s anvil"}。
保持拥有某物品
函数用法:/function dfl:tick/keep_have_things {name:"slime_block",num:"64"}。
自救平台
函数用法:/function dfl:tick/slime。
前置函数:/function dfl:lib/gametime。
创建名为 dfl_slime_armor_stand_temp 的记分项,用于储存史莱姆平台生成时的时间;
在拥有 dfl_slime 标签的玩家脚下生成一个 3*3 的史莱姆平台并移除标签,史莱姆平台只能覆盖掉空气方块;
会在 <slime_time 的 dfl_scoreboard 记分项> tick 后清除史莱姆平台位置上的史莱姆方块;
slime_time 的 dfl_scoreboard 记分项会在没有赋值时被设为 200,即 10s;
在玩家生成平台时的位置附近 2 格内的史莱姆方块掉落物会被清除。
物品转化为经验
函数用法:/function dfl:tick/things_to_xp {name:"tnt",xp:"1"}。
tpa
函数用法:/function dfl:tick/tpa。
前置函数:/function dfl:lib/player_id。
创建名为 tpa 和 tpa_enable 的记分项;
输入 /trigger tpa set <玩家在 dfl_playerid 记分项中的 id,可以通过 Tab 查看> 以传送到对应玩家;
输入 /trigger tpa_enable 以允许其他玩家传送到自己,无法撤销(如不执行此命令则其他所有玩家均无法传送到此玩家),如果在此命令中使用了 set 设为其他值,则不会有任何效果(不会允许其他玩家传送到自己),仍然可以再次通过 set 来设为 1 以允许其他玩家传送到自己;
如果要传送的玩家不存在或未允许其他玩家传送到自己,则会在对应玩家 id 可被传送后传送到对应玩家,期间仍可随意更改 tpa 对象。
Redstone
此分类中的函数建议每间隔一段时间后执行(可以使用 /schedule 命令)。
清理掉落物
函数用法:/function dfl:redstone/kill_item。
dfl:redstone/kill_item函数效果
显示实体数量信息
函数用法:/function dfl:redstone/show_entity。
前置函数:/function dfl:lib/entity;
/function dfl:lib/item;
/function dfl:lib/other_entity。
此函数效果如下:
dfl:redstone/show_entity函数效果
Lib
此分类中的函数单独执行没有任何效果或不符合上述分类。
强制死亡掉落
函数用法:/function dfl:lib/clear。
关闭死亡不掉落;
杀死函数执行者;
开启死亡不掉落。
获取实体数
函数用法:/function dfl:lib/entity。
获取实体密度
函数用法:/function dfl:lib/entity_density。
获取掉落物数
函数用法:/function dfl:lib/item。
获取非玩家实体数
函数用法:/function dfl:lib/other_entity。
获取游戏天数
函数用法:/function dfl:lib/day。
创建名为 dfl_scoreboard 的记分项;
将游戏天数写入 day 的 dfl_scoreboard 记分项;
游戏天数 - 昼夜更替时已流逝的游戏天数,为昼夜更替时间除以 24000 取其整数商的结果。
获取当日时间
函数用法:/function dfl:lib/daytime。
创建名为 dfl_scoreboard 的记分项;
将当日时间写入 daytime 的 dfl_scoreboard 记分项;
当日时间 - 自当天日出后流逝的游戏刻数,为昼夜更替时间除以 24000 取余数的结果。
用玻璃包围玩家
函数用法:/function dfl:lib/fill_outline。
获取游戏时间
函数用法:/function dfl:lib/gametime。
创建名为 dfl_scoreboard 的记分项;
将游戏时间写入 gametime 的 dfl_scoreboard 记分项;
将写入所有玩家的 dfl_gametime 记分项;
游戏时间 - 世界总共流逝的游戏刻数。
获取玩家数
函数用法:/function dfl:lib/players。
修改最大生命值
函数用法:/function dfl:lib/change_max_health {num:"100"}。
生成 UID
函数用法:/function dfl:lib/player_id。
创建名为 dfl_playerid 和 dfl_scoreboard 的记分板;
在 playerid_temp 的 dfl_scoreboard 记分板中储存 UID 使用进度;
为所有玩家在 dfl_playerid 中设置唯一且不变的 UID;
UID 为 1 及以上的数字,最早进入服务器的玩家数字最小,以此类推;
如果函数执行时服务器内玩家大于一位,则这些玩家的 UID 生成顺序随机。
检测物品数量
函数用法:/function dfl:lib/things_count {name:"stone"}。