Initial commit

This commit is contained in:
iVampireSP 2023-12-03 22:31:32 +08:00
commit 6f3032122a
10 changed files with 6412 additions and 0 deletions

3
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# 默认忽略的文件
/shelf/
/workspace.xml

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,12 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N802" />
</list>
</option>
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
.idea/misc.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/MinecraftJarDownload.iml" filepath="$PROJECT_DIR$/.idea/MinecraftJarDownload.iml" />
</modules>
</component>
</project>

1456
23w14a.json Normal file

File diff suppressed because it is too large Load Diff

64
download.py Normal file
View File

@ -0,0 +1,64 @@
import requests
import hashlib
import os
from concurrent.futures import ThreadPoolExecutor
folder = 'vanilla'
# source = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
source = 'https://download.mcbbs.net/mc/game/version_manifest.json'
# 先获取 Minecraft 的版本
versions = requests.get(source).json()
# 计算要下载多少
print('Total ' + str(len(versions['versions'])) + ' versions')
# 多线程异步下载
executor = ThreadPoolExecutor(max_workers=5)
# 倒序
versions['versions'].reverse()
# 下载所有版本的客户端 jar
for version in versions['versions']:
print('Downloading ' + version['id'])
# 检测文件哈希
version_id = folder + '/' + version['id']
version_data = requests.get(version['url']).json()
# 检测有没有 server
if 'server' not in version_data['downloads']:
print('Skip ' + version_id + ' (no server)')
continue
downloads = version_data['downloads']['server']
if os.path.exists(version_id + '.jar'):
with open(version_id + '.jar', 'rb') as f:
if hashlib.sha1(f.read()).hexdigest() == downloads['sha1']:
print('Skip ' + version_id)
continue
# get file size
# print(requests.head(downloads['url']).headers['Content-Length'])
file_size = int(requests.head(downloads['url']).headers['Content-Length'])
# print file size mb
print('File size: ' + str(file_size / 1024 / 1024) + ' MB')
# 多线程下载
# executor.submit(requests.get, downloads['url'], stream=True).add_done_callback(
# lambda future: open(version_id + '.jar', 'wb').write(future.result().content)
# )
# 单线程下载
with open(version_id + '.jar', 'wb') as f:
f.write(requests.get(downloads['url'], stream=True).content)
executor.shutdown()

62
forge.py Normal file
View File

@ -0,0 +1,62 @@
import json
import requests, os
folder = 'forge'
if not os.path.exists(folder):
os.mkdir(folder)
# 获取 Forge 版本
forge_versions = requests.get('https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json')\
.json()['promos']
new_versions = {}
# 遍历所有,如果文件名不包含 -recommended就跳过
for version in forge_versions:
# 如果不包含 -recommended就跳过
if '-recommended' not in version:
continue
# print(version)
# version 是 value
# version = forge_versions[version]
# 包含的话,就去除 -recommended
new_versions[version.replace('-recommended', '')] = forge_versions[version]
# pretty print
# 计算要下载多少
print('Total ' + str(len(new_versions)) + ' versions')
# 遍历所有版本
for version in new_versions:
# https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.3-44.1.0/forge-1.19.3-44.1.0-installer.jar
full_version = version + '-' + new_versions[version]
# 获取下载链接
url = 'https://maven.minecraftforge.net/net/minecraftforge/forge/' + full_version + '/forge-' + full_version + \
'-installer.jar'
head = requests.head(url)
if not head.ok:
print('Skip ' + version + ' (not found)')
continue
# print file size mb
print(str(int(head.headers['Content-Length']) / 1024 / 1024) + 'MB')
# 保存到文件
with open(folder + '/' + version + '.jar', 'wb') as f:
f.write(requests.get(url).content)
print('Downloaded ' + version)

4789
versions.json Normal file

File diff suppressed because it is too large Load Diff