# 服务端组件

# 传送门

# portal

# DetectStructure

  • 描述

    检测自定义门的结构

  • 参数

    参数名 数据类型 说明
    playerId str 玩家Id
    pattern list(str) 传送门形状
    defines dict 传送门定义
    touchPos list(tuple(int,int)) 传送门可激活的位置(相对参数pattern中定义的位置)
    pos tuple(int,int,int) 使用物品坐标
  • 返回值

    数据类型 说明
    tuple(bool,tuple(int,int,int),tuple(int,int,int)) 检测结果,传送门起始位置,方向
  • 示例

#传送门定义
defines = {
        '#': 'minecraft:glowstone',
        '*': 'minecraft:air'
}
#传送门形状
pattern = [
        '####',
        '#**#',
        '#**#',
        '####',
]
# 最下面中间的两个位置点击激活
touchPos =[(3,1),(3,2)]
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePortal(entityId)
ret = comp.DetectStructure(playerId, pattern, defines, touchPos, (12, 1, 5))
if ret[0]:
        logger.info('自定义传送门构建成功')
else:
        logger.info('自定义传送门构建失败')

# 方块

# block

# RegisterBlockPatterns

  • 描述

    注册特殊方块组合

  • 参数

    参数名 数据类型 说明
    pattern list(str) 方块组合位置
    defines dict 方块组合类型
    result_actor_name str 合成结果
  • 返回值

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

comp = serverApi.GetEngineCompFactory().CreateBlock(levelId)
pattern = [
        ' # ',
        'XXX',
        ' X '
        ]
defines ={
        '#': 'minecraft:gold_block',
        'X': 'minecraft:iron_block'
}
comp.RegisterBlockPatterns(pattern,defines,'minecraft:chicken')
#该例子左中右下放铁块,上面放金块,会生成一只鸡

# blockEntityData

管理自定义方块的自定义方块实体数据,若该自定义方块实体所在区块并未加载(附近没有玩家),可能无法成功修改。

# GetBlockEntityData

  • 描述

    用于获取可操作某个自定义方块实体数据的对象,操作方式与dict类似

  • 参数

    参数名 数据类型 说明
    dimension int 维度
    pos tuple(int,int,int) 方块所在位置
  • 返回值

    数据类型 说明
    BlockEntityData或None 可操作该方块实体内数据的对象
  • 备注

    • GetBlockEntityData返回None通常是由于该方块所在区块未加载、正在退出游戏、该方块不是自定义方块或该自定义方块的json中并未配置netease:block_entity组件。
      在对GetBlockEntityData返回对象进行操作前,请先判断它是否为空,否则会导致'NoneType' object has no attribute '__getitem__'错误。
    • 支持python基本数据类型(int/float/string/bool/dict/list),不支持tuple且dict的key必须为字符串
    • 存储list时,list内各项的数据类型应相同,否则将存储失败。如[True, False]可成功存储,[True, 1, 0.5]会存储失败
    • 虽然返回的对象操作与dict相似,但并不支持嵌套存储,只允许形如blockEntityData['key'] = value的直接赋值。如blockEntityData["value5"] ["v1"] = 9或blockEntityData["value6"].append(True)的操作将无法成功存储数据。
    • 存储整数时,若数值范围超过int所能表示的最大范围,将无法成功存储。建议将此类数值转为字符串进行存储。
  • 示例

import mod.server.extraServerApi as serverApi
# 设置
blockEntitycomp = serverApi.GetEngineCompFactory().CreateBlockEntityData(levelId)
dimension = 0
pos = (4, 3, 2)
# GetBlockEntityData在某些情况下会返回None,对返回结果进行操作前务必先判断它是否为空
blockEntityData = blockEntitycomp.GetBlockEntityData(dimension, pos)
# 存储数据
# 支持存储python基本数据类型(int/float/string/bool/dict/list),不支持tuple,并且key必须为字符串
# 存储list时,list内各项的数据类型应相同,否则将存储失败
if blockEntityData:
        blockEntityData['value1'] = 10
        blockEntityData['value2'] = 3.5
        blockEntityData['value3'] = True
        blockEntityData['value4'] = "hello"
        blockEntityData['value5'] = {"v1": 10, "v2": 3.5, "v3": [0,1,2]}
        blockEntityData['value6'] = [True, False]
# 读取数据
if blockEntityData:
        value1 = blockEntityData['value1']
        value5 = blockEntityData['value5']
        # 不存在于方块实体中的数据将返回None
        valueNone = blockEntityData['valueNone']

# blockInfo

# CheckBlockToPos

  • 描述

    判断位置之间是否有方块

  • 参数

    参数名 数据类型 说明
    fromPos tuple(float,float,float) 起始位置
    toPos tuple(float,float,float) 终止位置
    dimensionId int 位置所在维度,默认值为-1,传入非负值时不依赖playerId,CreateBlockInfo可传入levelId,否则CreateBlockInfo需传入playerId来获取玩家当前维度
  • 返回值

    数据类型 说明
    int result -1:获取失败 0:没有方块 1:有方块
  • 备注

    • 支持判断对应维度的常加载区块内位置之间是否有方块
    • 返回-1通常是由于传入维度不存在、传入错误参数、传入位置所在区块并未加载等
  • 示例

import mod.server.extraServerApi as serverApi
from mod_log import logger as logger
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
if comp.CheckBlockToPos((0, 0, 0), (1, 1, 1)):
        logger.info("(0, 0, 0)与(1, 1, 1)之间有方块")
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
if comp.CheckBlockToPos((0, 0, 0), (1, 1, 1), 0):
        logger.info("(0, 0, 0)与(1, 1, 1)之间有方块")

# CleanBlockTileEntityCustomData

  • 描述

    清空指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据。

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
  • 返回值

    数据类型 说明
    bool 清空结果,假如对应位置的block不存在或者没有绑定的TileEntity,就会失败
  • 备注

    • 该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
suc = comp.CleanBlockTileEntityCustomData(pos)
print "CleanBlockTileEntityCustomData pos=%s suc=%s" % (str(pos), suc)

# GetBedColor

  • 描述

    获取床(方块)的颜色

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 床的位置坐标(床占地两格,任意一个格子都可以)
  • 返回值

    数据类型 说明
    int ItemColor枚举
  • 备注

    • 当输入的坐标位置的方块不是床的时候,返回-1
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
color = comp.GetBedColor(pos)
print "GetBedColor color={}".format(color)

# GetBlockEntityData

  • 描述

    用于获取方块(包括自定义方块)的数据,数据只读不可写

  • 参数

    参数名 数据类型 说明
    dimension int 维度
    pos tuple(int,int,int) 方块所在位置
  • 返回值

    数据类型 说明
    dict或None 方块实体内数据的对象
  • 备注

    • **随着版本更迭,方块中包含的数据结构可能被微软团队调整,并且不会公告,使用该接口的开发者需注意版本更新时做好测试和兼容。数据编码为UTF-8 适用于:方块实体 特殊情况:末影箱的物品信息不能通过该接口获取
  • 示例

import mod.server.extraServerApi as serverApi
blockEntitycomp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
blockEntityData = blockEntitycomp.GetBlockEntityData(0, (4, 3, 2))

# GetBlockLightLevel

  • 描述

    获取方块位置的光照等级

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,CreateBlockInfo可传入levelId,否则CreateBlockInfo需传入playerId来获取玩家当前维度
  • 返回值

    数据类型 说明
    int 光照等级
  • 备注

    • 仅能获取到已加载区块内方块位置的光照等级,支持获取对应维度的常加载区块内光照等级
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
lightlevel = comp.GetBlockLightLevel((x,y,z))
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
lightlevel = comp.GetBlockLightLevel((x,y,z), 0)

# GetBlockNew

  • 描述

    获取某一位置的block

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,CreateBlockInfo可传入levelId,否则CreateBlockInfo需传入playerId来获取玩家当前维度
  • 返回值

    数据类型 说明
    dict 方块信息字典,详见SetBlockNew的备注
  • 备注

    • 已经加载的地形才能获取方块信息,支持获取对应维度的常加载区块内方块信息
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
blockDict = comp.GetBlockNew((0, 5, 0))
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
blockDict = comp.GetBlockNew((0, 5, 0), 0)

# GetBlockTileEntityCustomData

  • 描述

    读取指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
    key str 自定义key
  • 返回值

    数据类型 说明
    any 设定的value值,假如对应的数据不存在,则会返回None
  • 备注

    • 该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
key = "owner"
val = comp.GetBlockTileEntityCustomData(pos, key)
print "GetBlockTileEntityCustomData pos=%s key=%s value=%s" % (str(pos), key, val)

# GetBlockTileEntityWholeCustomData

  • 描述

    读取指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据字典。

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
  • 返回值

    数据类型 说明
    dict或None TileEntity自定义存储数据字典,假如没有任何额外存储数据,那么返回None或者空字典
  • 备注

    • 该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
data = comp.GetBlockTileEntityWholeCustomData(pos)
if not data:
        print "GetBlockTileEntityWholeCustomData pos=%s return empty" % (str(pos), )
else:
        print "GetBlockTileEntityWholeCustomData pos=%s return success" % (str(pos), )
if data:
        for key, val in data.iteritems():
                print "key=%s val=%s" % (key, str(val))

# GetChestPairedPosition

  • 描述

    获取与箱子A合并成一个大箱子的箱子B的坐标

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 箱子A的位置坐标
  • 返回值

    数据类型 说明
    tuple(int,int,int)或None 箱子B的位置坐标,假如输入的箱子A坐标上的方块不是箱子类方块或者没有和其他箱子方块组合成一个大箱子,就会返回None
  • 备注

    • 该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
otherPos = comp.GetChestPairedPosition(pos)
if otherPos:
        print "GetChestPairedPosition success pos=%s otherPos=%s" % (str(pos), str(otherPos))
else:
        print "GetChestPairedPosition failed pos=%s" % (str(pos), )

# GetSignBlockText

  • 描述

    获取告示牌(方块)的文本内容

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 告示牌的位置坐标
  • 返回值

    数据类型 说明
    str 告示牌上的文本内容
  • 备注

    • 当输入的坐标位置的方块不是告示牌的时候,返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
text = comp.GetSignBlockText(pos)
print "GetSignBlockText text={}".format(text)

# GetTopBlockHeight

  • 描述

    获取某一位置最高的非空气方块的高度

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int) x轴与z轴位置
    dimension int 维度id,默认为0,可在获取常加载区块内最高非空气方块高度
  • 返回值

    数据类型 说明
    int 高度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
height = comp.GetTopBlockHeight((5, 5), 0)

# ListenOnBlockRemoveEvent

  • 描述

    是否监听方块BlockRemoveServerEvent事件,可以动态修改json组件netease:listen_block_remove的值

  • 参数

    参数名 数据类型 说明
    identifier str 方块identifier,如minecraft:wheat
    listen bool 是否监听
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 对于一些特殊的方块,注意要使用对应的方块Id参数(如砖块楼梯,监听的方块Id应该为minecraft:brick_block)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.ListenOnBlockRemoveEvent("minecraft:wheat", True)

# MayPlace

  • 描述

    判断方块是否可以放置

  • 参数

    参数名 数据类型 说明
    identifier str 方块identifier,如minecraft:wheat
    blockPos tuple(int,int,int) 方块将要放置的坐标
    facing int 朝向,详见Facing枚举
    dimensionId int 维度,默认为主世界0
  • 返回值

    数据类型 说明
    bool 方块是否可以放置
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
pos = (-1, 4, 34)
canPlace = comp.MayPlace("minecraft:wheat", pos, serverApi.GetMinecraftEnum().Facing.Up, 0)

# PlayerDestoryBlock

  • 描述

    使用手上工具破坏方块

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 方块位置
  • 返回值

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

    • 手上工具的附魔效果会生效,同时扣除耐久度
    • 会触发ServerPlayerTryDestroyBlockEvent事件,并且可以被这个事件cancel
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)  # 此处playerId为block的破坏者
comp.PlayerDestoryBlock((0, 5, 0))

# SetBedColor

  • 描述

    设置床(方块)的颜色

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 床的位置坐标(床占地两格,任意一个格子都可以)
    color int ItemColor枚举
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
suc = comp.SetBedColor(pos, serverApi.GetMinecraftEnum().ItemColor.Blue)
print "SetBedColor suc={}".format(suc)

# SetBlockNew

  • 描述

    设置某一位置的方块

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 方块位置
    blockDict dict 方块信息字典
    oldBlockHandling int 0:替换,1:销毁,2:保留,默认为0
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,CreateBlockInfo可传入levelId,否则CreateBlockInfo需传入playerId来获取玩家当前维度
  • 返回值

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

    • 已经加载的地形才能设置方块,支持在对应维度的常加载区块内设置方块 方块信息字典 blockDict

      关键字 数据类型 说明
      name str 必须设置,方块identifier,包含命名空间及名称,如minecraft:air
      aux int 方块附加值,可缺省,默认为0
    • 原版方块的identifier可以查看官方wiki

    • 若使用SetBlockNew接口替换含方块实体的方块,除自定义方块实体外,当替换前后方块实体类型相同时,其方块实体内数据不会发生改变。 例如在箱子中放置了物品,使用SetBlockNew接口将箱子方块替换为箱子方块后,新的箱子中依然保留旧箱子内的物品。
      要避免这种情况,中间添加一次不同方块实体类型(或不含方块实体)的方块替换即可。比如先将箱子替换为空气,再将空气替换为箱子。

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)  # 此处playerId为block的设置者
blockDict = {
        'name': 'minecraft:wool',
        'aux': 5
}
comp.SetBlockNew((0, 5, 0), blockDict)
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.SetBlockNew((0, 5, 0), blockDict, 0, 0)

# SetBlockTileEntityCustomData

  • 描述

    设置指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据。

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
    key str 自定义key
    value any 支持python基本数据类型,tuple不支持
  • 返回值

    数据类型 说明
    bool 设置结果,假如对应位置的block不存在或者没有绑定的TileEntity,就会设置失败
  • 备注

    • 该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
suc = comp.SetBlockTileEntityCustomData(pos, "owner", "Jack")
print "SetBlockTileEntityCustomData pos=%s suc=%s" % (str(pos), suc)

# SetSignBlockText

  • 描述

    设置告示牌(方块)的文本内容

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 告示牌的位置坐标
    text str 想要设置的文本内容
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
suc = comp.SetSignBlockText(pos, "文本内容")
print "SetSignBlockText suc={}".format(suc)

# SpawnResources

  • 描述

    产生方块随机掉落(该方法不适用于实体方块)

  • 参数

    参数名 数据类型 说明
    identifier str 方块的identifier,如minecraft:wool
    pos tuple(int,int,int) 掉落位置
    aux int 方块的附加值
    probability float 掉落概率,范围为[0, 1],0为不掉落,1为100%掉落
    bonusLootLevel int 时运等级,默认为0
    dimensionId int 掉落方块的维度,默认值为-1,传入非负值时用于获取产生方块掉落的维度;否则将随机挑选一个存在玩家的维度产生掉落
  • 返回值

    数据类型 说明
    bool 是否成功
  • 备注

    • 时运等级只对部分方块生效 概率对部分农作物树叶不生效
    • 可在对应维度的常加载区块产生掉落
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 金矿石掉落
result = comp.SpawnResources('minecraft:gold_ore', (1,1,1), 7, 1.0, 10)
# 指定维度产生掉落
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
result = comp.SpawnResources('minecraft:gold_ore', (1,1,1), 7, 1.0, 10, 0)

# blockState

# GetBlockAuxValueFromStates

  • 描述

    根据方块名称和方块状态获取方块附加值AuxValue

  • 参数

    参数名 数据类型 说明
    blockName str 方块名称
    states dict 方块状态
  • 返回值

    数据类型 说明
    int 方块附加值AuxValue,异常时为-1
  • 示例

comp = serverApi.GetEngineCompFactory().CreateBlockState(levelId)
states = comp.GetBlockAuxValueFromStates("minecraft:hopper", {"facing_direction": 0, "toggle_bit": 0})

# GetBlockStates

  • 描述

    获取方块状态

  • 参数

    参数名 数据类型 说明
    pos tuple(float,float,float) 方块位置
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,CreateBlockState可传入levelId,否则CreateBlockState需传入playerId来获取玩家当前维度
  • 返回值

    数据类型 说明
    dict 方块状态,异常时为None
  • 备注

    • 仅可获取到已加载区块内的方块状态,支持获取对应维度的常加载区块内方块状态
  • 示例

comp = serverApi.GetEngineCompFactory().CreateBlockState(playerId)
comp.GetBlockStates((4,4,3))
# 不依赖playerId举例,支持常加载区块
.comp = serverApi.GetEngineCompFactory().CreateBlockState(levelId)
comp.GetBlockStates((4,4,3), 0)

# GetBlockStatesFromAuxValue

  • 描述

    根据方块名称和方块附加值AuxValue获取方块状态

  • 参数

    参数名 数据类型 说明
    blockName str 方块名称
    auxValue int 方块附加值AuxValue
  • 返回值

    数据类型 说明
    dict 方块状态,异常时为None
  • 示例

comp = serverApi.GetEngineCompFactory().CreateBlockState(levelId)
states = comp.GetBlockStatesFromAuxValue('minecraft:sapling', 9)

# SetBlockStates

  • 描述

    设置方块状态

  • 参数

    参数名 数据类型 说明
    pos tuple(float,float,float) 方块位置
    data dict 方块状态
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,CreateBlockState可传入levelId,否则CreateBlockState需传入playerId来获取玩家当前维度
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 仅可设置已加载区块内的方块状态,支持设置对应维度的常加载区块内方块状态
  • 示例

# 将白色羊毛设置为橙色羊毛
pos = (4,4,3)
comp = serverApi.GetEngineCompFactory().CreateBlockState(playerId)
state = comp.GetBlockStates(pos) # state = { 'color': 'white' }
state['color'] = 'orange'
comp.SetBlockStates(pos, state)
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateBlockState(levelId)
state = comp.GetBlockStates(pos, 0) # state = { 'color': 'white' }
state['color'] = 'orange'
comp.SetBlockStates(pos, state, 0)

# blockUseEventWhiteList

管理方块对ServerBlockUseEvent事件在脚本层的监听

# AddBlockItemListenForUseEvent

  • 描述

    增加blockName方块对ServerBlockUseEvent事件的脚本层监听

  • 参数

    参数名 数据类型 说明
    blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue
  • 返回值

    数据类型 说明
    bool 是否增加成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.AddBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为0
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’

# ClearAllListenForBlockUseEventItems

  • 描述

    清空所有已添加方块对ServerBlockUseEvent事件的脚本层监听

  • 参数

  • 返回值

    数据类型 说明
    bool 是否清空成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.ClearAllListenForBlockUseEventItems()

# RemoveBlockItemListenForUseEvent

  • 描述

    移除blockName方块对ServerBlockUseEvent事件的脚本层监听

  • 参数

    参数名 数据类型 说明
    blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue
  • 返回值

    数据类型 说明
    bool 是否移除成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.RemoveBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为0
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’

# redStone

# GetBlockPoweredState

  • 描述

    获取某个坐标方块的充能状态

  • 参数

    参数名 数据类型 说明
    pos tuple(float,float,float) 方块坐标位置
    dimensionId int 目标维度
  • 返回值

    数据类型 说明
    int 充能状态 0:未充能;1:弱充能;2:强充能
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRedStone(levelId)
comp.GetBlockPoweredState((1,1,1), 0)

# GetStrength

  • 描述

    获取某个坐标的红石信号强度

  • 参数

    参数名 数据类型 说明
    pos tuple(float,float,float) 坐标位置
    dimensionId int 目标维度,默认值为-1,传入非负值时不依赖playerId,CreateRedStone可传入levelId,否则CreateRedStone需传入playerId来获取玩家当前维度
  • 返回值

    数据类型 说明
    int 红石信号强度[0, 15]
  • 备注

    • 可获取对应维度的常加载区块内红石信号强度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRedStone(playerId)
comp.GetStrength((1,1,1))
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateRedStone(levelId)
comp.GetStrength((1,1,1), 0)

# 官方伙伴

# pet

# Disable

  • 描述

    关闭官方伙伴功能,单人游戏以及本地联机不支持该接口

  • 参数

  • 返回值

    数据类型 说明
    bool 关闭结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePet(levelId)
comp.Disable()

# Enable

  • 描述

    启用官方伙伴功能,单人游戏以及本地联机不支持该接口

  • 参数

  • 返回值

    数据类型 说明
    bool 启用结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePet(levelId)
comp.Enable()

# 控制

# actorMotion

玩家的移动方向和大小

# GetMotion

  • 描述

    获取生物(含玩家)的瞬时移动方向向量

  • 参数

  • 返回值

    数据类型 说明
    tuple(int,int,int) 瞬时移动方向向量,异常时返回None
  • 示例

import mod.server.extraServerApi as serverApi
motionComp = serverApi.GetEngineCompFactory().CreateActorMotion(entityId)
motionComp.GetMotion()

# SetMotion

  • 描述

    设置生物(不含玩家)的瞬时移动方向向量

  • 参数

    参数名 数据类型 说明
    motion tuple(float,float,float) 世界坐标系下的向量,该方向为世界坐标系下的向量,以x,z,y三个轴的正方向为正值,可以通过当前生物的rot组件判断目前玩家面向的方向,可在开发模式下打开F3观察数值变化。
  • 返回值

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

import mod.server.extraServerApi as serverApi
# 使生物向准星的方向突进一段距离
rotComp = serverApi.GetEngineCompFactory().CreateRot(entityId)
rot = rotComp.GetRot()
x, y, z = serverApi.GetDirFromRot(rot)
motionComp = serverApi.GetEngineCompFactory().CreateActorMotion(entityId)
motionComp.SetMotion((x * 5, y * 5, z * 5))
# rot 和 世界坐标系关系
#                       ^ x -90°
#                       |
# 180°/-180  ----------> z 0°
#                       | 90°

# 模型

# model

# GetModelName

  • 描述

    获取实体的模型名称

  • 参数

  • 返回值

    数据类型 说明
    str 模型名称
  • 备注

    • 在服务端获取,客户端不生效
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
modelName = comp.GetModelName()

# SetModel

  • 描述

    设置骨骼模型

  • 参数

    参数名 数据类型 说明
    modelName str 模型名称,值为""时重置模型
  • 返回值

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

#设置名称
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModel("xuenv")

# SetModelOffset

  • 描述

    设置骨骼模型相对于局部坐标系的偏移量,初始值为(0, 0, 0)

  • 参数

    参数名 数据类型 说明
    offset tuple(float,float,float) 偏移量
  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelOffset((0, 3, 0))

# SetModelTexture

  • 描述

    设置骨骼模型贴图

  • 参数

    参数名 数据类型 说明
    texture str 模型纹理
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelTexture("Osteve")

# ShowCommonHurtColor

  • 描述

    设置挂接骨骼模型的实体是否显示通用的受伤变红效果(广播)

  • 参数

    参数名 数据类型 说明
    show bool 是否显示
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 引擎默认打开该选项,需要改变受伤效果可以关闭之后再进行定制
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModel(entityId)
comp.ShowCommonHurtColor(True)

# scale

# GetEntityScale

  • 描述

    获取实体的放缩比例大小

  • 参数

  • 返回值

    数据类型 说明
    float 比例因子
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateScale(entityId)
result = comp.GetEntityScale()

# SetEntityScale

  • 描述

    设置实体的放缩比例大小,设置比例过大会导致游戏卡顿,建议控制在20倍以内

  • 参数

    参数名 数据类型 说明
    entityId str 要设置的实体
    scale float 比例因子
  • 返回值

    数据类型 说明
    int 成功返回1,失败返回-1
  • 备注

    • 目前此功能只支持设置生物的骨骼模型,游戏原生实体(包括手持物品)的暂不做支持与维护
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateScale(entityId)
result = comp.SetEntityScale(entityId, scale)

# 抛射物

# bulletAttributes

# GetSourceEntityId

  • 描述

    获取抛射物发射者实体id

  • 参数

  • 返回值

    数据类型 说明
    str 抛射物发射者实体id
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBulletAttributes(entityId)
comp.GetSourceEntityId()

# projectile

# CreateProjectileEntity

  • 描述

    创建抛射物(直接发射)

  • 参数

    参数名 数据类型 说明
    spawnerId str 创建者Id
    entityIdentifier str 创建抛射物的类别,如minecraft:snowball
    param dict 默认为None,详细说明请见备注
  • 返回值

    数据类型 说明
    str 创建抛射物的Id,失败时为“-1”
  • 备注

    • param参数解释如下:
      参数 类型 解释
      position tuple(float,float,float) 初始位置
      direction tuple(float,float,float) 初始朝向
      power float 投掷的力量值
      gravity float 抛射物重力因子,默认为json配置中的值
      damage float 抛射物伤害值,默认为json配置中的值
      targetId str 抛射物目标(指定了target之后,会和潜影贝生物发射的跟踪导弹的那个投掷物是一个效果),默认不指定
      isDamageOwner bool 对创建者是否造成伤害,默认不造成伤害
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateProjectile(levelId)
param = {
        'position': (1,1,1),
        'direction': (1,1,1)
}
comp.CreateProjectileEntity(playerId, "minecraft:snowball", param)

# 世界

# chunkSource

# AddChunkPosWhiteList

  • 描述

    为某区块加载完成、准备卸载事件添加监听

  • 参数

    参数名 数据类型 说明
    dimension int 区块所在维度
    pos tuple(int,int) 指定区块的坐标
  • 返回值

    数据类型 说明
    bool 是否添加成功
  • 备注

    • 方块坐标(x, y, z)所在的区块坐标为(math.floor(x / 16), math.floor(z / 16))
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.AddChunkPosWhiteList(0, (0, 0))

# CheckChunkState

  • 描述

    判断指定位置的chunk是否加载完成

  • 参数

    参数名 数据类型 说明
    dimension int chunk所在维度
    pos tuple(int,int,int) 指定位置的坐标
  • 返回值

    数据类型 说明
    bool 加载是否完成
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.CheckChunkState(0, (0, 0, 0))

# DeleteAllArea

  • 描述

    删除所有常加载区域

  • 参数

  • 返回值

    数据类型 说明
    int 删除的区域数目,错误时为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.DeleteAllArea()

# DeleteArea

  • 描述

    删除一个常加载区域

  • 参数

    参数名 数据类型 说明
    key str 常加载区域的名称
  • 返回值

    数据类型 说明
    bool 删除是否成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.DeleteArea('Area0')

# GetAllAreaKeys

  • 描述

    获取所有常加载区域名称列表

  • 参数

  • 返回值

    数据类型 说明
    list(str) 名称列表list
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.GetAllAreaKeys()

# GetChunkMaxPos

  • 描述

    获取某区块最大点的坐标

  • 参数

    参数名 数据类型 说明
    chunkPos tuple(int,int) 指定区块的坐标
  • 返回值

    数据类型 说明
    None或tuple(int,int,int) 该区块最大点的坐标
  • 备注

    • 当传入的chunkPos类型不是tuple或者长度不为2时,返回值为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
maxPos = comp.GetChunkMaxPos((1, 3))

# GetChunkMinPos

  • 描述

    获取某区块最小点的坐标

  • 参数

    参数名 数据类型 说明
    chunkPos tuple(int,int) 指定区块的坐标
  • 返回值

    数据类型 说明
    None或tuple(int,int,int) 该区块最小点的坐标
  • 备注

    • 当传入的chunkPos类型不是tuple或者长度不为2时,返回值为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
minPos = comp.GetChunkMinPos((1, 3))

# GetChunkMobNum

  • 描述

    获取某区块中的生物数量(不包括玩家,但包括盔甲架)

  • 参数

    参数名 数据类型 说明
    dimension int 区块所在维度
    chunkPos tuple(int,int) 指定区块的坐标
  • 返回值

    数据类型 说明
    int 该区块中的生物数量
  • 备注

    • 返回值为-1通常是由于该维度未加载、该区块未加载
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
mobNum = comp.GetChunkMobNum(0, (1, 3))

# GetChunkPosFromBlockPos

  • 描述

    通过方块坐标获得该方块所在区块坐标

  • 参数

    参数名 数据类型 说明
    blockPos tuple(int,int,int) 方块的坐标
  • 返回值

    数据类型 说明
    None或tuple(int,int) 该方块所在区块的坐标
  • 备注

    • 当传入的blockPos类型不是tuple或者长度不为3时,返回值为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
chunkPos = comp.GetChunkPosFromBlockPos((90, 40, -4))

# IsChunkGenerated

  • 描述

    获取某个区块是否生成过。

  • 参数

    参数名 数据类型 说明
    dimensionId int 区块所在维度
    chunkPos tuple(int,int) 指定区块的坐标
  • 返回值

    数据类型 说明
    bool 该区块是否生成过
  • 备注

    • 玩家探索过(以玩家为中心,模拟距离(在游戏的设置页面内)为半径内的区块),或者使用SetAddArea设置常加载区块附近的区块,都是生成过的区块。这些区块会保存到存档里,再次探索时会从存档读取,不会重新生成。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
# 获取主世界(10000,0,10000)坐标所在的区块是否生成过
result = comp.IsChunkGenerated(0, comp.GetChunkPosFromBlockPos((10000, 0, 10000)))

# RemoveChunkPosWhiteList

  • 描述

    移除对某区块加载完成、准备卸载事件的监听

  • 参数

    参数名 数据类型 说明
    dimension int 区块所在维度
    pos tuple(int,int) 指定区块的坐标
  • 返回值

    数据类型 说明
    bool 是否移除成功
  • 备注

    • 方块坐标(x, y, z)所在的区块坐标为(math.floor(x / 16), math.floor(z / 16))
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.RemoveChunkPosWhiteList(0, (0, 0))

# SetAddArea

  • 描述

    设置区块的常加载

  • 参数

    参数名 数据类型 说明
    key str 常加载区域的名称
    dimensionId int 区块所在的维度
    minPos tuple(int,int,int) 加载区域的最小坐标
    maxPos tuple(int,int,int) 加载区域的最大坐标
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • key必须唯一,若添加区域时key已存在将添加失败。
    • 该方式创建的常加载区域不会tick,即实体,方块实体,随机刻都不会进行更新。若需要区域被tick,请使用原版tickingarea指令
    • 将当前未加载的区块设置为常加载区块时,不会从存档加载生物。但如果是当前已加载的区块,则玩家远离时区块后,区块内的实体会一直保持加载。
    • 常加载区块内可以使用api创建实体、放置方块、放置结构、修改方块实体数据。但由于区块加载的特性,需要将操作位置的四周外延80格的区域都设置为常加载,例如需要在(0,5,0)的位置生成生物/放置方块,需要将(-80,0,-80)到(80,0,80)的区域设置为常加载。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChunkSource(levelId)
comp.SetAddArea('Area0', 0, (0,0,0), (60,0,60))

# explosion

# CreateExplosion

  • 描述

    用于生成爆炸

  • 参数

    参数名 数据类型 说明
    pos tuple(float,float,float) 爆炸位置
    radius int 爆炸威力,具体含义可参考wiki对爆炸的解释
    fire bool 是否带火
    breaks bool 是否破坏方块
    sourceId str 爆炸伤害源的实体id
    playerId str 爆炸创造的实体id
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExplosion(levelId)
comp.CreateExplosion((50,50,50),10,True,True,sourceId,playerId)

# feature

管理PlaceNeteaseStructureFeatureEvent事件在脚本层的监听并提供定位网易自定义结构及部分原版结构的接口

# AddNeteaseFeatureWhiteList

  • 描述

    添加结构对PlaceNeteaseStructureFeatureEvent事件的脚本层监听

  • 参数

    参数名 数据类型 说明
    structureName str 结构的identifier
  • 返回值

    数据类型 说明
    bool 是否增加成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
# 注意structureName格式为floderName:structureName
comp.AddNeteaseFeatureWhiteList("test:pumpkins")

# ClearAllNeteaseFeatureWhiteList

  • 描述

    清空所有已添加Netease Structure Feature对PlaceNeteaseStructureFeatureEvent事件的脚本层监听

  • 参数

  • 返回值

    数据类型 说明
    bool 是否清空成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
comp.ClearAllNeteaseFeatureWhiteList()

