游戏接口 mc
lumen.mc 提供游戏侧接口,复刻 LeviLamina 的 mc 对象风格:
监听游戏事件
python
# 兼容别名(sb3 / LL 风格)
lumen.mc.listen("onJoin", lambda name: lumen.logger.info(f"{name} 进服"))
lumen.mc.listen("onChat", lambda name, msg: lumen.logger.info(f"{name}: {msg}"))
lumen.mc.listen("onLeft", lambda name: ...)
lumen.mc.listen("onDeath", lambda name, msg: ...)支持任意 Endstone 事件(按类名字符串反射查找,随 Endstone 升级自动支持新事件):
python
# 监听玩家交互方块事件
def on_interact(event):
player = event.player
block = event.block
lumen.logger.info(f"{player.name} 交互了 {block}")
lumen.mc.listen("PlayerInteractEvent", on_interact)
# 监听方块破坏
lumen.mc.listen("BlockBreakEvent", lambda e: lumen.logger.info(f"{e.player.name} 破坏了方块"))
# 监听实体生成
lumen.mc.listen("ActorSpawnEvent", lambda e: ...)回调接收原生 Endstone 事件对象,拥有完整的事件 API(event.player、event.block、event.set_cancelled() 等)。
执行命令
python
# 异步执行(不关心输出,不阻塞)
lumen.mc.runcmd("say 服务器即将重启")
# 同步执行并捕获输出(阻塞调用线程,不要在游戏主线程用!)
result = lumen.mc.runcmdEx("list")
# result = {"success": True, "output": "There are 3/20 players online:\nSteve, Alex, ..."}
if result["success"]:
lumen.logger.info(f"在线玩家: {result['output']}")其他
python
# 全服广播
lumen.mc.broadcast("§a欢迎来到服务器!")
# 在线玩家列表
players = lumen.mc.online_players # ["Steve", "Alex", ...]