让不可坠落的方块坠落
多说无用,先看效果
如视频所示,我们使三种在原版不可能坠落的方块实现了和沙子一样的坠落效果,并且拥有共同的特性
如果直接生成在方块上,会直接变成方块
工作原理
方块在下坠时变为Minecraft的内置生物id为minecraft:falling_block
minecraft:falling_block不能生成,但是作为实体,可以被结构方块保存
结构方块保存的结构可以通过特殊手段进行导出并修改
工作准备
- 会制作Minecraft包(会编写manifest.json)
- 掌握任意一门编程语言(至少会使用其包管理器以及基础语法)或NBT解码工具(本教程使用NodeJS)
更改结构内容
一般的,我们在手机上使用一些材质包可以对mc结构方块结构进行导出,可以先装上
接下来我们会使用Nodejs对Mcstructure进行更改,大家可以根据自己用的语言选择相应的库
我们这里选择parsenbt-js作为mcstructure的解码库,他可以帮助我们解码mcbe的nbt文件
至于为什么选择parsenbt-js,因为作者测试代码用的文件是mcstructure,这样可以方便我们参考和开发
Bash:
1 | npm i parsenbt-js |
安装之后我们需要去Mc里得到一个带有minecraft:falling_block实体的结构,可以用我这种结构,然后使用结构方块保存导出
如果懒也可以直接用我保存好的(
https://bbs.mcutc.cn/attachments/falling_block-zip.2512/
导出之后,将文件移到我们的工作目录
使用Nodejs代码对mcstructure进行解码
代码:
1 | // 偷懒,直接从作者的测试文件中拽两行代码过来 |
将代码保存到一个js中并执行,可以看到mcstructure中的数据结构和内容
代码中littleEndian的意思是,使用小端序对数据进行解码,mcbe的结构文件需要用小端序进行解码
TIP: 结构json数据名呈>前的表示数据类型,具体可以看parsenbt-js的github仓库中的类型表
嗯,具体的内容你可以接下来自己研究,只是让你更好理解接下来的做法的目的是什么
接下来更改代码
代码:
1 | // ...顺来的代码( |
经过上述代码,我们将结构中的falling_block实体的nbt标签中的FallingBlock对象中的name改成了石头的id,也就是坠落方块所代表的id
TIP: 只是替换方块的话不需要更改其他的内容
现在我们将结构保存到一个mc行为包文件夹的structures文件夹里,打包,导入
接下来我们就可以在mc里通过structure生成我们的自定义falling_block实体啦
命令
Bash:
1 | structure load 结构名(文件名不带后缀) ~~10~ |
更简单的方法
你也可以使用PackMc2框架(咱的自研框架)进行编写)
安装pack-mc-2 和 packmc2-fallblock Npm包之后
开头效果的代码实现
代码:
1 | var pmc2 = require( "pack-mc-2" ) |
执行文件,打包falling_blocks文件夹里的data文件夹为mcaddon,在游戏中就可以调用三种方块的mcfunction生成三种不同的坠落方块
函数命名在聊天栏输入 /function
就可以看到啦!
本帖内容到此结束,感谢您的阅读w
有什么疑问可以在下面提出,有问题轻点喷
说些什么吧!