首先我们需要先认识Minecraft的文件夹结构
如果你开启了 版本隔离 那么你的文件夹结构如下
.minecraft
|*assets # 游戏资源文件夹,存放纹理、声音等资源
|*libraries # 依赖库文件夹,存放运行游戏所需的各种库
|*versions # 版本文件夹,包含所有已安装的Minecraft版本
\1.16.5-optifine
|1.16.5-optifine.jar # 该版本的主程序jar文件
|*saves # 存档文件夹,仅该版本可见
|*resourcepacks # 资源包文件夹,仅该版本可见
|*logs # 日志文件夹,仅该版本可见
|*mods # 模组文件夹,仅该版本可见
|*config # 配置文件夹,仅该版本可见
|*crash-reports # 崩溃报告文件夹,仅该版本可见
...
如果你没有开启则是这样
.minecraft
|*assets # 游戏资源文件夹,存放纹理、声音等资源
|*libraries # 依赖库文件夹,存放运行游戏所需的各种库
|*saves # 存档文件夹,所有版本共用
|*resourcepacks # 资源包文件夹,所有版本共用
|*logs # 日志文件夹,所有版本共用
|*mods # 模组文件夹,所有版本共用
|*config # 配置文件夹,所有版本共用
|*crash-reports # 崩溃报告文件夹,所有版本共用
|*versions # 版本文件夹,包含所有已安装的Minecraft版本
\1.16.5-optifine
|1.16.5-optifine.jar # 该版本的主程序jar文件
...
我们极力推荐您打开版本隔离,因为这样能避免模组之间的一部分冲突 跳转
在遇到报错时,您可以通过以下两种方式进行初步分析:
使用社区分析工具
访问 CrashMC 报错分析器,将崩溃报告内容粘贴进去,工具会自动分析常见问题并给出建议。
借助 AI 辅助分析
可以将崩溃日志粘贴到 DeepSeek Chat,让 AI 帮助你解读报错内容和可能的解决方法。
进入 HMCL 汉医堂 可以在 HMCL 急诊群中向群友们寻求帮助,他们通常有丰富的经验,能够协助你分析报错并提供解决方案。
qq : 666546887
这三种方式都能帮助您快速定位问题,提高排查效率。
游戏崩的时候会有个窗口,里面可以导出一个压缩包,可以发给别人让别人帮你看,你千万别截图那个窗口 *磕头
在向他人求助时,建议将 .minecraft 文件夹下的 crash-reports 文件夹和 logs 文件夹中的相关文件(如最新的崩溃报告和日志文件)一并打包发送。
这样可以让对方更全面地了解你的运行环境和报错详情,从而更高效地帮助你分析和解决问题。请注意,发送前可先检查日志内容,避免泄露个人隐私信息。
阅读本文前,请先阅读此文章
阅读本文你需要具有以下知识储备:
linux 命令操作,比如 cd ls 等linux 服务器(好像不算知识)这里很基础(但是坑比较多)略过,可以看以下参考文档。
https://zhuanlan.zhihu.com/p/515069497
我为了省事直接在/根目录下新建了一个 MinecraftClientStatic 文件夹,以后需要作为静态资源的文件都丢这里面。
命令:
# 到更目录
cd /
# 新建文件夹
mkdir MinecraftClientStatic
# 防止nginx无法访问,配置文件夹访问权限
chmod 777 MinecraftClientStatic
# 进入文件夹
cd MinecraftClientStatic
# 新建一个测试用的文件
touch helloMC.html
# 给文件权限
chmod 777 helloMC.html
# 编辑html内容
vim helloMC.html
这里为了测试静态资源是否配置成功,需要新建一个 helloMC.html 的静态测试文件,可以在这个文件内随意写两行字。
例如:
<!-- helloMC.html -->
<h1>hello static!</h1>
也可以整点炫的(可选):
<!-- helloMC.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MC客户端静态资源</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<style>
@font-face{
font-family:'calligraffittiregular';
src:url("fonts/calligraffitti-regular-webfont.ttf")
}
* {
margin: 0;
padding: 0;
}
body {
overflow: hidden;
}
#content{
position: absolute;
color: white;
top: 30%;
left: 50%;
margin-left: -121px;
}
p{
font-family: calligraffittiregular
}
</style>
</head>
<body>
<div id="content">
<p style="font-size: 40px;font-weight: 1000;">MinecraftClientStatic</p>
</div>
<canvas id="hacker" style="width:100%;height:100%;">请使用最新的浏览器</canvas>
</body>
</html>
<script type="text/javascript">
window.onload = function() {
var color_array = ['#00FF00','#00FF99','#00FFCC','#00FFFF','#00BBFF','#0066FF','#0000FF','#5500FF','#7700FF','#9900FF','#CC00FF','#FF00FF'];
var i=0;
var color;
function changColor() {
color = color_array[i];
console.log(i++);
console.log(color);
if(i>color_array.length-1){
i=0;
}
setTimeout(changColor, 2000);
}
var hacker = document.getElementById("hacker");
var width = hacker.width = screen.width;
var height = hacker.height = screen.height;
var ctx = hacker.getContext('2d');
var num = Math.ceil(width / 12);
var y = Array(num).join(0).split('');
var draw = function() {
ctx.fillStyle = 'rgba(0,0,0,.05)';
ctx.fillRect(0, 0, width, height);
ctx.fillStyle = color;
ctx.font = '12px Microsoft YaHei';
y.map(function(y1,i){
var text = String.fromCharCode(65 + Math.random() * 62);
var x = i * 12;
var y1 = y[i];
ctx.fillText(text, x, y1);
y[i] = ( y1 > Math.random() * 10 * height ? 0 : parseInt(y[i]) + 12 );
})
}
Run();
function Run() {
changColor();
Game_Interval = setInterval(draw, 50);
}
}
</script>
如果你没有域名,那么这里可以跳过,后面需要域名的地方直接使用服务器ip地址
假设我们的域名是 buggzd.com
在域名解析新建一个 A 记录(地址为 ipv6 时应使用 AAAA 记录),此处以 minecraft.buggzd.com 为例,配置记录名称为 minecraft 配置记录地址为服务器地址,如下图所示。