# LocateNeteaseFeature

  • 描述

    /locate指令相似,用于定位由网易自定义特征放置的结构,通过PlaceStructure接口、/placestructure指令或结构方块手动放置的结构无法被定位到。如有需要,建议开发者自行记录这些手动放置的结构位置

  • 参数

    参数名 数据类型 说明
    featureName str 结构名称,形式为namespace:featureName,如test:pumpkins
    dimensionId int 结构所在维度,要求该维度已加载
    pos tuple(int,int,int) 以该位置为中心来查找最近的结构
  • 返回值

    数据类型 说明
    tuple(float,float,float)或None 最近的结构位置,定位失败则返回None
  • 备注

    • 定位失败通常是由于该维度不存在、该维度未加载、该维度中不存在该结构、该结构距离传入位置过远(以该位置为中心,半径100个区块内无法找到)
    • 若在feature rules中"conditions"内的"minecraft:biome_filter"中填写了判断维度以外的过滤规则,将有概率无法定位到距离最近的特征。建议开发者在"distribution"的"iterations"中使用query.is_biome代替
    • 定位原理是根据放置条件寻找可能放置结构的位置,因此**有可能会定位到在PlaceNeteaseStructureFeatureEvent事件中被取消生成的结构。**开发者应注意甄别,尽量避免对可能在PlaceNeteaseStructureFeatureEvent事件中被取消放置的结构调用定位函数
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
pos = comp.LocateNeteaseFeature("test:pumpkins", 0, (0, 64, 0))

# LocateStructureFeature

  • 描述

    /locate指令相似,用于定位原版的部分结构,如海底神殿、末地城等。

  • 参数

    参数名 数据类型 说明
    featureType int 原版的结构类型,StructureFeatureType枚举
    dimensionId int 结构所在维度,要求该维度已加载
    pos tuple(int,int,int) 以该位置为中心来查找最近的结构
  • 返回值

    数据类型 说明
    tuple(float,float)或None 最近的结构所在区块位置(x坐标,z坐标),y坐标不定,若定位失败则返回None
  • 备注

    • 定位失败通常是由于该维度不存在、该维度未加载、该维度中不存在该结构、该结构距离传入位置过远等
    • 该接口返回值为对应结构所在区块的坐标,与结构实际生成位置可能相距一定距离
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
pos = comp.LocateStructureFeature(serverApi.GetMinecraftEnum().StructureFeatureType.Village, 0, (0, 64, 0))

# RemoveNeteaseFeatureWhiteList

  • 描述

    移除structureName对PlaceNeteaseStructureFeatureEvent事件的脚本层监听

  • 参数

    参数名 数据类型 说明
    structureName str 结构名称
  • 返回值

    数据类型 说明
    bool 是否移除成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
# 注意structureName格式为floderName:structureName
comp.RemoveNeteaseFeatureWhiteList("test:pumpkins")

# game

# AddRepeatedTimer

  • 描述

    添加服务端触发的定时器,重复执行

  • 参数

    参数名 数据类型 说明
    delay float 延迟时间,单位秒
    func function 定时器触发函数
    *args any 变长参数,可以不设置
    **kwargs any 字典变长参数,可以不设置
  • 返回值

    数据类型 说明
    CallLater 返回触发的定时器实例
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.AddRepeatedTimer(3.0,func,args,kwargs)

# AddTimer

  • 描述

    添加服务端触发的定时器,非重复

  • 参数

    参数名 数据类型 说明
    delay float 延迟时间,单位秒
    func function 定时器触发函数
    *args any 变长参数,可以不设置
    **kwargs any 字典变长参数,可以不设置
  • 返回值

    数据类型 说明
    CallLater 返回单次触发的定时器实例
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.AddTimer(3.0,func,args,kwargs)

# CanSee

  • 描述

    判断起始对象是否可看见目标对象,基于对象的Head位置判断

  • 参数

    参数名 数据类型 说明
    fromId str 起始对象ID
    targetId str 目标对象ID
    viewRange float 视野距离,默认值8.0
    onlySolid bool 只判断固体方块遮挡,默认True; False则液体方块也会遮挡
    angleX float 视野X轴角度,默认值180.0度
    angleY float 视野Y轴角度,默认值180.0度
  • 返回值

    数据类型 说明
    bool 是否可见
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.CanSee(entityId,targetId,20.0,True,180.0,180.0)

# CancelTimer

  • 描述

    取消定时器

  • 参数

    参数名 数据类型 说明
    timer CallLater AddTimer和AddRepeatedTimer时返回的定时器实例
  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.CancelTimer(timer)

# CheckNameValid

  • 描述

    检查昵称是否合法,即不包含敏感词

  • 参数

    参数名 数据类型 说明
    name str 昵称
  • 返回值

    数据类型 说明
    bool True:昵称合法 False:昵称非法
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
isValid = comp.CheckNameValid("史蒂夫")

# CheckWordsValid

  • 描述

    检查语句是否合法,即不包含敏感词

  • 参数

    参数名 数据类型 说明
    words str 语句
  • 返回值

    数据类型 说明
    bool True:语句合法 False:语句非法
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
isValid = comp.CheckWordsValid("creeper? Aww man")

# DisableVineBlockSpread

  • 描述

    设置是否禁用藤曼蔓延生长

  • 参数

    参数名 数据类型 说明
    disable bool True:禁用 False:非禁用
  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.DisableBineBlockSpread(disable)

# ForbidLiquidFlow

  • 描述

    禁止/允许地图中的流体流动;备注:在禁止流体流动后方式的水/岩浆,重新允许流动之后立刻不会触发向四周流动的逻辑,直到再次触发流动判定为止(如周围的方块发生了变化)。仅Apollo可用。

  • 参数

    参数名 数据类型 说明
    forbid bool True为禁止流体流动 False为允许流体流动
  • 返回值

    数据类型 说明
    bool success True为设置成功,False为设置失败
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
success = gameComp.ForbidLiquidFlow(True)

# GetEntitiesAround

  • 描述

    获取区域内的entity列表

  • 参数

    参数名 数据类型 说明
    entityId str 某个entityId
    radius int 正方体区域半径
    filters dict 过滤设置字典
  • 返回值

    数据类型 说明
    list(str) 返回entityId的list
  • 示例

#利用过滤器获取玩家身边的entity
#样例中的过滤器表示满足“是玩家”或者“没有头戴南瓜帽”的entity
filters = {
        "any_of": [
                {
                        "subject" : "other",
                        "test" :  "is_family",
                        "value" :  "player"
                },
                {
                        "test" :  "has_equipment",
                        "domain": "head",
                        "subject" : "other",
                        "operator" : "not",
                        "value" : "carved_pumpkin"
                }
        ]
}
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.GetEntitiesAround(entityId, 100, filters)

# GetEntitiesAroundByType

  • 描述

    获取区域内的某类型的entity列表

  • 参数

    参数名 数据类型 说明
    entityId str 区域中心的entityId,如某个玩家的entityid
    radius int 区域半径
    entityType int 实体类型参见枚举EntityType
  • 返回值

    数据类型 说明
    list(str) 返回entityId的list
  • 示例

import mod.server.extraServerApi as serverApi
# ItemEntity的类型EngineType是64,获取身边的ItemEntity列表
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.GetEntitiesAroundByType(entityId, 100, 64)

# GetEntitiesInSquareArea

  • 描述

    获取区域内的entity列表

  • 参数

    参数名 数据类型 说明
    entityId str或None 某个entityId/None
    startPos tuple(int,int,int) 初始位置
    endPos tuple(int,int,int) 结束位置
    dimensionId int 区域所在维度,默认值为-1,传入非负值时不依赖entityId,entityId可传入None,可获取对应维度的常加载区块内的实体列表
  • 返回值

    数据类型 说明
    list(str) 返回entityId的list
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.GetEntitiesInSquareArea(entityId, (0,0,0), (100,100,100))
# 不依赖entityId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.GetEntitiesInSquareArea(None, (0,0,0), (100,100,100), 0)

# GetEntityIdentifier

  • 描述

    获取实体entity的identifier标识名称

  • 参数

    参数名 数据类型 说明
    entityId str 要获取的目标的entityId
  • 返回值

    数据类型 说明
    str identifier标识符,例如:"minecraft:item"
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.GetEntityIdentifier(entityId)

# GetGameDiffculty

  • 描述

    获取游戏难度

  • 参数

  • 返回值

    数据类型 说明
    int GetMinecraftEnum().GameDiffculty.*:Peaceful,Easy,Normal,Hard分别为0~3
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
diffculty = comp.GetGameDiffculty()

# GetGameRulesInfoServer

  • 描述

    获取游戏规则

  • 参数

  • 返回值

    数据类型 说明
    dict 游戏规则字典
  • 备注

    • 游戏规则字典 gameRule见代码注释
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
type = comp.GetGameRulesInfoServer()
#返回值如下
{
'create_info': {
        'bonus_item': bool,
        'init_with_map': bool,
        'generator_type': int,
        'seed': str,
        },
'option_info': {
        'pvp': bool,
        'show_coordinates': bool,
        'fire_spreads': bool,
        'tnt_explodes': bool,
        'mob_loot': bool,
        'natural_regeneration': bool,
        'tile_drops': bool,
        'experimental_gameplay': bool,
        },
'cheat_info': {
        'enable': bool,
        'always_day': bool,
        'mob_griefing': bool,
        'keep_inventory': bool,
        'weather_cycle': bool,
        'mob_spawn': bool,
        'entities_drop_loot': bool,
        'daylight_cycle': bool,
        'command_blocks_enabled': bool,
        'random_tick_speed': int,
        }
}

# GetGameType

  • 描述

    获取游戏类型

  • 参数

  • 返回值

    数据类型 说明
    int GetMinecraftEnum().GameType.*:Survival,Creative,Adventure分别为0~2
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
type = comp.GetGameType()

# GetItemEntityItemIdentifier

  • 描述

    获取ItemEntity的Item的identifier标识名称

  • 参数

    参数名 数据类型 说明
    entityId str 要获取的目标的entityId
  • 返回值

    数据类型 说明
    str identifier标识符,例如:"minecraft:apple"
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.GetItemEntityItemIdentifier(entityId)

# GetLevelGravity

  • 描述

    获取重力因子

  • 参数

  • 返回值

    数据类型 说明
    float 重力因子
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.GetLevelGravity()

# GetPlayerGameType

  • 描述

    获取指定玩家的游戏模式

  • 参数

    参数名 数据类型 说明
    playerId str 玩家id
  • 返回值

    数据类型 说明
    int GameType类型
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
gameType = comp.GetPlayerGameType(playerId)

# GetSpawnPosition

  • 描述

    获取世界出生点坐标

  • 参数

  • 返回值

    数据类型 说明
    tuple(int,int,int) 出生点坐标
  • 备注

    • 返回的坐标不一定是精确的出生点坐标,也不一定是安全的出生点,玩家出生时会在该坐标附近随机选取一个满足出生条件的坐标。
    • 未使用setworldspawn指令设置过出生点位置时,返回坐标的y轴是32767
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
spawnPos = gameComp.GetSpawnPosition()

# IsLockDifficulty

  • 描述

    获取当前世界的游戏难度是否被锁定

  • 参数

  • 返回值

    数据类型 说明
    bool isLock True为已锁定,False为未锁定
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
isLock = comp.IsLockDifficulty()

# KillEntity

  • 描述

    杀死某个Entity

  • 参数

    参数名 数据类型 说明
    entityId str 要杀死的目标的entityId
  • 返回值

    数据类型 说明
    bool 是否杀死成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.KillEntity(entityId)

# LockDifficulty

  • 描述

    锁定当前世界游戏难度(仅本次游戏有效),锁定后任何玩家在游戏内都无法通过指令或暂停菜单修改游戏难度

  • 参数

    参数名 数据类型 说明
    lock bool True:锁定 False:解锁
  • 返回值

    数据类型 说明
    bool result是否操作成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.LockDifficulty(True)

# LookupItemByName

  • 描述

    判定指定identifier的物品是否存在

  • 参数

    参数名 数据类型 说明
    itemName str 物品的identifier。类似"minecraft:bed",支持自定义物品
  • 返回值

    数据类型 说明
    bool exist True为对应的物品存在,False为对应物品不存在
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
exist = gameComp.LookupItemByName("minecraft:bed")

# OpenCityProtect

  • 描述

    开启城市保护,包括禁止破坏方块,禁止对方块使用物品,禁止怪物攻击玩家,禁止玩家之间互相攻击,禁止日夜切换,禁止天气变化,禁止怪物群落刷新。仅Apollo可用。

  • 参数

  • 返回值

    数据类型 说明
    bool success True为设置成功,False为设置失败
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
success = gameComp.OpenCityProtect()

# PickUpItemEntity

  • 描述

    某个Player拾取物品ItemEntity

  • 参数

    参数名 数据类型 说明
    playerEntityId str 拾取者的playerEntityId
    itemEntityId str 要拾取的物品itemEntityId
  • 返回值

    数据类型 说明
    bool 是否拾取成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.PickUpItemEntity(playerEntityId, itemEntityId)

# PlaceStructure

  • 描述

    放置结构

  • 参数

    参数名 数据类型 说明
    playerId str或None 放置该结构的玩家id/None
    pos tuple(float,float,float) 放置结构的位置
    structureName str 结构名称
    dimensionId int 希望放置结构的维度,默认为-1,传入非负值时不依赖playerId,playerId可传入None,可在对应维度的常加载区块放置结构
  • 返回值

    数据类型 说明
    bool 是否放置成功,True为放置成功,False为放置失败
  • 备注

    • 放置时需要确保所放置的区块都已加载,否则会放置失败或者部分缺失
    • 该接口是同步执行的,请勿在一帧内放置大量结构,会造成游戏卡顿
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.PlaceStructure(playerId, (100, 70, 100), "test:structureName")
# 不依赖playerId放置结构,支持在常加载区块放置
comp.PlaceStructure(None, (100, 70, 100), "test:structureName", 0)

# SetCanActorSetOnFireByLightning

  • 描述

    禁止/允许闪电点燃实体

  • 参数

    参数名 数据类型 说明
    enable bool True为允许闪电点燃实体 False为禁止闪电点燃实体
  • 返回值

    数据类型 说明
    bool success True为设置成功,False为设置失败
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
success = gameComp.SetCanActorSetOnFireByLightning(False)

# SetCanBlockSetOnFireByLightning

  • 描述

    禁止/允许闪电点燃方块。

  • 参数

    参数名 数据类型 说明
    enable bool True为允许闪电点燃方块 False为禁止闪电点燃方块
  • 返回值

    数据类型 说明
    bool success True为设置成功,False为设置失败
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
success = gameComp.SetCanBlockSetOnFireByLightning(False)

# SetDefaultGameType

  • 描述

    设置默认游戏模式

  • 参数

    参数名 数据类型 说明
    gameType int GetMinecraftEnum().GameType.*:Survival,Creative,Adventure分别为0~2
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(playerId)
# 设置创造模式为默认游戏模式
comp.SetDefaultGameType(1)

# SetDisableContainers

  • 描述

    设置是否屏蔽容器交互(不包括背包),不包括纯客户端逻辑控制的容器:纱布机,切石机,制图台等

  • 参数

    参数名 数据类型 说明
    isDisable bool 是否屏蔽容器交互
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetDisableContainers(True)

# SetDisableDropItem

  • 描述

    设置禁止丢弃物品

  • 参数

    参数名 数据类型 说明
    isDisable bool 是否禁止丢弃物品
  • 返回值

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

# 1、开启开关后,玩家死亡会所有物品消失;如需保证物品不掉落,可以配合/gamerule keepInventory true 使用
# 2、创造模式下物品依然能丢弃。
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetDisableDropItem(True)

# SetDisableGravityInLiquid

  • 描述

    是否屏蔽所有实体在液体(水、岩浆)中的重力

  • 参数

    参数名 数据类型 说明
    isDisable bool True:屏蔽 False:取消屏蔽
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 设置屏蔽实体在液体中的重力后,实体将不能上浮也不能下潜。对玩家而言,当水/岩浆淹没腰部及以上时(约在水面/岩浆表面0.7格及以下),将无法上岸。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.SetDisableGravityInLiquid(True)

# SetDisableHunger

  • 描述

    设置是否屏蔽饥饿度

  • 参数

    参数名 数据类型 说明
    isDisable bool 是否屏蔽饥饿度
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 如需隐藏饥饿度请使用extraClientApi的HideHungerGui
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetDisableHunger(True)

# SetGameDifficulty

  • 描述

    设置游戏难度

  • 参数

    参数名 数据类型 说明
    difficulty int GetMinecraftEnum().GameDiffculty.*:Peaceful,Easy,Normal,Hard分别为0~3
  • 返回值

    数据类型 说明
    bool 是否设置成功,True为成功,False为失败
  • 备注

    • 若已经锁定了游戏难度,除非调用解锁游戏难度,否则将无法成功修改游戏难度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
result = comp.SetGameDifficulty(0)

# SetGameRulesInfoServer

  • 描述

    设置游戏规则。所有参数均可选。

  • 参数

    参数名 数据类型 说明
    gameRuleDict dict 游戏规则字典
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 其中游戏规则字典中每一项都为可选参数,但是设置option_info或者cheat_info其中一项子项后,必须加上option_info或者cheat_info
  • 示例

###游戏规则字典说明
gameRuleDict ={
'option_info': {
        'pvp': bool, #玩家伤害
        'show_coordinates': bool, #显示坐标
        'fire_spreads': bool, #火焰蔓延
        'tnt_explodes': bool, #tnt爆炸
        'mob_loot': bool, #生物战利品
        'natural_regeneration': bool, #自然生命恢复
        'tile_drops': bool, #方块掉落
        'immediate_respawn':bool #作弊开启
        },
'cheat_info': {
        'enable': bool, #是否开启作弊
        'always_day': bool, #终为白日
        'mob_griefing': bool, #生物破坏方块
        'keep_inventory': bool, #保留物品栏
        'weather_cycle': bool, #天气更替
        'mob_spawn': bool, #生物生成
        'entities_drop_loot': bool, #实体掉落
        'daylight_cycle': bool, #开启昼夜交替
        'command_blocks_enabled': bool, #启用方块命令
        'random_tick_speed': int,#随机方块tick速度
        }
}
###
ruleDict ={
        'cheat_info': {
                'enable': True,
                'always_day': True,

        }
}
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.SetGameRulesInfoServer(ruleDict)

# SetHurtCD

  • 描述

    设置伤害CD

  • 参数

    参数名 数据类型 说明
    cdTime int 单位帧数
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetHurtCD(1)

# SetLevelGravity

  • 描述

    设置重力因子

  • 参数

    参数名 数据类型 说明
    data float 重力因子
  • 返回值

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

import mod.server.extraServerApi as serverApi
#生物可单独设置重力因子,当生物的重力因子非0时则该生物单独有自己的重力因子,具体参见实体重力组件
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.SetLevelGravity(-0.08)

# SetNotifyMsg

  • 描述

    设置消息通知

  • 参数

    参数名 数据类型 说明
    msg str 消息内容
    color str 使用GenerateColor接口获取的颜色,默认为白色
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetNotifyMsg("消息通知", serverApi.GenerateColor('BLUE'))

# SetOnePopupNotice

  • 描述

    在具体某个玩家的物品栏上方弹出popup类型通知,位置位于tip类型消息下方,此功能更建议客户端使用game组件的对应接口SetPopupNotice

  • 参数

    参数名 数据类型 说明
    playerId str 具体玩家Id
    message str 消息内容,可以在消息前增加extraServerApi.GenerateColor("RED")字符来设置颜色,具体参考样例
    subtitle str 消息子标题内容,效果同message,也可设置颜色,位置位于message上方
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(playerId)
# playerId 变量改为具体的玩家Id
comp.SetOnePopupNotice(playerId, serverApi.GenerateColor("RED") + "消息通知", "消息子标题")

# SetOneTipMessage

  • 描述

    在具体某个玩家的物品栏上方弹出tip类型通知,位置位于popup类型通知上方,此功能更建议在客户端使用game组件的对应接口SetTipMessage

  • 参数

    参数名 数据类型 说明
    playerId str 具体玩家Id
    message str 消息内容,可以在消息前增加extraServerApi.GenerateColor("RED")字符来设置颜色,具体参考样例
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(playerId)
# playerId 变量改为具体的玩家Id
comp.SetOneTipMessage(playerId, serverApi.GenerateColor("RED") + "tip提示")

# SetPopupNotice

  • 描述

    在所有玩家物品栏上方弹出popup类型通知,位置位于tip类型消息下方

  • 参数

    参数名 数据类型 说明
    message str 消息内容,可以在消息前增加extraServerApi.GenerateColor("RED")字符来设置颜色,具体参考样例
    subtitle str 消息子标题内容,效果同message,也可设置颜色,位置位于message上方
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetPopupNotice(serverApi.GenerateColor("RED") + "消息通知", "消息子标题")

# SetTipMessage

  • 描述

    在所有玩家物品栏上方弹出tip类型通知,位置位于popup类型通知上方

  • 参数

    参数名 数据类型 说明
    message str 消息内容,可以在消息前增加extraServerApi.GenerateColor("RED")字符来设置颜色,具体参考样例
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetTipMessage(serverApi.GenerateColor("RED") + "tip提示")

# UpgradeMapDimensionVersion

  • 描述

    提升指定地图维度的版本号,版本号不符的维度,地图存档信息将被废弃

  • 参数

    参数名 数据类型 说明
    dimension int 维度的数字ID,0代表主世界
    version int 维度地图的版本号,取值范围为1-999
  • 返回值

    数据类型 说明
    bool success True为设置成功,False为设置失败
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
success = gameComp.UpgradeMapDimensionVersion(0, 10)

# time

# GetTime

  • 描述

    获取当前世界时间

  • 参数

  • 返回值

    数据类型 说明
    int 当前时间,帧数
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateTime(levelId)
comp.GetTime()

# SetTime

  • 描述

    设置当前世界时间

  • 参数

    参数名 数据类型 说明
    time int 时间,单位帧数,游戏一天24000帧,可以通过设置时间来改变天亮和天黑以及其他
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateTime(levelId)
comp.SetTime(10000)

# weather

# IsRaining

  • 描述

    获取是否下雨

  • 参数

  • 返回值

    数据类型 说明
    bool 是否下雨
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateWeather(levelId)
comp.IsRaining()

# IsThunder

  • 描述

    获取是否打雷

  • 参数

  • 返回值

    数据类型 说明
    bool 是否打雷
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateWeather(levelId)
comp.IsThunder()

# SetRaining

  • 描述

    设置是否下雨

  • 参数

    参数名 数据类型 说明
    level float 下雨强度
    time int 下雨时间单位为帧
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateWeather(levelId)
comp.SetRaining(0.5,1000)

# SetThunder

  • 描述

    设置是否打雷

  • 参数

    参数名 数据类型 说明
    level float 打雷强度
    time int 打雷时间单位为帧
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateWeather(levelId)
comp.SetThunder(0.5,1000)set_lightning

# 实体

# action

# GetAttackTarget

  • 描述

    获取仇恨目标

  • 参数

  • 返回值

    数据类型 说明
    str 仇恨目标的实体id
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(entityId)
comp.GetAttackTarget()

# GetHurtBy

  • 描述

    获取上一次攻击自己的实体

  • 参数

  • 返回值

    数据类型 说明
    str 攻击自己的对象实体id
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(entityId)
comp.GetHurtBy()

# ResetAttackTarget

  • 描述

    清除仇恨目标

  • 参数

  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(entityId)
comp.ResetAttackTarget()

# ResetHurtBy

  • 描述

    清除上一次攻击自己的实体的标记

  • 参数

  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(entityId)
comp.ResetHurtBy()

# SetAttackTarget

  • 描述

    设置仇恨目标

  • 参数

    参数名 数据类型 说明
    targetId str 目标实体id
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(entityId)
comp.SetAttackTarget(targetId)

# SetHurtBy

  • 描述

    设置上一次攻击自己的实体。即让他认为某个实体刚才对他发起了攻击(虽然实际上没有),主要用于原版的minecraft:damage_sensor等行为。

  • 参数

    参数名 数据类型 说明
    attackerId str 攻击自己的实体id
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(zombieEntityId)
# 让某个僵尸认为这个玩家刚才A了它一下
comp.SetHurtBy(playerId)

# SetMobKnockback

  • 描述

    设置击退的初始速度,需要考虑阻力的影响

  • 参数

    参数名 数据类型 说明
    xd float x轴方向,用來控制角度
    zd float z轴方向,用來控制角度
    power float 用来控制水平方向的初速度
    height float 竖直方向的初速度
    heightCap float 向上速度阈值,当实体本身已经有向上的速度时需要考虑这个值,用来确保最终向上的速度不会超过heightCap
  • 返回值

    数据类型 说明
    None 无返回值
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAction(entityId)
comp.SetMobKnockback(0.1, 0.1, 1.0, 1.0, 1.0)

# actorLoot

实体掉落物

# SpawnLootTable

  • 描述

    使用生物类型模拟一次随机掉落,生成的物品与json定义的概率有关

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 掉落位置
    identifier str 实体identifier,如minecraft:guardian
    playerKillerId str 玩家杀手(只能是玩家),默认None
    damageCauseEntityId str 伤害来源实体Id(掉落与该实体手持物品的抢夺附魔等级有关),默认None
  • 返回值

    数据类型 说明
    bool 是否成功生成掉落
  • 备注

    • 需要在对应的player实体附近生成,否则会生成失败。对于某些特殊的生物,如minecraft:sheep,需要使用SpawnLootTableWithActor接口来模拟随机掉落。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateActorLoot(playerId)
result = comp.SpawnLootTable((1, 4, 5), 'minecraft:guardian')

# SpawnLootTableWithActor

  • 描述

    使用生物实例模拟一次随机掉落,生成的物品与json定义的概率有关

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 掉落位置
    entityId str 模拟生物的生物Id
    playerKillerId str 玩家杀手(只能是玩家),默认None
    damageCauseEntityId str 伤害来源实体Id(掉落与该实体手持物品的抢夺附魔等级有关),默认None
  • 返回值

    数据类型 说明
    bool 是否成功生成掉落
  • 备注

    • 需要在对应的player实体附近生成,否则会生成失败
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateActorLoot(playerId)
result = comp.SpawnLootTableWithActor((1, 4, 5), '-335007449086')

# actorPushable

服务端用来控制玩家是否可推动

# SetActorPushable

  • 描述

    设置实体是否可推动

  • 参数

    参数名 数据类型 说明
    isPushable int 0:不可推动 1:可推动
  • 返回值

    数据类型 说明
    bool True表示设置成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateActorPushable(entityId)
success = comp.SetActorPushable(1)

# attr

# GetAttrMaxValue

  • 描述

    获取属性最大值

  • 参数

    参数名 数据类型 说明
    type int AttrType枚举
  • 返回值

    数据类型 说明
    float 属性值结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
comp.GetAttrMaxValue(serverApi.GetMinecraftEnum().AttrType.HEALTH)

# GetAttrValue

  • 描述

    获取属性值

  • 参数

    参数名 数据类型 说明
    type int AttrType枚举
  • 返回值

    数据类型 说明
    float 属性结果
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
comp.GetAttrValue(serverApi.GetMinecraftEnum().AttrType.HEALTH)

# GetStepHeight

  • 描述

    返回玩家前进非跳跃状态下能上的最大台阶高度

  • 参数

  • 返回值

    数据类型 说明
    float 台阶高度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
print(comp.GetStepHeight())

# IsEntityOnFire

  • 描述

    获取实体是否着火

  • 参数

  • 返回值

    数据类型 说明
    bool 是否着火
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
isOnFire = comp.IsEntityOnFire()

# ResetStepHeight

  • 描述

    恢复引擎默认玩家前进非跳跃状态下能上的最大台阶高度

  • 参数

  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
comp.ResetStepHeight()

# SetAttrMaxValue

  • 描述

    设置属性最大值

  • 参数

    参数名 数据类型 说明
    type int AttrType枚举
    value float 属性值
  • 返回值

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

    • 设置的最大饱和度不能超过当前的饥饿值; 食用食物后,最大饱和度会被原版游戏机制修改
    • 设置接口暂不支持 ABSORPTION
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
comp.SetAttrMaxValue(serverApi.GetMinecraftEnum().AttrType.SPEED,0.2)

# SetAttrValue

  • 描述

    设置属性值

  • 参数

    参数名 数据类型 说明
    attrType int AttrType枚举
    value float 属性值
  • 返回值

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

    • 设置接口暂不支持 ABSORPTION
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
comp.SetAttrValue(serverApi.GetMinecraftEnum().AttrType.HEALTH, 20)

# SetEntityOnFire

  • 描述

    设置实体着火

  • 参数

    参数名 数据类型 说明
    seconds int 着火时间(单位:秒)
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 在水中或者雨中不会生效,着火时间受生物装备、生物的状态影响。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
comp.SetEntityOnFire(8)

# SetStepHeight

  • 描述

    设置玩家前进非跳跃状态下能上的最大台阶高度, 默认值为0.5625,1的话表示能上一个台阶

  • 参数

    参数名 数据类型 说明
    stepHeight float 最大高度,需要大于0
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 为了避免因浮点数误差导致错误,设置的时候通常会增加1/16个方块大小,即0.0625。所以此处我们设置2.0625。游戏中默认值是0.5625,即半格高度。
    • 只对玩家生效,无法修改其它实体该属性
    • 修改后不影响跳跃逻辑及跳跃高度,并不会因此而跳到更高,因此在某些特定情况下,你可以走上方块但跳不上去。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAttr(entityId)
#如果前面放置有两格高的方块,玩家按前进能直接上去,无须跳跃
comp.SetStepHeight(2.0625)

# auxValue

# GetAuxValue

  • 描述

    获取射出的弓箭或投掷出的药水的附加值

  • 参数

  • 返回值

    数据类型 说明
    int auxValue
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAuxValue(entityId)
comp.GetAuxValue()

# collisionBox

# GetSize

  • 描述

    获取实体的包围盒

  • 参数

  • 返回值

    数据类型 说明
    tuple(int,int) 包围盒大小
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateCollisionBox(entityId)
comp.GetSize()

# SetSize

  • 描述

    设置实体的包围盒

  • 参数

    参数名 数据类型 说明
    size tuple(int,int) 第一位表示宽度和长度,第二位表示高度
  • 返回值

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

    • 对新生产的实体需要经过5帧之后再设置包围盒的大小才会生效
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateCollisionBox(entityId)
comp.SetSize((2,3))

# dimension

# ChangeEntityDimension

  • 描述

    传送实体

  • 参数

    参数名 数据类型 说明
    dimensionId int 维度,0-overWorld; 1-nether; 2-theEnd
    pos tuple(int,int,int) 传送的坐标,假如输入None,那么就优先选择目标维度的传送门作为目的地,其次使用维度坐标映射逻辑确定目的地
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(playerId)
comp.ChangeEntityDimension(0, (0,4,0))

# ChangePlayerDimension

  • 描述

    传送玩家

  • 参数

    参数名 数据类型 说明
    dimensionId int 维度,0-overWorld; 1-nether; 2-theEnd
    pos tuple(int,int,int) 传送的坐标
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(playerId)
comp.ChangePlayerDimension(0, (0,4,0))

# CreateDimension

  • 描述

    创建新的dimension

  • 参数

    参数名 数据类型 说明
    dimensionId int 维度,0/1/2维度是不需要创建的。dimensionId取值范围为[0, 20]
  • 返回值

    数据类型 说明
    bool 是否创建成功
  • 备注

    • 要求在初始化mod时调用
  • 示例

comp = serverApi.GetEngineCompFactory().CreateDimension(levelId)
comp.CreateDimension(3)

# GetEntityDimensionId

  • 描述

    获取实体dimension

  • 参数

  • 返回值

    数据类型 说明
    int 实体维度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(playerId)
comp.GetEntityDimensionId()

# MirrorDimension

  • 描述

    复制不同dimension的地形

  • 参数

    参数名 数据类型 说明
    fromId int 原dimensionId
    toId int 目标dimensionId
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(playerId)
comp.MirrorDimension(0, 1)

# RegisterEntityAOIEvent

  • 描述

    注册感应区域,有生物进入时和离开时会有消息通知

  • 参数

    参数名 数据类型 说明
    dimension int 维度id
    name str 注册的感应区域名
    aabb tuple(float,float,float,float,float,float) 感应区域的坐标范围,依次为minX, minY, minZ, maxX, maxY, maxZ
    ignoredEntities list(str) 忽略的实体id列表
  • 返回值

    数据类型 说明
    bool 是否注册成功
  • 备注

    • 注册完感应区域后,需通过监听OnEntityAreaEvent事件来获取感应事件
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(playerId)
comp.RegisterEntityAOIEvent(0, "test", (0, 0, 0, 1, 1, 1), None)

