我的世界网页版搭建

  • 本教程基于开源项目eaglercraft

说明

  • 网页版mc作者是lax1dude,官方网站是eaglercraft,大家可以去多多支持作者
  • 我不是作者,我只是总结了一下服务器搭建的流程
  • 下文链接随时可能失效,文件最好自己保存一下
  • 本文适合有一点linux基础的使用,有些简单步骤我会跳过
  • 也可以直接使用docker部署,省略一大堆步骤
  • 只试用chrome系的浏览器,不适合firefox
  • 网页版mc支持设置材质包和服务器插件,但是不支持直接添加jar的mod(你可以自己写或者自己转换)

离线版本

前置准备

  • 一台linux服务器,带有java(这个执行下载安装,版本一般选最新的),以及tmux(方便分屏)
  • windows也可以,流程和下面类似
  • 演示版本为openjdk version "17.0.10"

1.8.8 版本

目前网页mc最新版本,支持中文推荐

  1. 打开下载链接eaglerX-1.8-server.zip - 蓝奏云 ,下载压缩包文件
  2. 解压unzip这个文件,应该得到下面的内容
    • 其中server文件夹是mc服务器文件夹(应该是用的paper服务端)
    • web文件夹是前端加载的网页文件夹
    • bungee是代理文件夹,里面有eaglerX的插件
# tree -L 1
.
├── base.repl
├── bindmod.so
├── buildconf.json
├── buildconf_template.json
├── bungee
├── cuberite.sh
├── eula.txt
├── gitpod-fixes.sh
├── LicensePrompt.jar
├── main.sh
├── misc
├── PlaceHTTPer.class
├── README.md
├── replit.nix
├── reset.txt
├── selsrv.sh
├── server
└── web
  1. 运行tmux并进行分屏操作(自己想办法)
  2. 进入bungee 文件夹,运行java -Xmx1024M -Xms1024M -jar ./bungee.jar(这个命令含义自己查),这个可以保存为run.sh运行.出现下面表示成功
