Skip to content

物品

索引

事件
描述
ActorAcquiredItemClientEvent客户端触发时机:玩家获得物品时客户端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。)
ActorAcquiredItemServerEvent服务端触发时机:玩家获得物品时服务端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。)
ActorUseItemClientEvent客户端触发时机:玩家使用物品时客户端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲);3)喝牛奶
ActorUseItemServerEvent服务端触发时机:玩家使用物品生效之前服务端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲)
AnvilCreateResultItemAfterClientEvent客户端玩家点击铁砧合成得到的物品时抛出的事件。
ClientItemTryUseEvent客户端玩家点击右键尝试使用物品时客户端抛出的事件,可以通过设置cancel为True取消使用物品。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。
ClientItemUseOnEvent客户端玩家在对方块使用物品时客户端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。
ClientShapedRecipeTriggeredEvent客户端玩家合成物品时触发
ContainerItemChangedServerEvent服务端容器物品变化事件
CraftItemOutputChangeServerEvent服务端玩家从容器拿出生成物品时触发
CraftUpdateResultItemClientEvent客户端玩家工作台界面更新显示可合成物品时抛出的事件。
FurnaceBurnFinishedServerEvent服务端服务端熔炉烧制触发事件。熔炉, 高炉,烟熏炉烧出物品时触发
GrindStoneRemovedEnchantClientEvent客户端玩家点击砂轮合成得到的物品时抛出的事件
InventoryItemChangedClientEvent客户端玩家背包物品变化时客户端抛出的事件。
InventoryItemChangedServerEvent服务端玩家背包物品变化时服务端抛出的事件。
ItemDurabilityChangedServerEvent服务端物品耐久度变化事件
ItemReleaseUsingClientEvent客户端触发时机:释放正在使用的物品
ItemReleaseUsingServerEvent服务端触发时机:释放正在使用的物品时
ItemUseAfterServerEvent服务端玩家在使用物品之后服务端抛出的事件。
ItemUseOnAfterServerEvent服务端玩家在对方块使用物品之后服务端抛出的事件。
OnCarriedNewItemChangedClientEvent客户端手持物品发生变化时,触发该事件;数量改变不会通知
OnCarriedNewItemChangedServerEvent服务端触发时机:玩家切换主手物品时触发该事件
OnItemPutInEnchantingModelServerEvent服务端触发时机:玩家将可附魔物品放到附魔台上时
OnNewArmorExchangeServerEvent服务端触发时机:玩家切换盔甲时触发该事件
OnOffhandItemChangedServerEvent服务端触发时机:玩家切换副手物品时触发该事件
OnPlayerActiveShieldServerEvent服务端触发时机:玩家激活/取消激活盾牌触发的事件。包括玩家持盾进入潜行状态,以及在潜行状态切换盾牌(切换耐久度不同的相同盾牌不会触发)
OnPlayerBlockedByShieldAfterServerEvent服务端触发时机:玩家使用盾牌抵挡伤害之后触发
OnPlayerBlockedByShieldBeforeServerEvent服务端触发时机:玩家使用盾牌抵挡伤害之前触发
PlayerDropItemServerEvent服务端触发时机:玩家丢弃物品时触发
PlayerPickupArrowServerEvent服务端玩家即将捡起抛射物时触发,包括使用"netease:pick_up"的自定义抛射物
PlayerTryDropItemClientEvent客户端触发时机:玩家丢弃物品时触发
ServerItemTryUseEvent服务端玩家点击右键尝试使用物品时服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。
ServerItemUseOnEvent服务端玩家在对方块使用物品之前服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。
ServerPlayerTryTouchEvent服务端玩家即将捡起物品时触发
ShearsUseToBlockBeforeServerEvent服务端触发时机:实体手持剪刀对方块使用时,有剪刀特殊效果的方块会在服务端线程触发该事件
StartUsingItemClientEvent客户端玩家使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出
StopUsingItemClientEvent客户端玩家停止使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出
UIContainerItemChangedServerEvent服务端合成容器物品发生变化时触发

物品

ActorAcquiredItemClientEvent

客户端

  • 描述

    触发时机:玩家获得物品时客户端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。)

  • 参数

    参数名
    数据类型
    说明
    actorstr获得物品玩家实体id
    secondaryActorstr物品给予者玩家实体id,如果不存在给予者的话,这里为空字符串
    itemDictdict获取到的物品的物品信息字典
    acquireMethodint获得物品的方法,详见ItemAcquisitionMethod
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ActorAcquiredItemServerEvent

