Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/玩家/背包.md
2025-03-17 13:24:39 +08:00

16 KiB
Raw Blame History

sidebarDepth
sidebarDepth
1

背包

AddEnchantToInvItem

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    给物品栏的物品添加附魔信息

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
    enchantType int 附魔类型,可以查看枚举值文档
    level int 附魔等级
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.AddEnchantToInvItem(0, serverApi.GetMinecraftEnum().EnchantType.BowDamage, 2)

AddModEnchantToInvItem

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    给物品栏中物品添加自定义附魔信息

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
    modEnchantId str 自定义附魔identifier
    level int 自定义附魔等级
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.AddModEnchantToInvItem(0, "customenchant", 2)

ChangePlayerItemTipsAndExtraId

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    修改玩家物品的自定义tips和自定义标识符

  • 参数

    参数名
    数据类型
    说明
    posType int ItemPosType枚举
    slotPos int 物品栏槽位
    customTips str 物品的自定义tips
    extraId str 物品的自定义标识符
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.ChangePlayerItemTipsAndExtraId(serverApi.GetMinecraftEnum().ItemPosType.INVENTORY, 0, "自定义tips", "自定义标识符")

ChangeSelectSlot

服务端

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    设置玩家当前选中快捷栏物品的index

  • 参数

    参数名
    数据类型
    说明
    slot int 快捷栏物品的index从0开始最大为8
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
success = comp.ChangeSelectSlot(0)

GetCarriedItem

客户端

method in mod.client.component.itemCompClient.ItemCompClient

  • 描述

    获取右手物品的信息

  • 参数

    参数名
    数据类型
    说明
    getUserData bool 是否获取物品的userData默认为False
  • 返回值

    数据类型
    说明
    dict 物品信息字典没有物品则返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(entityId)
carriedData = comp.GetCarriedItem()

GetInvItemEnchantData

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    获取物品栏的物品附魔信息

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
  • 返回值

    数据类型
    说明
    list(tuple(int,int)) list中每个tuple由附魔类型(EnchantType枚举)和附魔等级组成。没有附魔则为空list
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetInvItemEnchantData(0)

GetInvItemModEnchantData

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    获取物品栏的物品自定义附魔信息

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
  • 返回值

    数据类型
    说明
    list(tuple(str,int)) list中每个tuple由自定义附魔id和附魔等级组成没有自定义附魔则为空list
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetInvItemModEnchantData(0)

GetOffhandItem

客户端

method in mod.client.component.itemCompClient.ItemCompClient

  • 描述

    获取左手物品的信息

  • 参数

    参数名
    数据类型
    说明
    getUserData bool 是否获取物品的userData默认为False
  • 返回值

    数据类型
    说明
    dict 物品信息字典没有物品则返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(entityId)
offhandData = comp.GetOffhandItem()

GetPlayerAllItems

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    获取玩家指定的槽位的批量物品信息

  • 参数

    参数名
    数据类型
    说明
    posType int ItemPosType枚举
    getUserData bool 是否获取userData默认为False
  • 返回值

    数据类型
    说明
    list(dict) 物品信息字典的数组没有物品的位置为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetPlayerAllItems(serverApi.GetMinecraftEnum().ItemPosType.INVENTORY)

GetPlayerItem

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    获取玩家物品,支持获取背包,盔甲栏,副手以及主手物品

  • 参数

    参数名
    数据类型
    说明
    posType int ItemPosType枚举
    slotPos int 槽位获取INVENTORY及ARMOR时需要设置其他情况写0即可
    getUserData bool 是否获取userData默认为False
  • 返回值

    数据类型
    说明
    dict 物品信息字典没有物品则返回None
  • 备注

    • 左右手及装备可以替代GetEntityItem接口获取生物的物品但背包不行。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.INVENTORY, 0)

GetSelectSlotId

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    获取玩家当前选中槽位

  • 参数

  • 返回值

    数据类型
    说明
    int 当前槽位,错误时返回-1
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetSelectSlotId()

GetSlotId

客户端

method in mod.client.component.itemCompClient.ItemCompClient

  • 描述

    获取当前手持的快捷栏的槽id

  • 参数

  • 返回值

    数据类型
    说明
    int 0到8
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(entityId)
slotId = comp.GetSlotId()

RemoveEnchantToInvItem

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    给物品栏的物品移除附魔信息

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
    enchantType int 附魔类型,可以查看枚举值文档
  • 返回值

    数据类型
    说明
    bool 移除结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.RemoveEnchantToInvItem(0, serverApi.GetMinecraftEnum().EnchantType.BowDamage)

RemoveModEnchantToInvItem

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    给物品栏中物品移除自定义附魔信息

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
    modEnchantId str 自定义附魔identifier
  • 返回值

    数据类型
    说明
    bool 移除结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.RemoveModEnchantToInvItem(0, "customenchant")

SetInvItemExchange

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    交换玩家背包物品

  • 参数

    参数名
    数据类型
    说明
    pos1 int 物品位置
    pos2 int 物品位置
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.SetInvItemExchange(0, 2)

SetInvItemNum

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    设置玩家背包物品数目

  • 参数

    参数名
    数据类型
    说明
    slotPos int 物品栏槽位
    num int 物品数目可以通过设置数量为0来达到清除背包物品的效果
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.SetInvItemNum(0, 10)

SetPlayerAllItems

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    添加批量物品信息到指定槽位

  • 参数

    参数名
    数据类型
    说明
    itemsDictMap dict 需要添加的物品的字典字典的key是tuple(ItemPosType, slotPos)value是需要添加的物品信息字典
  • 返回值

    数据类型
    说明
    dict 设置结果字典的key是tuple(ItemPosType, slot)value为bool代表该槽位设置是否成功
  • 示例

import mod.server.extraServerApi as serverApi
itemsDict = {
    'itemName': 'minecraft:bow',
    'count': 1,
    'enchantData': [(serverApi.GetMinecraftEnum().EnchantType.BowDamage, 1),],
    'auxValue': 0,
    'customTips':'§c new item §r',
    'extraId': 'abc',
    'userData': { },
}
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemsDictMap = {}
for i in xrange(36):
    if i % 3 == 0:
        itemsDictMap[(minecraftEnum.ItemPosType.INVENTORY, i)] = itemsDict
itemsDictMap[(minecraftEnum.ItemPosType.CARRIED, 0)] = itemsDict
itemsDictMap[(minecraftEnum.ItemPosType.OFFHAND, 0)] = itemsDict
comp.SetPlayerAllItems(itemsDictMap)

SpawnItemToPlayerCarried

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    生成物品到玩家右手

  • 参数

    参数名
    数据类型
    说明
    itemDict dict 物品信息字典
    playerId str 玩家id
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 示例

import mod.server.extraServerApi as serverApi
itemDict = {
    'itemName': 'minecraft:bow',
    'count': 1,
    'enchantData': [(serverApi.GetMinecraftEnum().EnchantType.BowDamage, 1),],
    'auxValue': 0,
    'customTips':'§c new item §r',
    'extraId': 'abc',
    'userData': { },
}
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.SpawnItemToPlayerCarried(itemDict, playerId)

SpawnItemToPlayerInv

服务端

method in mod.server.component.itemCompServer.ItemCompServer

  • 描述

    生成物品到玩家背包

  • 参数

    参数名
    数据类型
    说明
    itemDict dict 物品信息字典
    playerId str 玩家id
    slotPos int 背包槽位(可选)
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 备注

    • 当slotPos不设置时当设置的数量超过单个槽位堆叠的上限时会将多余的物品设置到另外的空闲槽位.如果生成的物品与背包中有的槽位的物品种类一致该接口也会将物品增加到这些槽位中。注意如果背包中剩余的物品数目和增加的物品数目之和大于64则会生成物品数目到64但是接口返回失败。
  • 示例

import mod.server.extraServerApi as serverApi
itemDict = {
    'itemName': 'minecraft:bow',
    'count': 1,
    'enchantData': [(serverApi.GetMinecraftEnum().EnchantType.BowDamage, 1),],
    'auxValue': 0,
    'customTips':'§c new item §r',
    'extraId': 'abc',
    'userData': { },
}
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.SpawnItemToPlayerInv(itemDict, playerId, 0)