diff --git a/README.md b/README.md index 13569d3..5b58a91 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ -mc-server-util 是一个集合多种服务器管理工具的项目,支持 windows/linux 并提供可被调用的接口。 +minecraft-server-installer 是一个自动化服务端安装工具。 -## 功能介绍 +## 前置需求 -请参考文档:https://actiniumcraft.github.io/mc-server-utils/#/README +本脚本基于 Python3 开发。 -## 参与贡献 +目前暂不支持自动修改配置文件,安装完后需手动按需求修改. -如果您有意参与贡献,可以通过这篇文档开始:https://actiniumcraft.github.io/mc-server-utils/#/contribute \ No newline at end of file +## 下载方法 + +访问 [Release](https://github.com/ActiniumCraft/minecraft-server-installer/releases) 页面下载初始化安装脚本。 diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/docs/_sidebar.md b/docs/_sidebar.md deleted file mode 100644 index 865ea39..0000000 --- a/docs/_sidebar.md +++ /dev/null @@ -1,9 +0,0 @@ - - -- 快速开始 - - [项目介绍](intro.md) - - [参与贡献](contributing.md) - - [行为准则](code-of-conduct.md) - -- 服务器工具包 - - [服务端安装脚本](server-installer.md) diff --git a/docs/code-of-conduct.md b/docs/code-of-conduct.md deleted file mode 100644 index 7ad16a2..0000000 --- a/docs/code-of-conduct.md +++ /dev/null @@ -1,50 +0,0 @@ -## 我们的承诺 - -为建设开放友好的环境,我们贡献者和维护者承诺:不论年龄、体型、身体健全与否、民族、性征、性别认同与表征、经验水平、教育程度、社会地位、国籍、相貌、种族、信仰、性取向,我们项目和社区的参与者皆免于骚扰。 - -## 我们的准则 - -有助于创造积极环境的行为包括但不限于: - -* 措辞友好且包容 -* 尊重不同的观点和经验 -* 耐心接受有益批评 -* 关注对社区最有利的事情 -* 与社区其他成员友善相处 - -参与者不应采取的行为包括但不限于: - -* 发布与性有关的言论或图像、不受欢迎地献殷勤 -* 捣乱/煽动/造谣行为、侮辱/贬损的评论、人身及政治攻击 -* 公开或私下骚扰 -* 未经明确授权便发布他人的资料,如住址、电子邮箱等 -* 其他有理由认定为违反职业操守的不当行为 - -## 我们的义务 - -项目维护者有义务诠释何谓“妥当行为”,并妥善公正地纠正已发生的不当行为。 - -项目维护者有权利和义务去删除、编辑、拒绝违背本行为标准的评论(comments)、提交(commits)、代码、wiki 编辑、问题(issues)等贡献;项目维护者可暂时或永久地封禁任何他们认为行为不当、威胁、冒犯、有害的参与者。 - -## 适用范围 - -本行为标准适用于本项目。当有人代表本项目或本社区时,本标准亦适用于此人所处的公共平台。 - -代表本项目或本社区的情形包括但不限于:使用项目的官方电子邮件、通过官方媒体账号发布消息、作为指定代表参与在线或线下活动等。 - -代表本项目的行为可由项目维护者进一步定义及解释。 - -## 贯彻落实 - -可以致信[2404919628@qq.com],向项目团队举报滥用、骚扰及不当行为。 - -维护团队将审议并调查全部投诉,妥善地予以必要的回应。项目团队有义务保密举报者信息。具体执行方针或将另行发布。 - -未切实遵守或执行本行为标准的项目维护人员,经项目负责人或其他成员决议,可能被暂时或永久地剥夺参与本项目的资格。 - -## 来源 - -本行为标准改编自[参与者公约][主页],版本 1.4 -可在此查阅:https://www.contributor-covenant.org/zh-cn/version/1/4/code-of-conduct.html - -[主页]: https://www.contributor-covenant.org \ No newline at end of file diff --git a/docs/contributing.md b/docs/contributing.md deleted file mode 100644 index e3e6e66..0000000 --- a/docs/contributing.md +++ /dev/null @@ -1,16 +0,0 @@ -如果您有兴趣为这个项目做贡献,那么这将会是最好的起点。 另外,请注意,该项目是开源的,并根据 [GNU General Public License v3.0](https://github.com/ActiniumCraft/mc-server-utils/blob/main/LICENSE) 获得许可。 - -## 项目结构 - -该项目主要由托管在 GitHub 上的一个储存库组成。大部分工具使用 Python3 编写。 - -了解 Python:https://www.python.org/about/ - -## 获得代码 - -我们推荐使用 Git 来管理 Fork,要克隆主储存库,仅需在终端运行: - -```bash & sh -git clone https://github.com/ActiniumCraft/mc-server-utils.git -``` - diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index c4a8c93..0000000 --- a/docs/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - MC 服务端工具包 - - - - - - -
请稍等。。。
- - - - - - \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md deleted file mode 100644 index 3f364bb..0000000 --- a/docs/intro.md +++ /dev/null @@ -1 +0,0 @@ -欢迎使用 mc-server-utils 的官方文档。该项目专注于制作对 Windows 以及 Linux 平台兼容的 MC 服务器管理工具。在这里,你可以找到有关工具的介绍,使用说明,接口的用法,以及其他的一些有用的信息。 \ No newline at end of file diff --git a/docs/server-installer.md b/docs/server-installer.md deleted file mode 100644 index 600cbf1..0000000 --- a/docs/server-installer.md +++ /dev/null @@ -1,23 +0,0 @@ -## 前置需求 - -Windows 和 Linux 需要 Python3 支持 - -目前暂不支持自动修改配置文件,安装完后需手动按需求修改 - -## 安装方法 - -**Windows 系统** - -```bash -wget https://github.com/ActiniumCraft/mc-server-utils/raw/main/server-installer/windows_install.py -``` - -或在 GitHub 上直接下载源码,完成后双击运行即可 - -**Ubuntu & Centos 系统** - -```sh -wget https://github.com/ActiniumCraft/mc-server-utils/raw/main/server-installer/ubuntu_install.py -``` - -之后输入 `python3 ubuntu_install.py` 运行即可 diff --git a/server-installer/windows_install.py b/minecraft_server_installer.py similarity index 77% rename from server-installer/windows_install.py rename to minecraft_server_installer.py index 02c2107..6005d18 100644 --- a/server-installer/windows_install.py +++ b/minecraft_server_installer.py @@ -1,18 +1,13 @@ -# -*- coding: utf-8 -*- -import os import abc +import os +import platform -try: - import wget - print('已检测到 wget 模块 ok') - import requests - print('已检测到 requests 模块 ok') -except ImportError: - print('检测到依赖库缺失,现在开始安装......') - os.system('pip install wget') - os.system('pip install requests') - import wget - import requests +import requests +import wget + +PLATFORM = platform.system() +PYTHON_COMMAND = 'python' if PLATFORM == 'Windows' else 'python3' +PIP_COMMAND = 'pip' if PLATFORM == 'Windows' else 'pip3' class ServerInstaller(object): @@ -24,16 +19,6 @@ class ServerInstaller(object): def install(self): """Install new server. - Returns: None. - - """ - pass - - def check(self): - """Check server install status. - - Returns: The return value. Boolean, True or False. - """ pass @@ -42,6 +27,7 @@ class Vanilla(ServerInstaller): """Vanilla factory. """ + def __init__(self): self.version_manifest = {} self.version_json = {} @@ -67,8 +53,8 @@ def install(self, version='latest'): with open('vanilla_start.bat', 'w', encoding='utf-8') as f: f.write('java -Xms1024M -Xmx2048M -jar server.jar nogui') - def check(self): - return os.path.exists('vanilla_start.bat') + with open('vanilla_start.sh', 'w', encoding='utf-8') as f: + f.write('java -Xms1024M -Xmx2048M -jar server.jar nogui') class Fabric(ServerInstaller): @@ -89,8 +75,8 @@ def install(self, version='latest'): with open('fabric_start.bat', 'w', encoding='utf-8') as f: f.write('java -Xms1024M -Xmx2048M -jar fabric-server-launch.jar nogui') - def check(self): - return os.path.exists('fabric_start.bat') + with open('fabric_start.sh', 'w', encoding='utf-8') as f: + f.write('java -Xms1024M -Xmx2048M -jar fabric-server-launch.jar nogui') class MCDR(ServerInstaller): @@ -99,14 +85,11 @@ class MCDR(ServerInstaller): """ def install(self): - os.system('pip install mcdreforged') - os.system('python -m mcdreforged') + os.system('{} install mcdreforged'.format(PIP_COMMAND)) + os.system('{} -m mcdreforged'.format(PYTHON_COMMAND)) with open('MCDR_start.bat', 'w', encoding='utf-8') as f: - f.write('python -m mcdreforged') - - def check(self): - return os.path.exists('MCDR_start.bat') + f.write('{} -m mcdreforged'.format(PYTHON_COMMAND)) def replace_file_line(file, old_line, new_line): @@ -122,18 +105,18 @@ def replace_file_line(file, old_line, new_line): """ file_data = '' - with open(file, 'r', encoding='utf-8') as f: # 读取文件并获得替换文本 + with open(file, 'r', encoding='utf-8') as f: for line in f: if old_line in line: line = line.replace(old_line, new_line) file_data = file_data + line - with open(file, 'w', encoding='utf-8') as f: # 写入替换文本至文件 + with open(file, 'w', encoding='utf-8') as f: f.write(file_data) if __name__ == '__main__': - os.system('python -m pip install --upgrade pip') + os.system('{} -m {} install --upgrade {}'.format(PYTHON_COMMAND, PIP_COMMAND, PIP_COMMAND)) print('是否选择安装 MCDR [y/N]') select_mcdr = str(input('输入: ') or 'n').lower() @@ -141,6 +124,7 @@ def replace_file_line(file, old_line, new_line): if select_mcdr not in {'y', 'yes', 'n', 'no'}: raise Exception('请选择 y 或 n') if select_mcdr in {'y', 'yes'}: + print('安装正在进行中,请稍等。。。') MCDR().install() os.chdir('./server/') @@ -151,8 +135,10 @@ def replace_file_line(file, old_line, new_line): select_version = str(input('输入: ') or 'latest').lower() if select_core in {'vanilla', 'v'}: + print('安装正在进行中,请稍等。。。') Vanilla().install(version=select_version) elif select_core in {'fabric', 'f'}: + print('安装正在进行中,请稍等。。。') Fabric().install(version=select_version) else: raise Exception('错误的内核') diff --git a/server-installer/ubuntu_install.py b/server-installer/ubuntu_install.py deleted file mode 100644 index 071c604..0000000 --- a/server-installer/ubuntu_install.py +++ /dev/null @@ -1,160 +0,0 @@ -# -*- coding: utf-8 -*- -import os -import abc - -try: - import wget - print('已检测到 wget 模块 ok') - import requests - print('已检测到 requests 模块 ok') -except ImportError: - print('检测到依赖库缺失,现在开始安装......') - os.system('pip install wget') - os.system('pip install requests') - import wget - import requests - - -class ServerInstaller(object): - """Server factory. - - """ - @abc.abstractmethod - def install(self): - """Install new server. - - Returns: None. - - """ - pass - - def check(self): - """Check server install status. - - Returns: The return value. Boolean, True or False. - - """ - pass - - -class Vanilla(ServerInstaller): - """Vanilla factory. - - """ - def __init__(self): - self.version_manifest = {} - self.version_json = {} - self.download_link = '' - - def install(self, version='latest'): - # 获得 version_manifest,对其遍历查找 version 对应的 version_json,并在 version_json 获取下载链接。 - self.version_manifest = requests.get('https://launchermeta.mojang.com/mc/game/version_manifest.json').json() - if version == 'latest': - version = self.version_manifest['latest']['release'] - for self_item in self.version_manifest['versions']: - if not self_item['id'] == version: - continue - self.version_json = requests.get(self_item['url']).json() - if self.version_json == {}: - raise Exception('错误的版本号') - self.download_link = self.version_json['downloads']['server']['url'] - - wget.download(url=self.download_link, out='server.jar') - os.system('java -Xms1024M -Xmx2048M -jar server.jar nogui') - replace_file_line('eula.txt', 'eula=false', 'eula=true') - - with open('vanilla_start.sh', 'w', encoding='utf-8') as f: - f.write('java -Xms1024M -Xmx2048M -jar server.jar nogui') - - os.system('chmod a+x vanilla_start.sh') - - def check(self): - return os.path.exists('vanilla_start.sh') - - -class Fabric(ServerInstaller): - """Fabric factory. - - """ - def install(self, version='latest'): - wget.download(url='https://maven.fabricmc.net/net/fabricmc/fabric-installer/0.7.3/fabric-installer-0.7.3.jar', - out='fabric-installer-0.7.3.jar') - if version == 'latest': - os.system('java -jar fabric-installer-0.7.3.jar server -downloadMinecraft') - else: - os.system('java -jar fabric-installer-0.7.3.jar server -downloadMinecraft -mcversion {}'.format(version)) - replace_file_line('eula.txt', 'eula=false', 'eula=true') - - with open('fabric_start.sh', 'w', encoding='utf-8') as f: - f.write('java -Xms1024M -Xmx2048M -jar fabric-server-launch.jar nogui') - - os.system('chmod a+x fabric_start.sh') - - def check(self): - return os.path.exists('fabric_start.sh') - - -class MCDR(ServerInstaller): - """MCDR factory - - """ - def install(self): - os.system('pip3 install mcdreforged') - os.system('python3 -m mcdreforged') - - with open('MCDR_start.sh', 'w', encoding='utf-8') as f: - f.write('python3 -m mcdreforged') - - os.system('chmod a+x MCDR_start.sh') - - def check(self): - return os.path.exists('MCDR_start.sh') - - -def replace_file_line(file, old_line, new_line): - """Replacing file line. - - Args: - file: File to replace. - old_line: Old data string. - new_line: New data string. - - Returns: None. - - """ - file_data = '' - - with open(file, 'r', encoding='utf-8') as f: # 读取文件并获得替换文本 - for line in f: - if old_line in line: - line = line.replace(old_line, new_line) - file_data = file_data + line - - with open(file, 'w', encoding='utf-8') as f: # 写入替换文本至文件 - f.write(file_data) - - -if __name__ == '__main__': - os.system('python3 -m pip3 install --upgrade pip3') - - print('是否选择安装 MCDR [y/N]') - select_mcdr = str(input('输入: ') or 'n').lower() - - if select_mcdr not in {'y', 'yes', 'n', 'no'}: - raise Exception('请选择 y 或 n') - if select_mcdr in {'y', 'yes'}: - MCDR().install() - os.chdir('./server/') - - print('选择服务器内核 [*Vanilla, Fabric]') - select_core = str(input('输入: ') or 'vanilla').lower() - - print('请选择服务器版本 [*Latest/自定义版本号]') - select_version = str(input('输入: ') or 'latest').lower() - - if select_core in {'vanilla', 'v'}: - Vanilla().install(version=select_version) - elif select_core in {'fabric', 'f'}: - Fabric().install(version=select_version) - else: - raise Exception('错误的内核')