Skip to content

Commit 9a204a5

Browse files
authored
Merge pull request #3 from tildejustin/mcsr
2 parents 9467e94 + 7806715 commit 9a204a5

File tree

2 files changed

+37
-42
lines changed

2 files changed

+37
-42
lines changed

generate.py

+36-41
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
import zipfile
33
from enum import StrEnum
4+
from typing import Optional
45

56

67
class IntermediaryType(StrEnum):
@@ -11,59 +12,38 @@ class IntermediaryType(StrEnum):
1112
Ornithe = "net.fabricmc.intermediary.ornithe.pre-1.6.json"
1213

1314

14-
def mkdir_if_not_exists(path: str):
15-
if not os.path.exists(path):
16-
os.mkdir(path)
15+
def mkdirs(*paths: str):
16+
for path in paths:
17+
if not os.path.exists(path):
18+
os.mkdir(path)
1719

1820

1921
class Generator:
20-
def __init__(self, loader_version: str, minecraft_version: str, lwjgl_version: str,
21-
intermediary_type: IntermediaryType, path: str = "temp"):
22-
self.lwjgl_version: str = lwjgl_version
23-
self.minecraft_version: str = minecraft_version
24-
self.loader_version: str = loader_version
25-
self.intermediary_type: IntermediaryType = intermediary_type
26-
self.path: str = path
27-
self.minecraft_version_additions = ""
22+
def __init__(self, minecraft_version: str, lwjgl_version: str, intermediary_type: IntermediaryType, path: str = "temp"):
23+
self.lwjgl_version = lwjgl_version
24+
self.minecraft_version = minecraft_version
25+
self.intermediary_type = intermediary_type
26+
self.path = path
27+
self.minecraft_version_additions = self.fix_version(version)
2828

2929
def process(self, subject: str) -> str:
30-
subject = subject.replace("${loader_version}", self.loader_version)
30+
subject = subject.replace("${loader_version}", LOADER_VERSION)
3131
subject = subject.replace("${minecraft_version}", self.minecraft_version + self.minecraft_version_additions)
3232
subject = subject.replace("${lwjgl_version}", self.lwjgl_version)
3333
subject = subject.replace("${lwjgl_name}", "LWJGL 3" if self.lwjgl_version.startswith("3") else "LWJGL 2")
3434
subject = subject.replace("${lwjgl_uid}", "org.lwjgl3" if self.lwjgl_version.startswith("3") else "org.lwjgl")
3535
return subject
3636

3737
def prepare_skeleton(self):
38-
mkdir_if_not_exists("temp")
39-
40-
with open("skel/mmc-pack.json", "r") as f:
41-
with open("temp/mmc-pack.json", "w") as t:
42-
t.write(self.process(f.read()))
43-
44-
with open("skel/instance.cfg", "r") as f:
45-
with open("temp/instance.cfg", "w") as t:
46-
t.write(self.process(f.read()))
47-
48-
# ornithe naming convention
49-
if self.minecraft_version == "1.0":
50-
self.minecraft_version_additions += ".0"
51-
if int(self.minecraft_version.split(".")[1]) < 3:
52-
self.minecraft_version_additions += "-client"
53-
54-
mkdir_if_not_exists("temp/patches")
55-
with open(f"skel/patches/{self.intermediary_type}", "r") as f:
56-
with open("temp/patches/net.fabricmc.intermediary.json", "w") as t:
57-
t.write(self.process(f.read()))
38+
mkdirs("temp", "temp/patches")
39+
self.process_file("mmc-pack.json", "instance.cfg")
40+
self.process_file(f"patches/{self.intermediary_type}", out="patches/net.fabricmc.intermediary.json")
5841

5942
def create_zip(self):
60-
with zipfile.ZipFile(
61-
f"out/{self.minecraft_version}+loader.{self.loader_version}.zip", "w") as z:
43+
with zipfile.ZipFile(f"out/{self.minecraft_version}+loader.{LOADER_VERSION}.zip", "w") as z:
6244
z.write("temp/mmc-pack.json", "mmc-pack.json")
6345
z.write("temp/instance.cfg", "instance.cfg")
64-
z.write("temp/patches/net.fabricmc.intermediary.json",
65-
"patches/net.fabricmc.intermediary.json")
66-
46+
z.write("temp/patches/net.fabricmc.intermediary.json", "patches/net.fabricmc.intermediary.json")
6747
self.cleanup()
6848

6949
def cleanup(self):
@@ -72,9 +52,24 @@ def cleanup(self):
7252
os.remove(os.path.join(root, file))
7353
for directory in dirs:
7454
os.rmdir(os.path.join(root, directory))
75-
7655
os.rmdir(self.path)
7756

57+
def process_file(self, *files: str, out: Optional[str] = None):
58+
for file in files:
59+
with open(f"skel/{file}", "r") as f:
60+
with open(f"temp/{out if out is not None else file}", "w") as t:
61+
t.write(self.process(f.read()))
62+
63+
@staticmethod
64+
def fix_version(version: str) -> str:
65+
# accounts for the ornithe naming convention
66+
addition = ""
67+
if version == "1.0":
68+
addition += ".0"
69+
if int(version.split(".")[1]) < 3:
70+
addition += "-client"
71+
return addition
72+
7873

7974
versions = [
8075
("1.13.2", "3.1.6", IntermediaryType.LegacyFabric),
@@ -93,11 +88,11 @@ def cleanup(self):
9388
("1.0", "2.9.0", IntermediaryType.Ornithe)
9489
]
9590

96-
loader = "0.14.24"
97-
mkdir_if_not_exists("out")
91+
LOADER_VERSION = "0.15.0"
92+
mkdirs("out")
9893

9994
for version, lwjgl, intermediary in versions:
10095
print(f"generating {version} with LWJGL {lwjgl}...")
101-
g = Generator(loader, version, lwjgl, intermediary)
96+
g = Generator(version, lwjgl, intermediary)
10297
g.prepare_skeleton()
10398
g.create_zip()

skel/instance.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
InstanceType=OneSix
2-
MCLaunchMethod=LauncherPart
2+
MCLaunchMethod=LauncherPart

0 commit comments

Comments
 (0)