# UnRegisterEntityAOIEvent

  • 描述

    反注册感应区域

  • 参数

    参数名 数据类型 说明
    dimension int 维度id
    name str 需要反注册的感应区域名
  • 返回值

    数据类型 说明
    bool 是否注册成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(playerId)
comp.UnRegisterEntityAOIEvent(0, "test")

# effect

实体状态效果相关接口,包括添加、删除、查询状态等

# AddEffectToEntity

  • 描述

    为实体添加指定状态效果,如果添加的状态已存在则有以下集中情况:1、等级大于已存在则更新状态等级及持续时间;2、状态等级相等且剩余时间duration大于已存在则刷新剩余时间;3、等级小于已存在则不做修改;4、粒子效果以新的为准

  • 参数

    参数名 数据类型 说明
    effectName str 状态效果名称字符串,包括自定义状态效果和原版状态效果,原版状态效果可在wiki查询
    duration int 状态效果持续时间,单位秒
    amplifier int 状态效果的额外等级。必须在0至255之间(含)。若未指定,默认为0。注意,状态效果的第一级(如生命恢复 I)对应为0,因此第二级状态效果,如生命回复 II,应指定强度为1。部分效果及自定义状态效果没有强度之分,如夜视
    showParticles bool 是否显示粒子效果,True显示,False不显示
  • 返回值

    数据类型 说明
    bool True表示设置成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateEffect(entityId)
res = comp.AddEffectToEntity("speed", 30, 2, True)

# GetAllEffects

  • 描述

    获取实体当前所有状态效果

  • 参数

  • 返回值

    数据类型 说明
    list(dict) 状态效果信息字典的list
  • 备注

    • 状态效果信息字典 effectDict
      关键字 数据类型 说明
      effectName str 状态效果名称
      duration int 状态效果剩余持续时间,单位秒
      amplifier int 状态效果额外等级
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateEffect(entityId)
effectDictList = comp.GetAllEffects()

# RemoveEffectFromEntity

  • 描述

    为实体删除指定状态效果

  • 参数

    参数名 数据类型 说明
    effectName str 状态效果名称字符串,包括自定义状态效果和原版状态效果,原版状态效果可在wiki查询
  • 返回值

    数据类型 说明
    bool True表示删除成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateEffect(entityId)
res = comp.RemoveEffectFromEntity("speed")

# engineType

获取实体的类型

# GetEngineType

  • 描述

    获取实体类型

  • 参数

  • 返回值

    数据类型 说明
    int 详见EntityType
  • 示例

import mod.server.extraServerApi as serverApi
from mod_log import logger as logger
comp = serverApi.GetEngineCompFactory().CreateEngineType(entityId)
entityType = comp.GetEngineType()
# 以判断是否是 Mob 为例,如果要判断是否为弹射物,找到对应的类型Projectile修改即可
if entityType & serverApi.GetMinecraftEnum().EntityType.Mob == serverApi.GetMinecraftEnum().EntityType.Mob:
        logger.info("{} is Mod".format(comp.GetEngineTypeStr()))
# 或者通过Minecraft枚举值文档找到 Mob 的值为 0x00000100 即 256
if entityType & 0x0000010 == 0x0000010:
        logger.info("{} is Mod".format(comp.GetEngineTypeStr()))
if entityType & 256 == 256:
        logger.info("{} is Mod".format(comp.GetEngineTypeStr()))

# GetEngineTypeStr

  • 描述

    获取实体的类型名称

  • 参数

  • 返回值

    数据类型 说明
    str 实体类型名称,如minecraft:husk
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateEngineType(entityId)
comp.GetEngineTypeStr()

# extraData

# CleanExtraData

  • 描述

    清除实体的自定义数据或者世界的自定义数据,清除实体数据时使用对应实体id创建组件,设置世界数据时使用levelId创建组件

  • 参数

    参数名 数据类型 说明
    key str 自定义key
  • 返回值

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

import mod.server.extraServerApi as serverApi
# 清除实体数据
entitycomp = serverApi.GetEngineCompFactory().CreateExtraData(entityId)
suc = entitycomp.CleanExtraData("nickname")
print "CleanExtraData entity=%s suc=%s" % (entityId, suc)
# 清除全局数据
levelcomp = serverApi.GetEngineCompFactory().CreateExtraData(levelId)
suc = levelcomp.CleanExtraData("globalMsg")
print "CleanExtraData for level suc=%s" % suc

# GetExtraData

  • 描述

    获取实体的自定义数据或者世界的自定义数据,某个键所对应的值。获取实体数据时使用对应实体id创建组件,获取世界数据时使用levelId创建组件

  • 参数

    参数名 数据类型 说明
    key str 自定义key
  • 返回值

    数据类型 说明
    any key对应的值
  • 示例

# 获取全局数据
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExtraData(levelId)
levelExData = comp.GetExtraData("globalMsg")
# 获取

# GetWholeExtraData

  • 描述

    获取完整的实体的自定义数据或者世界的自定义数据,获取实体数据时使用对应实体id创建组件,获取世界数据时使用levelId创建组件

  • 参数

  • 返回值

    数据类型 说明
    dict或None 获取指定实体或者全局的额外存储数据字典,假如没有任何额外存储数据,那么返回None或者空字典
  • 示例

#获取实体数据字典
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExtraData(entityId)
dataDict = comp.GetWholeExtraData()
if dataDict:
        for key, value in dataDict.iteritems():
                print "key=%s value=%s" % (key, str(value))
#获取全局数据字典
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExtraData(levelId)
dataDict = comp.GetWholeExtraData()
if dataDict:
        for key, value in dataDict.iteritems():
                print "key=%s value=%s" % (key, str(value))

# SetExtraData

  • 描述

    用于设置实体的自定义数据或者世界的自定义数据,数据以键值对的形式保存。设置实体数据时使用对应实体id创建组件,设置世界数据时使用levelId创建组件

  • 参数

    参数名 数据类型 说明
    key str 自定义key
    value any key对应的值,支持python基本数据类型
  • 返回值

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

import mod.server.extraServerApi as serverApi
# 设置实体的自定义数据
entitycomp = serverApi.GetEngineCompFactory().CreateExtraData(entityId)
entitycomp.SetExtraData("nickname","steve")
entitycomp.SetExtraData("score",256)
# 设置世界的自定义数据
levelcomp = serverApi.GetEngineCompFactory().CreateExtraData(levelId)
levelcomp.SetExtraData("globalMsg","helloWorld")

# gravity

# GetGravity

  • 描述

    获取实体的重力因子,当生物重力因子为0时则应用世界的重力因子

  • 参数

  • 返回值

    数据类型 说明
    float 重力因子
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGravity(entityId)
comp.GetGravity()

# SetGravity

  • 描述

    设置实体的重力因子,当生物重力因子为0时则应用世界的重力因子

  • 参数

    参数名 数据类型 说明
    gravity float 负数,表示每帧向下的速度
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGravity(entityId)
comp.SetGravity(-0.08)

# hurt

# Hurt

  • 描述

    设置实体伤害

  • 参数

    参数名 数据类型 说明
    damage int 伤害值
    cause str 伤害来源,详见Minecraft枚举值文档的ActorDamageCause
    attackerId str 伤害来源的实体id,默认为None
    childAttackerId str 伤害来源的子实体id,默认为None,比如玩家使用抛射物对实体造成伤害,该值应为抛射物Id
    knocked bool 实体是否被击退,默认值为True
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateHurt(playerId)
comp.Hurt(10, serverApi.GetMinecraftEnum().ActorDamageCause.EntityAttack, attackerId, None, False)

# ImmuneDamage

  • 描述

    设置实体是否免疫伤害(该属性存档)

  • 参数

    参数名 数据类型 说明
    immune bool 是否免疫伤害
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateHurt(entityId)
comp.ImmuneDamage(True)

# modAttr

用于支持脚本层的属性管理

# GetAttr

  • 描述

    获取属性值

  • 参数

    参数名 数据类型 说明
    paramName str 属性名称,str的名称建议以mod命名为前缀,避免多个mod之间冲突
    defaultValue any 属性默认值,属性不存在时返回该默认值,此时属性值依然未设置
  • 返回值

    数据类型 说明
    any 返回属性值
  • 备注

    • defaultValue不传的时候默认为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModAttr(entityId)
comp.GetAttr('health')
# 如果直接修改GetAttr出来的集合类型,需要重新调用一遍SetAttr确保有进行更新
testDict = comp.GetAttr('testDict')
testDict['key'] = 'newValue'
comp.SetAttr('testDict', testDict)

# SetAttr

  • 描述

    设置属性值

  • 参数

    参数名 数据类型 说明
    paramName str 属性名称,str的名称建议以mod命名为前缀,避免多个mod之间冲突
    paramValue any 属性值,支持python基础数据
  • 返回值

  • 备注

    • 注意:tuple、set在同步时会转成list。建议优先使用数字和字符串等非集合类型。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateModAttr(entityId)
comp.SetAttr('health', 1)
comp.SetAttr('testDict', {'key':'value'})

# persistence

# SetPersistence

  • 描述

    设置实体是否存盘

  • 参数

    参数名 数据类型 说明
    isPersistent bool True为存盘,False为不存盘
  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePersistence(entityId)
comp.SetPersistence(True)

# pos

# GetFootPos

  • 描述

    获取实体脚所在的位置

  • 参数

  • 返回值

    数据类型 说明
    tuple(float,float,float) 位置信息
  • 备注

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePos(entityId)
entityFootPos = comp.GetFootPos()

# GetPos

  • 描述

    获取实体位置

  • 参数

  • 返回值

    数据类型 说明
    tuple(float,float,float) 位置信息
  • 备注

    • 对于非玩家,获取到的是脚底部位的位置
    • 对于玩家,如果处于行走,站立,游泳,潜行,滑翔状态,获得的位置比脚底位置高1.62,如果处于睡觉状态,获得的位置比最低位置高0.2
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePos(entityId)
comp.GetPos()

# SetFootPos

  • 描述

    设置实体脚所在的位置

  • 参数

    参数名 数据类型 说明
    footPos tuple(float,float,float) 实体脚所在的位置
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 实体行为与使用tp命令一致
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePos(entityId)
comp.SetFootPos((0, 4, 0))

# SetPos

  • 描述

    设置实体位置

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) xyz值
  • 返回值

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

    • 实体行为与使用tp命令一致
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePos(entityId)
comp.SetPos((1,2,3))

# rot

# GetRot

  • 描述

    获取实体角度

  • 参数

  • 返回值

    数据类型 说明
    tuple(float,float) (上下角度,左右角度)单位是角度而不是弧度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRot(entityId)
comp.GetRot()

# SetRot

  • 描述

    设置体角度

  • 参数

    参数名 数据类型 说明
    rot tuple(float,float) (上下角度,左右角度)单位是角度而不是弧度
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRot(entityId)
comp.SetRot((30,0))

# 生物

# breath

# GetCurrentAirSupply

  • 描述

    生物当前氧气储备值

  • 参数

  • 返回值

    数据类型 说明
    int 生物当前氧气储备值
  • 备注

    • 注意:该值返回的是当前氧气储备的支持的逻辑帧数 = 氧气储备值 * 逻辑帧数(每秒20帧数)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(entityId)
comp.GetCurrentAirSupply()

# GetMaxAirSupply

  • 描述

    获取生物最大氧气储备值

  • 参数

  • 返回值

    数据类型 说明
    int 最大氧气储备值
  • 备注

    • 注意:该值返回的是最大氧气储备的支持的逻辑帧数 = 氧气储备值 * 逻辑帧数(每秒20帧数)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(entityId)
comp.GetMaxAirSupply()

# GetUnitBubbleAirSupply

  • 描述

    单位气泡数对应的氧气储备值

  • 参数

  • 返回值

    数据类型 说明
    int 单位气泡数对应的氧气储备值
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(levelId)
comp.GetUnitBubbleAirSupply()

# IsConsumingAirSupply

  • 描述

    获取生物当前是否在消耗氧气

  • 参数

  • 返回值

    数据类型 说明
    bool 是否消耗氧气
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(entityId)
comp.IsConsumingAirSupply()

# SetCurrentAirSupply

  • 描述

    设置生物氧气储备值

  • 参数

    参数名 数据类型 说明
    data int 设置生物当前氧气值
  • 返回值

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

    • 注意:该值设置的是当前氧气储备的支持的逻辑帧数 = 氧气储备值 * 逻辑帧数(每秒20帧数)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(entityId)
comp.SetCurrentAirSupply(300)

# SetMaxAirSupply

  • 描述

    设置生物最大氧气储备值

  • 参数

    参数名 数据类型 说明
    data int 设置生物最大氧气值
  • 返回值

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

    • 注意:该值设置的是最大氧气储备的支持的逻辑帧数 = 氧气储备值 * 逻辑帧数(每秒20帧数)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(entityId)
comp.SetMaxAirSupply(400)

# SetRecoverTotalAirSupplyTime

  • 描述

    设置恢复最大氧气量的时间,单位秒

  • 参数

    参数名 数据类型 说明
    timeSec float 恢复生物最大氧气值
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 注意:当设置的最大氧气值小于(timeSec*10)时,生物每帧恢复氧气量的值为0
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBreath(entityId)
comp.SetRecoverTotalAirSupplyTime(10)

# controlAi

# SetBlockControlAi

  • 描述

    设置屏蔽生物原生AI

  • 参数

    参数名 数据类型 说明
    isBlock bool 是否保留AI,False为屏蔽
  • 返回值

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

    • 屏蔽AI后的生物无法行动,不受重力且不会被推动。但是可以受到伤害,也可以被玩家交互(例如马被骑或村民被交易)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateControlAi(entityId)
comp.SetBlockControlAi(False)

# entityEvent

# TriggerCustomEvent

  • 描述

    触发生物自定义事件

  • 参数

    参数名 数据类型 说明
    entityId str 生物Id
    eventName str 事件名称
  • 返回值

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

    • 触发苦力怕爆炸 在苦力怕的entity json文件中events字段下增加如下事件,然后在mod中运行示例代码:
      "netease:custom_exploading":{
                        "sequence": [
                              {
                                "filters": {
                              "test": "has_component",
                                      "operator": "!=",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:forced_exploding"
                                      ]
                                }
                              },
                              {
                                "filters": {
                                      "test": "has_component",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:forced_charged_exploding"
                                      ]
                                }
                              }
                        ]
                      }
      
  • 示例

import mod.server.extraServerApi as serverApi
#触发entity自定义event
eventName = "netease:custom_exploading"
comp = serverApi.GetEngineCompFactory().CreateEntityEvent(entityId)
comp.TriggerCustomEvent(entityId,eventName)

# mobSpawn

# SpawnCustomModule

  • 描述

    设置自定义刷怪

  • 参数

    参数名 数据类型 说明
    biomeType int BiomeType枚举
    change int Change枚举
    entityType int EntityType枚举
    probability int 生成的权重[1, 10]
    minCount int 最小生成数量[0, 10]
    maxCount int 最大生成数量[0, 10]
    environment int 1:生成在表面;2:生成在水里
    minBrightness int 生成该生物时的最小光照[1, 15],不设置时使用默认值
    maxBrightness int 生成该生物时的最大光照[1, 15],不设置时使用默认值
    minHeight int 生成该生物时最小的海拔高度[0, 256],不设置时使用默认值
    maxHeight int 生成该生物时最大的海拔高度[0, 256],不设置时使用默认值
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateMobSpawn(levelId)
comp.SpawnCustomModule(BiomeType.river,Change.Add,EntityType.Dolphin,10,1,10,2)

# moveTo

