# 游戏规则

# AddBannedItem

服务端

method in mod.server.component.itemBannedCompServer.ItemBannedCompServer

  • 描述

    增加禁用物品

  • 参数

    参数名
    数据类型
    说明
    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")

# AddBlockProtectField

仅Apollo可用

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置一个方块无法被玩家/实体破坏的区域

  • 参数

    参数名
    数据类型
    说明
    dimensionId int 不可破坏区域所在维度
    startPos tuple(int,int,int) 初始位置,不可破坏区域AABB包围盒的最小点
    endPos tuple(int,int,int) 结束位置,不可破坏区域AABB包围盒的最大点
  • 返回值

    数据类型
    说明
    int 成功时返回区域的唯一ID,可用于取消不可破坏区域,失败时返回-1
  • 示例

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
field = gameComp.AddBlockProtectField(0, (-20, 0, -20), (20, 255, 20))
if field > 0:
    print "AddBlockProtectField success field={}".format(field)
else:
    print "AddBlockProtectField fail"

# CleanBlockProtectField

仅Apollo可用

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    取消全部已设置的方块无法被玩家/实体破坏的区域

  • 参数

  • 返回值

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

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
suc = gameComp.CleanBlockProtectField()
print "CleanBlockProtectField suc={}".format(suc)

# ClearBannedItems

服务端

method in mod.server.component.itemBannedCompServer.ItemBannedCompServer

  • 描述

    清空禁用物品

  • 参数

  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItemBanned(levelId)
comp.ClearBannedItems()

# DisableVineBlockSpread

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

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

  • 示例

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

# ForbidLiquidFlow

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    禁止/允许地图中的流体流动

  • 参数

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

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

    • 禁止流动后的流体,在重新允许流动之后,不会立刻向四周流动,直到受到方块更新(如相邻的方块发生改变)
  • 示例

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

# GetBannedItemList

服务端

method in mod.server.component.itemBannedCompServer.ItemBannedCompServer

  • 描述

    获取禁用物品列表

  • 参数

  • 返回值

    数据类型
    说明
    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()

# GetGameDiffculty

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取游戏难度

  • 参数

  • 返回值

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

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

# GetGameRulesInfoServer

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取游戏规则

  • 参数

  • 返回值

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

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
type = comp.GetGameRulesInfoServer()
#返回值如下
{
'option_info': {
    'pvp': bool, #玩家间伤害
    'show_coordinates': bool, #显示坐标
    'fire_spreads': bool, #火焰蔓延
    'tnt_explodes': bool, #TNT爆炸
    'mob_loot': bool, #生物战利品
    'natural_regeneration': bool, #自然生命恢复
    'respawn_block_explosion': bool, #重生方块爆炸
    'respawn_radius': int, #重生半径,请注意范围,目前支持[0,128]
    'tile_drops': bool, #方块掉落
    'immediate_respawn':bool #立即重生
    'experimental_biomes': bool, # 自定义生物群系
    'experimental_modding': bool, # 即将推出的创作者功能
    'experimental_holiday': 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

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取默认游戏模式

  • 参数

  • 返回值

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

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

# GetLevelGravity

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取重力因子

  • 参数

  • 返回值

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

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

# GetPistonMaxInteractionCount

服务端客户端

# 服务端接口

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取活塞/粘性活塞最多推动的方块数量,默认为12个方块,可能被其他开发者修改。

  • 参数

  • 返回值

    数据类型
    说明
    int 最大推动的方块数量
  • 示例

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

# 客户端接口

method in mod.client.component.gameCompClient.GameComponentClient

  • 描述

    获取活塞/粘性活塞最多推动的方块数量,默认为12个方块,可能被其他开发者修改。

  • 参数

  • 返回值

    数据类型
    说明
    int 最大推动的方块数量
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
print(comp.GetPistonMaxInteractionCount())

# GetSeed

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取存档种子

  • 参数

  • 返回值

    数据类型
    说明
    int 存档种子
  • 示例

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

# IsDisableCommandMinecart

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取当前是否允许运行命令方块矿车内置逻辑指令,当前仅Apollo网络服可用

  • 参数

  • 返回值

    数据类型
    说明
    bool True:当前禁止运行命令方块矿车内置逻辑指令;False:当前允许运行命令方块矿车内置逻辑指令
  • 示例

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

# IsLockDifficulty

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

  • 返回值

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

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

# IsLockGameRulesInfo

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取当前世界的游戏规则是否被锁定

  • 参数

  • 返回值

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

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

# IsLockGameType

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    获取当前世界的游戏类型是否被锁定,包括默认游戏类型和个人游戏类型

  • 参数

  • 返回值

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

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

# LockDifficulty

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

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

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

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

# LockGameRulesInfo

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    锁定当前世界游戏规则(仅本次游戏有效),玩家无法通过指令、游戏菜单或api修改游戏规则(包括SetGameRulesInfoServer示例中列举的规则)

  • 参数

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

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

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

# LockGameType

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    锁定当前世界游戏类型(仅本次游戏有效),玩家无法通过指令、游戏菜单或相关api如SetPlayerGameTypeSetDefaultGameType修改游戏类型,包括默认游戏类型和个人游戏类型

  • 参数

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

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

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

# OpenCityProtect

仅Apollo可用

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

  • 返回值

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

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

# RemoveBannedItem

服务端

method in mod.server.component.itemBannedCompServer.ItemBannedCompServer

  • 描述

    移除禁用物品

  • 参数

    参数名
    数据类型
    说明
    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")

# RemoveBlockProtectField

仅Apollo可用

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    取消一个方块无法被玩家/实体破坏的区域

  • 参数

    参数名
    数据类型
    说明
    field int 不可破坏区域的唯一ID,AddBlockProtectField的返回值
  • 返回值

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

import mod.server.extraServerApi as serverApi
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
field = gameComp.AddBlockProtectField(0, (-20, 0, -20), (20, 255, 20))
if field > 0:
    print "AddBlockProtectField success field={}".format(field)
    suc = gameComp.RemoveBlockProtectField(field)
    print "RemoveBlockProtectField field={} suc={}".format(field, suc)

# SetCanActorSetOnFireByLightning

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    禁止/允许闪电点燃实体

  • 参数

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

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

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

# SetCanBlockSetOnFireByLightning

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    禁止/允许闪电点燃方块

  • 参数

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

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

    • 只有当游戏难度为普通及以上,并且开启了火焰蔓延,闪电才会点燃方块
  • 示例

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

# SetDefaultGameType

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置默认游戏模式

  • 参数

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

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

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

# SetDisableCommandMinecart

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置停止/开启运行命令方块矿车内置逻辑指令,当前仅Apollo网络服可用

  • 参数

    参数名
    数据类型
    说明
    isDisable bool True:停止运行命令方块矿车内置逻辑指令;False:开启运行命令方块矿车内置逻辑指令
  • 返回值

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

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

# SetDisableContainers

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    禁止所有容器界面的打开,包括玩家背包,各种包含背包界面的容器方块如工作台与箱子,以及包含背包界面的实体交互如马背包与村民交易

  • 参数

    参数名
    数据类型
    说明
    isDisable bool 是否禁止容器界面
  • 返回值

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

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

# SetDisableDropItem

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置禁止丢弃物品

  • 参数

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

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

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

# SetDisableGravityInLiquid

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

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

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

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

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

# SetDisableHunger

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置是否屏蔽饥饿度

  • 参数

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

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

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

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

# SetGameDifficulty

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置游戏难度

  • 参数

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

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

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

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

# SetGameRulesInfoServer

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    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, #自然生命恢复
    'respawn_block_explosion': bool, #重生方块爆炸
    'respawn_radius': int, #重生半径,请注意范围,目前支持[0,128]
    '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,#随机刻速度
    }
}
###
ruleDict ={
    'cheat_info': {
        'enable': True,
        'always_day': True,

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

# SetHurtCD

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置全局受击间隔CD

  • 参数

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

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

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

# SetLevelGravity

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置重力因子

  • 参数

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

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

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

# SetPistonMaxInteractionCount

服务端

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    设置活塞/粘性活塞最多推动的方块数量,默认为12个方块。该设置不存档。

  • 参数

    参数名
    数据类型
    说明
    value int 最大推动的方块数量,取值范围为1至1024
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
print(comp.SetPistonMaxInteractionCount(1))

AddBannedItem

AddBlockProtectField

CleanBlockProtectField

ClearBannedItems

DisableVineBlockSpread

ForbidLiquidFlow

GetBannedItemList

GetGameDiffculty

GetGameRulesInfoServer

GetGameType

GetLevelGravity

GetPistonMaxInteractionCount

服务端接口

客户端接口

GetSeed

IsDisableCommandMinecart

IsLockDifficulty

IsLockGameRulesInfo

IsLockGameType

LockDifficulty

LockGameRulesInfo

LockGameType

OpenCityProtect

RemoveBannedItem

RemoveBlockProtectField

SetCanActorSetOnFireByLightning

SetCanBlockSetOnFireByLightning

SetDefaultGameType

SetDisableCommandMinecart

SetDisableContainers

SetDisableDropItem

SetDisableGravityInLiquid

SetDisableHunger

SetGameDifficulty

SetGameRulesInfoServer

SetHurtCD

SetLevelGravity

SetPistonMaxInteractionCount