--- sidebarDepth: 1 --- # 物品 # 索引 | 事件 |
| 描述 | | --- | --- | --- | | [ActorAcquiredItemClientEvent](物品.md#actoracquireditemclientevent) | 客户端 | 触发时机:玩家获得物品时客户端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。) | | [ActorAcquiredItemServerEvent](物品.md#actoracquireditemserverevent) | 服务端 | 触发时机:玩家获得物品时服务端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。) | | [ActorUseItemClientEvent](物品.md#actoruseitemclientevent) | 客户端 | 触发时机:玩家使用物品时客户端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲);3)喝牛奶 | | [ActorUseItemServerEvent](物品.md#actoruseitemserverevent) | 服务端 | 触发时机:玩家使用物品生效之前服务端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲) | | [AnvilCreateResultItemAfterClientEvent](物品.md#anvilcreateresultitemafterclientevent) | 客户端 | 玩家点击铁砧合成得到的物品时抛出的事件。 | | [ClientItemTryUseEvent](物品.md#clientitemtryuseevent) | 客户端 | 玩家点击右键尝试使用物品时客户端抛出的事件,可以通过设置cancel为True取消使用物品。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。 | | [ClientItemUseOnEvent](物品.md#clientitemuseonevent) | 客户端 | 玩家在对方块使用物品时客户端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。 | | [ClientShapedRecipeTriggeredEvent](物品.md#clientshapedrecipetriggeredevent) | 客户端 | 玩家合成物品时触发 | | [ContainerItemChangedServerEvent](物品.md#containeritemchangedserverevent) | 服务端 | 容器物品变化事件 | | [CraftItemOutputChangeServerEvent](物品.md#craftitemoutputchangeserverevent) | 服务端 | 玩家从容器拿出生成物品时触发 | | [CraftUpdateResultItemClientEvent](物品.md#craftupdateresultitemclientevent) | 客户端 | 玩家工作台界面更新显示可合成物品时抛出的事件。 | | [FurnaceBurnFinishedServerEvent](物品.md#furnaceburnfinishedserverevent) | 服务端 | 服务端熔炉烧制触发事件。熔炉, 高炉,烟熏炉烧出物品时触发 | | [GrindStoneRemovedEnchantClientEvent](物品.md#grindstoneremovedenchantclientevent) | 客户端 | 玩家点击砂轮合成得到的物品时抛出的事件 | | [InventoryItemChangedClientEvent](物品.md#inventoryitemchangedclientevent) | 客户端 | 玩家背包物品变化时客户端抛出的事件。 | | [InventoryItemChangedServerEvent](物品.md#inventoryitemchangedserverevent) | 服务端 | 玩家背包物品变化时服务端抛出的事件。 | | [ItemDurabilityChangedServerEvent](物品.md#itemdurabilitychangedserverevent) | 服务端 | 物品耐久度变化事件 | | [ItemReleaseUsingClientEvent](物品.md#itemreleaseusingclientevent) | 客户端 | 触发时机:释放正在使用的物品 | | [ItemReleaseUsingServerEvent](物品.md#itemreleaseusingserverevent) | 服务端 | 触发时机:释放正在使用的物品时 | | [ItemUseAfterServerEvent](物品.md#itemuseafterserverevent) | 服务端 | 玩家在使用物品之后服务端抛出的事件。 | | [ItemUseOnAfterServerEvent](物品.md#itemuseonafterserverevent) | 服务端 | 玩家在对方块使用物品之后服务端抛出的事件。 | | [OnCarriedNewItemChangedClientEvent](物品.md#oncarriednewitemchangedclientevent) | 客户端 | 手持物品发生变化时,触发该事件;数量改变不会通知 | | [OnCarriedNewItemChangedServerEvent](物品.md#oncarriednewitemchangedserverevent) | 服务端 | 触发时机:玩家切换主手物品时触发该事件 | | [OnItemPutInEnchantingModelServerEvent](物品.md#onitemputinenchantingmodelserverevent) | 服务端 | 触发时机:玩家将可附魔物品放到附魔台上时 | | [OnNewArmorExchangeServerEvent](物品.md#onnewarmorexchangeserverevent) | 服务端 | 触发时机:玩家切换盔甲时触发该事件 | | [OnOffhandItemChangedServerEvent](物品.md#onoffhanditemchangedserverevent) | 服务端 | 触发时机:玩家切换副手物品时触发该事件 | | [OnPlayerActiveShieldServerEvent](物品.md#onplayeractiveshieldserverevent) | 服务端 | 触发时机:玩家激活/取消激活盾牌触发的事件。包括玩家持盾进入潜行状态,以及在潜行状态切换盾牌(切换耐久度不同的相同盾牌不会触发) | | [OnPlayerBlockedByShieldAfterServerEvent](物品.md#onplayerblockedbyshieldafterserverevent) | 服务端 | 触发时机:玩家使用盾牌抵挡伤害之后触发 | | [OnPlayerBlockedByShieldBeforeServerEvent](物品.md#onplayerblockedbyshieldbeforeserverevent) | 服务端 | 触发时机:玩家使用盾牌抵挡伤害之前触发 | | [PlayerDropItemServerEvent](物品.md#playerdropitemserverevent) | 服务端 | 触发时机:玩家丢弃物品时触发 | | [PlayerPickupArrowServerEvent](物品.md#playerpickuparrowserverevent) | 服务端 | 玩家即将捡起抛射物时触发,包括使用"netease:pick_up"的自定义抛射物 | | [PlayerTryDropItemClientEvent](物品.md#playertrydropitemclientevent) | 客户端 | 触发时机:玩家丢弃物品时触发 | | [ServerItemTryUseEvent](物品.md#serveritemtryuseevent) | 服务端 | 玩家点击右键尝试使用物品时服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。 | | [ServerItemUseOnEvent](物品.md#serveritemuseonevent) | 服务端 | 玩家在对方块使用物品之前服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。 | | [ServerPlayerTryTouchEvent](物品.md#serverplayertrytouchevent) | 服务端 | 玩家即将捡起物品时触发 | | [ShearsUseToBlockBeforeServerEvent](物品.md#shearsusetoblockbeforeserverevent) | 服务端 | 触发时机:实体手持剪刀对方块使用时,有剪刀特殊效果的方块会在服务端线程触发该事件 | | [StartUsingItemClientEvent](物品.md#startusingitemclientevent) | 客户端 | 玩家使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出 | | [StopUsingItemClientEvent](物品.md#stopusingitemclientevent) | 客户端 | 玩家停止使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出 | | [UIContainerItemChangedServerEvent](物品.md#uicontaineritemchangedserverevent) | 服务端 | 合成容器物品发生变化时触发 | # 物品 ## ActorAcquiredItemClientEvent 客户端 - 描述 触发时机:玩家获得物品时客户端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。) - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | actor | str | 获得物品玩家实体id | | secondaryActor | str | 物品给予者玩家实体id,如果不存在给予者的话,这里为空字符串 | | itemDict | dict | 获取到的物品的物品信息字典 | | acquireMethod | int | 获得物品的方法,详见[ItemAcquisitionMethod](../枚举值/ItemAcquisitionMethod.md) | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ActorAcquiredItemServerEvent 服务端 - 描述 触发时机:玩家获得物品时服务端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。) - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | actor | str | 获得物品玩家实体id | | secondaryActor | str | 物品给予者玩家实体id,如果不存在给予者的话,这里为空字符串 | | itemDict | dict | 获得的物品的物品信息字典 | | acquireMethod | int | 获得物品的方法,详见[ItemAcquisitionMethod枚举](../枚举值/ItemAcquisitionMethod.md) | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ActorUseItemClientEvent 客户端 - 描述 触发时机:玩家使用物品时客户端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲);3)喝牛奶 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | | useMethod | int | 使用物品的方法,详见[ItemUseMethodEnum枚举](../枚举值/ItemUseMethodEnum.md) | - 返回值 无 - 备注 - 注意,喝牛奶不会触发该事件,但是会触发ActorUseItemServerEvent 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ActorUseItemServerEvent 服务端 - 描述 触发时机:玩家使用物品生效之前服务端抛出的事件(比较特殊不走该事件的例子:1)染料对有水的炼药锅使用;2)盔甲架装备盔甲) - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | | useMethod | int | 使用物品的方法,详见[ItemUseMethodEnum枚举](../枚举值/ItemUseMethodEnum.md) | - 返回值 无 - 备注 - 注意,喝牛奶会触发该事件,但是不会触发ActorUseItemClientEvent 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## AnvilCreateResultItemAfterClientEvent 客户端 - 描述 玩家点击铁砧合成得到的物品时抛出的事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemShowName | str | 合成后的物品显示名称 | | itemDict | dict | 合成后的物品的物品信息字典 | | oldItemDict | dict | 合成前的物品的物品信息字典(铁砧内第一个物品) | | materialItemDict | dict | 合成所使用材料的物品信息字典(铁砧内第二个物品) | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ClientItemTryUseEvent 客户端 - 描述 玩家点击右键尝试使用物品时客户端抛出的事件,可以通过设置cancel为True取消使用物品。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id | | itemDict | dict | 使用的物品的物品信息字典 | | cancel | bool | 取消使用物品 | - 返回值 无 - 备注 - ServerItemTryUseEvent/ClientItemTryUseEvent不能取消对方块使用物品的行为,如使用生物蛋,使用桶倒出/收集,使用打火石点燃草等;如果想要取消这种行为,请使用ClientItemUseOnEvent和ServerItemUseOnEvent 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ClientItemUseOnEvent 客户端 - 描述 玩家在对方块使用物品时客户端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | entityId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | | x | int | 方块 x 坐标值 | | y | int | 方块 y 坐标值 | | z | int | 方块 z 坐标值 | | blockName | str | 方块的identifier | | blockAuxValue | int | 方块的附加值 | | face | int | 点击方块的面,参考[Facing枚举](../枚举值/Facing.md) | | clickX | float | 点击点的x比例位置 | | clickY | float | 点击点的y比例位置 | | clickZ | float | 点击点的z比例位置 | | ret | bool | 设为True可取消物品的使用 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ClientShapedRecipeTriggeredEvent 客户端 - 描述 玩家合成物品时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | recipeId | str | 配方id,对应配方json文件中的identifier字段 | - 返回值 无 ## ContainerItemChangedServerEvent 服务端 - 描述 容器物品变化事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | pos | tuple(int,int,int)/None | 容器坐标 | | containerType | int | 容器类型,类型含义见:[容器类型枚举](../枚举值/ContainerType.md) | | slot | int | 容器槽位 | | dimensionId | int | 维度id | | oldItemDict | dict | 旧物品,格式参考物品信息字典 | | newItemDict | dict | 新物品,格式参考物品信息字典 | - 返回值 无 - 备注 - 储物容器(箱子,潜影箱),熔炉,酿造台,发射器,投掷器,漏斗,炼药锅,唱片机,高炉,烟熏炉中物品发生变化会触发此事件 - 工作台、铁砧、附魔台、织布机、砂轮、切石机、制图台、锻造台为合成容器,不会触发此事件,此类容器可通过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 服务端 - 描述 玩家从容器拿出生成物品时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemDict | dict | 生成的物品,格式参考物品信息字典 | | screenContainerType | int | 当前界面类型,类型含义见:[容器类型枚举](../枚举值/ContainerType.md) | | cancel | bool | 是否取消生成物品 | - 返回值 无 - 备注 - 支持工作台,铁砧,砂轮等工作方块 - 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 客户端 - 描述 玩家工作台界面更新显示可合成物品时抛出的事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemDict | dict | 合成后的物品的[物品信息字典] | - 返回值 无 - 备注 - 该事件在打开3×3工作台界面,2×2工作台界面,向工作台放入物品,预览配方时触发。 - 如果无可合成的物品,或预览的配方因材料不足而无法合成,则传递的物品参数为 minecraft:air。 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## FurnaceBurnFinishedServerEvent 服务端 - 描述 服务端熔炉烧制触发事件。熔炉, 高炉,烟熏炉烧出物品时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | dimensionId | int | 维度id | | posX | float | 位置x | | posY | float | 位置y | | posZ | float | 位置z | | itemDict | dict | 物品的物品信息字典,当新物品为空时,此项属性为None | - 返回值 无 ## GrindStoneRemovedEnchantClientEvent 客户端 - 描述 玩家点击砂轮合成得到的物品时抛出的事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | oldItemDict | dict | 合成前的物品物品信息字典(砂轮内第一个物品) | | additionalItemDict | dict | 作为合成材料的物品物品信息字典(砂轮内第二个物品) | | newItemDict | dict | 合成后的物品物品信息字典 | | exp | int | 本次合成返还的经验 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## InventoryItemChangedClientEvent 客户端 - 描述 玩家背包物品变化时客户端抛出的事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | slot | int | 背包槽位 | | oldItemDict | dict | 变化前槽位中的物品,格式参考物品信息字典 | | newItemDict | dict | 变化后槽位中的物品,格式参考物品信息字典 | - 返回值 无 - 备注 - 如果槽位变空,变化后槽位中物品为空气 - 触发时槽位物品仍为变化前物品 - 背包内物品移动,合堆,分堆的操作会分多次事件触发并且顺序不定,编写逻辑时请勿依赖事件触发顺序 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## InventoryItemChangedServerEvent 服务端 - 描述 玩家背包物品变化时服务端抛出的事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | slot | int | 背包槽位 | | oldItemDict | dict | 变化前槽位中的物品,格式参考物品信息字典 | | newItemDict | dict | 变化后槽位中的物品,格式参考物品信息字典 | - 返回值 无 - 备注 - 如果槽位变空,变化后槽位中物品为空气 - 触发时槽位物品仍为变化前物品 - 玩家进入游戏时,身上的物品会触发该事件 - 背包内物品移动,合堆,分堆的操作会分多次事件触发并且顺序不定,编写逻辑时请勿依赖事件触发顺序 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ItemDurabilityChangedServerEvent 服务端 - 描述 物品耐久度变化事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | entityId | str | 物品拥有者的实体id | | itemDict | dict | 物品的物品信息字典 | | durabilityBefore | int | 变化前耐久度 | | durability | int | 变化后耐久度,支持修改。但是请注意修改范围,支持范围为[-32768,32767) | | canChange | bool | 是否支持修改,为true时支持通过durability修改,为false时不支持 | - 返回值 无 - 备注 - 目前只有存在耐久的物品,并且有物主的物品才会触发该事件,存在发射器中发射导致的物品耐久变化不会触发该事件 - 目前铁砧修复、经验修补魔咒、SetItemDurability接口触发的耐久度变化中canChange为false,并且不支持修改变化后耐久度 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ItemReleaseUsingClientEvent 客户端 - 描述 触发时机:释放正在使用的物品 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id | | durationLeft | float | 蓄力剩余时间(当物品缺少"minecraft:maxduration"组件时,蓄力剩余时间为负数) | | itemDict | dict | 使用的物品的物品信息字典 | | maxUseDuration | int | 最大蓄力时长 | | cancel | bool | 设置为True可以取消,需要同时取消服务端事件[ItemReleaseUsingServerEvent](#itemreleaseusingserverevent) | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ItemReleaseUsingServerEvent 服务端 - 描述 触发时机:释放正在使用的物品时 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id | | durationLeft | float | 蓄力剩余时间(当物品缺少"minecraft:maxduration"组件时,蓄力剩余时间为负数) | | itemDict | dict | 使用的物品的物品信息字典 | | maxUseDuration | int | 最大蓄力时长 | | cancel | bool | 设置为True可以取消,需要同时取消客户端事件[ItemReleaseUsingClientEvent](#itemreleaseusingclientevent) | | changeItem | bool | 如果要在该事件的回调中修改当前使用槽位的物品,需设置这个参数为True,否则将修改物品失败,例如修改耐久度或者替换成新物品 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ItemUseAfterServerEvent 服务端 - 描述 玩家在使用物品之后服务端抛出的事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | entityId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | - 返回值 无 - 备注 - 做出使用物品这个动作之后触发,一些需要蓄力的物品使用事件(ActorUseItemServerEvent)会在之后触发。如投掷三叉戟,先触发本事件,投出去之后再触发ActorUseItemServerEvent 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ItemUseOnAfterServerEvent 服务端 - 描述 玩家在对方块使用物品之后服务端抛出的事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | entityId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | | x | int | 方块 x 坐标值 | | y | int | 方块 y 坐标值 | | z | int | 方块 z 坐标值 | | face | int | 点击方块的面,参考[Facing枚举](../枚举值/Facing.md) | | clickX | float | 点击点的x比例位置 | | clickY | float | 点击点的y比例位置 | | clickZ | float | 点击点的z比例位置 | | blockName | str | 方块的identifier | | blockAuxValue | int | 方块的附加值 | | dimensionId | int | 维度id | - 返回值 无 - 备注 - 在ServerItemUseOnEvent和原版物品使用事件(例如StartUsingItemClientEvent)之后触发 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnCarriedNewItemChangedClientEvent 客户端 - 描述 手持物品发生变化时,触发该事件;数量改变不会通知 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | itemDict | dict | 切换后物品的物品信息字典 | - 返回值 无 ## OnCarriedNewItemChangedServerEvent 服务端 - 描述 触发时机:玩家切换主手物品时触发该事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | oldItemDict | dict/None | 旧物品的物品信息字典,当旧物品为空时,此项属性为None | | newItemDict | dict/None | 新物品的物品信息字典,当新物品为空时,此项属性为None | | playerId | str | 玩家 entityId | - 返回值 无 - 备注 - 切换耐久度不同的相同物品,不会触发该事件 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnItemPutInEnchantingModelServerEvent 服务端 - 描述 触发时机:玩家将可附魔物品放到附魔台上时 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id,参数类型为str | | slotType | int | 玩家放入物品的EnchantSlotType | | options | list | 附魔台选项 | | change | bool | 传入True时,附魔台选项会被新传入的options覆盖 | - 返回值 无 - 备注 - options为包含三个dict的list,单个dict的格式形如{'cost': 1, 'enchantData': [(1,1)], 'modEnchantData': [('custom_enchant, 1')]},cost为解锁该选项所需的玩家等级,enchantData为该附魔选项包含的原版附魔数据,modEnchantData为该选项包含的自定义附魔数据 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnNewArmorExchangeServerEvent 服务端 - 描述 触发时机:玩家切换盔甲时触发该事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | slot | int | 槽位id | | oldArmorDict | dict/None | 旧装备的物品信息字典,当旧物品为空时,此项属性为None | | newArmorDict | dict/None | 新装备的物品信息字典,当新物品为空时,此项属性为None | | playerId | str | 玩家 entityId | - 返回值 无 - 备注 - 当玩家登录时,每个盔甲槽位会触发两次该事件,第一次为None切换到身上的装备,第二次的old和new都为身上装备。如果槽位为空,则是触发两次从None切换到None的事件。 - 注意:避免在该事件回调中对玩家修改盔甲栏装备,如[SetEntityItem](../接口/实体/背包.md#setentityitem)接口,会导致事件循环触发造成堆栈溢出。 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnOffhandItemChangedServerEvent 服务端 - 描述 触发时机:玩家切换副手物品时触发该事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | oldItemDict | dict/None | 旧物品的物品信息字典,当旧物品为空时,此项属性为None | | newItemDict | dict/None | 新物品的物品信息字典,当新物品为空时,此项属性为None | | playerId | str | 玩家 entityId | - 返回值 无 - 备注 - 当原有的物品槽内容为空时,`oldItemName`值为'minecraft:air',且`oldItem`其余字段不存在
当切换原有物品,且新物品为空时,参数值同理 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnPlayerActiveShieldServerEvent 服务端 - 描述 触发时机:玩家激活/取消激活盾牌触发的事件。包括玩家持盾进入潜行状态,以及在潜行状态切换盾牌(切换耐久度不同的相同盾牌不会触发) - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家Id | | isActive | bool | True:尝试激活,False:尝试取消激活 | | itemDict | dict | 盾牌物品的物品信息字典 | | cancelable | bool | 是否可以取消。如果玩家在潜行状态切换盾牌,则无法取消 | | cancel | bool | 是否取消这次激活 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnPlayerBlockedByShieldAfterServerEvent 服务端 - 描述 触发时机:玩家使用盾牌抵挡伤害之后触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家Id | | sourceId | str | 伤害来源实体Id,没有实体返回"-1" | | itemDict | dict | 盾牌物品字典物品信息字典 | | damage | float | 抵挡的伤害数值 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## OnPlayerBlockedByShieldBeforeServerEvent 服务端 - 描述 触发时机:玩家使用盾牌抵挡伤害之前触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家Id | | sourceId | str | 伤害来源实体Id,没有实体返回"-1" | | itemDict | dict | 盾牌物品字典物品信息字典 | | damage | float | 抵挡的伤害数值 | - 返回值 无 - 备注 - 盾牌抵挡了所有伤害时,才会触发事件;部分抛射物造成的伤害无法全部抵挡,无法触发事件,例如带有穿透魔咒的弩。 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## PlayerDropItemServerEvent 服务端 - 描述 触发时机:玩家丢弃物品时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id | | itemEntityId | str | 物品entityId | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## PlayerPickupArrowServerEvent 服务端 - 描述 玩家即将捡起抛射物时触发,包括使用"netease:pick_up"的自定义抛射物 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家Id | | arrowId | str | 抛射物Id | | itemDict | dict | 触碰的物品的物品信息字典 | | cancel | bool | 设置为True时将取消本次拾取 | | pickupDelay | int | 取消拾取后重新设置该物品的拾取cd,小于15帧将视作15帧,大于等于97813帧将视作无法拾取,每秒30帧 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## PlayerTryDropItemClientEvent 客户端 - 描述 触发时机:玩家丢弃物品时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id | | itemDict | dict | 物品dict | | cancel | bool | 是否取消此次操作 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ServerItemTryUseEvent 服务端 - 描述 玩家点击右键尝试使用物品时服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemTryUseEvent和ServerItemTryUseEvent中将cancel设置为True才能正确取消。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家id | | itemDict | dict | 使用的物品的物品信息字典 | | cancel | bool | 设为True可取消物品的使用 | - 返回值 无 - 备注 - ServerItemTryUseEvent/ClientItemTryUseEvent不能取消对方块使用物品的行为,如使用生物蛋,使用桶倒出/收集,使用打火石点燃草等;如果想要取消这种行为,请使用ClientItemUseOnEvent和ServerItemUseOnEvent 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ServerItemUseOnEvent 服务端 - 描述 玩家在对方块使用物品之前服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | entityId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | | x | int | 方块 x 坐标值 | | y | int | 方块 y 坐标值 | | z | int | 方块 z 坐标值 | | blockName | str | 方块的identifier | | blockAuxValue | int | 方块的附加值 | | face | int | 点击方块的面,参考[Facing枚举](../枚举值/Facing.md) | | dimensionId | int | 维度id | | clickX | float | 点击点的x比例位置 | | clickY | float | 点击点的y比例位置 | | clickZ | float | 点击点的z比例位置 | | ret | bool | 设为True可取消物品的使用 | - 返回值 无 - 备注 - 当对原生方块进行使用时,如堆肥桶等类似有 使用 功能的方块使用物品时,不会触发该事件。而当原生方块加入监听后,ServerBlockUseEvent会触发。当需要获取触发时使用的物品时,可以通过item组件(例如GetPlayerItem接口)获取手中持有的物品,对应的客户端事件同理。 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ServerPlayerTryTouchEvent 服务端 - 描述 玩家即将捡起物品时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家Id | | entityId | str | 物品实体的Id | | itemDict | dict | 触碰的物品的物品信息字典 | | cancel | bool | 设置为True时将取消本次拾取 | | pickupDelay | int | 取消拾取后重新设置该物品的拾取cd,小于15帧将视作15帧,大于等于97813帧将视作无法拾取 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## ShearsUseToBlockBeforeServerEvent 服务端 - 描述 触发时机:实体手持剪刀对方块使用时,有剪刀特殊效果的方块会在服务端线程触发该事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | blockX | int | 方块位置x | | blockY | int | 方块位置y | | blockZ | int | 方块位置z | | blockName | str | 方块的identifier,包含命名空间及名称 | | auxData | int | 方块附加值 | | dropName | str | 触发剪刀效果的掉落物identifier,包含命名空间及名称 | | dropCount | int | 触发剪刀效果的掉落物数量 | | entityId | str | 触发剪刀效果的实体id,目前仅玩家会触发 | | dimensionId | int | 玩家触发时的维度id | | cancelShears | bool | 是否取消剪刀效果 | - 返回值 无 - 备注 - 目前会触发该事件的方块:南瓜、蜂巢 - 该事件触发在ServerItemUseOnEvent之后,如果ServerItemUseOnEvent中取消了物品使用,该事件无法被触发 - 和ServerItemUseOnEvent一样该事件判定在tick执行,意味着如果取消剪刀效果该事件可能会多次触发(取决于玩家按下使用键时长) 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## StartUsingItemClientEvent 客户端 - 描述 玩家使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## StopUsingItemClientEvent 客户端 - 描述 玩家停止使用物品(目前仅支持Bucket(奶桶)、Trident(三叉戟)、RangedWeapon(弓)、Food(食物)、Potion(药水)、Crossbow(弩))时抛出 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | itemDict | dict | 使用的物品的物品信息字典 | - 返回值 无 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## UIContainerItemChangedServerEvent 服务端 - 描述 合成容器物品发生变化时触发 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家实体id | | slot | int | 容器槽位,含义见:[容器类型枚举](../枚举值/PlayerUISlot.md) | | oldItemDict | dict | 旧物品,格式参考物品信息字典 | | newItemDict | dict | 生成的物品,格式参考物品信息字典 | - 返回值 无 - 备注 - 合成容器包括工作台、铁砧、附魔台、织布机、砂轮、切石机、制图台、锻造台,输入物品发生变化时会触发本事件 - 可通过容器槽位区分不同的生成容器类型 - 合成容器的生成槽位生成物品时不触发本事件,生成物品可通过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 '砂轮输入位发生变化' ``` 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件