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

Class ForgeInstaller

MCSL2Lib/ServerControllers/serverInstaller.py:248–546  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

246
247
248class ForgeInstaller(Installer):
249 downloadInfo = pyqtSignal(
250 str, float, int, bool, bool
251 ) # filename, dl_percent, speed, done, allDone
252
253 class InstallPlan(Enum):
254 PlanA = 0
255 PlanB = 1
256
257 def __init__(
258 self,
259 serverPath,
260 file,
261 isEditing: Optional[str] = "",
262 java=None,
263 installerPath=None,
264 logDecode="utf-8",
265 ):
266 super().__init__(serverPath, file, logDecode)
267 self.java = java
268 self.serverPath = serverPath
269 self.isEditing = int(isEditing) if isEditing != "" else None
270
271 self._mcVersion = None
272 self._profile = None
273 self._forgeVersion = None
274 self._bmclapiDownloader = None
275 self._serverJarTargetPath = ""
276 self._serverJarFileName = ""
277 self._needHost = False
278 self._dlInfoMonitor = None
279 self._dlInfoQueue = None
280
281 try:
282 self.getInstallerData(
283 osp.join(serverPath, file) if installerPath is None else installerPath
284 )
285 except Exception:
286 raise InstallerError(
287 self.tr(
288 "无法打开forge安装器核心文件:{path}, 可能文件已损坏." # noqa: E501
289 ).format(path=file) # noqa: E501
290 )
291 if self._mcVersion >= McVersion("1.17"):
292 self.installPlan = ForgeInstaller.InstallPlan.PlanB
293 elif self._mcVersion >= McVersion("1.8"):
294 self.installPlan = ForgeInstaller.InstallPlan.PlanA
295 else:
296 raise InstallerError(
297 self.tr(
298 "不支持的自动安装版本: {mcVersion}\nMCSL2 的 Forge 自动安装仅支持 Minecraft 1.8+" # noqa: E501
299 ).format(mcVersion=self._mcVersion) # noqa: E501
300 )
301
302 def getInstallerData(self, jarFile):
303 # 打开Installer压缩包
304 # 读取install_profile.json或version.json
305 with ZipFile(jarFile, mode="r") as zipfile:

Callers 2

saveEditedServerMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected