1- from colorama import init , Fore , Style
1+ from os import system , listdir , path , remove
2+ from colorama import init , Fore , Style
23from urllib .request import urlopen
34from shutil import copyfileobj
45from subprocess import call
89from json import loads
910from art import tprint
1011
11- from os .path import basename
12- from os import system
1312
1413ram = 4
1514
15+ forgev = {
16+ "versions" : {
17+ '1.20.1' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.1.0/forge-1.20.1-47.1.0-installer.jar' ,
18+ '1.20' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.20-46.0.14/forge-1.20-46.0.14-installer.jar' ,
19+ '1.19.4' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.4-45.1.0/forge-1.19.4-45.1.0-installer.jar' ,
20+ '1.19.3' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.3-44.1.0/forge-1.19.3-44.1.0-installer.jar' ,
21+ '1.19.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.2-43.2.0/forge-1.19.2-43.2.0-installer.jar' ,
22+ '1.19.1' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.1-42.0.9/forge-1.19.1-42.0.9-installer.jar' ,
23+ '1.19' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.19-41.1.0/forge-1.19-41.1.0-installer.jar' ,
24+ '1.18.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.18.2-40.2.0/forge-1.18.2-40.2.0-installer.jar' ,
25+ '1.18.1' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.18.1-39.1.0/forge-1.18.1-39.1.0-installer.jar' ,
26+ '1.18' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.18-38.0.17/forge-1.18-38.0.17-installer.jar' ,
27+ '1.17.1' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.17.1-37.1.1/forge-1.17.1-37.1.1-installer.jar' ,
28+ '1.16.5' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.5-36.2.34/forge-1.16.5-36.2.34-installer.jar' ,
29+ '1.16.4' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.4-35.1.4/forge-1.16.4-35.1.4-installer.jar' ,
30+ '1.16.3' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.3-34.1.0/forge-1.16.3-34.1.0-installer.jar' ,
31+ '1.16.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.2-33.0.61/forge-1.16.2-33.0.61-installer.jar' ,
32+ '1.16.1' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.16.1-32.0.108/forge-1.16.1-32.0.108-installer.jar' ,
33+ '1.15.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.15.2-31.2.57/forge-1.15.2-31.2.57-installer.jar' ,
34+ '1.15.1' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.15.1-30.0.51/forge-1.15.1-30.0.51-installer.jar' ,
35+ '1.15' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.15-29.0.4/forge-1.15-29.0.4-installer.jar' ,
36+ '1.14.4' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.14.4-28.2.26/forge-1.14.4-28.2.26-installer.jar' ,
37+ '1.14.3' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.14.3-27.0.60/forge-1.14.3-27.0.60-installer.jar' ,
38+ '1.14.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.14.2-36.0.63/forge-1.14.2-36.0.63-installer.jar' ,
39+ '1.13.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.13.2-25.0.223/forge-1.13.2-25.0.223-installer.jar' ,
40+ '1.12.2' : 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.12.2-14.23.5.2859/forge-1.12.2-14.23.5.2859-installer.jar'
41+ }
42+ }
43+
1644paperv = {
17- "latest" : "1.20.1" ,
18- "versions" : {
19- "1.20.1" : "https://api.papermc.io/v2/projects/paper/versions/1.20.1/builds/172/downloads/paper-1.20.1-172.jar" ,
20- "1.20" : "https://api.papermc.io/v2/projects/paper/versions/1.20/builds/17/downloads/paper-1.20-17.jar" ,
21- "1.19.4" : "https://api.papermc.io/v2/projects/paper/versions/1.19.4/builds/550/downloads/paper-1.19.4-550.jar" ,
22- "1.19.3" : "https://api.papermc.io/v2/projects/paper/versions/1.19.3/builds/448/downloads/paper-1.19.3-448.jar" ,
23- "1.19.2" : "https://api.papermc.io/v2/projects/paper/versions/1.19.2/builds/307/downloads/paper-1.19.2-307.jar" ,
24- "1.19.1" : "https://api.papermc.io/v2/projects/paper/versions/1.19.1/builds/111/downloads/paper-1.19.1-111.jar" ,
25- "1.19" : "https://api.papermc.io/v2/projects/paper/versions/1.19/builds/81/downloads/paper-1.19-81.jar" ,
26- "1.18.2" : "https://api.papermc.io/v2/projects/paper/versions/1.18.2/builds/388/downloads/paper-1.18.2-388.jar" ,
27- "1.18.1" : "https://api.papermc.io/v2/projects/paper/versions/1.18.1/builds/216/downloads/paper-1.18.1-216.jar" ,
28- "1.18" : "https://api.papermc.io/v2/projects/paper/versions/1.18/builds/66/downloads/paper-1.18-66.jar" ,
29- "1.17.1" : "https://api.papermc.io/v2/projects/paper/versions/1.17.1/builds/411/downloads/paper-1.17.1-411.jar" ,
30- "1.17" : "https://api.papermc.io/v2/projects/paper/versions/1.17/builds/79/downloads/paper-1.17-79.jar" ,
31- "1.16.5" : "https://api.papermc.io/v2/projects/paper/versions/1.16.5/builds/794/downloads/paper-1.16.5-794.jar" ,
32- "1.16.4" : "https://api.papermc.io/v2/projects/paper/versions/1.16.4/builds/416/downloads/paper-1.16.4-416.jar" ,
33- "1.16.3" : "https://api.papermc.io/v2/projects/paper/versions/1.16.3/builds/253/downloads/paper-1.16.3-253.jar" ,
34- "1.16.2" : "https://api.papermc.io/v2/projects/paper/versions/1.16.2/builds/189/downloads/paper-1.16.2-189.jar" ,
35- "1.16.1" : "https://api.papermc.io/v2/projects/paper/versions/1.16.1/builds/138/downloads/paper-1.16.1-138.jar" ,
36- "1.15.2" : "https://api.papermc.io/v2/projects/paper/versions/1.15.2/builds/393/downloads/paper-1.15.2-393.jar" ,
37- "1.14.4" : "https://api.papermc.io/v2/projects/paper/versions/1.14.4/builds/245/downloads/paper-1.14.4-245.jar" ,
38- "1.13.2" : "https://api.papermc.io/v2/projects/paper/versions/1.13.2/builds/657/downloads/paper-1.13.2-657.jar" ,
39- "1.12.2" : "https://api.papermc.io/v2/projects/paper/versions/1.12.2/builds/1620/downloads/paper-1.12.2-1620.jar" ,
40- "1.11.2" : "https://api.papermc.io/v2/projects/paper/versions/1.11.2/builds/1106/downloads/paper-1.11.2-1106.jar" ,
41- "1.10.2" : "https://api.papermc.io/v2/projects/paper/versions/1.10.2/builds/918/downloads/paper-1.10.2-918.jar" ,
42- "1.9.4" : "https://api.papermc.io/v2/projects/paper/versions/1.9.4/builds/775/downloads/paper-1.9.4-775.jar" ,
43- "1.8.8" : "https://api.papermc.io/v2/projects/paper/versions/1.8.8/builds/445/downloads/paper-1.8.8-445.jar"
44- }
45+ "versions" : {
46+ "1.20.1" : "https://api.papermc.io/v2/projects/paper/versions/1.20.1/builds/172/downloads/paper-1.20.1-172.jar" ,
47+ "1.20" : "https://api.papermc.io/v2/projects/paper/versions/1.20/builds/17/downloads/paper-1.20-17.jar" ,
48+ "1.19.4" : "https://api.papermc.io/v2/projects/paper/versions/1.19.4/builds/550/downloads/paper-1.19.4-550.jar" ,
49+ "1.19.3" : "https://api.papermc.io/v2/projects/paper/versions/1.19.3/builds/448/downloads/paper-1.19.3-448.jar" ,
50+ "1.19.2" : "https://api.papermc.io/v2/projects/paper/versions/1.19.2/builds/307/downloads/paper-1.19.2-307.jar" ,
51+ "1.19.1" : "https://api.papermc.io/v2/projects/paper/versions/1.19.1/builds/111/downloads/paper-1.19.1-111.jar" ,
52+ "1.19" : "https://api.papermc.io/v2/projects/paper/versions/1.19/builds/81/downloads/paper-1.19-81.jar" ,
53+ "1.18.2" : "https://api.papermc.io/v2/projects/paper/versions/1.18.2/builds/388/downloads/paper-1.18.2-388.jar" ,
54+ "1.18.1" : "https://api.papermc.io/v2/projects/paper/versions/1.18.1/builds/216/downloads/paper-1.18.1-216.jar" ,
55+ "1.18" : "https://api.papermc.io/v2/projects/paper/versions/1.18/builds/66/downloads/paper-1.18-66.jar" ,
56+ "1.17.1" : "https://api.papermc.io/v2/projects/paper/versions/1.17.1/builds/411/downloads/paper-1.17.1-411.jar" ,
57+ "1.17" : "https://api.papermc.io/v2/projects/paper/versions/1.17/builds/79/downloads/paper-1.17-79.jar" ,
58+ "1.16.5" : "https://api.papermc.io/v2/projects/paper/versions/1.16.5/builds/794/downloads/paper-1.16.5-794.jar" ,
59+ "1.16.4" : "https://api.papermc.io/v2/projects/paper/versions/1.16.4/builds/416/downloads/paper-1.16.4-416.jar" ,
60+ "1.16.3" : "https://api.papermc.io/v2/projects/paper/versions/1.16.3/builds/253/downloads/paper-1.16.3-253.jar" ,
61+ "1.16.2" : "https://api.papermc.io/v2/projects/paper/versions/1.16.2/builds/189/downloads/paper-1.16.2-189.jar" ,
62+ "1.16.1" : "https://api.papermc.io/v2/projects/paper/versions/1.16.1/builds/138/downloads/paper-1.16.1-138.jar" ,
63+ "1.15.2" : "https://api.papermc.io/v2/projects/paper/versions/1.15.2/builds/393/downloads/paper-1.15.2-393.jar" ,
64+ "1.14.4" : "https://api.papermc.io/v2/projects/paper/versions/1.14.4/builds/245/downloads/paper-1.14.4-245.jar" ,
65+ "1.13.2" : "https://api.papermc.io/v2/projects/paper/versions/1.13.2/builds/657/downloads/paper-1.13.2-657.jar" ,
66+ "1.12.2" : "https://api.papermc.io/v2/projects/paper/versions/1.12.2/builds/1620/downloads/paper-1.12.2-1620.jar" ,
67+ }
4568}
4669
4770init ()
4871
4972
5073def setupServer ():
5174 print (f"{ Fore .CYAN } Running server setup...{ Style .RESET_ALL } " )
52- call ([ r "run.bat"] )
75+ call ("run.bat" )
5376 with open ("eula.txt" ,"w" ) as f :
5477 f .write ("eula=true" )
55- i = input (f"{ Fore .CYAN } Run server? (y/n) { Style .RESET_ALL } " )
56- if i .lower () == "y" :
57- system ("run.bat" )
58- else :
59- i = input (f"{ Fore .CYAN } Start server by running file run.bat, you can now delete main.py and setup.py\n Enter to continue... { Style .RESET_ALL } " )
60- exit ()
78+ input (f"{ Fore .CYAN } Start server by running file run.bat, you can now delete main.py and setup.py\n Enter to remove main.py and exit setup... { Style .RESET_ALL } " )
79+ remove ("main.py" )
80+ exit ()
6181
6282def setup ():
6383 system ("cls" )
@@ -90,6 +110,7 @@ def setup():
90110
91111{ Fore .CYAN } [0] { Fore .GREEN } Vanilla
92112{ Fore .CYAN } [1] { Fore .GREEN } Plugins(PaperMC)
113+ { Fore .CYAN } [2] { Fore .GREEN } Modded(Forge)
93114{ Style .RESET_ALL }
94115""" )
95116 try :
@@ -109,6 +130,9 @@ def setup():
109130 case 1 :
110131 paper ()
111132 break
133+ case 2 :
134+ forge ()
135+ break
112136 case _:
113137 print (f"{ Fore .RED } Invalid server type{ Style .RESET_ALL } " )
114138
@@ -124,7 +148,7 @@ def download(url):
124148 print (Style .RESET_ALL )
125149
126150 with open ("run.bat" ,"w" ) as f :
127- text = f"java -Xmx{ ram } G -jar server.jar - nogui"
151+ text = f"java -Xmx{ ram } G -jar server.jar nogui"
128152 f .writelines (text )
129153
130154 i = input (f"{ Fore .CYAN } Run automatic server setup? (y/n) { Style .RESET_ALL } " )
@@ -135,6 +159,44 @@ def download(url):
135159 i = input (f"{ Fore .CYAN } Start your server by running run.bat\n You can now delete the files main.py and setup.py, Press Enter to exit...\n { Style .RESET_ALL } " )
136160 exit ()
137161
162+ def forge ():
163+ system ("cls" )
164+ print (Fore .CYAN )
165+ tprint ("Version" )
166+ sleep (.1 )
167+ print (Style .RESET_ALL )
168+ count = - 1
169+ vers = []
170+ for line in forgev ["versions" ]:
171+ vers .append (line )
172+ count += 1
173+ print (f"{ Fore .CYAN } [{ count } ] { Fore .BLUE } { line } " )
174+
175+ i = input (f"{ Fore .GREEN } \n Choose a version number. Example: version=0 for [0] 1.20.1\n { Fore .CYAN } version{ Style .RESET_ALL } =" )
176+ ver = vers [int (i )]
177+ data = get (forgev ["versions" ][ver ],allow_redirects = True )
178+ with open (f"{ ver } .jar" ,"wb" ) as f :
179+ f .write (data .content )
180+
181+ call (f"java -jar { ver } .jar --installServer" )
182+ print (not path .exists ("run.bat" ))
183+ if not path .isfile ("run.bat" ):
184+ dir = listdir ()
185+ list = ["minecraft" ]
186+ final = [nm for ps in list for nm in dir if ps in nm ]
187+
188+ with open ("run.bat" ,"w" ) as f :
189+ f .write (f"java -jar { final [0 ]} -Xmx{ ram } G nogui" )
190+ sleep (.5 )
191+ lines = []
192+ for line in open ("run.bat" , "r" ):
193+ if not "pause" in line .lower ():
194+ lines .append (line )
195+ with open ("run.bat" , "w" ) as f :
196+ f .writelines (lines )
197+
198+ sleep (.5 )
199+ setupServer ()
138200
139201def paper ():
140202 system ("cls" )
@@ -184,4 +246,4 @@ def vanilla():
184246 download (download_link )
185247
186248if __name__ == "__main__" :
187- setup ()
249+ setup ()
0 commit comments