python 控制MC

参考视频:https://www.bilibili.com/video/BV1FG4y1X7SQ

基本说明:

使用MC服务器开游戏,在服务器上安装RaspberryJuice插件,pip安装mc

1 首先编译MC服务器

但应该也可以直接找编译好的用吧,我没试

去下载编译使用的java包buildtools.jar

下载地址:https://www.spigotmc.org/

编译指导链接:https://www.spigotmc.org/wiki/buildtools/

简单说明编译需求

1 需要安装git,然后确保安装的Git/bin目录在环境变量中,能找到对应的git.exe

2 确保java版本和想编译的MC版本对应。

Java - Below Minecraft 1.17: - Download JRE 8 from here and install. Just keep hitting next when running the installer.
Java - Minecraft 1.17[.1]: - Download OpenJDK 16 from here and install. Just keep hitting next when running the installer.
Java - Above Minecraft 1.17.1: - Download OpenJDK 17 from here and install. Just keep hitting next when running the installer.

3 确保能连接github和其他一些网站报错时你就知道哪些网站了,2333

然后在你存放BuildTools.jar的目录下打开终端,使用以下命令进行编译:

java -jar BuildTools.jar

出错后请灵活应对。

我当时时下载某个仓库中断了一下,但是文件夹创建了,再次启动时它提示找不到那个仓库,这时把对应仓库文件夹删除再让他下载就好。

最后能看到类似一下提示,说明编译完成了。

Success! Everything completed successfully. Copying final .jar files now.
Copying spigot-1.19.3-R0.1-SNAPSHOT-bootstrap.jar to D:\game\mc\server_build_tools\mcserver\.\spigot-1.19.3.jar
  - Saved as .\spigot-1.19.3.jar

使用以下命令启动MC服务器:

java -Xms1024M -Xmx1024M -jar spigot-1.19.3.jar

然后你会发现启动不了

出现提示:

Loading libraries, please wait...
[13:24:27] [ServerMain/INFO]: Building unoptimized datafixer
[13:24:28] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[13:24:28] [ServerMain/WARN]: Failed to load eula.txt
[13:24:28] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info

他说你要同意它的协议

打开eula.txt把false改成true就同意了。

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
#Sun Jan 29 13:24:28 CST 2023
eula=false

不会真的有人去看协议内容吧,但是如果设计到大型商用还是看看吧,23333

2 在服务器上安装树莓汁这个插件

插件地址:https://github.com/zhuowei/RaspberryJuice

zip下载项目,在项目jars目录下找最新的插件包,复制到服务器plugins文件夹下。

例如我的是raspberryjuice-1.12.jar这个文件。

然后重新启动服务器。

可以在日志中发现这个插件的启动信息即可。

3 pip安装mcpi库

pip install mcpi

4 代码样例

import mcpi
from mcpi.minecraft import Minecraft

if __name__ == '__main__':
    mc = Minecraft.create()
    mc.postToChat("Hello World!")
文章目录