Skip to content

Commit 3ab7fc7

Browse files
authored
Add files via upload
1 parent d955785 commit 3ab7fc7

File tree

2 files changed

+210
-0
lines changed

2 files changed

+210
-0
lines changed

main.py

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
from colorama import init, Fore, Style
2+
from urllib.request import urlopen
3+
from shutil import copyfileobj
4+
from subprocess import call
5+
from tqdm.auto import tqdm
6+
from requests import get
7+
from time import sleep
8+
from json import loads
9+
from art import tprint
10+
11+
from os.path import basename
12+
from os import system
13+
14+
ram = 4
15+
16+
paperv = {
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+
}
46+
47+
init()
48+
49+
50+
def setupServer():
51+
print(f"{Fore.CYAN}Running server setup...{Style.RESET_ALL}")
52+
call([r"run.bat"])
53+
with open("eula.txt","w") as f:
54+
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\nEnter to continue... {Style.RESET_ALL}")
60+
exit()
61+
62+
def setup():
63+
system("cls")
64+
print(Fore.CYAN)
65+
tprint("Settings")
66+
sleep(.1)
67+
print(Style.RESET_ALL,"\n")
68+
passed = None
69+
global ram
70+
while True:
71+
print(f"{Fore.GREEN}Choose the amount of ram your server can use. Between 1 and 64. default=4{Style.RESET_ALL}")
72+
i = input(f"{Fore.CYAN}Server_ram{Style.RESET_ALL}=")
73+
try:
74+
i = int(i)
75+
if i > 0 and i < 65:
76+
passed = True
77+
except:
78+
print(f"n{Fore.RED}Not a valid number{Style.RESET_ALL}")
79+
passed = False
80+
81+
if passed:
82+
ram = i
83+
break
84+
else:
85+
print(f"{Fore.RED}Not a valid number{Style.RESET_ALL}")
86+
87+
while True:
88+
i = input(f"""
89+
{Fore.CYAN}What type of server do you want?{Style.RESET_ALL}
90+
91+
{Fore.CYAN}[0] {Fore.GREEN}Vanilla
92+
{Fore.CYAN}[1] {Fore.GREEN}Plugins(PaperMC)
93+
{Style.RESET_ALL}
94+
""")
95+
try:
96+
i = int(i)
97+
if i >= 0 and i <=3:
98+
break
99+
else:
100+
print(f"{Fore.RED}Not a valid number{Style.RESET_ALL}")
101+
except:
102+
print(f"{Fore.RED}Not a valid number{Style.RESET_ALL}")
103+
104+
while True:
105+
match i:
106+
case 0:
107+
vanilla()
108+
break
109+
case 1:
110+
paper()
111+
break
112+
case _:
113+
print(f"{Fore.RED}Invalid server type{Style.RESET_ALL}")
114+
115+
116+
117+
def download(url):
118+
with get(url, stream=True) as r:
119+
total_length = int(r.headers.get("Content-Length"))
120+
print("\n")
121+
with tqdm.wrapattr(r.raw, "read", total=total_length, desc=f"{Fore.CYAN}Downloading server.jar...{Fore.BLUE}", )as raw:
122+
with open("server.jar", 'wb') as output:
123+
copyfileobj(raw, output)
124+
print(Style.RESET_ALL)
125+
126+
with open("run.bat","w") as f:
127+
text = f"java -Xmx{ram}G -jar server.jar -nogui"
128+
f.writelines(text)
129+
130+
i = input(f"{Fore.CYAN}Run automatic server setup? (y/n) {Style.RESET_ALL}")
131+
if i.lower() == "y":
132+
setupServer()
133+
exit()
134+
else:
135+
i = input(f"{Fore.CYAN}Start your server by running run.bat\nYou can now delete the files main.py and setup.py, Press Enter to exit...\n{Style.RESET_ALL}")
136+
exit()
137+
138+
139+
def paper():
140+
system("cls")
141+
print(Fore.CYAN)
142+
tprint("Version")
143+
sleep(.1)
144+
print(Style.RESET_ALL)
145+
count = -1
146+
ver = []
147+
for line in paperv["versions"]:
148+
ver.append(line)
149+
count+=1
150+
print(f"{Fore.CYAN}[{count}] {Fore.BLUE}{line}")
151+
152+
i = input(f"{Fore.GREEN}\nChoose a version number. Example: version=0 for [0] 1.20.1\n{Fore.CYAN}version{Style.RESET_ALL}=")
153+
download_link = paperv["versions"][ver[int(i)]]
154+
download(download_link)
155+
156+
def vanilla():
157+
with urlopen("https://launchermeta.mojang.com/mc/game/version_manifest.json") as url:
158+
data = loads(url.read())
159+
versions = {}
160+
count = -1
161+
system("cls")
162+
print(Fore.CYAN)
163+
tprint("Version")
164+
print("\n")
165+
for line in data["versions"]:
166+
string = str(line["id"])
167+
result = ''.join([i for i in string if not i.isalpha()])
168+
if not result.isdigit():
169+
if not "-" in result:
170+
if not "_" in result:
171+
if not " " in result:
172+
count+=1
173+
versions[count] = result
174+
175+
for x in versions:
176+
print(f"{Fore.CYAN}[{x}] {Fore.BLUE}{versions[x]}{Style.RESET_ALL}")
177+
178+
print(f"{Fore.GREEN}Choose a version number. Example: version=0 for [0] 1.20.1")
179+
i = input(f"{Fore.CYAN}version{Style.RESET_ALL}=")
180+
downloadd = data["versions"][int(i)]["url"]
181+
with urlopen(downloadd) as url:
182+
data = loads(url.read().decode())
183+
download_link = data["downloads"]["server"]["url"]
184+
download(download_link)
185+
186+
if __name__ == "__main__":
187+
setup()

setup.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from os import system
2+
3+
libraries = [
4+
"pip install colorama==0.4.6",
5+
"pip install tqdm==4.66.1",
6+
"pip install requests==2.31.0",
7+
"pip install art==6.0"
8+
]
9+
10+
i=input("Do you want to install the required libraries? (y/n) ")
11+
if i.lower() == "y":
12+
for lib in libraries:
13+
system(lib)
14+
i=input("Done!\nRun main.py? (y/n) ")
15+
if i.lower() == "y":
16+
system("python main.py")
17+
input("Enter to exit")
18+
else:
19+
input("Enter to exit... ")
20+
exit()
21+
else:
22+
input("Enter to exit... ")
23+
exit()

0 commit comments

Comments
 (0)