# SetMoveSetting

  • 描述

    寻路组件

  • 参数

    参数名 数据类型 说明
    pos tuple(float,float,float) 寻路目标位置
    speed float 移动速度
    maxIteration int 寻路算法最大迭代次数 默认200
    callback function 寻路结束回调函数
  • 返回值

  • 备注

    • 使用该接口时,需要在生物中配置有寻路的json组件。配置寻路json组件后,该接口会自动选择相应类型的寻路 目前支持的寻路json组件包括:

      • minecraft:navigation.walk 陆地寻路,与原版僵尸的寻路相同
      • minecraft:navigation.generic 水陆寻路,支持陆地与水中,与原版溺尸的寻路相同
      • minecraft:navigation.climb 陆地寻路,但是支持爬墙,与原版蜘蛛的寻路相同。这种寻路可能会被头顶方块阻挡,一直无法抵达目的地
      • minecraft:navigation.fly 空中寻路,与原版鹦鹉的寻路相同 以上的寻路都需要搭配一些其他json组件(例如movement)使用,具体可以参考NavigationMod的示例 上面没有提到的navigation类型暂不支持,例如minecraft:navigation.float(如原版恶魂),minecraft:navigation.hover(如原版蜜蜂)
    • 不同的生物拥有不同的默认最大跟随距离,若要寻路的目标点距离大于此值引擎会拒绝寻路,要修改该距离可以通过在entity的json中配置.

      {
        "format_version": "1.8.0",
        "minecraft:entity": {
                "components": {
                        "minecraft:follow_range": {
                              "value": 48,
                              "max": 48
                        }
                }
        }
      }
      
    • 关于maxIteration参数 该参数会影响实际寻到路径的长度。若寻路算法迭代一定次数后,未寻到目标点,会返回局部最优解,即生物只会走到半路。 在无大型障碍物的情况下,参数对应的参考寻路距离如下:该参数默认值200,最大值2000,请开发者根据实际情况选择。

      maxIteration 与目标点直线距离
      200 13
      500 20
      1000 30
      2000 43
    • 关于callback函数 该函数需要接受两个参数,第一个参数为寻路的entityId,类型str,第二个参数为寻路结果,类型int (玩家获取到的位置比地面会高1.62格,若以玩家位置为目标点需要先把y轴减去1.62,否则callback会一直返回1)

      结果 说明
      -3 寻路失败,大于跟随距离,或者对正在寻路的飞行系生物使用
      -2 寻路失败,生物没有寻路组件(指minecraft:navigation)
      -1 寻路失败,参数错误,或生物不存在
      0 寻路完成。到达设定的目标点
      1 寻路完成,但未到达目标点(可能由于maxIteration参数偏小)
      2 寻路中断。中途遇到障碍物被阻碍
      3 寻路中断。被生物原版寻路行为覆盖,或寻路未结束时重复调用moveTo组件
    • demo简介: 聊天栏输入walk/generic/climb/fly会原地生成一个使用对应navigation json组件的生物,然后跑到其他位置,再输入go,会将刚才生成的生物导航到玩家当前位置。 这4种示例生物的行为json可以在NavigationMod_behavior/entities目录查看。 4种示例生物的最大寻路距离都设置为了48格。

  • 示例

from mod_log import logger as logger
def myCallback(entityId, result):
        if result in (-1,-2,-3):
                logger.info('[error] [SetMoveSetting] failed')
        elif result==0:
                logger.info('[info] [SetMoveSetting] success')
        elif result in (1,2,3):
                logger.info('[warn] [SetMoveSetting] terminated')

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateMoveTo(entityId)
comp.SetMoveSetting((x,y,z),2.0,200,myCallback)

# name

# GetName

  • 描述

    获取生物的自定义名称,即使用命名牌或者SetName接口设置的名称

  • 参数

  • 返回值

    数据类型 说明
    str 生物的自定义名称
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateName(entityId)
comp.GetName()

# SetName

  • 描述

    用于设置生物的自定义名称,跟原版命名牌作用相同,玩家和新版流浪商人暂不支持

  • 参数

    参数名 数据类型 说明
    name str 名称
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateName(entityId)
comp.SetName("new Name")

# SetPlayerPrefixAndSuffixName

  • 描述

    设置玩家前缀和后缀名字

  • 参数

    参数名 数据类型 说明
    prefix str 前缀内容
    prefixColor str 前缀内容颜色描述,可以使用GenerateColor接口传入参数
    suffix str 后缀内容
    suffixColor str 后缀内容颜色描述,可以使用GenerateColor接口传入参数
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateName(playerId)
comp.SetPlayerPrefixAndSuffixName("红队",serverApi.GenerateColor('RED'),'肉盾',serverApi.GenerateColor('RED'))

# ride

# GetEntityRider

  • 描述

    获取玩家的直接骑乘对象。

  • 参数

  • 返回值

    数据类型 说明
    str 玩家直接骑乘对象的唯一ID,假如玩家没有骑乘则返回“-1”
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
riderId = comp.GetEntityRider()

# IsEntityRiding

  • 描述

    检查玩家是否骑乘。

  • 参数

  • 返回值

    数据类型 说明
    bool 是否骑乘
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
isRiding = comp.IsEntityRiding()

# SetCanOtherPlayerRide

  • 描述

    设置其他玩家受否有权限骑乘,True表示每个玩家都能骑乘,False只有驯服者才能骑乘

  • 参数

    参数名 数据类型 说明
    tamedEntityId str 可骑乘生物id
    canRide bool 是否控制
  • 返回值

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

# 驯服生物
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetCanOtherPlayerRide(entityId,False)

# SetControl

  • 描述

    设置该生物无需装备鞍就可以控制行走跳跃

  • 参数

    参数名 数据类型 说明
    tamedEntityId str 可骑乘生物id
    isControl bool 是否控制
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetIsControl(entityId,True)

# SetEntityRide

  • 描述

    驯服可骑乘生物

  • 参数

    参数名 数据类型 说明
    playerId str 玩家id
    tamedEntityId str 要驯服的可骑乘生物id
  • 返回值

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

    • 驯服信息会被存盘
  • 示例

# 驯服生物
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetEntityRide(playerId,entityId)

# SetPlayerRideEntity

  • 描述

    设置玩家骑乘生物

  • 参数

    参数名 数据类型 说明
    playerId str 玩家id
    rideEntityId str 被骑乘生物id
  • 返回值

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

    • 通常需要配合SetEntityRide、SetControl一起使用 当被控制的entity有多个位置时且开发者想要添加多个玩家时,第一个被添加的玩家会被引擎默认设置为控制者
  • 示例

# 骑上坐骑
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetPlayerRideEntity(playerId,rideEntityId)

# SetRidePos

  • 描述

    设置生物骑乘位置

  • 参数

    参数名 数据类型 说明
    tamedEntityId str 可骑乘生物id
    pos tuple(float,float,float) 骑乘时挂接点
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetRidePos(entityId,(1,1,1))

# SetRiderRideEntity

  • 描述

    设置实体骑乘生物

  • 参数

    参数名 数据类型 说明
    riderId str 骑乘生物id
    riddenEntityId str 被骑乘生物id
  • 返回值

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

    • 通常需要配合SetEntityRide、SetControl一起使用,需要被骑乘生物json中骑乘组件支持骑车者的生物类型 当被控制的entity有多个位置时且开发者想要添加多个玩家时,第一个被添加的玩家会被引擎默认设置为控制者
  • 示例

# 骑上坐骑
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetPlayerRideEntity(playerId,rideEntityId)

# SetShowRideUI

  • 描述

    设置是否显示马匹的UI界面,建议不显示

  • 参数

    参数名 数据类型 说明
    tamedEntityId str 可骑乘生物id
    isShowUI bool 是否显示UI
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
comp.SetShowRideUI(entityId,False)

# StopEntityRiding

  • 描述

    强制玩家下坐骑。

  • 参数

  • 返回值

    数据类型 说明
    bool 当玩家当前正在骑乘并成功下坐骑返回True,否则返回False
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRide(entityId)
success = comp.StopEntityRiding()

# tame

# GetOwnerId

  • 描述

    获取驯服生物的主人id

  • 参数

  • 返回值

    数据类型 说明
    str 主人id,不存在时返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateTame(entityId)
oid = comp.GetOwnerId()

# SetEntityTamed

  • 描述

    设置生物驯服,需要配合 entityEvent组件使用。该类驯服不包含骑乘功能。

  • 参数

    参数名 数据类型 说明
    playerId str 驯服玩家Id
    tamedId str 被驯服的生物Id
  • 返回值

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

    • 设置生物json文件能够被驯服
      1. 修改生物entity json文件:
      • 增加 minecraft:tameable 组件
      • 增加 tame 组件集合描述,其中minecraft:behavior.follow_owner优先级要高于已有搜寻状态的优先级
      • event事件增加对应的on_tame事件,事件执行移除不想管的组件集合,添加刚刚设置的新tame组件集合
      1. 设置驯服主体和被驯服主体entityId,通过设置tameSetting属性
      2. 设置触发对应的驯服事件
    • 驯服苦力怕 json做如下修改
      {
              "format_version": "1.8.0",
              "minecraft:entity": {
              "description": {
                "identifier": "minecraft:creeper",
                "is_spawnable": true,
                "is_summonable": true,
                "is_experimental": false
              },
              "component_groups": {
                      "minecraft:exploding": {
                        "minecraft:explode": {
                              "fuseLength": 1.5,
                              "fuseLit": true,
                              "power": 3,
                              "causesFire": false,
                              "destroyAffectedByGriefing": true
                        }
                      },
                      "minecraft:charged_creeper": {
                        "minecraft:is_charged": {
                        }
                      },
                      "minecraft:charged_exploding": {
                        "minecraft:explode": {
                              "fuseLength": 1.5,
                              "fuseLit": true,
                              "power": 6,
                              "causesFire": false,
                              "destroyAffectedByGriefing": true
                        }
                      },
                      "minecraft:forced_exploding": {
                        "minecraft:target_nearby_sensor": {
                        },
                        "minecraft:explode": {
                              "fuseLength": 1.5,
                              "fuseLit": true,
                              "power": 3,
                              "causesFire": false,
                              "destroyAffectedByGriefing": true
                        },
                        "minecraft:on_target_escape": {
                        }
                      },
                      "minecraft:forced_charged_exploding": {
                        "minecraft:target_nearby_sensor": {
                        },
                        "minecraft:explode": {
                              "fuseLength": 1.5,
                              "fuseLit": true,
                              "power": 6,
                              "causesFire": false,
                              "destroyAffectedByGriefing": true
                        },
                        "minecraft:on_target_escape": {
                        }
                      },
                      //增加驯服状态
                      "netease:creeper_tame":{
                        "minecraft:is_tamed": {
                        },
                        "minecraft:behavior.follow_owner": {
                              "priority": 4,
                              "speed_multiplier": 1.0,
                              "start_distance": 10,
                              "stop_distance": 2
                        },
                        "minecraft:behavior.breed": {
                              "priority": 7
                        },
                        "minecraft:behavior.owner_hurt_by_target": {
                              "priority": 1
                        },
                        "minecraft:behavior.owner_hurt_target": {
                              "priority": 2
                        }
                      }
                },
                "components": {
                      "minecraft:type_family": {
                        "family": [ "creeper", "monster" ]
                      },
                      "minecraft:breathable": {
                        "totalSupply": 15,
                        "suffocateTime": 0
                      },
                      "minecraft:nameable": {
                      },
                      "minecraft:collision_box": {
                        "width": 0.6,
                        "height": 1.8
                      },
                      "minecraft:movement": {
                        "value": 0.2
                      },
                      "minecraft:navigation.walk": {
                      "can_path_over_water": true
                      },
                      "minecraft:movement.basic": {
                      },
                      "minecraft:jump.static": {
                      },
                      "minecraft:can_climb": {
                      },
                      "minecraft:loot": {
                        "table": "loot_tables/entities/creeper.json"
                      },
                      "minecraft:health": {
                        "value": 20,
                        "max": 20
                      },
                      "minecraft:attack": {
                        "damage": 3
                      },
                      "minecraft:damage_sensor": [
                        {
                              "on_damage": {
                                "filters": {
                                      "test": "is_family",
                                      "subject": "other",
                                      "value": "lightning"
                                },
                                "event": "minecraft:become_charged"
                              },
                              "deals_damage": false
                        }
                      ],
                      "minecraft:target_nearby_sensor": {
                        "inside_range": 2.5,
                        "outside_range": 6.0,
                        "on_inside_range": {
                              "event": "minecraft:start_exploding",
                              "target": "self"
                        },
                        "on_outside_range": {
                              "event": "minecraft:stop_exploding",
                              "target": "self"
                        }
                      },
                      "minecraft:interact": {
                        "on_interact": {
                              "filters": {
                                "all_of": [
                                      {
                                        "test": "is_family",
                                        "subject": "other",
                                        "value": "player"
                                      },
                                      {
                                        "test": "has_equipment",
                                        "domain": "hand",
                                        "subject": "other",
                                        "value": "flint_and_steel"
                                      },
                                      {
                                        "test": "has_component",
                                        "operator": "!=",
                                        "value": "minecraft:explode"
                                      }
                                ]
                              },
                              "event": "minecraft:start_exploding_forced",
                              "target": "self"
                        },
                        "hurt_item": 1,
                        "swing": true,
                        "play_sounds": "ignite",
                        "interact_text": "action.interact.creeper"
                      },
                      "minecraft:behavior.float": {
                        "priority": 0
                      },
                      "minecraft:behavior.swell": {
                        "start_distance": 2.5,
                        "stop_distance": 6.0,
                        "priority": 2
                      },
                      "minecraft:behavior.melee_attack": {
                        "priority": 4,
                        "speed_multiplier": 1.25,
                        "track_target": false
                      },
                      "minecraft:behavior.avoid_mob_type": {
                        "priority": 3,
                        "entity_types": [
                              {
                                "filters": {
                                      "any_of": [
                                        { "test" :  "is_family", "subject" : "other", "value" :  "ocelot"},
                                        { "test" :  "is_family", "subject" : "other", "value" :  "cat"}
                                      ]
                                },
                                "max_dist": 6,
                                "walk_speed_multiplier": 1,
                                "sprint_speed_multiplier": 1.2
                              }
                        ]
                      },
                      "minecraft:behavior.random_stroll": {
                        "priority": 5,
                        "speed_multiplier": 1
                      },
                      "minecraft:behavior.look_at_player": {
                        "priority": 6,
                        "look_distance": 8
                      },
                      "minecraft:behavior.random_look_around": {
                        "priority": 6
                      },
                      "minecraft:behavior.nearest_attackable_target": {
                        "priority": 1,
                        "entity_types": [
                              {
                                "filters": {
                                      "test": "is_family",
                                      "subject": "other",
                                      "value": "player"
                                },
                                "max_dist": 16
                              }
                        ],
                        "must_see": true,
                        "must_see_forget_duration": 0.0
                      },
                      "minecraft:behavior.hurt_by_target": {
                        "priority": 2
                      },
                      "minecraft:physics": {
                      },
                      "minecraft:on_target_escape": {
                        "event": "minecraft:stop_exploding",
                        "target": "self"
                      },
                       //增加驯服组件
                      "minecraft:tameable": {
                        "probability": 0.33,
                        "tameItems": "bone",
                        "tame_event": {
                              "event": "netease:on_tame",
                              "target": "self"
                        }
                      }
                },
                "events": {
                      "minecraft:start_exploding_forced": {
                        "sequence": [
                              {
                                "filters": {
                                      "test": "has_component",
                                      "operator": "!=",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:forced_exploding"
                                      ]
                                }
                              },
                              {
                                "filters": {
                                      "test": "has_component",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:forced_charged_exploding"
                                      ]
                                }
                              }
                        ]
                      },
                      "netease:custom_exploading":{
                        "sequence": [
                              {
                                "filters": {
                                      "test": "has_component",
                                      "operator": "!=",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:forced_exploding"
                                      ]
                                }
                              },
                              {
                                "filters": {
                                      "test": "has_component",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:forced_charged_exploding"
                                      ]
                                }
                              }
                        ]
                      },
                      "minecraft:start_exploding": {
                        "sequence": [
                              {
                                "filters": {
                                      "test": "has_component",
                                      "operator": "!=",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:exploding"
                                      ]
                                }
                              },
                              {
                                "filters": {
                                      "test": "has_component",
                                      "value": "minecraft:is_charged"
                                },
                                "add": {
                                      "component_groups": [
                                        "minecraft:charged_exploding"
                                      ]
                                }
                              }
                        ]
                      },
                      "minecraft:stop_exploding": {
                        "remove": {
                              "component_groups": [
                                "minecraft:exploding"
                              ]
                        }
                      },
                      "minecraft:become_charged": {
                        "remove": {
                              "component_groups": [
                                "minecraft:exploding"
                              ]
                        },
                        "add": {
                              "component_groups": [
                                "minecraft:charged_creeper"
                              ]
                        }
                      },
                      //增加驯服事件
                      "netease:on_tame": {
                        "remove": {
                              "component_groups": [
                                "minecraft:exploding",
                                "minecraft:charged_exploding",
                                "minecraft:forced_exploding",
                                "minecraft:forced_charged_exploding",
                                "minecraft:charged_creeper"
                              ]
                        },
                        "add": {
                              "component_groups": [
                                "netease:creeper_tame"
                              ]
                        }
                      }
                }
              }
      }
      
  • 示例