这是我们就有了一个子域名 minecraft.buggzd.com 添加完成后可以使用 cmd 去 ping 一下这个域名minecraft.buggzd.com 如果返回了正确的ip地址就是已经分配成功了。
ping minecraft.buggzd.com
查找 nginx 配置文件目录:(如果这里没有 nginx 指令,那么说明你 nginx 安装没有成功)
nginx -t
输出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
这里 /etc/nginx/nginx.conf 就是 Nginx 配置文件的路径,然后 cd 到 nginx 配置目录。
cd /etc/nginx
# 编写配置文件
vim nginx.conf
因为之前配置过博客反向代理 nginx.conf 会带有之前的配置记录不要把他们搞乱,理清层级关系很重要!
# 这是 nginx.conf 的层级目录
# 每个 nginx.conf 配置文件都只有一个 http 块,所以如果之前配置过 nginx
# 就只需要粘贴 server 块里的内容,把 server 块放到 http 块内部。
http {
server { ... }
server { ... }
server { ... }
}
需要填写的配置:
http {
server {
# 需要监听的端口号,可以不动
listen 80;
# 这里需要把localhost改为上面分配好的域名
server_name minecraft.buggzd.com;
location / {
# root后面是对应的静态资源文件夹的位置
root /MinecraftClientStatic;
# 这里是默认加载的首页 html ,这里放的是刚刚新建的测试文件
# 它是从 root 目录文件夹内开始查找的,所以不要写 /MinecraftClientStatic/helloMC.html
index helloMC.html;
}
}
}
Q:上面的配置干了什么事?
A:比如你访问http://minecraft.buggzd.com/test.png时,nginx会访问本地的/MinecraftClientStatic/test.png然后返回。
当正确编写完 nginx.conf 需要让 nginx 重新加载一下配置文件。
nginx -s reload
然后直接访问刚刚配置的域名 minecraft.buggzd.com 默认会跳转到编写好的 helloMC.html 页面,你也可以访问 http://minecraft.buggzd.com/helloMC.html

