BE教程

附加包教程:8.物品(三)

Cat_A***Lv.4 高级会员 发表于 2023-1-11 · 最后回复 2023-1-11 IP:天津 3,231 1
AI 速览2026-09-25 09:52 生成

旧版附加包物品事件方法教程,含全部可用方法与特殊结构

这是附加包教程系列的第八期,主题是物品事件,承接上一期的物品组件内容。帖子先说明该功能在现版本已被弃用、仅适用于1.20.30及以下格式版本,随后逐一罗列物品事件的全部方法,包括播放摇晃动画、射出实体、伤害实体或磨损物品、减少物品、转化物品、传送、增删状态效果、运行命令和触发事件,并补充了有序执行与随机执行两种特殊结构。适合仍在研究旧版附加包机制、需要查阅物品事件写法的开发者参考。

  • 所述功能在现版本已弃用,官方建议改用脚本实现。
  • 仅适用于1.20.30及以下的格式版本。
  • 页面保留仅作为旧版本学习与参考之用。
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
本帖最后由 Cat_Anchor 于 2024-6-6 19:37 编辑

注意:此页面所述功能在现版本已被弃用,请使用脚本代替,此页面现仅作为旧版本参考。
此页面所述功能只能在1.20.30及以下的格式版本中使用。

然而,出于学习并理解旧版附加包的必要性,我保留了这个页面。


前言

上期,我们学习了所有我已知的物品组件。这一期,我们将继续学习物品相关知识。这次,我们要学习物品事件。事件存储在与组件同级的地方。下面是一个例子。
  1. {
  2.   "format_version": "1.16.100",
  3.   "minecraft:item": {
  4.     "description": {不要在意这些细节},
  5.     "components": {不要在意这些细节},
  6.     "events": { //在意这个就对了,这就是事件存放的地方。
  7.       "loot": { //“loot”是这个事件的名字。
  8.         "run_command": { //一个事件方法(意思是运行命令)
  9.           "command": [ //要运行的命令组
  10.             "loot spawn ~~~ loot \"items/ancientcity_map\" minecraft:air" //一个命令,注意转义符的用法。
  11.           ]
  12.         },
  13.         "decrement_stack": {} //又一个事件方法(意思是将当前物品减少1个)
  14.       }
  15.     }
  16.   }
  17. }
复制代码

事件方法列表

swing
让玩家播放摇晃动画。


shoot
射出实体。


damage
伤害实体或磨损物品。


decrement_stack
减少1个物品。


transform_item
把物品转化为另一物品。


teleport
传送目标。


add_mob_effect
给目标增加状态效果。


remove_mob_effect
给目标移除状态效果。


run_command
运行命令。


trigger
触发另一个事件。


以上就是所有可用的物品事件方法了。还有两个特殊结构,这两个特殊结构可以算作特殊的事件方法,我在下面列出。
下面这个用于有序执行事件方法。
  1. "sequence": [
  2.   {
  3.     "condition": "表达式a" //Molang表达式。如果输出true,那么就会执行事件方法a。输出false则不会。
  4.     "target": "holder" //目标。
  5.     "事件方法a": ...
  6.   },
  7.   {
  8.     "condition": "表达式b" //又一个Molang表达式。如果输出true,那么就会执行事件方法b。输出false则不会。
  9.     "target": "holder" //目标。
  10.     "事件方法b": ...
  11.   }
  12. ] //这一大堆东西的效果是:游戏将先评估表达式a,如果输出true,那么执行事件方法a,执行完之后进行下一个。如果输出false,那么进行下一个。然后评估表达式b,如果输出true,那么执行事件方法b,执行完之后进行下一个。如果输出false,那么进行下一个。以此类推,直到执行完毕。
复制代码


下面这个用于随机执行事件方法。
  1. "randomize":[
  2.   {
  3.     "weight": 1 //执行这个事件的权重。
  4.     "事件方法c": ...
  5.   },
  6.   {
  7.     "weight": 3 //执行这个事件的权重。
  8.     "事件方法d": ...
  9.   }
  10. ] //这一大堆东西的效果是:游戏有1/(1+3)的概率(说人话就是4分之1)执行事件方法c,有3/(1+3)的概率(说人话就是4分之3)执行事件方法d。某个对象的概率的计算公式是这个对象的weight值除以所有对象的weight值之和。
复制代码


以上的两个事件可以互相套用,没什么限制,随便用。
  1. "sequence":[{"randomize":[{"weight":2,"事件方法": ...},{"weight":3,"事件方法": ...}]}] //这一类用法没什么不行的。

  2. "sequence":[{"sequence":[{"sequence":[{"sequence":[{"sequence":[{"事件方法": ...}]}]}]}]}] //这个也没什么不行的,你开心就好。
复制代码
总结

这一期,我把所有物品事件方法罗列了一遍。下一期,我们就开始实战演练!如果你想要模板包告诉你这两期的知识到底怎么用,去下期就对了!


  • WZM*** 铁粒 +100 我要这铁粒有何用
回复 1 最早 最新 只看楼主
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则