服务端

  • 描述

    触发时机:玩家获得物品时服务端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。)

  • 参数

    参数名
    数据类型
    说明
    actorstr获得物品玩家实体id
    secondaryActorstr物品给予者玩家实体id,如果不存在给予者的话,这里为空字符串
    itemDictdict获得的物品的物品信息字典
    acquireMethodint获得物品的方法,详见ItemAcquisitionMethod枚举
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ActorUseItemClientEvent

客户端

  • 描述

    触发时机:玩家使用物品时客户端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲);3)喝牛奶

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
    useMethodint使用物品的方法,详见ItemUseMethodEnum枚举
  • 返回值

  • 备注

    • 注意,喝牛奶不会触发该事件,但是会触发ActorUseItemServerEvent

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ActorUseItemServerEvent

服务端

  • 描述

    触发时机:玩家使用物品生效之前服务端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲)

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
    useMethodint使用物品的方法,详见ItemUseMethodEnum枚举
  • 返回值

  • 备注

    • 注意,喝牛奶会触发该事件,但是不会触发ActorUseItemClientEvent

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

AnvilCreateResultItemAfterClientEvent

客户端

  • 描述

    玩家点击铁砧合成得到的物品时抛出的事件。

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemShowNamestr合成后的物品显示名称
    itemDictdict合成后的物品的物品信息字典
    oldItemDictdict合成前的物品的物品信息字典(铁砧内第一个物品)
    materialItemDictdict合成所使用材料的物品信息字典(铁砧内第二个物品)
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ClientItemTryUseEvent

客户端

  • 描述

    玩家点击右键尝试使用物品时客户端抛出的事件,可以通过设置cancel为True取消使用物品。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id
    itemDictdict使用的物品的物品信息字典
    cancelbool取消使用物品
  • 返回值

  • 备注

    • ServerItemTryUseEvent/ClientItemTryUseEvent不能取消对方块使用物品的行为,如使用生物蛋,使用桶倒出/收集,使用打火石点燃草等;如果想要取消这种行为,请使用ClientItemUseOnEvent和ServerItemUseOnEvent

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ClientItemUseOnEvent

客户端

  • 描述

    玩家在对方块使用物品时客户端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。

  • 参数

    参数名
    数据类型
    说明
    entityIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
    xint方块 x 坐标值
    yint方块 y 坐标值
    zint方块 z 坐标值
    blockNamestr方块的identifier
    blockAuxValueint方块的附加值
    faceint点击方块的面,参考Facing枚举
    clickXfloat点击点的x比例位置
    clickYfloat点击点的y比例位置
    clickZfloat点击点的z比例位置
    retbool设为True可取消物品的使用
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ClientShapedRecipeTriggeredEvent

客户端

  • 描述

    玩家合成物品时触发

  • 参数

    参数名
    数据类型
    说明
    recipeIdstr配方id,对应配方json文件中的identifier字段
  • 返回值

ContainerItemChangedServerEvent

服务端

  • 描述

    容器物品变化事件

  • 参数

    参数名
    数据类型
    说明
    postuple(int,int,int)/None容器坐标
    containerTypeint容器类型,类型含义见:容器类型枚举
    slotint容器槽位
    dimensionIdint维度id
    oldItemDictdict旧物品,格式参考物品信息字典
    newItemDictdict新物品,格式参考物品信息字典
  • 返回值

  • 备注

    • 储物容器(箱子,潜影箱),熔炉,酿造台,发射器,投掷器,漏斗,炼药锅,唱片机,高炉,烟熏炉中物品发生变化会触发此事件
    • 工作台、铁砧、附魔台、织布机、砂轮、切石机、制图台、锻造台为合成容器,不会触发此事件,此类容器可通过UIContainerItemChangedServerEvent监听具体生成容器物品变化
    • 炼药锅只在使用染料时触发本事件,且slot为2
    • 唱片机只在从漏斗放入唱片触发此事件
  • 示例

python
import mod.server.extraServerApi as serverApi
from mod_log import logger as logger
# 监听引擎的事件
self.ListenForEvent(serverApi.GetEngineNamespace(),
                    serverApi.GetEngineSystemName(),
                    "ContainerItemChangedServerEvent",
                    self, self.OnContainerItemChangedServerEvent)