当页面出现 helloMC.html 的内容时,说明已经配置成功了!
放张图片到静态资源文件夹试试。

访问成功,没问题!

选择服务器自动更新整合包

整合包下载链接前缀:填静态资源服务器的地址。
我们需要先去静态资源文件夹下新建一个 modepack 文件夹(也就是 /MinecraftClientStatic/modepack)
cd /MinecraftClientStatic
mkdir modepack
然后整合包下载链接前缀这里填写 http://minecraft.buggzd.com/modepack

假设我们刚刚打包的整合包名称为 client1.0.zip
我们把 client1.0.zip 通过 ftp 上传到服务器中,然后使用解压命令将这个整合包解压到 /MinecraftClientStatic/modepack 文件夹中。
# 假设我们把client1.0.zip上传到了/home/ftp文件夹中
# 把 /home/ftp/client1.0.zip 解压到 /minecraftClientStatic/modepack
unzip /home/ftp/client1.0.zip -d /minecraftClientStatic/modepack
解压完以后我们查看一下
ls /minecraftClientStatic/modepack
服务器返回:
overrides server-manifest.json
其中 overrides 是一个文件夹 server-manifest.json 是整合包配置文件。
第一次使用客户端需要在一个空文件夹以 newClientPackage 为例,在文件夹中放一个 hmcl 启动器,打开 hmcl 导入刚刚做好的 client1.0.zip 整合包。
然后就可以把这个文件夹 newClientPackage 打包成一个 zip 发给玩家了,以后玩家每次打开 hmcl 登录时,启动器就会自动向静态资源服务器中查询整合包配置信息,当发现更新时会自动下载。
当缺少 mod 时会自动下载静态资源服务器上的 mod

目前HMCL版本更新的步骤是这样的:
mod 和服务器的 mod 名称,如发现本地不存在的 mod 则会从服务器上下载。mod 的名称相同时,启动器会继续对比文件 MD5 哈希值,如果不匹配则重新下载。mod 是不会被删除的。当想要添加新的 mod 时需要在添加之后重新导出整合包如 client2.0.zip 导出的整合包版本号增加,然后重新上传整合包到静态资源服务器。
cd /minecraftClientStatic
# 建议直接删除该目录然后重新新建
rm modepack -R
# 重新新建modepack文件夹
mkdir modepack
# 解压新的客户端整合包
unzip /home/ftp/client2.0.zip -d /minecraftClientStatic/modepack
玩家启动 hmcl 后,启动器会检测到版本更新并自动更新模组。
想必有些服务器主为此头疼了许久。由于玩家的电脑环境多变,甚至可能仍然有安装着 Java 7 的电脑而无法启动 1.12.2 以上的游戏或者含有 Mod 的客户端。因此服务器主希望能在整合包中自带一个 Java 运行时(或者叫 JRE),从而取代电脑自带的 JVM。接下来本文将介绍两种方法。
JRE Java Runtime Environment的缩写。通常可以认为是玩家所使用的 Java
下文所指代的 Java 和 JRE 均可以认为是此版本。EXE 版本在 Windows 系统下打开会首先检查同级文件夹下的 jre-arm64、jre-x64 和 jre-x86 文件夹。
检查顺序从上到下依次是:
jre-arm64 (ARM 64 位)jre-x64 (x86 64 位)jre-x86 (x86 32 位)启动优先级如下:
jre-x86 启动 HMCL。jre-x64 启动 HMCL。jre-arm64 启动 HMCL。如果你不打算兼容ARM 64位和x86 32位操作系统的玩家(让 HMCL 使用系统 JRE 环境),那么你的整合包内只需要携带 jre-x64 即可。
如果你想在任何情况下使用同一个 Java 启动 HMCL,只需要携带 jre-x86 即可,此时无论玩家电脑的操作系统是什么架构都会尝试使用该 Java。
如果没有对应的版本,将会尝试使用系统自带的版本启动。
注意:
使用 x86 32位的 Java 很可能会导致游戏出错、内存不够等问题。我们推荐您配备 x86 64位的 Java 而不是 x86 32位。
SH 版本在支持 Bash 的系统下打开会首先检查同级文件夹下的 jre-loongarch64、jre-arm32、jre-arm64、jre-x64 和 jre-x86 文件夹。
检查顺序从上到下依次是:
jre-x64 (x86 64 位)jre-x86 (x86 32 位)jre-arm64 (ARM 64 位)jre-arm32 (ARM 32 位)jre-loongarch64 (Loongarch 64 位)会根据玩家电脑的操作系统架构选择对应文件夹内的 Java 运行时启动 HMCL。
如果你想在x86 32位和x86 64位下使用同一个 Java 启动 HMCL,只需要携带 jre-x86 即可,此时如果玩家电脑的操作系统是x86 32位和x86 64位则会尝试使用该 Java 启动 HMCL。
如果没有对应的版本,将会尝试使用系统自带的版本启动。
注意:
在启动器内更新升级本体时,只会更新本体部分,并不会将 EXE外壳 或 SH 外壳(即 HMCLauncher)更新,因此建议在制作整合包时重新下载 EXE 或 SH 版本以确保能正常使用该功能。
对于在 Windows 下使用 JAR 版本启动 HMCL 的可以采用方法二。
首先我们假设整合包根文件夹是 tutorial(这个文件夹名字可以取别的),该文件夹内应该包含如下的文件:

