UID196429性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-12-18最后登录1970-1-1
| 本帖最后由 782 于 2022-5-15 13:37 编辑
第一部分:.mcfunction文件 一、.mcfunction文件的简介
.mcfunction文件存储在行为包中,可以添加不超过10000行的功能。
.mcfunction将一组命令组合成一个函数(定义一组功能,不是数学意义上的),可以在游戏中调用。
.mcfunction的每行命令开头不应该有斜杠(/)。
.mcfunction的注释是一个井号(#),和Python语言的注释很像。
示例:
- tag @s add dev
- gamemode creative
- effect @s night_vision 100000 1 true
- # 我是注释
复制代码 函数可以通过命令/function 函数名称(.mcfunction文件名称)在游戏中执行,
这将执行.mcfunction文件中的所有命令。
函数文件可以嵌套,例如:行为包/functions/teleport/home.mcfunction将创建一个名为teleport/home新功能,该函数可以在游戏中调用,如/function teleport/home。
函数文件可以在不使用/reload命令离开游戏的情况下重新加载。
二、tick.json
tick.json是一个JSON文件,位于行为包/functions/tick.json,允许执行函数文件。
每个内含的.mcfunction文件将重复执行,就像放置在重复命令方块中一样。
要注意的是,文件名内不能填写后缀名(.mcfunction)!
示例:
- {
- "values": ["文件名1", "文件名2",...]
- }
复制代码 警告:这个文件会在世界加载完全前执行,可能会导致崩溃!
因为这个文件是每游戏刻执行一次,根据20游戏刻=1秒的规律,可以做出计时器。
示例(每10秒执行对应的.mcfunction文件):
- # 初始化(创建记分板)
- scoreboard objectives add timer dummy
- # 循环部分(每1游戏刻将记分板增加1)
- scoreboard players add @a timer 1
- # 主程序(当记分板分数等于200,运行对应.mcfunction文件
- execute @a[scores={timer=200}] ~~~ function 函数(.mcfunction文件)名称
- # 计时器更新(当记分板分数大于200,自动清零)
- scoreboard players set @a[scores={timer=200..}] timer 0
复制代码
第二部分:命名空间 一、命名空间简介
命名空间是标记内容的标识符,可以把它们看作是文件夹。
命名空间很有帮助,因为它们可以防止命名发生冲突。
附加包创建中的命名空间本质上可以被认为是“前缀”或“冒号左侧的部分”。
例如,“minecraft”是“minecraft:zombie”的命名空间。
命名空间的一般形式是:命名空间:名称。
二、选择一个命名空间
合适的命名空间应该是独特的。
像“mob”、“car”、“content”或“custom”这样的命名空间将是不好的,因为其他附加包开发人员可能会想出相同的命名空间。
合适的命名空间很短,因为以后将会大量编写命名空间。
因此,命名空间越短越好。比方说,“this_is_a_mob_of_my_first_addon”是一个不好的命名空间。
对于个人项目,推荐使用玩家名称的简称,对于商业项目,推荐使用公司名称。
除非编辑原版文件,否则不要使用minecraft作为命名空间。这不仅是一个不好的主意,而且我的世界保留了这个命名空间,可能行不通。
三、在哪里使用命名空间?
简而言之,应该尽可能多使用命名空间。
首先,在向游戏添加自定义实体时,应该使用命名空间。
例如:sirlich:shark比shark更好。
最好也使用组件和事件的命名空间。就像我的世界使用minecraft:pig_saddled一样,您应该使用“命名空间:组件”。
最好在动画控制器、渲染控制器和动画中使用命名空间。
例如:“controller.animation.命名空间.实体名称.动画”比“controller.animation.动画”更好。 但不要在文件夹结构中使用命名空间。
预告:下一期会带领大家实践——制作第一个附加包,也是“基础概念与初步实践”单元的最后一期。
附加包制作教程系列 上一期 下一期
|
评分查看全部评分
|