def OnContainerItemChangedServerEvent(self, args):
    playerId = args['playerId']
    logger.info("OnContainerItemChangedServerEvent args:%s", args)
    if args['containerType'] == serverApi.GetMinecraftEnum().ContainerType.SMOKER:
        print '烟熏炉发生变化'

CraftItemOutputChangeServerEvent

服务端

  • 描述

    玩家从容器拿出生成物品时触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemDictdict生成的物品,格式参考物品信息字典
    screenContainerTypeint当前界面类型,类型含义见:容器类型枚举
    cancelbool是否取消生成物品
  • 返回值

  • 备注

    • 支持工作台,铁砧,砂轮等工作方块
    • screenContainerType = serverApi.GetMinecraftEnum().ContainerType.INVENTORY时,表示从创造模式物品栏中拿出物品,或者从合成栏中拿出合成物品
    • 通过cancel参数取消生成物品,可用于禁止外挂刷物品
    • cancel=True时无法从创造模式物品栏拿物品
    • cancel=True时铁砧无法修复或重命名物品,但仍会扣除经验值
  • 示例

python
import mod.server.extraServerApi as serverApi
from mod_log import logger as logger
# 监听引擎的事件
self.ListenForEvent(serverApi.GetEngineNamespace(),
                    serverApi.GetEngineSystemName(),
                    "CraftItemOutputChangeServerEvent",
                    self, self.OnCraftItemOutputChangeServerEvent)

def OnCraftItemOutputChangeServerEvent(self, args):
    playerId = args['playerId']
    comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
    logger.info("OnCraftItemOutputChangeServerEvent args:%s", args)

    # 铁砧触发
    if args['screenContainerType'] == serverApi.GetMinecraftEnum().ContainerType.ANVIL:
        anvilInputItem = comp.GetOpenContainerItem(playerId,serverApi.GetMinecraftEnum().OpenContainerId.AnvilInputContainer,True)
        if anvilInputItem != None:
            # 铁砧输入位有物品,该事件为拿出铁砧生成物触发的
            if anvilInputItem['itenName'] != args['itemDict']['itemName']:
                # 输入物品和生成物品不是同一类型,可能是作弊,取消物品生成
                args['cancel'] = True

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

CraftUpdateResultItemClientEvent

客户端

  • 描述

    玩家工作台界面更新显示可合成物品时抛出的事件。

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemDictdict合成后的物品的[物品信息字典]
  • 返回值

  • 备注

    • 该事件在打开3×3工作台界面,2×2工作台界面,向工作台放入物品,预览配方时触发。
    • 如果无可合成的物品,或预览的配方因材料不足而无法合成,则传递的物品参数为 minecraft:air。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

FurnaceBurnFinishedServerEvent

服务端

  • 描述

    服务端熔炉烧制触发事件。熔炉, 高炉,烟熏炉烧出物品时触发

  • 参数

    参数名
    数据类型
    说明
    dimensionIdint维度id
    posXfloat位置x
    posYfloat位置y
    posZfloat位置z
    itemDictdict物品的物品信息字典,当新物品为空时,此项属性为None
  • 返回值

GrindStoneRemovedEnchantClientEvent

客户端

  • 描述

    玩家点击砂轮合成得到的物品时抛出的事件

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    oldItemDictdict合成前的物品物品信息字典(砂轮内第一个物品)
    additionalItemDictdict作为合成材料的物品物品信息字典(砂轮内第二个物品)
    newItemDictdict合成后的物品物品信息字典
    expint本次合成返还的经验
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

InventoryItemChangedClientEvent

客户端

  • 描述

    玩家背包物品变化时客户端抛出的事件。

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    slotint背包槽位
    oldItemDictdict变化前槽位中的物品,格式参考物品信息字典
    newItemDictdict变化后槽位中的物品,格式参考物品信息字典
  • 返回值

  • 备注

    • 如果槽位变空,变化后槽位中物品为空气
    • 触发时槽位物品仍为变化前物品
    • 背包内物品移动,合堆,分堆的操作会分多次事件触发并且顺序不定,编写逻辑时请勿依赖事件触发顺序

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

InventoryItemChangedServerEvent

