群辉Docker搭建Minecraft服务器学习编程

2024-01-12 22:59:32 27点赞 190收藏 10评论

感谢值友们老庄的前几篇文章的认可,使我有动力继续分享,上篇文章结尾已经预告过本篇要分享的内容是搭建Minecraft sever。

说下事情的起因,我安装Minecraft服务端的主要原因真不是为了玩游戏,而是为了教我儿子编程。
因为我看了下面这本书,就想一边学习一边教我爱玩这个游戏的逆子编程。

群辉Docker搭建Minecraft服务器学习编程

我本书是2018年出版的,里面的主要用python 的 mcpi api接口操控Minecraft的。这个mcpi的mc指的是Minecraft,pi指的是raspberry pi,所以书的示例都是在树莓派环境下的。现在我有了群晖,就想试试在PC环境下可不可以用python来操控我的世界服务端。

一.选择MC服务器版本

因为我本身没玩过我的世界游戏,相关知识都是后了解的,要安装时才知道有java版,基岩版。还分Paper服务端和Spigot服务端。看着头就有点大,不知道哪个适合我。但我的目的是要用程序控制MC,所以服务器端必须能安装上JuicyRaspberryPie的插件,启动插件后打开4711端口,mcpi才能连接成功。我试了几个现在的映像(包括itzg-minecraft-server)都不太好用,最后决定直接做一下centos的容器,自己在上面手动安装一个spigotmc服务。

二.安装过程

1.创建一个centos7的容器,具体步骤我就略过了。因为centos的映像有好多种,随便找一个合适的,安装完可以SSH登录上去就行(我用的映像是jdeathe-centos-ssh)。

2.SSH登录到centos上,安装JDK,Minecraft 1.17.1以上需要安装JDK17以上版

我在这里下载的https://www.azul.com/downloads/?package=jdk#downloads-table-prime
上传到服务器后,执行

tar -xf OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz

mv jdk-17.0.7+7 jdk-17
mv jdk-17/ /usr/lib/jvm

编辑环境变量

> vi /etc/profile

添加以下内容

export JAVA_HOME=/usr/lib/jvm/jdk-17

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

> vi /etc/profile
使用变量生效
> java -version
输入正确版本号说明jdk安装成功
>yum install -y git
安装git

>mkdir Spigot_Server && cd Spigot_Server
创建并进入服务目录

> wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
下载buildtools
> java -jar BuildTools.jar --rev 1.18.1
安装服务,后面版本号可以自行选择

等待安装结束后,编辑配置文件
> vi server.properties
把gamemode改为creative
把online-mode改为false

下载对应的JuicyRaspberryPie插件放到plugins目录中,下载地址为:https://github.com/wensheng/JuicyRaspberryPie/releases


最后,需要手动创建个启动脚本
> vi start.sh
内容为:

#!/bin/sh

java -Xms1G -Xmx1G -jar spigot-1.18.1.jar

最后给启动脚本执行权限:
> chmod +x start.sh

这样就可以启动游戏了
> ./start.sh

启动过程非常慢,请耐心等待。

三.登录游戏

需要在你的电脑上下载hmcl启动器来进行登录

群辉Docker搭建Minecraft服务器学习编程

选择你服务器对应的版本,如果没有,需要安装一下

群辉Docker搭建Minecraft服务器学习编程

选择多人游戏

群辉Docker搭建Minecraft服务器学习编程

加入群晖上安装的MC服务器

群辉Docker搭建Minecraft服务器学习编程群辉Docker搭建Minecraft服务器学习编程群辉Docker搭建Minecraft服务器学习编程

登录成功了,下一步写程序看看能做什么

四.写程序测试

import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create(address="192.168.50.252")
mc.player.setPos(0,0,0)
mc.postToChat("welcome to laozhuang's world!")
pos = mc.player.getTilePos()
mc.setBlocks(pos.x-5,pos.y-10,pos.z-1,pos.x+5,pos.y-1,pos.z+31,block.DIAMOND_BLOCK.id)

运行程序,再看下游戏界面的效果变成了这样

群辉Docker搭建Minecraft服务器学习编程

四.最后的结论

这个游戏的开发环境是搭建完成了,从最后示例程序运行的结果来看,前几行都没问题,聊天窗口输出的指定文字,获取的玩家的位置,并生成的一片方块。

但是,生成的方块类型有问题,我指定的是钻石方块,生成的是普通石块。我修改程序指定其他类型方块也都是生成普通石头。最后我试着修改mcpi源码,发现给服务器用字符串形式传递方法类型是可以的,但是修改的代码量太多了,我也没空继续研究。在github上搜索过其他相关的api也有同样的问题,不知道是不是以前版本的JuicyRaspberryPie是不是可以接受int类型的方块参数。

反正我是放弃的,我把这个服务器改成的生存模式,有时和我儿子一起联机挖矿探险也挺好!

至于最初教我儿子编程的想法,我改为用Scratch了!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
10评论

  • 精彩
  • 最新
  • 哈哈哈哈😄。所以不要总以为能改变儿子,我们要学会改变自己!

    校验提示文案

    提交
    有道理

    校验提示文案

    提交
    收起所有回复
  • 必须点赞收藏。

    校验提示文案

    提交
    谢谢

    校验提示文案

    提交
    收起所有回复
  • 点赞收藏

    校验提示文案

    提交
    谢谢!

    校验提示文案

    提交
    收起所有回复
  • 这叫docker,你这边擦的太厉害了

    校验提示文案

    提交
    这个确实是docker,如果docker hub上能找到带JuicyRaspberryPie插件的Minecraft server 镜像可以直接用,是不是就方便了。可惜我没找到,只能自己折腾了。

    校验提示文案

    提交
    收起所有回复
  • 爬出来了,终于

    校验提示文案

    提交
  • 既然换scratch了,可以试试慧编程,有扩展可以连它官方的mc服务器

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
190
扫一下,分享更方便,购买更轻松