-
Notifications
You must be signed in to change notification settings - Fork 1
/
servinstall.py
56 lines (48 loc) · 2.7 KB
/
servinstall.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import json
import requests
import os
from subprocess import STDOUT, DEVNULL, run
def install_buildtools(directory):
buildtools = requests.get('https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar')
with open(os.path.join(directory, 'BuildTools.jar'), "wb") as file:
file.write(buildtools.content)
def create_eula(directory):
with open(os.path.join(directory, 'eula.txt'), 'w') as eula:
eula.write('eula=true')
def create_dir(directory, base_dir='.'):
directory = os.path.join(base_dir, directory)
if not os.path.isdir(directory):
os.mkdir(directory)
def compile_spigot_craftbukkit(directory, mc_version, java_versions):
java_path = java_versions[mc_version['java_version']]
if not os.path.exists(java_path):
print('Java executable could not be located as defined in the config (' + java_path + '). Please update the "java_versions" section of the config with paths to your java installations.')
exit()
minecraft_version = mc_version['minecraft_version']
run([java_path, '-jar', 'BuildTools.jar', '--compile', 'craftbukkit', '--compile', 'spigot', '--rev', minecraft_version], stdout=DEVNULL, stdin=DEVNULL, stderr=STDOUT, cwd=directory)
def create_server(directory, mc_version, java_versions):
java_path = java_versions[mc_version['java_version']]
if not os.path.exists(java_path):
print('Java executable could not be located as defined in the config (' + java_path + '). Please update the "java_versions" section of the config with paths to your java installations.')
exit()
server_jar = os.path.join(directory, 'spigot-' + mc_version['minecraft_version'] + '.jar')
run([java_path, '-jar', server_jar, 'nogui'], stdout=DEVNULL, stderr=STDOUT, cwd=directory, input=b'stop\n')
with open('config.json', 'r') as config_file:
config = json.loads(config_file.read())
current_path = os.getcwd()
java_versions = config['java_versions']
mc_versions = config['mc_versions']
create_dir('servers', base_dir=current_path)
for mc_version in mc_versions:
print('[' + mc_version['nms_version'] + '] Installing ' + mc_version['minecraft_version'])
directory = os.path.join(current_path, 'servers', mc_version['nms_version'])
create_dir(directory)
install_buildtools(directory)
print('[' + mc_version['nms_version'] + '] Compiling Spigot and CraftBukkit')
compile_spigot_craftbukkit(directory, mc_version, java_versions)
print('[' + mc_version['nms_version'] + '] Creating Server Files')
create_eula(directory)
create_server(directory, mc_version, java_versions)
print('[' + mc_version['nms_version'] + '] Installation Complete')
print('')
print('Installation Finished!')