[INFO]: Enabled plugin EaglercraftXBungee version 1.0.9 by lax1dude
[INFO]: Listening on /127.0.0.1:25577
  1. 再进入server文件夹(注意一定是先bungee再server,运行java -Xmx1024M -Xms1024M -jar ./server.jar(这个可以保存为run.sh运行),会得到下面的问题
    • 此时编辑./eula.txt文件,将false改为true,再次运行上面的命令,等待一会(等屏幕不滚动了)
[WARN]: Failed to load eula.txt
[22:19:07 INFO]: You need to agree to the EULA in order to run the server.Go to eula.txt for more info.
[INFO]: Stopping server
  1. 等到出现下面表示server运行成功
[INFO]: Timings Reset
>
  1. 配置nginx代理前端静态资源文件(这个自己想办法配,不会用离线文件访问也可以)
  2. 访问浏览器代理好的端口,或者直接浏览器打开本地的离线html文件
  3. 等到出现press any key to continue的时候随便按一下,设置自己的名字和皮肤
  4. 按顺序点击 Multiplayer -> Direct Connect -> Connect to Server,然后输入服务器ip加上:8081(例如127.0.0.1:8081),注意:这里需要保证服务器的8081端口是开放到公网的,这个自己查怎么开放,点击Join Server
  5. 加入成功后发现无法移动,是因为必须先注册密码,按/register <你的密码>,这个验证如果完全不想开启,直接删了server文件夹下的plugins目录就可以了(最好在地5步直接删)
  6. 接下来就可以游玩mc了

1.5.2版本

安装容易,但是版本老旧,不推荐

  1. 打开下载链接stable-download.zip - 蓝奏云
  2. 和1.8.8 版本基本类似java/bungee_command对应1.8的bungee,java/bungee_command对应server文件夹
  3. chmod给文件夹中的run_unix.sh添加运行权限,然后按顺序执行就可以了(和1.8.8的很类似,省略)
  4. 注意1.5.2最后的端口是25565,而不是8081, 1.5.2经常出现卡在login in的情况,这种只能等待一会(几分钟估计),再次刷新就可以进去了

Docker部署

  1. 安装docker自己想办法
  2. 运行下面的 shell 端口可以自行更改
  3. 目录结构和构建脚本参考文章最下面的gitee链接
docker run -d -v ./mc/world/:/eaglerX-1.8-server/server/world/ -v ./mc/world_nether/:/eaglerX-1.8-server/server/world_nether/ -v ./mc/world_the_end/:/eaglerX-1.8-server/server/world_the_end/ -p 5200:5200 -p 5201:5201 registry.cn-hangzhou.aliyuncs.com/chenxuan/eaglerx1.8server:1.8.1

游戏注意点

  1. 不要直接设置op权限给用户,发现这似乎会导致其他非op用户无法打开工作台
  2. 1.5.2迁移到1.8.8时候直接拷贝所有的world*文件夹会出问题,需要删除world/players目录才行(这个是用户的数据文件)
  3. 1.8.8 可以设置语言为中文,1.5.2不可以
  4. 你可以在server的控制台进行一些admin命令输入

QA

如何停止服务器

  • 在server和bungee控制台分别运行stopend就可以了

如何避免手动输入ip端口

  • 1.8.8版本离线html文件
    • 编辑html文件,找到window.eaglercraftXOptsHints部分,更改为
window.eaglercraftXOptsHints = { 
    hintsVersion: 1,
    container: "game_frame",
    worldsDB: "worlds",
    relays: [
        { addr: "wss://relay.deev.is/", comment: "lax1dude relay #1", primary: relayId === 0 },
        { addr: "wss://relay.lax1dude.net/", comment: "lax1dude relay #2", primary: relayId === 1 },
        { addr: "wss://relay.shhnowisnottheti.me/", comment: "ayunami relay #1", primary: relayId === 2 } 
    ],
    checkRelaysForUpdates: true,                                                                                                                                        
    servers: [
        { addr: "<ip>:<port>", name: "自己取个名字" }
    ]
};
  • 1.8.8版本web版本
    • 编辑web/eaglercraft_opts.js文件,更改为
window.eaglercraftXOpts = () => ({
    lang: "en_US",
  // joinServer: "ws" + window.location.href.slice(4),
  // assetsURI: "custom.epk",
    servers: [
        { addr: "<ip>:<port>", name: "自己取个名字" }
    ]
});
  • 1.5.5版本和上面类似,只是更改的指标是window.eaglercraftOpts

如何禁止服务器更新

  • 设置 ea插件中的 update.sh 文件,更改为
block_all_client_updates: true
discard_login_packet_certs: false
cert_packet_data_rate_limit: 524288
enable_eagcert_folder: false
download_latest_certs: false
download_certs_from:
- 'https://eaglercraft.com/backup.cert'
- 'https://deev.is/eagler/backup.cert'
check_for_update_every: 900000

如何更改端口

  • 更改bungee/plugins/EaglercraftXBungee/listeners.yml里面的address的端口

如何备份世界或者创建时候用旧的世界

  • 首先server里面的 world开头文件夹(一般三个,主体,末地和下界)就是世界的信息,拷贝就可以了
  • 如果是创建时候,运行server的run.sh之前放进去就可以了
  • 如果是docker部署的话,使用 -v 挂载到相应位置

如何设置白名单,避免其他用户登录

如何设置默认用户名

  • 如果是离线版本的编辑 html文件,在第一个script里面使用 localStorage["_eaglercraftX.p"]="";,添加,其中value的值需要自己输入一次之后通过浏览器localstorage查询,方法为 f12 -> Application -> LocalStorage

如何操作服务器

  • docker 的话进入容器之后通过 tmux attach 进入服务器控制台, c-b d 退出连接

参考

联系