开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] 附加包教程:11.方块(二)

 发表于 2023-1-12 11:12:08 来自手机|显示全部楼层|阅读模式 IP:山西省
本帖最后由 Cat_Anchor 于 2024-11-9 22:52 编辑

前言
上期,我们成功向附加包中添加了方块,了解了方块组件。这一期,我们将类比学习物品组件地学习方块组件。
组件列表

geometry  模型组件:指定方块的模型。


material_instances  材质实例组件:指定方块的渲染设置。


transformation  变换组件:变换方块的模型。


item_visual  物品外观组件:修改方块作为物品时的外观。


map_color  地图颜色组件:指定方块在地图上的颜色。


selection_box  判定箱组件:指定方块的判定箱。


collision_box  碰撞箱组件:指定方块的碰撞箱。


destructible_by_mining  挖掘破坏组件:指定方块的硬度和合适挖掘工具。


destructible_by_explosion  爆炸破坏组件:指定方块的爆炸抗性。


flammable  燃烧组件:指定方块的燃烧属性。


light_emission  发光组件:指定方块的发光量。


light_dampening  吸光组件:指定方块的吸光量。


placement_filter  放置条件组件:指定方块可以被放在哪里。


redstone_conductivity  红石组件:指定方块的基本红石属性。


liquid_detection  液体检测组件:指定方块与液体的交互。


loot  战利品组件:指定方块被破坏时掉落的战利品表。


friction  摩擦组件:指定方块的摩擦力。


crafting_table  工作台组件:指定方块为工作台。


custom_components  自定义组件:指定方块的自定义组件。


tick  计划刻组件:指定方块如何触发计划刻。


entity_fall_on  组件:指定实体摔落在方块上时触发脚本的最小距离。


以上就是所有可用的组件了。有可能会有遗漏,我会尽力补充。也可以给方块添加标签,标签和组件同级。标签应该是下面这样的。
  1. "tag:标签名字": {} //这里的标签名字最好使用命名空间ID。
复制代码

标签似乎没有现成的用途。
自定义方块的标签会被原版物品忽略。
添加特定的标签可能可以给这个方块一些原版方块拥有的功能,然而不确定这样的标签的存在。
目前还没有已知办法给自定义方块加上合成标签,使其被配方文档中的{"tag":"..."}识别。对于此功能,请创建方块物品。

