game_utils
游戏交互实用方法
attributegame_ctrlOptional[GameCtrl]= NoneattributeframeOptional[ToolDelta]= Noneattributeplayer_waitmsg_cbdict[str, Callable[[str], None]]= {}attribute__all__= ['_set_frame', 'getBlockTile', 'getItem', 'getMultiScore', 'getPos', 'getPosXYZ', 'getScore', 'getTarget', 'getTickingAreaList', 'get_all_player', 'get_robotname', 'isCmdSuccess', 'is_op', 'notifyToServer', 'queryPlayerInventory', 'rawText', 'sendPacket', 'sendcmd', 'sendwocmd', 'sendwscmd', 'set_player_effect', 'take_item_out_item_frame', 'tellrawText', 'waitMsg']func_set_frame(_frame) -> None全局初始化框架
Args: my_Frame: 要设置的框架对象
param_frameToolDeltaReturns
Nonefunc_get_game_ctrl() -> GameCtrl检查 GameCtrl 是否可用
Returns
tooldelta.GameCtrlfunc_get_frame() -> ToolDelta检查 GameCtrl 是否可用
Returns
tooldelta.ToolDeltafuncgetTarget(sth, timeout=5) -> list[str]获取符合目标选择器实体的列表
Args: sth: 目标选择器 timeout: 超时时间,默认为 5 秒 Raises: ValueError: 指令返回超时,或者无法获取目标
paramsthstrparamtimeoutfloat= 5Returns
list[str]funcgetPos(target, timeout=5) -> dict获取目标玩家的详细位置信息
一般情况下请使用 x, y, z = getPosXYZ(target) 来更方便地获取坐标
Args: target: 目标玩家的名称 timeout: 超时时间(秒)。默认为 5 秒
Raises: ValueError: 当目标玩家不存在时抛出该异常 ValueError: 当获取位置信息失败时抛出该异常 AttributeError: 当获取玩家 UUID 失败时抛出该异常
paramtargetstrparamtimeoutfloat= 5Returns
dictfuncgetItem(target, itemName, itemSpecialID=-1) -> int获取玩家背包内指定的物品的数量 Args: targetName (str): 玩家选择器 / 玩家名 itemName (str): 物品 ID itemSpecialID (int): 物品特殊值,默认值 -1
paramtargetstrparamitemNamestrparamitemSpecialIDint= -1Returns
intfuncgetPosXYZ(playername, timeout=30) -> tuple[float, float, float]获取玩家的简略坐标值,并以坐标三元元组返回 Args: player (str): 玩家名 timeout (int): 最长超时时间 Returns: tuple[float, float, float]
paramplayernamestrparamtimeoutfloat= 30Returns
tuple[float, float, float]funcgetMultiScore(scoreboardNameToGet, targetNameToGet) -> int | dict获取单个或多个计分板分数项 Args: scoreboardNameToGet: 计分板名 targetNameToGet: 获取分数的对象/目标选择器 Returns: ... Raises: ValueError: 无法获取分数
paramscoreboardNameToGetstrparamtargetNameToGetstrReturns
int | dictfuncgetScore(scb_name, target, timeout=30) -> int获取计分板对应分数 Args: scb_name: 计分板名 target: 目标选择器 timeout: 超时时间
Raises: ValueError: 计分板错误
Returns: int: 计分板分数
paramscb_namestrparamtargetstrparamtimeoutfloat= 30Returns
intfuncisCmdSuccess(cmd, timeout=30)获取命令执行成功与否的状态 Args: cmd: MC 指令 timeout: 超时时间 Returns: 命令执行是否成功: bool
paramcmdstrparamtimeoutfloat= 30Returns
NonefuncwaitMsg(playername, timeout=30) -> str | None等待玩家在聊天栏发送消息, 并获取返回内容
Args: playername (str): 玩家名 timeout (int): 超时等待时间
Returns: result (str | None): 返回, 如果超时或玩家中途退出则返回None
paramplayernamestrparamtimeoutfloat= 30Returns
str | Nonefuncis_op(playername) -> bool判断玩家是否为 OP
Args: playername: 玩家名称
paramplayernamestrReturns
boolfuncgetBlockTile(x, y, z) -> str获取指定坐标的方块的 ID
Args: x: X 坐标 y: Y 坐标 z: Z 坐标
paramxintparamyintparamzintReturns
strfuncgetTickingAreaList() -> dict获取 tickingarea 列表
Raises: AttributeError: 获取 tickingarea 列表失败
Returns
dictfuncqueryPlayerInventory(selector) -> dict查询玩家背包内容
Args: selector (str): 目标选择器
Raises: ValueError: 无法查询背包内容
Returns: dict: 背包内容
paramselectorstrReturns
dictfuncnotifyToServer(gameNamespace, modNamespace, eventName, eventData)paramgameNamespacestrparammodNamespacestrparameventNamestrparameventDataAnyReturns
Nonefunc__set_effect_while__(player_name, effect, level, particle, icon_flicker=True) -> None内部方法: 设置玩家状态效果 Args: player_name: 玩家名称 (String) effect: 效果 ID (String) 参考 EffectIDS 中内容 level: 效果等级 (int) Max: 255 particle: 是否显示粒子 (Boolean) icon_flicker: 是否使图标闪烁 (Boolean) [仅限ToolDelta运行时] Returns: None
paramplayer_namestrparameffectstrparamlevelintparamparticleboolparamicon_flickerbool= TrueReturns
Nonefuncset_player_effect(player_name, effect, duration, level, particle, icon_flicker=True, timeout=1.5) -> bool | ValueError设置玩家的状态效果
Args: player_name: 玩家名称 (String) 或是选择器 (String) effect: 效果 ID (String) 参考 EffectIDS 中内容 duration: 持续时间 (int) [为0代表永久(仅限ToolDelta运行时)] Max: 1000000 level: 效果等级 (int) Max: 255 particle: 是否显示粒子 (Boolean) icon_flicker: 是否使图标闪烁 (Boolean) [仅限ToolDelta运行时] timeout: 超时时间 (float) [可选]
Returns: Bool | ValueError: 是否设置成功
paramplayer_namestrparameffectstrparamdurationintparamlevelintparamparticleboolparamicon_flickerbool= Trueparamtimeoutfloat= 1.5Returns
bool | ValueErrorfunctake_item_out_item_frame(pos) -> None从物品展示框取出物品 Args: position: 物品展示框的坐标 (x, y, z) Returns: None
parampostuple[float, float, float]Returns
Nonefuncsendcmd(cmd, waitForResp=False, timeout=30) -> None | Packet_CommandOutput发送命令到游戏控制器,并可选择是否等待响应
如果 waitForResp 为 False,则返回 None,否则返回 Packet_CommandOutput 对象
Args: cmd: 要发送的命令 waitForResp: 是否等待响应,默认为 False timeout: 等待响应的超时时间(秒),默认为 30
paramcmdstrparamwaitForRespbool= Falseparamtimeoutint= 30Returns
None | tooldelta.packets.Packet_CommandOutputfuncsendwscmd(cmd, waitForResp=False, timeout=30) -> Packet_CommandOutput | None发送 WSCMD 命令到游戏控制器
Args: cmd: 要发送的 WSCMD 命令 waitForResp: 是否等待响应 默认为 False timeout: 超时时间(秒)默认为 30
paramcmdstrparamwaitForRespbool= Falseparamtimeoutfloat= 30Returns
tooldelta.packets.Packet_CommandOutput | Nonefuncsendwocmd(cmd) -> None发送 WO 命令到游戏控制器
Args: cmd: 要发送的 WO 命令
paramcmdstrReturns
NonefuncsendPacket(pktID, pkt) -> None发送数据包给游戏控制器
Args: pktID: 数据包 ID pkt: 数据包内容
parampktIDintparampktdictReturns
NonefuncrawText(playername, text) -> None向指定玩家发送原始文本消息
Args: playername: 玩家名称 text: 要发送的文本
paramplayernamestrparamtextstrReturns
NonefunctellrawText(playername, title=None, text='') -> None向指定玩家发送 tellraw 消息
Args: playername: 玩家名称 title: 标题文本(可选) text: 消息文本
paramplayernamestrparamtitlestr | None= Noneparamtextstr= ''Returns
Nonefuncget_all_player() -> list获取所有玩家列表
Returns
listfuncget_robotname() -> str获取机器人名称。
Returns
strfunchook_packet_handler(hdl)paramhdlPacketHandlerReturns
None