服务端

  • 描述

    玩家背包物品变化时服务端抛出的事件。

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    slotint背包槽位
    oldItemDictdict变化前槽位中的物品,格式参考物品信息字典
    newItemDictdict变化后槽位中的物品,格式参考物品信息字典
  • 返回值

  • 备注

    • 如果槽位变空,变化后槽位中物品为空气
    • 触发时槽位物品仍为变化前物品
    • 玩家进入游戏时,身上的物品会触发该事件
    • 背包内物品移动,合堆,分堆的操作会分多次事件触发并且顺序不定,编写逻辑时请勿依赖事件触发顺序

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ItemDurabilityChangedServerEvent

服务端

  • 描述

    物品耐久度变化事件

  • 参数

    参数名
    数据类型
    说明
    entityIdstr物品拥有者的实体id
    itemDictdict物品的物品信息字典
    durabilityBeforeint变化前耐久度
    durabilityint变化后耐久度,支持修改。但是请注意修改范围,支持范围为[-32768,32767)
    canChangebool是否支持修改,为true时支持通过durability修改,为false时不支持
  • 返回值

  • 备注

    • 目前只有存在耐久的物品,并且有物主的物品才会触发该事件,存在发射器中发射导致的物品耐久变化不会触发该事件
    • 目前铁砧修复、经验修补魔咒、SetItemDurability接口触发的耐久度变化中canChange为false,并且不支持修改变化后耐久度

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ItemReleaseUsingClientEvent

客户端

  • 描述

    触发时机:释放正在使用的物品

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id
    durationLeftfloat蓄力剩余时间(当物品缺少"minecraft:maxduration"组件时,蓄力剩余时间为负数)
    itemDictdict使用的物品的物品信息字典
    maxUseDurationint最大蓄力时长
    cancelbool设置为True可以取消,需要同时取消服务端事件ItemReleaseUsingServerEvent
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ItemReleaseUsingServerEvent

服务端

  • 描述

    触发时机:释放正在使用的物品时

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id
    durationLeftfloat蓄力剩余时间(当物品缺少"minecraft:maxduration"组件时,蓄力剩余时间为负数)
    itemDictdict使用的物品的物品信息字典
    maxUseDurationint最大蓄力时长
    cancelbool设置为True可以取消,需要同时取消客户端事件ItemReleaseUsingClientEvent
    changeItembool如果要在该事件的回调中修改当前使用槽位的物品,需设置这个参数为True,否则将修改物品失败,例如修改耐久度或者替换成新物品
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ItemUseAfterServerEvent

服务端

  • 描述

    玩家在使用物品之后服务端抛出的事件。

  • 参数

    参数名
    数据类型
    说明
    entityIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
  • 返回值

  • 备注

    • 做出使用物品这个动作之后触发,一些需要蓄力的物品使用事件(ActorUseItemServerEvent)会在之后触发。如投掷三叉戟,先触发本事件,投出去之后再触发ActorUseItemServerEvent

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ItemUseOnAfterServerEvent

服务端

  • 描述

    玩家在对方块使用物品之后服务端抛出的事件。

  • 参数

    参数名
    数据类型
    说明
    entityIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
    xint方块 x 坐标值
    yint方块 y 坐标值
    zint方块 z 坐标值
    faceint点击方块的面,参考Facing枚举
    clickXfloat点击点的x比例位置
    clickYfloat点击点的y比例位置
    clickZfloat点击点的z比例位置
    blockNamestr方块的identifier
    blockAuxValueint方块的附加值
    dimensionIdint维度id
  • 返回值

  • 备注

    • 在ServerItemUseOnEvent和原版物品使用事件(例如StartUsingItemClientEvent)之后触发

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnCarriedNewItemChangedClientEvent

客户端

  • 描述

    手持物品发生变化时,触发该事件;数量改变不会通知

  • 参数

    参数名
    数据类型
    说明
    itemDictdict切换后物品的物品信息字典
  • 返回值

OnCarriedNewItemChangedServerEvent

服务端

  • 描述

    触发时机:玩家切换主手物品时触发该事件

  • 参数

    参数名
    数据类型
    说明
    oldItemDictdict/None旧物品的物品信息字典,当旧物品为空时,此项属性为None
    newItemDictdict/None新物品的物品信息字典,当新物品为空时,此项属性为None
    playerIdstr玩家 entityId
  • 返回值

  • 备注

    • 切换耐久度不同的相同物品,不会触发该事件

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnItemPutInEnchantingModelServerEvent

服务端

  • 描述

    触发时机:玩家将可附魔物品放到附魔台上时

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id,参数类型为str
    slotTypeint玩家放入物品的EnchantSlotType
    optionslist附魔台选项
    changebool传入True时,附魔台选项会被新传入的options覆盖
  • 返回值

  • 备注

    • options为包含三个dict的list,单个dict的格式形如{'cost': 1, 'enchantData': [(1,1)], 'modEnchantData': [('custom_enchant, 1')]},cost为解锁该选项所需的玩家等级,enchantData为该附魔选项包含的原版附魔数据,modEnchantData为该选项包含的自定义附魔数据

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnNewArmorExchangeServerEvent

服务端

  • 描述

    触发时机:玩家切换盔甲时触发该事件

  • 参数

    参数名
    数据类型
    说明
    slotint槽位id
    oldArmorDictdict/None旧装备的物品信息字典,当旧物品为空时,此项属性为None
    newArmorDictdict/None新装备的物品信息字典,当新物品为空时,此项属性为None
    playerIdstr玩家 entityId
  • 返回值

  • 备注

    • 当玩家登录时,每个盔甲槽位会触发两次该事件,第一次为None切换到身上的装备,第二次的old和new都为身上装备。如果槽位为空,则是触发两次从None切换到None的事件。
    • 注意:避免在该事件回调中对玩家修改盔甲栏装备,如SetEntityItem接口,会导致事件循环触发造成堆栈溢出。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnOffhandItemChangedServerEvent

服务端

  • 描述

    触发时机:玩家切换副手物品时触发该事件

  • 参数

    参数名
    数据类型
    说明
    oldItemDictdict/None旧物品的物品信息字典,当旧物品为空时,此项属性为None
    newItemDictdict/None新物品的物品信息字典,当新物品为空时,此项属性为None
    playerIdstr玩家 entityId
  • 返回值

  • 备注

    • 当原有的物品槽内容为空时,oldItemName值为'minecraft:air',且oldItem其余字段不存在
      当切换原有物品,且新物品为空时,参数值同理

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnPlayerActiveShieldServerEvent

服务端

  • 描述

    触发时机:玩家激活/取消激活盾牌触发的事件。包括玩家持盾进入潜行状态,以及在潜行状态切换盾牌(切换耐久度不同的相同盾牌不会触发)

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    isActiveboolTrue:尝试激活,False:尝试取消激活
    itemDictdict盾牌物品的物品信息字典
    cancelablebool是否可以取消。如果玩家在潜行状态切换盾牌,则无法取消
    cancelbool是否取消这次激活
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnPlayerBlockedByShieldAfterServerEvent

服务端

  • 描述

    触发时机:玩家使用盾牌抵挡伤害之后触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    sourceIdstr伤害来源实体Id,没有实体返回"-1"
    itemDictdict盾牌物品字典物品信息字典
    damagefloat抵挡的伤害数值
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnPlayerBlockedByShieldBeforeServerEvent

服务端

  • 描述

    触发时机:玩家使用盾牌抵挡伤害之前触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    sourceIdstr伤害来源实体Id,没有实体返回"-1"
    itemDictdict盾牌物品字典物品信息字典
    damagefloat抵挡的伤害数值
  • 返回值

  • 备注

    • 盾牌抵挡了所有伤害时,才会触发事件;部分抛射物造成的伤害无法全部抵挡,无法触发事件,例如带有穿透魔咒的弩。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerDropItemServerEvent

服务端

  • 描述

    触发时机:玩家丢弃物品时触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id
    itemEntityIdstr物品entityId
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerPickupArrowServerEvent

服务端

  • 描述

    玩家即将捡起抛射物时触发,包括使用"netease:pick_up"的自定义抛射物

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    arrowIdstr抛射物Id
    itemDictdict触碰的物品的物品信息字典
    cancelbool设置为True时将取消本次拾取
    pickupDelayint取消拾取后重新设置该物品的拾取cd,小于15帧将视作15帧,大于等于97813帧将视作无法拾取,每秒30帧
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerTryDropItemClientEvent

客户端

  • 描述

    触发时机:玩家丢弃物品时触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id
    itemDictdict物品dict
    cancelbool是否取消此次操作
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ServerItemTryUseEvent

服务端

  • 描述

    玩家点击右键尝试使用物品时服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家id
    itemDictdict使用的物品的物品信息字典
    cancelbool设为True可取消物品的使用
  • 返回值

  • 备注

    • ServerItemTryUseEvent/ClientItemTryUseEvent不能取消对方块使用物品的行为,如使用生物蛋,使用桶倒出/收集,使用打火石点燃草等;如果想要取消这种行为,请使用ClientItemUseOnEvent和ServerItemUseOnEvent

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ServerItemUseOnEvent