其中,.minecraft 是 Minecraft 文件夹,jre-x64 是你的 Java 运行时,我们分别来看看这两个文件夹的内容:

上图是 .minecraft 文件夹的内容,里面包含着 assets、libraries、versions 等传统的文件夹。以及 HMCL.jar,这个文件是 HMCL 启动器的 jar 文件,可以在 https://hmcl.huangyuhui.net/download 里面下载 macOS 或者 Linux 版本(这两个版本的文件后缀名都是 jar,实际上是完全一样的东西,也可以在 Windows 系统上双击运行,没有平台限制)。
这个启动器文件我们接下来会使用到,借助整合包自带的 Java 运行时启动 HMCL。
注意:HMCL 本体文件 HMCL.jar 请务必保持该文件名,HMCL-3.2.117.jar 等带有版本号的文件名是不可以的

上图是 jre-x64 文件夹的内容,一看就是一个 JRE 的文件夹。
接下来我们创建一个快捷方式来使得 HMCL 通过 jre-x64 文件夹里的 Java 运行时启动,并使得 Minecraft 也通过该 Java 运行时启动。

在 tutorial 文件夹内右击空白区域打开快捷菜单,创建快捷方式。

在弹出的窗口中(如上图所示),在输入框内输入:cmd /c start .\jre-x64\bin\javaw.exe -jar .\.minecraft\HMCL.jar,其中 jre-x64 和 .minecraft\HMCL.jar 根据实际情况修改,jre-x64 是你的 Java 运行时的路径,.minecraft\HMCL.jar 是 HMCL 本体文件。

接着给快捷方式取个名字就好了(如上图所示,开始游戏 是我取的名字)。
生成好快捷方式后我们还要编辑一下属性,右键 开始游戏 这个新创建的快捷方式(如果你取了别的名字请选中那个文件编辑其属性),在弹出的快捷菜单中选择属性,会打开快捷方式的属性窗口如下图所示:

将起始位置内的文字删除干净,留空即可。保存退出该窗口。
现在这个开始游戏的快捷方式就可以直接使用的,你可以双击该快捷方式打开 HMCL,HMCL 在启动游戏的时候也会直接使用你指定的 Java 运行时。
1Q:这些 Java 文件夹中具体该放些什么,直接复制就行了吗?
1A:是的,复制 jre 内的所有东西就行,可以根据下图参考:

——————————————————————————————————————————————————
2Q:去哪里找 Java?
2A:有很多的Java提供选择,如 Liberica JDK 、Microsoft JDK、Oracle JDK、中文 Java 镜像站 和 Oracle openJDK 等
只需要在下载时下载.zip 压缩包文件,且将压缩包内的所有内容放入对应文件夹即可
]]>文章原作者:hy黑影
转载:Zkitfly
部分内容进行了稍作打磨
本教程转载自 https://www.mcbbs.net/thread-1103864-1-1.html
以腾讯云举例,阿里云同理
打开控制台面板,找到刚才租的学生机