import mod.server.extraServerApi as serverApi
#设置生物驯服
#entityId playerId eventName 为相关参数
tameComp = serverApi.GetEngineCompFactory().CreateTame(entityId)
tameComp.SetEntityTamed(playerId,tameId)
envComp = serverApi.GetEngineCompFactory().CreateEntityEvent(entityId)
envComp.TriggerCustomEvent(tamedId,'netease:on_tame')

# 生物群系

# biome

# GetBiomeName

  • 描述

    获取某一位置所属的生物群系信息

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 指定位置
    dimId int 维度id
  • 返回值

    数据类型 说明
    str 该位置所属生物群系name
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBiome(levelId)
biomeName = comp.GetBiomeName((0, 80, 0), )

# 文本

# msg

# NotifyOneMessage

  • 描述

    给指定玩家发送聊天框消息

  • 参数

    参数名 数据类型 说明
    playerId str 指定玩家id
    msg str 消息内容
    color str 颜色样式代码字符串,可参考wiki样式代码,默认为白色
  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateMsg(entityId)
comp.NotifyOneMessage(playerId, "test", "§c")

# SendMsg

  • 描述

    创建消息实体

  • 参数

    参数名 数据类型 说明
    name str 发送者玩家的名字
    msg str 消息内容
  • 返回值

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

    • name参数需要设置玩家的名字(可通过name组件获取),如果设置的玩家名字不存在,则随机找一个玩家发出该消息
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateMsg(entityId)
comp.SendMsg("playerName","test")

# SendMsgToPlayer

  • 描述

    创建消息实体,然后发送给某个玩家

  • 参数

    参数名 数据类型 说明
    fromEntityId str 发送者玩家ID
    toEntityId str 接受者玩家ID
    msg str 消息内容
  • 返回值

  • 示例

comp = serverApi.GetEngineCompFactory().CreateMsg(entityId)
comp.SendMsgToPlayer(fromEntityId, toEntityId, "test")

# 玩家

# exp

# AddPlayerExperience

  • 描述

    增加玩家经验值

  • 参数

    参数名 数据类型 说明
    exp int 玩家经验值,可设置负数
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 如果设置的exp值为负数,且超过当前等级已有的经验值,调用接口后,该玩家等级不会下降但是经验值会置为最小值
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
comp.AddPlayerExperience(25)

# CreateExperienceOrb

  • 描述

    创建专属经验球

  • 参数

    参数名 数据类型 说明
    exp int 经验球经验
    position tuple(float,float,float) 创建的位置
    isSpecial bool 是否专属经验球
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 设置经验球经验,entityId是人的entityId。专属的经验球只有entityId的人才能拾取
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
comp.CreateExperienceOrb(25,(10,10,10),False)

# GetOrbExperience

  • 描述

    获取经验球的经验

  • 参数

  • 返回值

    数据类型 说明
    int 经验值,正整数。获取失败的情况下返回-1。
  • 备注

    • 设置经验球经验,entityId是经验球的entityId,如果经验小于等于0,拾取后不再加经验
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
print(comp.GetOrbExperience())

# GetPlayerExp

  • 描述

    获取玩家当前等级下的经验值

  • 参数

    参数名 数据类型 说明
    isPercent bool 是否为百分比
  • 返回值

    数据类型 说明
    float 玩家经验值
  • 备注

    • 如果设置返回百分比为False,则返回玩家当前等级下经验的绝对值(非当前玩家总经验值)。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
print(comp.GetPlayerExp(False))

# GetPlayerTotalExp

  • 描述

    获取玩家的总经验值

  • 参数

  • 返回值

    数据类型 说明
    int 总经验值,正整数。获取失败的情况下返回-1。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
print(comp.GetPlayerTotalExp())

# SetOrbExperience

  • 描述

    设置经验球经验

  • 参数

    参数名 数据类型 说明
    exp int 经验球经验
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 设置经验球经验,entityId是经验球的entityId,如果经验小于等于0,拾取后不再加经验
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
comp.SetOrbExperience(25)

# SetPlayerTotalExp

  • 描述

    设置玩家的总经验值

  • 参数

    参数名 数据类型 说明
    exp int 总经验值,正整数
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 根据总经验值会重新计算等级,该接口可引起等级的变化
    • 内部运算采用浮点数,数值较大时会出现误差
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
comp.SetPlayerTotalExp(25)

# fly

# ChangePlayerFlyState

  • 描述

    改变玩家的飞行状态

  • 参数

    参数名 数据类型 说明
    isFly bool 飞行状态,True:飞行模式,False:正常行走模式
  • 返回值

    数据类型 说明
    bool True:是 False:否
  • 示例

comp = serverApi.GetEngineCompFactory().CreateFly(playerId)
comp.ChangePlayerFlyState(True)

# IsPlayerFlying

  • 描述

    获取玩家是否在飞行

  • 参数

  • 返回值

    数据类型 说明
    bool True:是 False:否
  • 示例

comp = serverApi.GetEngineCompFactory().CreateFly(playerId)
comp.IsPlayerFlying()

# lv

# AddPlayerLevel

  • 描述

    修改玩家等级

  • 参数

    参数名 数据类型 说明
    level int 玩家等级,可设置负数
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateLv(playerId)
comp.AddPlayerLevel(2)

# GetPlayerLevel

  • 描述

    获取玩家等级

  • 参数

  • 返回值

    数据类型 说明
    int 玩家等级
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateLv(playerId)
comp.GetPlayerLevel()

# player

# ChangeSelectSlot

  • 描述

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

  • 参数

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

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

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

# ClearDefinedLevelUpCost

  • 描述

    清理自定义的升级经验,清理后才有会再次回调ChangeLevelUpCostServerEvent事件并再次设置新的升级经验值。

  • 参数

    参数名 数据类型 说明
    level int 指定清理的等级,加入传入的数值小于0,则清理所有等级的升级经验值缓存
  • 返回值

    数据类型 说明
    bool 是否清理成功。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
suc = comp.ClearDefinedLevelUpCost(1)

# ClosePlayerCritBox

  • 描述

    关闭玩家爆头,关闭后将无法触发ProjectileCritHitEvent事件。

  • 参数

  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.ClosePlayerCritBox()

# ClosePlayerHitBlockDetection

  • 描述

    关闭碰撞方块的检测,关闭后将不会触发OnPlayerHitBlockServerEvent事件

  • 参数

  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.ClosePlayerHitBlockDetection()

# ClosePlayerHitMobDetection

  • 描述

    关闭碰撞生物的检测,关闭后将不会触发OnPlayerHitMobServerEvent事件

  • 参数

  • 返回值

    数据类型 说明
    bool 是否关闭成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.ClosePlayerHitMobDetection()

# EnableKeepInventory

  • 描述

    设置玩家死亡不掉落物品

  • 参数

    参数名 数据类型 说明
    enable bool 是否开启“保留物品栏”
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
succ = comp.EnableKeepInventory(True)

# GetPlayerAbilities

  • 描述

    获取玩家具体权限

  • 参数

  • 返回值

    数据类型 说明
    dict 具体权限,详见备注
  • 备注

    • 具体权限说明

      权限字段 数据类型 说明
      build bool 放置方块
      mine bool 采集方块
      doorsandswitches bool 使用门和开关
      opencontainers bool 打开容器
      attackplayers bool 攻击玩家
      attackmobs bool 攻击生物
      op bool 操作员命令
      teleport bool 使用传送
    • 返回值示例

      {'teleport': True, 'opencontainers': True, 'mine': True, 'build': True, 'op': True, 'attackmobs': True, 'doorsandswitches': True, 'attackplayers': True}
      
  • 示例

comp = self.CreateComponent(playerId, "Minecraft", "player")
operation = comp.GetPlayerAbilities()

# GetPlayerHunger

  • 描述

    获取玩家饥饿度,展示在UI饥饿度进度条上,初始值为20,即每一个鸡腿代表2个饥饿度。 饱和度(saturation) :玩家当前饱和度,初始值为5,最大值始终为玩家当前饥饿度(hunger),该值直接影响玩家饥饿度(hunger)
    1)增加方法:吃食物。
    2)减少方法:每触发一次消耗事件,该值减少1,如果该值不大于0,直接把玩家 饥饿度(hunger) 减少1。

  • 参数

  • 返回值

    数据类型 说明
    float 玩家饥饿度
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.GetPlayerHunger()

# GetPlayerMaxExhaustionValue

  • 描述

    获取玩家foodExhaustionLevel的归零值,常量值,默认为4。消耗度(exhaustion)是指玩家当前消耗度水平,初始值为0,该值会随着玩家一系列动作(如跳跃)的影响而增加,当该值大于最大消耗度(maxExhaustion)后归零,并且把饱和度(saturation)减少1(为了说明饥饿度机制,我们将此定义为消耗事件

  • 参数

  • 返回值

    数据类型 说明
    float 玩家foodExhaustionLevel的归零值
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.GetPlayerMaxExhaustionValue()

# GetPlayerOperation

  • 描述

    获取玩家权限类型信息

  • 参数

  • 返回值

    数据类型 说明
    int 权限类型,Visitor为0,Member为1,Operator为2,Custom为3
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
operation = comp.GetPlayerOperation()

# IsSneaking

  • 描述

    获取玩家是否处于潜行状态

  • 参数

  • 返回值

    数据类型 说明
    bool 当前玩家是否处于潜行状态
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
is_sneaking = comp.IsSneaking()

# IsSwiming

  • 描述

    获取玩家是否处于游泳状态。

  • 参数

  • 返回值

    数据类型 说明
    bool 当前玩家是否处于游泳状态
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
is_swiming = comp.IsSwiming()

# OpenPlayerCritBox

  • 描述

    开启玩家爆头,开启后该玩家头部被击中后会触发ProjectileCritHitEvent事件。

  • 参数

  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.OpenPlayerCritBox()

# OpenPlayerHitBlockDetection

  • 描述

    开启碰撞方块的检测,开启后碰撞时会触发OnPlayerHitBlockServerEvent事件

  • 参数

    参数名 数据类型 说明
    precision float 碰撞检测精度,参数需要在区间[0, 1)
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 备注

    • 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.OpenPlayerHitBlockDetection(0.0001)

# OpenPlayerHitMobDetection

  • 描述

    开启碰撞生物的检测,开启后碰撞时会触发OnPlayerHitMobServerEvent事件

  • 参数

  • 返回值

    数据类型 说明
    bool 是否开启成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.OpenPlayerHitMobDetection()

# SetPickUpArea

  • 描述

    设置玩家的拾取物品范围,设置后该玩家的拾取物品范围会在原版拾取范围的基础上进行改变。

  • 参数

    参数名 数据类型 说明
    area tuple(float,float,float) 拾取物品范围,传入(0, 0, 0)时视作取消设置
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
# 玩家拾取物品范围在X轴正负方向各增加5格,在Z轴正负方向各增加3格,在Y轴保持不变
succ = comp.SetPickUpArea((5, 0, 3))

# SetPlayerGameType

  • 描述

    设置玩家个人游戏模式

  • 参数

    参数名 数据类型 说明
    gameType int GetMinecraftEnum().GameType.*:Survival,Creative,Adventure分别为0~2
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.SetPlayerGameType(serverApi.GetMinecraftEnum().GameType.Survival)

# SetPlayerHunger

  • 描述

    设置玩家饥饿度。

  • 参数

    参数名 数据类型 说明
    value float 饥饿度
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.SetPlayerHunger(10)

# SetPlayerJumpable

  • 描述

    设置玩家是否可跳跃

  • 参数

    参数名 数据类型 说明
    isJumpable bool 是否可跳跃,True允许跳跃,False禁止跳跃
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.SetPlayerJumpable(False)

# SetPlayerMaxExhaustionValue

  • 描述

    设置玩家foodExhaustionLevel的归零值,通过调整 最大消耗度(maxExhaustion) 的大小,就可以加快或者减慢 饥饿度(hunger) 的消耗,当 最大消耗度(maxExhaustion) 很大时,饥饿度可以看似一直不下降

  • 参数

    参数名 数据类型 说明
    value float foodExhaustionLevel的归零值
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.SetPlayerMaxExhaustionValue(10.0)

# SetPlayerMovable

  • 描述

    设置玩家是否可移动

  • 参数

    参数名 数据类型 说明
    isMovable bool 是否可移动,True允许移动,False禁止移动
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.SetPlayerMovable(False)

# SetPlayerRespawnPos

  • 描述

    设置玩家复活的位置,当前玩家的复活点仅支持主世界

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 复活点的位置坐标
  • 返回值

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

comp = self.CreateComponent(playerId, "Minecraft", "player")
suc = comp.SetPlayerRespawnPos((0, 4, 0))

# 物品

# chestBlock

# GetChestBoxSize

  • 描述

    获取箱子容量大小

  • 参数

    参数名 数据类型 说明
    playerId str或None 玩家id/None
    pos tuple(int,int,int) 箱子位置
    dimensionId int 箱子所在维度,默认为-1,传入非负值时不依赖playerId,playerId可传入None,可获取对应维度的常加载区块内箱子容量
  • 返回值

    数据类型 说明
    int 箱子大小,错误值-1
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChestBlock(playerId)
comp.GetChestBoxSize(playerId,(x,y,z))
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateChestBlock(levelId)
comp.GetChestBoxSize(None, (x, y, z), 0)

# SetChestBoxItemExchange

  • 描述

    交换箱子里物品的槽位

  • 参数

    参数名 数据类型 说明
    playerId str 玩家id
    pos tuple(int,int,int) 箱子位置
    slotPos1 int 箱子槽位1
    slotPos2 int 箱子槽位2
  • 返回值

    数据类型 说明
    bool 设置成功返回True,失败返回False
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChestBlock(playerId)
comp.SetChestBoxItemExchange(playerId, (x,y,z), 0, 1)

# SetChestBoxItemNum

  • 描述

    设置箱子槽位物品数目

  • 参数

    参数名 数据类型 说明
    playerId str或None 玩家id/None
    pos tuple(int,int,int) 箱子位置
    slotPos int 箱子槽位
    num int 物品数目
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,playerId可传入None,可在对应维度的常加载区块设置方块
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateChestBlock(playerId)
comp.SetChestBoxItemNum(playerId, (x,y,z), 0, 10)
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateChestBlock(levelId)
comp.SetChestBoxItemNum(None, (x,y,z), 0, 10, 0)

# itembanned

# AddBannedItem

  • 描述

    增加禁用物品

  • 参数

    参数名 数据类型 说明
    itemName str 物品标识符,格式[namespace:name:auxvalue],auxvalue默认为0,auxvalue为*时候匹配任意auxvalue值。例如:minecraft:egg(也可以通过填写配置文件config/banned_items.json进行启动禁用)
  • 返回值

    数据类型 说明
    bool 是否增加成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItemBanned(levelId)
comp.AddBannedItem("minecraft:egg")

# ClearBannedItems

  • 描述

    清空禁用物品

  • 参数

  • 返回值

    数据类型 说明
    bool 是否清空成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItemBanned(levelId)
comp.ClearBannedItems()

# GetBannedItemList

  • 描述

    获取禁用物品列表

  • 参数

  • 返回值

    数据类型 说明
    list(str)或None 禁用物品列表或者None(异常情况),list元素为物品标识符,格式[namespace:name:auxvalue],auxvalue默认为0,auxvalue为*时候匹配任意auxvalue值。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItemBanned(levelId)
comp.GetBannedItemList()

# RemoveBannedItem

  • 描述

    移除禁用物品

  • 参数

    参数名 数据类型 说明
    itemName str 物品标识符,格式[namespace:name:auxvalue],auxvalue默认为0,auxvalue为*时候匹配任意auxvalue值。
  • 返回值

    数据类型 说明
    bool 是否移除成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItemBanned(levelId)
comp.RemoveBannedItem("minecraft:stained_glass:2")

# item

# AddEnchantToInvItem

  • 描述

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

  • 参数

    参数名 数据类型 说明
    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)

