新增 debug 子命令,自动准备开发世界、注册内置调试 MOD,并将项目行为包和资源包链接到网易运行目录,方便启动游戏后直接进入调试世界。 调试 MOD 资源随仓库一起嵌入,避免依赖本机绝对路径;Windows junction 写入剥离 verbatim 前缀后的 DOS 路径,保证 Minecraft 能正确读取链接包。
60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
# -*- 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 |