选择重置密码

点击右侧登入按钮,按照说明填写你刚刚重置的密码;之后应该会看到类似这样的提示

不要慌,冷静。如果下面的部分教程失效请去宝塔面板官网,点击Linux->立即安装

回到控制台面板,我们需要开放一些通道让面板通过,选择安全组

点击修改规则,再点击添加规则
图1:

图2:

按照图中所写添加,想要安全的话按照图1,懒的话按照图2
回到那个黑黑的界面里输入 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ,按下回车
这时会刷一大片大的英文,等他停下来的时候仔细看,最后一行在问你要不要安装(就是最后显示y/n),输入y并按下回车
耐心等待五分钟左右,直到出现这个字样

复制外网面板地址,在打开的页面中,用户名输入username后面的内容,密码输入password后面的内容
点击登入,到此为止面板按照完成
打开刚刚的宝塔面板,一般都会有提示安装套件,选择nginx套装安装
等待安装完成后,选择网站,点击添加网站

在弹出的页面填写网站IP,就是地址栏里面的那个;比如:我的是 https://233.88.233.44:8888/site ,那么我就填233.88.233.44
另外,租vps的同学请找服务商索要ip地址和开放的端口,比如我要到的是123.21.123.21:6666,那我就把这个填上去

其他保持不变,到此为止你已经搭建好了HTTP静态文件服务器✔
使用HMCL打开你的MC客户端
选择你的游戏版本,点击导出整合包

选择服务器自动更新整合包
填写相关信息:

整合包下载链接前缀:比如我刚刚在【第三步-搭建HTTP静态文件服务器】宝塔里填的是233.88.233.44,我希望能有版本区分,这个版本代号是a;那么我就填https://233.88.233.44/a, vps注意,端口号也要写▲
版本号写1.0 ,以后更新就写2.0以此类推
点击下一步,导出完成
打开宝塔面板,选择文件,找到相应的目录,在相应IP目录下新建文件夹;比如我刚刚写的版本代号是a,那我就新建a这个文件夹

在新建的文件夹里上传刚刚导出的整合包,并解压;成功后如下图

要是更新整合包,请在解压时将该【a】这个文件夹内的文件覆盖处理
HMCL 需要服务器管理员额外提供一个 HTTP 服务器(只需要能提供静态文件服务,比如 Apache 和 Nginx 皆可)来提供检查整合包更新并允许 HMCL 下载更新文件。
在 HMCL 中右键做好的客户端版本,选择导出整合包:

选择导出为服务器自动更新整合包:

填写整合包信息,整合包下载链接前缀如何填写请看下文

选择需要包含在整合包内的文件后将产生整合包压缩文件
接着创建一个全新的空文件夹,将启动器复制进去

运行启动器,并导入刚才导出的整合包,导入完成后,这个文件夹(这里叫“新整合包”)可以打包发给玩家。
你可以借助 Apache、Nginx 等支持静态文件的 HTTP 服务器软件提供文件。首先,决定好整合包下载链接前缀,比如我希望 HMCL 从远程服务器的 http://www.site.com/modpack 目录下存放整合包的更新信息,则在之前导出整合包的整合包下载前缀中填写 http://www.site.com/modpack。

上图为导出的服务器自动更新整合包压缩文件的内容,你需要将这个整合包解压到 http://www.site.com/modpack 下。也就是说,从 http://www.site.com/modpack/server-manifest.json 这个链接下载下来的文件必须和上图中整合包压缩文件中的 server-manifest.json 文件一致,并且,http://www.site.com/modpack/overrides 是一个文件夹,里面存放了整合包文件,比如:

整合包压缩文件 test.zip/overrides/mods/Advancement_Book-1.12-1.0.3.jar 文件必须可以从 http://www.site.com/modpack/overrides/mods/Advancement_Book-1.12-1.0.3.jar 该目录下载下来,且文件内容一致。那么至此更新服务器就部署完成了。
如果你需要更新整合包,那么将新的整合包经过第一步导出新的整合包压缩文件,并解压到类似 http://www.site.com/modpack 文件夹下即可完成新整合包的部署。
]]>