MCPcopy Create free account
hub / github.com/MCSLTeam/MCSL2 / _BedrockServerProcessBridge

Class _BedrockServerProcessBridge

MCSL2Lib/ServerControllers/processCreator.py:146–221  ·  view source on GitHub ↗

基岩版服务器进程操控器

Source from the content-addressed store, hash-verified

144
145
146class _BedrockServerProcessBridge(_ServerProcessBridge):
147 """基岩版服务器进程操控器"""
148
149 def __init__(self, v):
150 """
151 初始化基岩版服务器处理器
152 """
153 # 基岩版服务器不使用 Java,直接运行可执行文件
154 self.config: ServerVariables = v
155 self.workingDirectory: str = str(osp.realpath(f"./Servers/{self.config.serverName}"))
156 self.partialData: str = b""
157 self.handledServer = None
158
159 # 确定基岩版服务器可执行文件路径
160 self.executablePath = self._getBedrockExecutable()
161 QObject.__init__(self)
162 self.serverProcess = self.createServerProcess()
163
164 def _getBedrockExecutable(self) -> str:
165 """
166 根据操作系统获取基岩版服务器可执行文件路径
167 """
168 system = platform.system().lower()
169 server_dir = self.workingDirectory
170
171 if system == "windows":
172 executable = osp.join(server_dir, "bedrock_server.exe")
173 elif system == "darwin": # macOS
174 executable = osp.join(server_dir, "bedrock_server")
175 elif system == "linux":
176 executable = osp.join(server_dir, "bedrock_server")
177 else:
178 MCSL2Logger.error(f"不支持的操作系统: {system}")
179 executable = osp.join(server_dir, self.config.coreFileName)
180
181 # 如果默认路径不存在,尝试使用配置中的文件名
182 if not osp.exists(executable):
183 alt_executable = osp.join(server_dir, self.config.coreFileName)
184 if osp.exists(alt_executable):
185 executable = alt_executable
186 else:
187 MCSL2Logger.warning(f"基岩版服务器可执行文件不存在: {executable}")
188 MCSL2Logger.warning(f"备选路径也不存在: {alt_executable}")
189
190 MCSL2Logger.info(f"基岩版服务器可执行文件: {executable}")
191 return executable
192
193 def createServerProcess(self) -> _Server:
194 """
195 创建基岩版服务器进程对象
196 """
197 self.handledServer = _Server()
198 self.handledServer.process = QProcess()
199
200 # 基岩版服务器直接运行可执行文件,不需要 Java
201 self.handledServer.process.setProgram(self.executablePath)
202 self.handledServer.process.setArguments([]) # 基岩版通常不需要额外参数
203 self.handledServer.process.setWorkingDirectory(self.workingDirectory)

Callers 1

_launchMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected