game_utils
游戏交互实用方法
attribute
game_ctrlOptional[GameCtrl]
= None
attribute
frameOptional[ToolDelta]
= None
attribute
player_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
_frameToolDelta
Returns
None
func
_get_game_ctrl() -> GameCtrl
检查 GameCtrl 是否可用
Returns
tooldelta.GameCtrl
func
_get_frame() -> ToolDelta
检查 GameCtrl 是否可用
Returns
tooldelta.ToolDelta
func
getTarget(sth, timeout=5) -> list[str]
获取符合目标选择器实体的列表
Args: sth: 目标选择器 timeout: 超时时间,默认为 5 秒 Raises: ValueError: 指令返回超时,或者无法获取目标
param
sthstr
param
timeoutfloat
= 5
Returns
list[str]
func
getPos(target, timeout=5) -> dict
获取目标玩家的详细位置信息
一般情况下请使用 x, y, z = getPosXYZ(target)
来更方便地获取坐标
Args: target: 目标玩家的名称 timeout: 超时时间(秒)。默认为 5 秒
Raises: ValueError: 当目标玩家不存在时抛出该异常 ValueError: 当获取位置信息失败时抛出该异常 AttributeError: 当获取玩家 UUID 失败时抛出该异常
param
targetstr
param
timeoutfloat
= 5
Returns
dict
func
getItem(target, itemName, itemSpecialID=-1) -> int
获取玩家背包内指定的物品的数量 Args: targetName (str): 玩家选择器 / 玩家名 itemName (str): 物品 ID itemSpecialID (int): 物品特殊值,默认值 -1
param
targetstr
param
itemNamestr
param
itemSpecialIDint
= -1
Returns
int
func
getPosXYZ(playername, timeout=30) -> tuple[float, float, float]
获取玩家的简略坐标值,并以坐标三元元组返回 Args: player (str): 玩家名 timeout (int): 最长超时时间 Returns: tuple[float, float, float]
param
playernamestr
param
timeoutfloat
= 30
Returns
tuple[float, float, float]
func
getMultiScore(scoreboardNameToGet, targetNameToGet) -> int | dict
获取单个或多个计分板分数项 Args: scoreboardNameToGet: 计分板名 targetNameToGet: 获取分数的对象/目标选择器 Returns: ... Raises: ValueError: 无法获取分数
param
scoreboardNameToGetstr
param
targetNameToGetstr
Returns
int | dict
func
getScore(scb_name, target, timeout=30) -> int
获取计分板对应分数 Args: scb_name: 计分板名 target: 目标选择器 timeout: 超时时间
Raises: ValueError: 计分板错误
Returns: int: 计分板分数
param
scb_namestr
param
targetstr
param
timeoutfloat
= 30
Returns
int
func
isCmdSuccess(cmd, timeout=30)
获取命令执行成功与否的状态 Args: cmd: MC 指令 timeout: 超时时间 Returns: 命令执行是否成功: bool
param
cmdstr
param
timeoutfloat
= 30
Returns
None
func
waitMsg(playername, timeout=30) -> str | None
等待玩家在聊天栏发送消息, 并获取返回内容
Args: playername (str): 玩家名 timeout (int): 超时等待时间
Returns: result (str | None): 返回, 如果超时或玩家中途退出则返回None
param
playernamestr
param
timeoutfloat
= 30
Returns
str | None
func
is_op(playername) -> bool
判断玩家是否为 OP
Args: playername: 玩家名称
param
playernamestr
Returns
bool
func
getBlockTile(x, y, z) -> str
获取指定坐标的方块的 ID
Args: x: X 坐标 y: Y 坐标 z: Z 坐标
param
xint
param
yint
param
zint
Returns
str
func
getTickingAreaList() -> dict
获取 tickingarea 列表
Raises: AttributeError: 获取 tickingarea 列表失败
Returns
dict
func
queryPlayerInventory(selector) -> dict
查询玩家背包内容
Args: selector (str): 目标选择器
Raises: ValueError: 无法查询背包内容
Returns: dict: 背包内容
param
selectorstr
Returns
dict
func
notifyToServer(gameNamespace, modNamespace, eventName, eventData)
param
gameNamespacestr
param
modNamespacestr
param
eventNamestr
param
eventDataAny
Returns
None
func
__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
param
player_namestr
param
effectstr
param
levelint
param
particlebool
param
icon_flickerbool
= True
Returns
None
func
set_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: 是否设置成功
param
player_namestr
param
effectstr
param
durationint
param
levelint
param
particlebool
param
icon_flickerbool
= True
param
timeoutfloat
= 1.5
Returns
bool | ValueError
func
take_item_out_item_frame(pos) -> None
从物品展示框取出物品 Args: position: 物品展示框的坐标 (x, y, z) Returns: None
param
postuple[float, float, float]
Returns
None
func
sendcmd(cmd, waitForResp=False, timeout=30) -> None | Packet_CommandOutput
发送命令到游戏控制器,并可选择是否等待响应
如果 waitForResp 为 False,则返回 None,否则返回 Packet_CommandOutput 对象
Args: cmd: 要发送的命令 waitForResp: 是否等待响应,默认为 False timeout: 等待响应的超时时间(秒),默认为 30
param
cmdstr
param
waitForRespbool
= False
param
timeoutint
= 30
Returns
None | tooldelta.packets.Packet_CommandOutput
func
sendwscmd(cmd, waitForResp=False, timeout=30) -> Packet_CommandOutput | None
发送 WSCMD 命令到游戏控制器
Args: cmd: 要发送的 WSCMD 命令 waitForResp: 是否等待响应 默认为 False timeout: 超时时间(秒)默认为 30
param
cmdstr
param
waitForRespbool
= False
param
timeoutfloat
= 30
Returns
tooldelta.packets.Packet_CommandOutput | None
func
sendwocmd(cmd) -> None
发送 WO 命令到游戏控制器
Args: cmd: 要发送的 WO 命令
param
cmdstr
Returns
None
func
sendPacket(pktID, pkt) -> None
发送数据包给游戏控制器
Args: pktID: 数据包 ID pkt: 数据包内容
param
pktIDint
param
pktdict
Returns
None
func
rawText(playername, text) -> None
向指定玩家发送原始文本消息
Args: playername: 玩家名称 text: 要发送的文本
param
playernamestr
param
textstr
Returns
None
func
tellrawText(playername, title=None, text='') -> None
向指定玩家发送 tellraw 消息
Args: playername: 玩家名称 title: 标题文本(可选) text: 消息文本
param
playernamestr
param
titlestr | None
= None
param
textstr
= ''
Returns
None
func
get_all_player() -> list
获取所有玩家列表
Returns
list
func
get_robotname() -> str
获取机器人名称。
Returns
str
func
hook_packet_handler(hdl)
param
hdlPacketHandler
Returns
None