以下是方块的开发计划,可能不准确或不会实现。
  • 移除blocks.json。
  • 发布自定义重力方块的教程文档。
  • 同步 Java 版的方块标签。
  • 添加改变原版方块战利品表的功能。(短期)
  • 使自定义组件可以传参,并使其看起来更像其他组件,很可能需要脚本v2.0.0。(2025 年)
  • 添加colormap对自定义方块的支持,例如树叶和草地颜色。(2025 年,中长期)
  • 添加数据驱动原版方块模型ID。原版方块模型可能用了一些硬编码功能,也将添加这些功能。(长期)
  • 重新添加minecraft:unwalkable和minecraft:immovable这样的组件。
  • 通过minecraft:material_instances组件设置方块的纹理变种。(长期)
  • 自定义方块音效。(长期)
  • 添加“一个方块有多个碰撞箱”的功能。(长期)
  • 进一步设置方块红石属性,如定义接收红石信号的反应/发出红石信号。
  • 添加onBlockDestroyed触发器。(很久之后)
  • 尝试添加beforeOnPlayerInteract触发器。
  • 使方块可以含雪或含熔岩。
  • 逐渐实现原版所有方块的数据驱动。
  • 目前不会添加onBlockUpdate触发器,遇到了技术困难。
  • 目前不会添加通过SAPI修改方块模型的功能。
  • 绝对不会添加方块模型的polymesh。

    注意:此段落所述功能已被移除,请使用脚本代替其功能。
    然而,出于学习并理解旧版附加包的必要性,我保留了这个段落。


    接下来是各种触发器组件,它们负责在某些条件下触发事件。所有的触发器组件都拥有"condition": ""(指定条件,填写Molang表达式)、"event": ""(指定要触发的事件,填写事件名称)和"target": ""(指定目标,填写self或other)键值对。以下将不对这些字段作出解释。

    当实体摔落到方块上时触发事件:
    1. "minecraft:on_fall_on": { //注:这个组件必须用在一个至少有4个像素高的方块上才能生效。
    2.   "min_fall_distance": 0, //指定最小摔落距离。小于这个距离将不会触发事件。
    3.   "condition": "q.is_sneaking",
    4.   "event": "test",
    5.   "target": "self"
    6. }
    复制代码
    当玩家右键点击方块时触发事件:
    1. "minecraft:on_interact": {
    2.   "condition": "q.is_sneaking",
    3.   "event": "test",
    4.   "target": "self"
    5. }
    复制代码
    当方块被放置时触发事件:
    1. "minecraft:on_placed": {
    2.   "condition": "q.is_sneaking",
    3.   "event": "test",
    4.   "target": "self"
    5. }
    复制代码
    当方块被玩家放置时触发事件:
    1. "minecraft:on_player_placing": {
    2.   "condition": "q.is_sneaking",
    3.   "event": "test",
    4.   "target": "self"
    5. }
    复制代码
    当方块被玩家破坏时触发事件(创造模式破坏不算数):
    1. "minecraft:on_player_destroyed": {
    2.   "condition": "q.is_sneaking",
    3.   "event": "test",
    4.   "target": "self"
    5. }
    复制代码
    当实体从方块上走开时触发事件:
    1. "minecraft:on_step_off": { //注:这个组件必须用在一个至少有4个像素高的方块上才能生效。
    2.   "condition": "q.is_sneaking",
    3.   "event": "test",
    4.   "target": "self"
    5. }
    复制代码
    当实体走上方块时触发事件:
    1. "minecraft:on_step_on": { //注:这个组件必须用在一个至少有4个像素高的方块上才能生效。
    2.   "condition": "q.is_sneaking",
    3.   "event": "test",
    4.   "target": "self"
    5. }
    复制代码
    还有两个特别的组件,分别是minecraft:random_ticking和minecraft:queued_ticking。这两个组件用于周期性地触发事件,前者基于随机刻,后者基于计划刻。
    minecraft:random_ticking的代码如下。
    1. "minecraft:random_ticking": {
    2.   "on_tick": {
    3.     "event": "update" //事件名称
    4.   }
    5. }
    复制代码
    minecraft:queued_ticking的代码如下。
    1. "minecraft:queued_ticking": {
    2.   "interval_range": [ //范围,单位是刻。设置成一样的会导致固定在这个时间触发事件,设置成不一样的会导致在范围内随机选择时长,然后触发事件。
    3.     10, //0.5秒
    4.     30 //1.5秒
    5.   ],
    6.   "looping": true, //是否循环触发,默认为true(循环)。设置为false后不会循环。
    7.   "on_tick": {
    8.     "event": "update" //事件名称
    9.   }
    10. }
    复制代码
  • 总结

    这一期,我把所有方块组件罗列了一遍。下一期,我们不讲方块事件,而是先把模型讲了,因为这篇教程里多次提到了模型。下下期讲战利品表,然后再讲方块事件。


    第十期 第十一期 第十二期

    评分

    参与人数 1铁粒 +40收起理由
     很话痨*** + 40苦力怕论坛感谢有你~

    查看全部评分

    苦力怕论坛,感谢有您~
     楼主|  发表于 2023-1-12 19:43:28 来自手机|显示全部楼层 IP:山西省
    阿巴无影 发表于 2023-1-12 19:22
    这里错了

    感谢反馈,已改正
    4#2023-1-12 19:43:28回复收起回复
    苦力怕论坛,感谢有您~
     发表于 2023-1-12 19:22:14 来自手机|显示全部楼层 IP:湖北省
    这里错了
    IMG_20230112_192145.jpg
    3#2023-1-12 19:22:14回复收起回复
    苦力怕论坛,感谢有您~
     发表于 2023-1-12 14:44:44 来自手机|显示全部楼层 IP:广东省
    感谢苦力怕论坛
    2#2023-1-12 14:44:44回复收起回复
    苦力怕论坛,感谢有您~

    本版积分规则

    本站
    关于我们
    联系我们
    坛史纲要
    官方
    哔哩哔哩
    技术博客
    下载
    网易版
    安卓版
    JAVA
    反馈
    意见建议
    教程中心
    更多
    捐助本站
    QQ群
    QQ群

    QQ群

    访问手机版

    访问手机版

    手机版|小黑屋|系统状态|klpbbs.com

    粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-12-15 00:56

    声明:本站与Mojang以及微软公司没有从属关系

    Powered by Discuz! X3.4 粤ICP备2023071842号-3