V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Useful Links
Minecraft Wiki
合成配方
codehz
V2EX  ›  Minecraft

[PE]用 MCMrARM 的 mcpelauncher 实现在 VPS 上运行全特性支持的基岩版服务器!

  •  1
     
  •   codehz · 2018-01-16 14:44:24 +08:00 · 8813 次点击
    这是一个创建于 2532 天前的主题,其中的信息可能已经有所发展或是发生改变。
    (不公开我自己架设的 demo 服务器,免得被打(

    众所周知基岩版官方没有提供的公开的独立服务端。

    然后第三方服务端主要有 PocketMine 和 Nukkit
    他们都比较弱鸡
    特别是对于生物,以及一些红石的支持
    (当然优点在于有各种辅助插件)

    当然自从 Better together 更新之后,客户端均提供了向 xbox 公开的功能,但是这种服务器需要机主在线才能玩(以及 3 个 py 服务器,日常延迟上千的那种
    ( Realms 当然也是一个选项,国内连接延迟还过得去,但是不方便自定义,以及,人数上限
    (不提中国版:P

    MCMrARM 的 mcpelauncher-linux 原本是为了解决在 linux 端运行 mcpe 的问题,但是也同时提供了一个可以在 headless 服务器上单独运行服务端的功能: https://github.com/MCMrARM/mcpelauncher-linux

    我对这个项目的构建文件( CMakeLists.txt )稍微做了一些修改,于是现在它可以直接在 VPS 上编译了: https://github.com/codehz/mcpe-server (本来可以是单文件的,但是由于项目使用了 dlsym 来获取相关函数地址,所以没办法完全静态链接

    事实上我使用了 docker hub 作为自动构建的平台。镜像链接: https://hub.docker.com/r/codehz/mcpe-server/

    镜像使用方法可以参考我这个仓库: https://github.com/codehz/mcpe-demo
    先 clone,然后将 Android x86 架构的 minecraft apk 改名 game.zip ,用这个 dockerfile 即可启动(或者你愿意的话也可以直接把 docker 镜像里的文件提取出来(
    第 1 条附言  ·  2018-01-17 13:46:50 +08:00
    现已支持 1.2.9
    同时放出简要部署指南:
    典型用法:
    docker run --rm -ti -v 某个目录:/root/app -p 19132:19132/udp codehz/mcpe-demo
    第一次运行后( Ctrl+C 安全退出)就可以直接在那个绑定的目录里找 games/com.mojang/minecraftWorlds 目录,里面应该就是存档
    存档可以自己配置(下面),或者上传一个上去(就是导出地图获得 mcworld 文件,当作 zip 解开)
    配置文件是 server.properities
    内容如下
    level-seed= 地图的种子
    gamemode= 游戏模式
    force-gamemode= 强制游戏模式
    difficulty= 难度(0 和平 1 简单 2 正常 3 困难)
    level-generator= 世界生成器(0 旧世界 1 无限世界 2 超平坦)
    player-idle-timeout= 闲置时间(分钟为单位,支持小数)
    level-dir= 存档路径,不写表示直接在根目录( games/com.mojang/minecraftWorlds
    level-name= 存档名字,主要为了导出时使用
    motd= 就是服务器对外显示的一串字符串,支持颜色字符
    view-distance= 服务器视距
    server-port= 服务器端口
    max-players= 最大玩家数量
    online-mode= 联网验证( xbox 登陆,虽然我没发现不登陆要怎么看服务器列表。。。)
    暂时不支持 rcon 和服务器查询
    部分选项只有在生成新的地图的时候才会生效,比如种子啊,游戏模式啊,不过其实可以用 op 来修改
    指令的话,就是运行了服务器之后即可输入,要注意的是,pe 服务器只支持用户在线的时候使用用户相关的指令。。
    op 指令可以使用户成为 Operator,之后就可以直接在游戏菜单里修改设置了(注意这个指令也受到用户在线的限制)
    关于服务器部署值得注意的一点是 PE 服务器用的是 udp 端口,所以确保对应的防火墙选项已经打开
    第 2 条附言  ·  2018-03-20 13:16:22 +08:00

    用法更新,顺便typo

    新的用法使用/data/目录作为数据存储目的

    docker run --rm -ti -v 某个目录:/data -p 19132:19132/udp codehz/mcpe-demo 
    

    typo: server.properities -> server.properties

    第 3 条附言  ·  2018-05-08 19:34:42 +08:00
    最新消息:
    Docker 版本由于打包的问题,已经放弃维护,未来将会移除 demo 镜像
    但是,现在又有两个新的方案
    (具体介绍: http://www.mcbbs.net/thread-794302-1-1.html
    简单介绍就是
    https://github.com/codehz/mcpe-server-script <- 一个基于 bash 的脚本集合
    https://github.com/codehz/mcpeserver <- golang 写的下载 /apk 解压 /加载器
    当然,构建环境还是 docker,只不过不再使用 docker 部署而已
    44 条回复    2018-05-07 22:05:36 +08:00
    galenzhao
        1
    galenzhao  
       2018-01-16 21:16:13 +08:00
    果然 android x86.。。
    codehz
        2
    codehz  
    OP
       2018-01-16 22:15:54 +08:00 via Android
    @galenzhao 要不是没有 Android x86_64.
    galenzhao
        3
    galenzhao  
       2018-01-17 12:37:40 +08:00
    @codehz 性能怎么样,vps 都是木有显卡的。。。
    pm 个地址我试试呗
    codehz
        4
    codehz  
    OP
       2018-01-17 12:58:07 +08:00
    @galenzhao #3 v2 什么时候有私信的功能了(
    galenzhao
        5
    galenzhao  
       2018-01-19 11:34:31 +08:00
    楼主把 apk 打进去了 不怕被举报么
    codehz
        6
    codehz  
    OP
       2018-01-19 12:37:01 +08:00 via Android
    @galenzhao 举报了再下
    SCGabriel
        7
    SCGabriel  
       2018-03-20 12:29:26 +08:00
    楼主您好,想用您这种方法搭服,但是怎么用没咋看懂,求再解释下
    codehz
        8
    codehz  
    OP
       2018-03-20 13:14:03 +08:00
    @SCGabriel #7 docker run --rm -ti -v 某个目录:/data -p 19132:19132/udp codehz/mcpe-demo
    这样,看看有没有什么报错,之前修改了一下格式,忘记更新这里了,等会写个附言
    SCGabriel
        9
    SCGabriel  
       2018-03-23 10:53:54 +08:00 via Android
    @codehz 大佬,咱萌新,想问下咱需要先 git 什么文件,然后再执行你这个?
    codehz
        10
    codehz  
    OP
       2018-03-23 11:08:44 +08:00   ❤️ 1
    @SCGabriel #9 不需要任何依赖,直接装 docker 运行我这个命令就可以了(会自动下载镜像
    当然你要自己构建的话,推荐到作者的仓库去看看 -> https://github.com/MCMrARM/mcpelauncher-linux
    SCGabriel
        11
    SCGabriel  
       2018-03-23 11:38:07 +08:00
    @codehz 需不需要把你这个 https://github.com/codehz/mcpe-demo 给 git 下来?然后 mc 的 x86 的 apk 文件需要自己去找不?
    codehz
        12
    codehz  
    OP
       2018-03-23 11:45:02 +08:00   ❤️ 1
    @SCGabriel #11 嘘,理论上我已经打包进 docker 镜像里去了(没人找我有事就先挂着(
    SCGabriel
        13
    SCGabriel  
       2018-03-23 11:50:18 +08:00
    @codehz 0_0 开启服务器和停止服务器的命令有不?
    codehz
        14
    codehz  
    OP
       2018-03-23 11:54:22 +08:00   ❤️ 1
    @SCGabriel #13 没有,你可以发送 SIGINT (也就是 Ctrl+C )停止服务器(相关管理模组还在开发中,
    SCGabriel
        15
    SCGabriel  
       2018-03-23 12:00:37 +08:00
    @codehz OK,其实会用了,请问下对应的是 PE 的什么版本的?会自动更新服务器端吗?
    先谢谢大佬了
    codehz
        16
    codehz  
    OP
       2018-03-23 12:05:51 +08:00
    @SCGabriel #15 对应最新发布的版本,更新的话,主要靠我手动上传(
    其实是可以跑测试版本的,但是毕竟大家用的主要还是正式版)需要拉取新版本的时候可以运行 docker pull codehz/mcpe-demo (建议写在一起做成脚本,即 docker pull codehz/mcpe-demo && docker run ....
    SCGabriel
        17
    SCGabriel  
       2018-03-23 13:09:20 +08:00
    @codehz 大佬,再问下您一个简单的问题,server.properities 这个文件里面格式应该是怎样写的?每行句尾是接;还是, ?
    codehz
        18
    codehz  
    OP
       2018-03-23 13:18:24 +08:00 via Android
    @SCGabriel 行尾直接换行,另外种子只能是数字,而且是 32 位有符号整数(又发现忘记写了
    SCGabriel
        19
    SCGabriel  
       2018-03-23 14:09:31 +08:00
    @codehz 大佬,服务器开了之后,win10 的基岩版连不上服务器




    配置应该没写错的
    SCGabriel
        20
    SCGabriel  
       2018-03-23 17:06:18 +08:00
    @codehz 在腾讯云广州的一个 vps 上跑,游戏里依然连接不上


    win10 的 uwp 也是基岩版吧,难道必须 PE ?
    codehz
        21
    codehz  
    OP
       2018-03-23 18:02:36 +08:00
    理论上是可以连接的(你看看是不是版本没匹配上(这里是 1.2.11 ,另外你贴一下运行命令,顺便检查下防火墙(注意是 udp 的端口
    codehz
        22
    codehz  
    OP
       2018-03-23 18:08:34 +08:00
    @SCGabriel #20 忘记点回复了(
    我之前也在腾讯云上跑过,似乎也是经常性无法连接,用香港的服务器就没问题(不是腾讯云的),再不行试试用 ssh 反向代理,
    SCGabriel
        23
    SCGabriel  
       2018-03-23 23:08:05 +08:00 via Android
    @codehz 应该不是腾讯云的关系,因为咱在腾讯云之前还在搬瓦工上跑过,都是连不上,朋友也连不上。防火墙应该也不是问题搬瓦工的防火墙上次被咱手动关掉的。。。。。
    SCGabriel
        24
    SCGabriel  
       2018-03-23 23:09:41 +08:00 via Android
    @codehz 咱去检查下是不是版本号问题,之前没弄个 uwp 的 mc,商店里买来好像就是给咱直接升级了最新的
    codehz
        25
    codehz  
    OP
       2018-03-24 00:25:47 +08:00
    @SCGabriel #23 不如试试 127.0.0.1 开服,我测试的时候都是本地测试的,还有就是可能是运营商对 udp 协议有 QoS 处理(
    https://imgur.com/a/lxR4m 正常是能看到这样的提示的
    codehz
        26
    codehz  
    OP
       2018-03-24 00:29:37 +08:00
    @SCGabriel #24 你可以来 tg bedrock_server 群组来获得更多信息(然后可以给我发 ip 我看看能不能诊断出什么问题(
    SCGabriel
        27
    SCGabriel  
       2018-03-25 14:36:56 +08:00
    如果有人是和咱一样是那种用腾讯云的 centos7,始终启动不了 docker,可以按照这个教程升级系统内核,docker 就可以正常运行了
    https://blog.csdn.net/qq_28347599/article/details/70768522
    QDavid
        28
    QDavid  
       2018-04-27 00:57:17 +08:00
    @codehz 大佬我在后台输任何命令,都报一大堆错,求问怎么解决
    ![]( https://s1.ax1x.com/2018/04/27/C3GgTf.png)
    QDavid
        29
    QDavid  
       2018-04-27 01:20:36 +08:00
    @codehz 试了下能成功连上,但是没法把橡木分解成原木= =背包里的合成台有问题,版本 1.2.13
    QDavid
        30
    QDavid  
       2018-04-27 01:27:55 +08:00
    SCGabriel
        31
    SCGabriel  
       2018-04-27 09:27:34 +08:00 via Android
    @QDavid 这个 1.2.13 版本有 bug,你没发现所有自然的合成表都消失了嘛。题主目前也没有在 docker 里更新,等 1.3 大版本更新吧
    codehz
        32
    codehz  
    OP
       2018-04-27 10:13:00 +08:00
    @SCGabriel #31 不,我在等 1.5 大更新(这个更新破坏了一大堆东西
    SCGabriel
        33
    SCGabriel  
       2018-04-27 10:54:30 +08:00 via Android
    @codehz 那遥遥无期?感觉不用玩了
    codehz
        34
    codehz  
    OP
       2018-04-27 10:55:19 +08:00
    @SCGabriel #33 最新测试版就是 1.5.0.0,1.3 和 1.4 都被跳过了
    codehz
        35
    codehz  
    OP
       2018-04-27 11:16:07 +08:00 via Android
    @QDavid 再 pull 一下就好了
    QDavid
        36
    QDavid  
       2018-04-27 12:27:58 +08:00
    @codehz 666,晚上回去再试试
    QDavid
        37
    QDavid  
       2018-04-27 12:28:51 +08:00
    @SCGabriel 没有啊,点右上角的切换,能切出合成表
    QDavid
        38
    QDavid  
       2018-04-27 19:43:28 +08:00
    @codehz 还是不能分解木头,是不是 docker 里的版本号和客户端对不上
    codehz
        39
    codehz  
    OP
       2018-04-27 19:48:27 +08:00
    @QDavid #38 表示没遇到这个问题(版本不匹配是无法进入服务器的)。。。当然那个命令的问题已经解决了。
    你看看是不是存档的问题,比如使用了行为包
    QDavid
        40
    QDavid  
       2018-04-28 14:57:13 +08:00
    @codehz 没有呀,我直接 docker run 的,连配置都没动,就给了自己 op
    QDavid
        41
    QDavid  
       2018-04-28 15:00:12 +08:00
    @codehz 这样沟通效率挺低的= =方便加个微信或者 qq 嘛,我 qq 1218118777
    QDavid
        42
    QDavid  
       2018-05-01 19:31:12 +08:00
    @codehz 各种姿势开服都没法分解木头= =求解决呀
    SLKun
        43
    SLKun  
       2018-05-07 21:58:45 +08:00
    @QDavid 我用了 aur 里面的 pkgbuild 完整编译了一份 mcpelauncher 没这个问题诶
    你要不自己重新编译一份试试看?
    codehz
        44
    codehz  
    OP
       2018-05-07 22:05:36 +08:00
    @QDavid https://github.com/codehz/mcpe-server-script 来试试这个,用法 先 clone 然后 ./build.sh && ./extract.sh (mcpe x86 apk 的路径) && ./run.sh
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2565 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:29 · PVG 18:29 · LAX 02:29 · JFK 05:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.