服务端

  • 描述

    玩家在对方块使用物品之前服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。

  • 参数

    参数名
    数据类型
    说明
    entityIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
    xint方块 x 坐标值
    yint方块 y 坐标值
    zint方块 z 坐标值
    blockNamestr方块的identifier
    blockAuxValueint方块的附加值
    faceint点击方块的面,参考Facing枚举
    dimensionIdint维度id
    clickXfloat点击点的x比例位置
    clickYfloat点击点的y比例位置
    clickZfloat点击点的z比例位置
    retbool设为True可取消物品的使用
  • 返回值

  • 备注

    • 当对原生方块进行使用时,如堆肥桶等类似有 使用 功能的方块使用物品时,不会触发该事件。而当原生方块加入监听后,ServerBlockUseEvent会触发。当需要获取触发时使用的物品时,可以通过item组件(例如GetPlayerItem接口)获取手中持有的物品,对应的客户端事件同理。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ServerPlayerTryTouchEvent

服务端

  • 描述

    玩家即将捡起物品时触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    entityIdstr物品实体的Id
    itemDictdict触碰的物品的物品信息字典
    cancelbool设置为True时将取消本次拾取
    pickupDelayint取消拾取后重新设置该物品的拾取cd,小于15帧将视作15帧,大于等于97813帧将视作无法拾取
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ShearsUseToBlockBeforeServerEvent

服务端

  • 描述

    触发时机:实体手持剪刀对方块使用时,有剪刀特殊效果的方块会在服务端线程触发该事件

  • 参数

    参数名
    数据类型
    说明
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    auxDataint方块附加值
    dropNamestr触发剪刀效果的掉落物identifier,包含命名空间及名称
    dropCountint触发剪刀效果的掉落物数量
    entityIdstr触发剪刀效果的实体id,目前仅玩家会触发
    dimensionIdint玩家触发时的维度id
    cancelShearsbool是否取消剪刀效果
  • 返回值

  • 备注

    • 目前会触发该事件的方块:南瓜、蜂巢
    • 该事件触发在ServerItemUseOnEvent之后,如果ServerItemUseOnEvent中取消了物品使用,该事件无法被触发
    • 和ServerItemUseOnEvent一样该事件判定在tick执行,意味着如果取消剪刀效果该事件可能会多次触发(取决于玩家按下使用键时长)

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

StartUsingItemClientEvent

客户端

  • 描述

    玩家使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

StopUsingItemClientEvent

客户端

  • 描述

    玩家停止使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    itemDictdict使用的物品的物品信息字典
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

UIContainerItemChangedServerEvent

服务端

  • 描述

    合成容器物品发生变化时触发

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家实体id
    slotint容器槽位,含义见:容器类型枚举
    oldItemDictdict旧物品,格式参考物品信息字典
    newItemDictdict生成的物品,格式参考物品信息字典
  • 返回值

  • 备注

    • 合成容器包括工作台、铁砧、附魔台、织布机、砂轮、切石机、制图台、锻造台,输入物品发生变化时会触发本事件
    • 可通过容器槽位区分不同的生成容器类型
    • 合成容器的生成槽位生成物品时不触发本事件,生成物品可通过CraftItemOutputChangeServerEvent监听
    • 储物容器(箱子,潜影箱),熔炉,酿造台,发射器,投掷器,漏斗,炼药锅,唱片机,高炉,烟熏炉中物品发生变化不会触发此事件,此类容器可通过ContainerItemChangedServerEvent监听
  • 示例

python
import mod.server.extraServerApi as serverApi
from mod_log import logger as logger
# 监听引擎的事件
self.ListenForEvent(serverApi.GetEngineNamespace(),
                    serverApi.GetEngineSystemName(),
                    "UIContainerItemChangedServerEvent",
                    self, self.OnUIContainerItemChangedServerEvent)

def OnUIContainerItemChangedServerEvent(self, args):
    playerId = args['playerId']
    logger.info("OnUIContainerItemChangedServerEvent args:%s", args)
    if args['slot'] == serverApi.GetMinecraftEnum().PlayerUISlot.GrindstoneInput:
        print '砂轮输入位发生变化'

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件