1- #!/usr/bin/env python3
21import os
32import zipfile
3+ from enum import StrEnum
44
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"
1013
1114
1215def mkdir_if_not_exists (path : str ):
@@ -15,18 +18,18 @@ def mkdir_if_not_exists(path: str):
1518
1619
1720class 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" ):
1923 self .lwjgl_version : str = lwjgl_version
2024 self .minecraft_version : str = minecraft_version
2125 self .loader_version : str = loader_version
22- self .lwjgl_patch : str = lwjgl_patch
26+ self .intermediary_type : IntermediaryType = intermediary_type
2327 self .path : str = path
2428
2529 def process (self , subject : str ) -> str :
2630 subject = subject .replace ("${loader_version}" , self .loader_version )
2731 subject = subject .replace ("${minecraft_version}" , self .minecraft_version )
2832 subject = subject .replace ("${lwjgl_version}" , self .lwjgl_version )
29- subject = subject .replace ("${lwjgl_patch}" , self .lwjgl_patch )
3033 subject = subject .replace ("${lwjgl_name}" ,
3134 "LWJGL 3" if self .lwjgl_version .startswith (
3235 "3" ) else "LWJGL 2" )
@@ -46,84 +49,58 @@ def prepare_skeleton(self):
4649 with open ("temp/instance.cfg" , "w" ) as t :
4750 t .write (self .process (f .read ()))
4851
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"
5057
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 ()))
7562
7663 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 :
7866 z .write ("temp/mmc-pack.json" , "mmc-pack.json" )
7967 z .write ("temp/instance.cfg" , "instance.cfg" )
8068 z .write ("temp/patches/net.fabricmc.intermediary.json" ,
8169 "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" )
9071
9172 self .cleanup ()
9273
9374 def cleanup (self ):
9475 for root , dirs , files in os .walk (self .path , topdown = False ):
9576 for file in files :
9677 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 ))
9980
10081 os .rmdir (self .path )
10182
10283
10384versions = [
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 )
11598]
11699
117100print (f"target loader: { loader } " )
118101mkdir_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 )
124105 g .prepare_skeleton ()
125106 g .create_zip ()
126-
127- # g = Generator(loader, "1.13.2", lwjgl3)
128- # g.prepare_skeleton()
129- # g.create_zip()
0 commit comments