# ChangePlayerItemTipsAndExtraId

  • 描述

    修改玩家物品的自定义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", "自定义标识符")

# ClearPlayerOffHand

  • 描述

    清除玩家左手物品

  • 参数

    参数名 数据类型 说明
    playerId str 玩家id
  • 返回值

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

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

# GetContainerItem

  • 描述

    获取容器物品

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 容器位置
    slotPos int 容器槽位
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,CreateItem可传入levelId,否则CreateItem需传入playerId来获取玩家当前维度
    getUserData bool 是否获取userData,默认为False
  • 返回值

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

    • 容器的具体类型包括:箱子,陷阱箱,潜影盒,漏斗,木桶,投掷器,发射器
    • 此接口不支持末影箱。对应的末影箱接口请参考 GetEnderChestItem
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetContainerItem((x,y,z), 0)
# 不依赖playerId举例,支持常加载方块
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetContainerItem((x,y,z), 0, 2)

# GetContainerSize

  • 描述

    获取容器容量大小

  • 参数

    参数名 数据类型 说明
    pos tuple(int,int,int) 箱子位置
    dimensionId int 容器所在维度,默认值为-1,表示玩家所在维度,需要在CreateItem时传入playerId来获取玩家当前维度。传入非负值时不依赖playerId。
  • 返回值

    数据类型 说明
    int 箱子大小,错误值-1
  • 备注

    • 此接口不支持末影箱,因为末影箱的size固定为27。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetContainerSize((x,y,z))
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetContainerSize((x, y, z), 0)

# GetCustomName

  • 描述

    获取物品的自定义名称,与铁砧修改的名称一致

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典。如果是接口获取的itemDict,应该包含userData,即getUserData应该为True
  • 返回值

    数据类型 说明
    str 自定义名称
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemDict = comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
name = comp.GetCustomName(itemDict)

# GetDroppedItem

  • 描述

    获取掉落在世界的指定entityid的物品信息

  • 参数

    参数名 数据类型 说明
    itemEntityId str itemActor的entityId
    getUserData bool 是否获取userData,默认为False
  • 返回值

    数据类型 说明
    dict 信息
  • 备注

    • 如果物品不存在,返回值为None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetDroppedItem(entityId)

# GetEnderChestItem

  • 描述

    获取末影箱物品

  • 参数

    参数名 数据类型 说明
    playerId str 玩家id
    slotPos int 容器槽位
    getUserData bool 是否获取userData,默认为False
  • 返回值

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

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

# GetEntityItem

  • 描述

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

  • 参数

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

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

    • 左右手及装备可以替代GetPlayerItem接口获取玩家的物品,但背包不行。获取生物背包目前支持驴、骡、羊驼以及其他带背包的自定义生物
  • 示例

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

# GetEquItemEnchant

  • 描述

    获取装备槽位中盔甲的附魔

  • 参数

    参数名 数据类型 说明
    slotPos int ArmorSlotType枚举
  • 返回值

    数据类型 说明
    list(tuple(int,int)) 盔甲的附魔
  • 备注

    • 如果物品不存在,或者没有附魔值,返回None。如果存在返回tuple数组,每个tuple由附魔类型(EnchantType枚举)和附魔等级组成
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.GetEquItemEnchant(serverApi.GetMinecraftEnum().ArmorSlotType.HEAD)

# GetInvItemEnchantData

  • 描述

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

  • 参数

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

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

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

# GetItemBasicInfo

  • 描述

    获取物品的基础信息

  • 参数

    参数名 数据类型 说明
    itemName str item的identifier
    auxValue int 物品的附加值auxvalue,默认为0
    isEnchanted bool 是否附魔,默认为False。用于返回的idAux
  • 返回值

    数据类型 说明
    dict 基础信息,详见备注
  • 备注

    • auxValue默认值是0,可以不设置。如果物品不存在,返回值为None
      关键字 数据类型 说明
      itemName str 本地化的物品名字
      maxStackSize int 物品最大堆叠数目
      maxDurability int 物品最大耐久值
      idAux int 主要用于客户端的ui绑定,详见客户端接口
      tierDict dict 自定义方块定义的挖掘相关的属性 netease:tier,没有设置时返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetItemBasicInfo("minecraft:bow")

# GetItemDurability

  • 描述

    获取指定槽位的物品耐久

  • 参数

    参数名 数据类型 说明
    posType int ItemPosType枚举
    slotPos int 槽位,为-1时,获取左手物品的耐久值
  • 返回值

    数据类型 说明
    int 物品的耐久值
  • 示例

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

# GetPlayerAllItems

  • 描述

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

  • 参数

    参数名 数据类型 说明
    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

  • 描述

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

  • 参数

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

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

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

# GetSelectSlotId

  • 描述

    获取玩家当前选中槽位

  • 参数

  • 返回值

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

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

# GetUserDataInEvent

  • 描述

    使物品相关服务端事件的物品信息字典参数带有userData。在mod初始化时调用即可

  • 参数

    参数名 数据类型 说明
    eventName str 引擎事件名
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
# 这样调用之后,PlayerEatFoodServerEvent事件的itemDict参数会带有userData字段
comp.GetUserDataInEvent("PlayerEatFoodServerEvent")

# MayPlaceOn

  • 描述

    判断物品是否可以放到指定的位置上

  • 参数

    参数名 数据类型 说明
    identifier str 物品标识,如minecraft:dye
    auxValue int 物品的附加值
    blockPos tuple(int,int,int) 位置坐标
    facing int 朝向,详见Facing枚举
  • 返回值

    数据类型 说明
    bool 是否可以放置
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.MayPlaceOn("minecraft:dye", 3, (1,2,3), serverApi.GetMinecraftEnum().Facing.Up)

# SetAttackDamage

  • 描述

    设置物品的攻击伤害值

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    attackDamage int 攻击伤害值
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemDict = comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
success = comp.SetAttackDamage(itemDict, 5)
if success:
        comp.SpawnItemToPlayerCarried(itemDict, playerId)

# SetCustomName

  • 描述

    设置物品的自定义名称,与使用铁砧重命名一致

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    name str 物品名称。支持unicode
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemDict = comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
comp.SetCustomName(itemDict, '史蒂夫')
comp.SpawnItemToPlayerCarried(itemDict, playerId)

# SetEntityItem

  • 描述

    设置生物物品,建议开发者根据生物特性来进行设置,部分生物设置装备后可能不显示但是死亡后仍然会掉落所设置的装备

  • 参数

    参数名 数据类型 说明
    posType int ItemPosType枚举
    itemDict dict 生物身上不同位置的物品信息字典列表,如果传入None将清除当前位置的物品/装备
    slotPos int 容器槽位,如果ItemPosType为左右手可不传,如果ItemPosType为背包则对应背包槽位,如果ItemPosType为armor则对应装备位置,具体请看宏定义GetMinecraftEnum().ArmorSlotType.*
  • 返回值

    数据类型 说明
    bool 设置成功返回True
  • 备注

    • 设置生物背包目前支持驴、骡、羊驼以及其他带背包的自定义生物。该接口与spawnTo系列接口相比多了槽位限制,只能设置对应槽位的装备、左手物品,并且右手不能设置装备。溺尸暂不支持设置自定义装备。如果传入的itemDict为None或{},itemName为minecraft:air,count为0,均可以达到清除物品的效果。玩家背包请使用SpawnItemToPlayerInv来生成物品,使用SetInvItemNum设置0来清除物品,其他部位也可以用该接口设置。
  • 示例

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

# SetInvItemExchange

  • 描述

    交换玩家背包物品

  • 参数

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

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

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

# SetInvItemNum

  • 描述

    设置玩家背包物品数目

  • 参数

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

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

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

# SetItemDurability

  • 描述

    设置物品的耐久值

  • 参数

    参数名 数据类型 说明
    posType int ItemPosType枚举
    slotPos int 槽位,为-1时,设置左手物品的耐久值
    durability int 耐久值
  • 返回值

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

    • 设置的耐久值超过物品的最大耐久值时,使用最大耐久值;最小耐久值为0。
  • 示例

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

# SetItemTierLevel

  • 描述

    设置工具类物品的挖掘等级

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    level int 挖掘等级
  • 返回值

    数据类型 说明
    bool 设置是否成功
  • 备注

    • 对于不总是可以破坏的方块(包括方块材质为Stone,Metal,TopSnow,Snow,Web),需要使用不同挖掘等级(level)的工具才能破坏并产生掉落物。
      level 类型
      0
      1
      2
      3 钻石
      4 下界
    • 剑和剪刀都可以对蜘蛛网进行破坏并产生掉落物; 铲可以对雪和顶层雪进行破坏并产生掉落物; 镐是否可以破坏判断: 1)对于黑曜石、下界类方块、远古残骸,需要Level大于等于3的镐才能破坏并产生掉落物; 2)对于钻石块、钻石矿石、绿宝石块、绿宝石矿石、金块、金矿石、红石矿石、发光的红石矿石,需要Level大于等于2的镐才能破坏并产生掉落物; 3)对于铁块、铁矿石、青金石块、青金石矿石,需要Level大于等于1的镐才能破坏并产生掉落物; 4)对于其他Stone和Metal材质的方块,需要Level大于等于0的镐才能破坏并产生掉落物。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemDict = comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
success = comp.SetItemTierLevel(itemDict, 5)
if success:
        comp.SpawnItemToPlayerCarried(itemDict, playerId)

# SetItemTierSpeed

  • 描述

    设置工具类物品的挖掘速度

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    speed float 挖掘速度
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemDict = comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
success = comp.SetItemTierSpeed(itemDict, 32)
if success:
        comp.SpawnItemToPlayerCarried(itemDict, playerId)

# SetMaxStackSize

  • 描述

    设置物品的最大堆叠数量(存档)

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    maxStackSize int 最大堆叠数量,不能超过64,如果该值小于物品的堆叠数量,会返回失败
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
itemDict = comp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.CARRIED, 0, True)
success = comp.SetMaxStackSize(itemDict, 32)
if success:
        comp.SpawnItemToPlayerCarried(itemDict, playerId)

# SetPlayerAllItems

  • 描述

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

  • 参数

    参数名 数据类型 说明
    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)

# SpawnItemToArmor

  • 描述

    生成物品到玩家装备位

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典,如果传入None或空字典将清除当前位置的装备
    playerId str 玩家id
    slotPos int ArmorSlotType,装备位置,具体请看宏定义GetMinecraftEnum().ArmorSlotType.*
  • 返回值

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

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

# SpawnItemToChestBlock

  • 描述

    生成物品到箱子

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    playerId str或None 玩家id/None
    slotPos int 箱子槽位
    blockPos tuple(int,int,int) 箱子位置
    dimensionId int 方块所在维度,默认值为-1,传入非负值时不依赖playerId,playerId可传入None,可生成物品到对应维度的常加载区块内的箱子
  • 返回值

    数据类型 说明
    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.SpawnItemToChestBlock(itemDict, playerId, 0, (x,y,z))
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.SpawnItemToChestBlock(itemDict, None, 0, (x,y,z), 0)

# SpawnItemToContainer

  • 描述

    生成物品到容器

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    slotPos int 箱子槽位
    blockPos tuple(int,int,int) 箱子位置
    dimensionId int 容器所在维度,默认值为-1,表示玩家所在维度,需要在CreateItem时传入playerId来获取玩家当前维度。传入非负值时不依赖playerId。
  • 返回值

    数据类型 说明
    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': { },
}
# 生成物品到容器的0号槽位,容器位于玩家所在维度,坐标为(x,y,z)
comp = serverApi.GetEngineCompFactory().CreateItem(playerId)
comp.SpawnItemToContainer(itemDict, 0, (x,y,z))

# SpawnItemToEnderChest

  • 描述

    生成物品到末影箱

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    playerId str 玩家id/None
    slotPos int 末影箱槽位
  • 返回值

    数据类型 说明
    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.SpawnItemToEnderChest(itemDict, 0)

# SpawnItemToLevel

  • 描述

    生成物品掉落物,如果需要获取物品的entityId,可以调用服务端系统接口CreateEngineItemEntity

  • 参数

    参数名 数据类型 说明
    itemDict dict 物品信息字典
    dimensionId int 设置dimension
    pos tuple(float,float,float) 生成位置
  • 返回值

    数据类型 说明
    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(levelId)
comp.SpawnItemToLevel(itemDict, 0, (0,80,20))
# 当最大生成数量为 1 时,可以继续调用生成 2 个物品
comp.SpawnItemToLevel(itemDict, 0, (0,80,20))

# SpawnItemToPlayerCarried

  • 描述

    生成物品到玩家右手

  • 参数

    参数名 数据类型 说明
    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

  • 描述

    生成物品到玩家背包

  • 参数

    参数名 数据类型 说明
    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)

# SpawnItemToPlayerOffHand

  • 描述

    生成物品到玩家左手

  • 参数

    参数名 数据类型 说明
    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.SpawnItemToPlayerOffHand(itemDict, playerId)

# recipe

# GetRecipeResult

  • 描述

    根据配方id获取配方结果。仅支持合成配方

  • 参数

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

    数据类型 说明
    list(dict) list的元素resultDict字典见备注
  • 备注

    • resultDict字典内容如下
      关键字 数据类型 说明
      itemName str 物品名称id
      auxValue int 物品附加值
      num int 物品数目
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRecipe(serverApi.GetLevelId())
comp.GetRecipeResult(recipe1)
comp.GetRecipeResult(recipe2)·
#使用此配方后,可以使用一个铁锭放在上,一个木棍放在下,合成铁剑

# GetRecipesByResult

  • 描述

    通过输出物品查询配方所需要的输入材料

  • 参数

    参数名 数据类型 说明
    resultIdentifier str 输出物品的标识符
    tag str 对应配方json中的tags字段里面的值
    aux int 输出物品的附加值, 不传参的话默认为0
  • 返回值

    数据类型 说明
    list(dict) 返回符合条件的配方列表
  • 备注

    • 若配方为酿造台配方时,由于原版实现没有存储相应信息,不匹配tag标签与aux值
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateRecipe(serverApi.GetLevelId())
print(comp.GetRecipesByResult("minecraft:boat", "crafting_table", 4))

# 音效

# systemAudio

# PlaySystemSound

  • 描述

    播放游戏内原有内容

  • 参数

    参数名 数据类型 说明
    playerId str或None 玩家id/None
    soundId int 详见SysSoundType
    pos tuple(float,float,float) 音源位置
    blockId int 详见BlockType
    entityType int 详见EntityType
    isBaby bool 是否为幼儿音效
    isGlobal bool 是否为全局
    dimensionId int 音源所在维度,默认值为-1,传入非负值时不依赖playerId,playerId可传入None,可在对应维度的常加载区块播放游戏音效
  • 返回值

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

    • 由于游戏中音效是通过事件触发的。例如:鸡的死亡音效:因为死亡跟block无关,因此 soundId -- Death, entityType -- Chicken, blockId -- -1
    • 着地音效:因为着地到不同的block,音效是不一样的, 因此 soundId -- Fall, entityType -- -1, blockId -- grass
  • 示例

#播放鸡死亡音效
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateSystemAudio(entityId)
comp.PlaySystemSound(playerId,serverApi.GetMinecraftEnum().SysSoundType.Death, (x,y,z), serverApi.GetMinecraftEnum().BlockType.grass, serverApi.GetMinecraftEnum().EntityType.Chicken, False, False)
# 不依赖playerId举例,支持常加载区块
comp = serverApi.GetEngineCompFactory().CreateSystemAudio(levelId)
comp.PlaySystemSound(None, serverApi.GetMinecraftEnum().SysSoundType.Death, (x,y,z), serverApi.GetMinecraftEnum().BlockType.grass, serverApi.GetMinecraftEnum().EntityType.Chicken, False, False, 0)

# 指令

# command

# SetCommand

  • 描述

    使用游戏内指令

  • 参数

    参数名 数据类型 说明
    cmdStr str 指令
    playerId str 玩家id:可选,如果playerId不设置,则随机选择玩家
    showOutput bool 是否输出到聊天窗口:可选,默认False,如果为True的话会和聊天窗口输入原生指令一样输出返回信息。只有当该参数为True的时候会触发OnCommandOutputClientEvent
  • 返回值

    数据类型 说明
    bool 命令是否执行成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateCommand(levelId)
comp.SetCommand("/tp @p 100 5 100")#传送指令