feat(debug): 支持网易 Minecraft 调试启动

新增 debug 子命令,自动准备开发世界、注册内置调试 MOD,并将项目行为包和资源包链接到网易运行目录,方便启动游戏后直接进入调试世界。

调试 MOD 资源随仓库一起嵌入,避免依赖本机绝对路径;Windows junction 写入剥离 verbatim 前缀后的 DOS 路径,保证 Minecraft 能正确读取链接包。
This commit is contained in:
2026-05-16 00:59:51 +08:00
parent de2b804aad
commit 011b59c948
36 changed files with 4138 additions and 3 deletions

View File

@@ -0,0 +1,60 @@
# -*- coding: utf-8 -*-
from .Util import SystemSide
lambda: "By Zero123"
IsServerUser = False
ModDirName = SystemSide.__module__.split(".")[0]
QuModLibsPath = SystemSide.__module__[:SystemSide.__module__.rfind(".")]
class RuntimeService:
_serverSystemList = []
_clientSystemList = []
_serverStarting = False
_clientStarting = False
# LOADER SYSTEM
_serverLoadBefore = [] # type: list[function]
_clientLoadBefore = [] # type: list[function]
_serverLoadFinish = [] # type: list[function]
_clientLoadFinish = [] # type: list[function]
# THREAD ID
_serverThreadID = None
_clientThreadID = None
_envPlayerId = None
def getUnderlineModDirName():
# type: () -> str
""" 获取下划线MOD目录名称 返回结果与preset内置变量__LQuModName__一致 (仅支持ascii字符串) """
newStr = [] # type: list[int]
for i, _charStr in enumerate(ModDirName):
_char = ord(_charStr)
if (_char >= 65 and _char <= 90):
# 大写内容 进行处理
if i > 0:
newStr.append(ord("_"))
newStr.append(_char + (97 - 65))
continue
# 常规小写内容 直接追加
newStr.append(_char)
return "".join((chr(x) for x in newStr))
def GET_THREAD_ID():
""" 获取当前线程ID """
from threading import current_thread
return current_thread().ident
def IS_SERVER_THREAD():
""" 检查是不是服务端线程 """
return RuntimeService._serverThreadID != None and GET_THREAD_ID() == RuntimeService._serverThreadID
def IS_CLIENT_THREAD():
""" 检查是不是客户端线程 """
return RuntimeService._clientThreadID != None and GET_THREAD_ID() == RuntimeService._clientThreadID
def GET_THREAD_TYPE():
""" 获取线程类型 -1.主线程 0.服务端线程 1.客户端线程 """
tid = GET_THREAD_ID()
if tid == RuntimeService._serverThreadID:
return 0
elif tid == RuntimeService._clientThreadID:
return 1
return -1