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

Method run

MCSL2Lib/Pages/configurePage.py:170–285  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

168 self.exists_error_msg = exists_error_msg
169
170 def run(self):
171 server_name = self.server_config["name"]
172 folder_created = False
173 global_config_written = False
174
175 # 新建文件夹
176 try:
177 mkdir(f"./Servers/{server_name}")
178 folder_created = True
179 except FileExistsError:
180 self.failed.emit(self.exists_error_msg)
181 return
182 except Exception as e:
183 self.failed.emit(self.exit1_msg + f"\n{e}")
184 return
185
186 # 写入全局配置
187 try:
188 global_server_list = loads(readFile(r"MCSL2/MCSL2_ServerList.json"))
189 global_server_list["MCSLServerList"].append(self.server_config)
190 writeFile(r"MCSL2/MCSL2_ServerList.json", dumps(global_server_list, indent=4))
191 global_config_written = True
192 except Exception as e:
193 # 回滚:删除已创建的文件夹
194 if folder_created:
195 try:
196 rmtree(f"./Servers/{server_name}")
197 except Exception:
198 pass
199 self.failed.emit(self.exit1_msg + f"\n{e}")
200 return
201
202 # 写入单独配置
203 try:
204 if not self.only_save_global:
205 writeFile(
206 f"./Servers/{server_name}/MCSL2ServerConfig.json",
207 dumps(self.server_config, indent=4),
208 )
209 except Exception as e:
210 # 回滚:删除全局配置和文件夹
211 if global_config_written:
212 try:
213 global_server_list = loads(readFile(r"MCSL2/MCSL2_ServerList.json"))
214 # 找到刚添加的配置并删除
215 for i, srv in enumerate(global_server_list["MCSLServerList"]):
216 if srv["name"] == server_name:
217 global_server_list["MCSLServerList"].pop(i)
218 break
219 writeFile(r"MCSL2/MCSL2_ServerList.json", dumps(global_server_list, indent=4))
220 except Exception:
221 pass
222 if folder_created:
223 try:
224 rmtree(f"./Servers/{server_name}")
225 except Exception:
226 pass
227 self.failed.emit(self.exit1_msg + f"\n{e}")

Callers

nothing calls this directly

Calls 7

readFileFunction · 0.90
writeFileFunction · 0.90
_MinecraftEULAClass · 0.90
acceptEulaMethod · 0.80
appendMethod · 0.45
getMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected