1
- #!/usr/bin/env python3
2
1
import os
3
2
import zipfile
3
+ from enum import StrEnum
4
4
5
- loader : str = "0.14.21"
6
- legacy_fixes : str = "legacy-fixes-1.0.1.jar"
7
- lwjgl3 : str = "3.1.6"
8
- lwjgl2 : str = "2.9.4-nightly-20150209"
9
- lwjgl2_patch : str = "2.9.4+legacyfabric.5"
5
+ loader : str = "0.14.22"
6
+
7
+
8
+ class IntermediaryType (StrEnum ):
9
+ LegacyFabric = "net.fabricmc.intermediary.json"
10
+ LegacyFabricNoApplet = "net.fabricmc.intermediary.pre-1.7.json"
11
+ LegacyFabricV2 = "net.fabricmc.intermediary.v2.json"
12
+ Ornithe = "net.fabricmc.intermediary.ornithe.json"
10
13
11
14
12
15
def mkdir_if_not_exists (path : str ):
@@ -15,18 +18,18 @@ def mkdir_if_not_exists(path: str):
15
18
16
19
17
20
class Generator :
18
- def __init__ (self , loader_version : str , minecraft_version : str , lwjgl_version : str , lwjgl_patch : str , path : str = "temp" ):
21
+ def __init__ (self , loader_version : str , minecraft_version : str , lwjgl_version : str ,
22
+ intermediary_type : IntermediaryType , path : str = "temp" ):
19
23
self .lwjgl_version : str = lwjgl_version
20
24
self .minecraft_version : str = minecraft_version
21
25
self .loader_version : str = loader_version
22
- self .lwjgl_patch : str = lwjgl_patch
26
+ self .intermediary_type : IntermediaryType = intermediary_type
23
27
self .path : str = path
24
28
25
29
def process (self , subject : str ) -> str :
26
30
subject = subject .replace ("${loader_version}" , self .loader_version )
27
31
subject = subject .replace ("${minecraft_version}" , self .minecraft_version )
28
32
subject = subject .replace ("${lwjgl_version}" , self .lwjgl_version )
29
- subject = subject .replace ("${lwjgl_patch}" , self .lwjgl_patch )
30
33
subject = subject .replace ("${lwjgl_name}" ,
31
34
"LWJGL 3" if self .lwjgl_version .startswith (
32
35
"3" ) else "LWJGL 2" )
@@ -46,84 +49,58 @@ def prepare_skeleton(self):
46
49
with open ("temp/instance.cfg" , "w" ) as t :
47
50
t .write (self .process (f .read ()))
48
51
49
- mkdir_if_not_exists ("temp/patches" )
52
+ # ornithe naming convention
53
+ if self .minecraft_version == "1.0" :
54
+ self .minecraft_version += ".0"
55
+ if int (self .minecraft_version .split ("." )[1 ]) < 3 :
56
+ self .minecraft_version += "-client"
50
57
51
- if not self .lwjgl_version .startswith ("3" ):
52
- with open ("skel/patches/org.lwjgl.lwjgl.json" , "r" ) as f :
53
- with open ("temp/patches/org.lwjgl.lwjgl.json" , "w" ) as t :
54
- t .write (self .process (f .read ()))
55
-
56
- if self .minecraft_version == "1.6.4" or "1.5.2" or "1.4.7" or "1.3.2" :
57
- with open ("skel/patches/net.fabricmc.intermediary.pre-1.7.json" , "r" ) as f :
58
- with open ("temp/patches/net.fabricmc.intermediary.json" , "w" ) as t :
59
- t .write (self .process (f .read ()))
60
- else :
61
- with open ("skel/patches/net.fabricmc.intermediary.json" , "r" ) as f :
62
- with open ("temp/patches/net.fabricmc.intermediary.json" , "w" ) as t :
63
- t .write (self .process (f .read ()))
64
-
65
- with open ("skel/legacyfabric.png" , "rb" ) as f :
66
- with open ("temp/legacyfabric.png" , "wb" ) as t :
67
- t .write (f .read ())
68
-
69
- if self .minecraft_version == "1.8.9" or self .minecraft_version == "1.7.10" or self .minecraft_version == "1.6.4" or self .minecraft_version == "1.5.2" or self .minecraft_version == "1.4.7" or self .minecraft_version == "1.3.2" :
70
- mkdir_if_not_exists ("temp/.minecraft" )
71
- mkdir_if_not_exists ("temp/.minecraft/mods" )
72
- with open (f"skel/.minecraft/mods/{ legacy_fixes } " , "rb" ) as f :
73
- with open (f"temp/.minecraft/mods/{ legacy_fixes } " , "wb" ) as t :
74
- t .write (f .read ())
58
+ mkdir_if_not_exists ("temp/patches" )
59
+ with open (f"skel/patches/{ self .intermediary_type } " , "r" ) as f :
60
+ with open ("temp/patches/net.fabricmc.intermediary.json" , "w" ) as t :
61
+ t .write (self .process (f .read ()))
75
62
76
63
def create_zip (self ):
77
- with zipfile .ZipFile (f"out/legacyfabric-{ self .minecraft_version } +loader.{ self .loader_version } .zip" , "w" ) as z :
64
+ with zipfile .ZipFile (
65
+ f"out/{ self .minecraft_version } +loader.{ self .loader_version } +lwjgl.{ self .lwjgl_version } .zip" , "w" ) as z :
78
66
z .write ("temp/mmc-pack.json" , "mmc-pack.json" )
79
67
z .write ("temp/instance.cfg" , "instance.cfg" )
80
68
z .write ("temp/patches/net.fabricmc.intermediary.json" ,
81
69
"patches/net.fabricmc.intermediary.json" )
82
- z .write ("temp/legacyfabric.png" , "legacyfabric.png" )
83
-
84
- if not self .lwjgl_version .startswith ("3" ):
85
- z .write ("temp/patches/org.lwjgl.lwjgl.json" ,
86
- "patches/org.lwjgl.json" )
87
-
88
- if self .minecraft_version == "1.8.9" or self .minecraft_version == "1.7.10" or self .minecraft_version == "1.6.4" or self .minecraft_version == "1.5.2" or self .minecraft_version == "1.4.7" or self .minecraft_version == "1.3.2" :
89
- z .write (f"temp/.minecraft/mods/{ legacy_fixes } " , f".minecraft/mods/{ legacy_fixes } " )
70
+ z .write ("skel/legacyfabric.png" , "legacyfabric.png" )
90
71
91
72
self .cleanup ()
92
73
93
74
def cleanup (self ):
94
75
for root , dirs , files in os .walk (self .path , topdown = False ):
95
76
for file in files :
96
77
os .remove (os .path .join (root , file ))
97
- for dir in dirs :
98
- os .rmdir (os .path .join (root , dir ))
78
+ for directory in dirs :
79
+ os .rmdir (os .path .join (root , directory ))
99
80
100
81
os .rmdir (self .path )
101
82
102
83
103
84
versions = [
104
- ("1.13.2" , 3 ),
105
- ("1.12.2" , 2 ),
106
- ("1.11.2" , 2 ),
107
- ("1.10.2" , 2 ),
108
- ("1.9.4" , 2 ),
109
- ("1.8.9" , 2 ),
110
- ("1.7.10" , 2 ),
111
- ("1.6.4" , 2 ),
112
- ("1.5.2" , 2 ),
113
- ("1.4.7" , 2 ),
114
- ("1.3.2" , 2 ),
85
+ ("1.13.2" , "3.1.6" , IntermediaryType .LegacyFabric ),
86
+ ("1.12.2" , "2.9.4-nightly-20150209" , IntermediaryType .LegacyFabric ),
87
+ ("1.12" , "2.9.4-nightly-20150209" , IntermediaryType .LegacyFabricV2 ),
88
+ ("1.11.2" , "2.9.4-nightly-20150209" , IntermediaryType .LegacyFabric ),
89
+ ("1.9.4" , "2.9.4-nightly-20150209" , IntermediaryType .LegacyFabric ),
90
+ ("1.8.9" , "2.9.4-nightly-20150209" , IntermediaryType .LegacyFabric ),
91
+ ("1.8" , "2.9.1" , IntermediaryType .LegacyFabric ),
92
+ ("1.7.10" , "2.9.1" , IntermediaryType .LegacyFabric ),
93
+ ("1.7.4" , "2.9.1-nightly-20131017" , IntermediaryType .LegacyFabric ),
94
+ ("1.7.2" , "2.9.0" , IntermediaryType .LegacyFabric ),
95
+ ("1.6.4" , "2.9.0" , IntermediaryType .LegacyFabric ),
96
+ ("1.3.2" , "2.9.0" , IntermediaryType .LegacyFabric ),
97
+ ("1.0" , "2.9.0" , IntermediaryType .Ornithe )
115
98
]
116
99
117
100
print (f"target loader: { loader } " )
118
101
mkdir_if_not_exists ("out" )
119
- for version , lwjgl in versions :
120
- lwjgl_version = lwjgl3 if lwjgl == 3 else lwjgl2
121
- lwjgl_patch = lwjgl3 if lwjgl == 3 else lwjgl2_patch
122
- print (f"generating { version } with LWJGL { lwjgl_patch } ..." )
123
- g = Generator (loader , version , lwjgl_version , lwjgl_patch )
102
+ for version , lwjgl , intermediary in versions :
103
+ print (f"generating { version } with LWJGL { lwjgl } ..." )
104
+ g = Generator (loader , version , lwjgl , intermediary )
124
105
g .prepare_skeleton ()
125
106
g .create_zip ()
126
-
127
- # g = Generator(loader, "1.13.2", lwjgl3)
128
- # g.prepare_skeleton()
129
- # g.create_zip()
0 commit comments