Skip to content

本数据包为开发者提供了一些实用的函数,兼容 Minecraft 所有版本(除了无法安装数据包的版本)。

License

Notifications You must be signed in to change notification settings

WhiteElephant-abc/datapackets-functions-LIB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Click here to view the English version.

前言

本数据包遵循开源协议 GNU GENERAL PUBLIC LICENSE

本数据包为开发者提供了一些实用的函数,兼容 Minecraft 所有版本(除了无法安装数据包的版本)

但由于数据包涉及命令较多,所以较低版本可能无法使用所有函数,下文将不会分别注明所有函数的适用版本

请同时安装资源包以提供本地化内容(v3.2+),否则数据包语言将为zh_cn,或者使用模组版本

本数据包的模组版本是通过 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

  • 创建名为 death 的记分项
  • 会在屏幕右侧显示死亡次数
  • 玩家死亡次数从高到低排序
  • 注意:首次开启时不会显示死亡榜,在任意玩家死亡后方可显示

显示玩家血量

函数用法:/function dfl:start/show/health

  • 创建名为 health 的记分项
  • 会在玩家 ID 下方显示玩家血量
  • 距离稍远会不显示(只显示玩家 ID)
  • 注意:首次开启时会显示血量为 0,在数值更新(如受伤)后方可显示

显示玩家经验等级

函数用法:/function dfl:start/show/level

  • 创建名为 level 的记分项
  • 会在 Tab 栏(玩家列表栏)显示每名玩家的经验等级
  • 注意:首次开启时会显示经验等级为 0,在数值更新(如升级)后方可显示

显示玩家血条

函数用法:/function dfl:start/show/health_list

  • 创建名为 health 的记分项
  • 会在 Tab 栏(玩家列表栏)显示每名玩家的血条
  • 效果如下:

[DFL]数据包函数支持库 (datapackets functions LIB)-第1张图片

快速新建队伍

函数用法:/function dfl:start/addteam {team_blue:"blue",team_red:"red",prefix_blue:"blue",prefix_red:"red"}

  • 创建两个队伍,名称为 {team_blue} 和 {team_red}
  • 颜色分别为 blue 和 red
  • 禁用同队伍玩家互伤
  • 玩家只能与非同队的实体碰撞
  • 玩家名称前缀分别为 {prefix_blue}_ 和 {prefix_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]数据包函数支持库 (datapackets functions LIB)-第2张图片

信标鞘翅起飞

函数用法:/function dfl:tick/beacon_fly

  • 信标下有铁块、金块、绿宝石块、钻石块或下界合金块时会将玩家向上传送(不传送旁观者)
  • 高度依次为 20、40、60、80、100 格
  • 相同的方块可以叠加高度(最高为 400 格,使用四个下界合金块),如果方块不同,将以距离信标最近的方块为准

一键负面 Buff

函数用法:/function dfl:tick/debuff

给予函数执行者以下 Debuff:

  1. slowness

  2. mining_fatigue

  3. nausea

  4. darkness

  5. hunger

  6. weakness

  7. poison

  8. unluck

  9. trial_omen

铁块电梯

函数用法:/function dfl:tick/iron_block_elevator

  • 玩家站在上下两个铁块之间时向上传送
  • 最远传送距离为 6 格,即两个铁块的最大间距为 5 格
  • 不会传送旁观者
  • 会传送生物及非生物实体

实体过多清除实体

函数用法:/function dfl:tick/kill {num:"1000"}

  • 在非玩家实体数大于 {num} 时清除所有非玩家实体
  • 不会清理带有 need 标签的实体
  • 带有 need 标签的实体不会计入此处的实体数
  • 创建名为 dfl_scoreboard 的记分项
  • 执行后会在聊天栏提示,效果如下:

[DFL]数据包函数支持库 (datapackets functions LIB)-第3张图片

实体密度过大清除实体

函数用法:/function dfl:tick/kill_better {num:"50"}

前置函数:/function dfl:lib/entity_density

  • 令所有实体在附近 10 格内实体数大于 {num} 时清除这些实体
  • 不会杀死玩家
  • 不会杀死村民
  • 不会杀死带有 need 标签的实体
  • 不会在聊天栏留下痕迹

体验优化

函数用法:/function dfl:tick/relax

  • 开启死亡不掉落
  • 给予玩家夜视
  • 给予玩家发光
  • 移除玩家的黑暗效果

显示实体数

函数用法:/function dfl:tick/show_entity

前置函数:/function dfl:lib/entity

  • 在玩家动作栏(快捷栏上方)显示实时实体数量
  • 效果如下:

[DFL]数据包函数支持库 (datapackets functions LIB)-第4张图片

关闭玩家友伤及碰撞

函数用法:/function dfl:tick/team

  • 添加名为 dfl 的队伍,并将所有玩家加入此队伍
  • 注意:由于同一实体无法加入多个队伍,如果想要使用玩家组队功能请勿启用此函数
  • 关闭队伍友伤
  • 关闭队伍内碰撞
  • 如果不是每 Tick 运行一次此函数,请确保在每位新玩家加入后运行一次此函数

TNT 实体密度过大清除 TNT

函数用法:/function dfl:tick/kill_tnt {num:"200"}

  • TNT 附近五格内的 TNT 实体数大于 {num} 时清除这些 TNT 实体
  • 创建名为 dfl_tntdensity 的记分项

无权限玩家自杀

函数用法:/function dfl:tick/suicide

  • 创建名为 kill 的记分项
  • 输入 /trigger kill 以自杀(此指令不需要任何权限)

大范围替换方块

函数用法:/function dfl:tick/change_block {new:"glass",old:"stone",num:"30"}

  • 将玩家附近 {num}3 *8 范围内的 {old} 替换为 {new}
  • 将游戏规则 commandModificationBlockLimit 修改为 2147483647

永昼+永晴

函数用法:/function dfl:tick/always_sunny

  • 关闭昼夜更替
  • 关闭天气更替
  • 将时间设为白天
  • 将天气设为晴朗

清除单个物品并执行命令

函数用法:/function dfl:tick/clear_run_a {name:"stone",run:"tp ~ 100 ~"}

  • 清除所有玩家的一个 {name} 并执行 {run}
  • 注意:参数 run 中的命令首尾不能有多余的空格,命令前不能有斜杠

清除指定物品并执行多次命令

函数用法:/function dfl:tick/clear_run_b {name:"sand",run:"give @s anvil"}

  • 清除函数执行者的所有 {name} 并执行对应次数的 {run}(在同一 tick 之内)
  • 注意:参数 run 中的命令首尾不能有多余的空格,命令前不能有斜杠

保持拥有某物品

函数用法:/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"}

  • 将函数执行者身上的 {name} 转化为对应数量的 {xp} 点经验值

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 对象

自动冶炼

函数用法:/function auto_smelt:smelt {input:"raw_iron",output:"iron_ingot"}

  • 消耗 {input} 并给予函数执行者对应数量的 {output}
  • 烧炼一个物品会消耗 1 点经验,如果玩家没有经验则不会烧炼物品
  • 如果背包中同时拥有三种支持的燃料,会同时消耗这些燃料
  • 消耗煤炭块后可以同时烧炼 9 个物品,并扣除 9 点经验

Redstone

此分类中的函数建议每间隔一段时间后执行(可以使用 /schedule 命令)

清理掉落物

函数用法:/function dfl:redstone/kill_item

  • 创建名为 dfl_scoreboard 的记分项
  • 清除所有掉落物并通过 /tellraw 输出清除的掉落物数量
  • 不会清除带有 need 标签的掉落物
  • 效果如下:

[DFL]数据包函数支持库 (datapackets functions LIB)-第5张图片

显示实体数量信息

函数用法:/function dfl:redstone/show_entity

前置函数:/function dfl:lib/entity /function dfl:lib/item /function dfl:lib/other_entity

此函数效果如下:

[DFL]数据包函数支持库 (datapackets functions LIB)-第6张图片

Lib

此分类中的函数单独执行没有任何效果或不符合上述分类

强制死亡掉落

函数用法:/function dfl:lib/clear

  1. 关闭死亡不掉落

  2. 杀死函数执行者

  3. 开启死亡不掉落

获取实体数

函数用法:/function dfl:lib/entity

  • 创建名为 dfl_scoreboard 的记分项
  • 将实体数量写入 entity 的 dfl_scoreboard 记分项

获取实体密度

函数用法:/function dfl:lib/entity_density

  • 创建名为 dfl_density 的记分项
  • 将所有实体附近 10 格内的实体数写入此实体的记分项

获取掉落物数

函数用法:/function dfl:lib/item

  • 创建名为 dfl_scoreboard 的记分项
  • 将掉落物数量写入 item 的 dfl_scoreboard 记分项

获取非玩家实体数

函数用法:/function dfl:lib/other_entity

  • 创建名为 dfl_scoreboard 的记分项
  • 将非玩家实体数量写入 other_entity 的 dfl_scoreboard 记分项

获取游戏天数

函数用法:/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

  • 在命令执行者处生成 5*5 的空心玻璃立方体

获取游戏时间

函数用法:/function dfl:lib/gametime

  • 创建名为 dfl_scoreboard 的记分项
  • 将游戏时间写入 gametime 的 dfl_scoreboard 记分项
  • 将写入所有玩家的 dfl_gametime 记分项
  • 游戏时间 - 世界总共流逝的游戏刻数

获取玩家数

函数用法:/function dfl:lib/players

  • 创建名为 dfl_scoreboard 的记分项
  • 将玩家数量写入 players 的 dfl_scoreboard 记分项

修改最大生命值

函数用法:/function dfl:lib/change_max_health {num:"100"}

  • 将所有玩家的最大生命值设为 {num}

生成 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"}

  • 创建名为 dfl_{name}_num 的记分项
  • 将所有玩家的 {name} 数量写入各自的此记分项

About

本数据包为开发者提供了一些实用的函数,兼容 Minecraft 所有版本(除了无法安装数据包的版本)。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published