Create a minecraft server with TencentCloud API when the worlds are saved in another Student's Cloud.
Find a file
2019-02-05 19:04:43 +08:00
DemoPage Add Demo 2019-02-05 14:08:57 +08:00
banner.png Update README 2019-02-05 17:40:16 +08:00
checkServer.php Initial Commit 2019-02-05 02:41:30 +08:00
conf.php 更新传回压缩探测的方式 2019-02-05 19:01:54 +08:00
index.php Initial Commit 2019-02-05 02:41:30 +08:00
LICENSE Initial commit 2019-02-05 02:30:51 +08:00
main.php 代码多余 2019-02-05 11:57:28 +08:00
qcloud.php Initial Commit 2019-02-05 02:41:30 +08:00
README.md Update readme 2019-02-05 18:25:10 +08:00
runCommand.php Initial Commit 2019-02-05 02:41:30 +08:00
sftp.class.php Initial Commit 2019-02-05 02:41:30 +08:00
sftpconnect.php Initial Commit 2019-02-05 02:41:30 +08:00
startServer.php Initial Commit 2019-02-05 02:41:30 +08:00
terminateServer.php 调整探测Interval 2019-02-05 19:04:43 +08:00
testpost.html Initial Commit 2019-02-05 02:41:30 +08:00

CloudMinecraft

Create a minecraft server with TencentCloud API when the worlds are saved in another Student's Cloud.

简述

这是一个基于腾讯云API的简单低成本开服方案的实现起初的想法来自于Best33https://best33.com/179.moe
另外在这个项目产生前一天Ghosin已经创造了对接了机器人的PYPython版https://github.com/Ghosin/dejavu
我在用PHP写的时候确实遇到了一些麻烦感谢众人的指导.

实现原理要说难也不难.首先是前台(可以对接机器人)调用控制服务器上的CloudMC API(main.php)由此发出请求通过QcloudAPI创建 云服务器(按量计费)并通过php的扩展连接ssh通过sftp传输打包存档并进行解压、部署运行Minecraft服务器.达到条件关闭服务器的时候,
远程向screen发送指令停止MC服务器并进行打包传回控制服务器.控制服务器最后释放掉该按量付费服务器。

其中的文件传输全靠同一区域的内网传输(用外网怕不是吃一堆流量,还很慢).

应用要求

  1. 有一台腾讯云(最好是学生云)服务器.
  2. 你想开一个Minecraft基友服而不是大服QCloud很贵的.

环境要求

  • 安装PHP SSH2扩展(好似PHP版本>=7.0才有?)
  • 启用函数exec();

配置

  • conf.php中进行基本配置,包括:

    1. 访问的授权key.
    2. 腾讯云的API secret id和key以及其他实例创建配置.
    3. 服务器释放/保留时间配置.
    4. 配置的区域一定要和你已有的一台云的区域一样(这样内网才互通).
  • 将目录下所有文件上传到已有的一台云上的网站目录main.php是在非CLI模式执行的.

  • 访问DemoPage内的server.html或者机器人对接main.php,开始云上Minecraft.

  • 务必在网站服务器设置不可访问server.json在创建服务器时server.json会用来储存必要的信息

对接main.php

  • 向main.php发出post请求

    • 请求的键.
    请求键
    key 访问的授权key
    command 发送的指令
    • 请求的url参数**?action=**.
    Action post要携带的键值 作用
    create key 开始执行创建服务器
    progress key 查看服务器的执行状态
    skip key 中止目前正在执行的任务(可以用来关服)
    sendcommand key , command 发送特定的指令(不带/)至Minecraft服务器
    • 例如我想创建新的服务器带上key值post main.php?action=create,详情看DemoPage源码.

感言

这回研究API真的花费了我很多时间但也是我第一次尝试对接服务商API.该项目耗费了我两整天可能代码不精有问题望发issue.

  • 联系somebottle@qq.com