Skip to content

物品动作

标签
ItemSystem
字数
478 字
阅读时间
3 分钟

一个非常自由的物品动作系统

根据实体/玩家对物品做出的不同互动,可以触发相应动作 我们默认提供了:

动作 id何时触发
left拿着物品左键
right拿着物品右键
shift_left拿着物品 Shift+左键
shift_right拿着物品 Shift+右键
click_item拿着物品在界面中点其它物品
attack用物品攻击
build构建物品
place放置物品
consume消耗物品
swap_to_main_hand将物品换到主手
swap_to_offhand将物品换到副手
right_click_entity拿着物品右键实体
break_block用物品破坏方块
drop物品掉落
pick_up捡起物品
damage物品耐久耗损

不同动作有不同的参数可以调用

你可以在这里查询到我们提供的所有物品动作: 物品动作列表 如果你有意愿,可以给我们提交你的动作: github.com/Skillw/Skillw/pulls

使用

plugin/ItemSystem/items/action.yml

yaml
eaxmple_left:
  auto-update: true
  process:
    - display: "&7Glomの神奇石头"
    - material: "stone"
    #可以被放置,破坏后会掉落原物品
    - can-be-placed: true
    - lore:
        - ""
        - "&f&m─&7&m─────────&f&m─&f介绍&f&m─&7&m─────────&f&m─"
        - ""
        - "&7一块神奇的石头,左键会有神奇的事情发生..."
        - ""
    - action:
        #动作类型
        type: left
        #执行内容
        #- 直接填内联函数  -  执行内联函数
        #- js_eval::js代码  -  执行js代码
        #- js_invoke::js文件名::函数名 - 执行js函数
        run: |-
          set loc to &player location add listOf [ 0 3 0 ]
          set diamond to item material DIAMOND
          &diamond drop at &loc
          effect particle 'REDSTONE' at &loc data particleData dust [ color [ 255 0 255 ] in 10 ]

拓展

你可以通过脚本/代码拓展,就像这样:

js
damage = ItemAPI.registerAction("damage");

//@Listener(-event org.bukkit.event.player.PlayerItemDamageEvent -priority HIGHEST --ignoreCancelled)
function onItemDamage(event) {
  const entity = event.entity;
  const item = event.item.itemStack;
  const damage = event.damage;
  ItemAPI.callAction("damage", entity, item, function (map) {
    map.put("damage", damage);
    map.put("event", event);
  });
}

贡献者

The avatar of contributor named as Glomzzz Glomzzz
The avatar of contributor named as Glom-c Glom-c

页面历史