Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/事件/物品.md
boybook 760c2dd9ad 2.6
2025-12-01 20:59:16 +08:00

1379 lines
64 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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