2316 words
12 minutes
记使用部署Mcc进行挂机和遇到的一些问题

引言#

随着9月份的到来,我变得基本无法在我所在的服务器上线了,为了让机器保持加载和部分作物的生长以及刷怪,也为了在将来能够给自己的(众所周知在Minecraft中刷怪和随机刻需要玩家,使用加载器无效),遂在Github进行查询,准备在我的上海服务器上部署一个mcc 但是有些难受的是,我在部署时遇到了一些困难却无法查询到中文教程,于是在克服这些困难后写下本篇

本文为在Linux环境下部署mcc的教程,即中国大陆上海Linux服务器,实例系统为debian-11


Main#

资源链接与参考文档#

MCCTeam
/
Minecraft-Console-Client
Waiting for api.github.com...
00K
0K
0K
Waiting...

MCC官方文档

MCC-Github地址

WindTerm-SSH工具 如何使用Windterm (如果您熟练使用其他ssh工具,那还请用熟悉的)

MCS管理器(可选,用于在移动端时进行便捷管理,不安装同样可用)

准备工作#

使用ssh工具连接至远程服务器并切换至root用户#

具体教程链接已经在上文资源链接与参考文档中给出 (顺带说一下,如果这个都不会的话,这样的项目建议还是洗洗睡吧)

安装 .NET Core 7#

NOTE

提示:如果您的 VPS 使用 ARM 处理器,请按照 这个部分文档进行操作,然后返回此文档之后的部分。

NOTE

Ubuntu 22.04 上使用新版本的 .NET Core 7 可能会遇到以下错误:A fatal error occurred, the folder [/usr/share/dotnet/host/fxr] does not contain any version-numbered child folders 如果你遇到了这个错误,请使用这个解决方案

以上两条来自于mccteam官方文档

更新系统软件包和软件包管理库:

sudo apt update -y && sudo apt upgrade -y

(在使用大部分大厂服务器时,您无需更改,如果出现错误,请参照LinuxMirrors)

安装 wget

sudo apt install wget -y #安装 wget
cd ~                     #转到~目录

下载 Microsoft 存储库文件:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb #下载 Microsoft 存储库文件

将 Microsoft 仓库添加到包管理器:

sudo dpkg -i packages-microsoft-prod.deb
#将 Microsoft 仓库添加到包管理器
rm packages-microsoft-prod.deb
#将文件删除

最后,安装 .NET Core 7:

sudo apt-get update -y && sudo apt-get install -y dotnet-sdk-7.0

运行下面的命令来检查一切是否正确安装

dotnet

您应该看到:

Usage:

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

如果您没有获得这个输出且安装失败,请尝试其它方法

安装mcc#

  1. 现在你已经安装了 .NET Core 7,你应该安装screen工具, 您需要这么做,以便在您关闭了 SSH 会话后保持MCC运行(如果您没有它的话, MCC 将在您断开连接后停止工作)。 您可以看到screen就像一个窗口, 除了在终端中,它允许您同时打开多个“窗口”。

要安装 screen 执行以下命令:

sudo apt install screen -y

使用Git克隆#

打开终端并导航到您将存储 MCC 的文件夹,然后执行以下命令(如果没有,可以使用mkdir命令用于新建目录,然后cd用于进入目录)

git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive

1.1 此过程中报错的解决方法 如果在此过程中报错Timed outRefused to connect说明服务器当前无法连接至Github 解决方法如下:

前往ITDOG-WebTest输入github.com点击测试并查看测试结果

1.2 测试结果筛选: 请选择您所在的地域和运营商 测试状态码为200的ip并记录下来,我所选择的ip不一定在以后依旧有效

请不要使用某个gitee的镜像,那个太老了,我没注意直接clone了,也是踩坑了

示例图片

下面进行修改hosts操作: 1.3 进入vim编辑器编辑hosts文件(请sudo,否则会报file read-only错误)

sudo vim /etc/hosts

1.4 在结尾添加以下两行

20.200.245.247 github.com 
20.200.245.247 raw.githubusercontent.com

按键盘上的i进入编辑模式,添加后按Esc进入命令行模式,输入:wq并回车以进行保存并退出 (请将其中的ip替换为其他ip)

重新返回到原先存放项目的目录 进行git clone操作 请参考使用Git克隆

  1. 转到您克隆过的文件夹 (应该是 Minecraft-Console-Client)
cd Minecraft-Console-Client #进入目录
  1. 如果您想下载翻译资源,请查看下载翻译资源
  2. 运行以下命令以生成项目:
dotnet publish MinecraftClient -f net7.0 -r linux-x64 --no-self-contained -c Release -p:UseAppHost=true -p:

如果您使用的是 ARM、32 位、基于 Rhel、Using Musl 或 Tirzen 的 Linux,请为您的平台[找到合适的 RID](https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog#linux-rids),并将 ‘-r linux-64’ 替换为适当的 ‘-r RID_NAME’(arm 示例:“-r linux-arm64”)

  1. 运行完成后的文件将被输入以下目录:
MinecraftClient/bin/Release/net7.0/linux-x64/publish/

###启动&编辑配置文件

  1. 启动screen
screen -S mcc

mcc是这里屏幕上的名字,你可以使用你喜欢的任何东西,但如果你使用了不同的名字的话。请确保你在以下命令中使用该命令而不是mcc

要重新连接/返回到屏幕,请执行以下命令:

screen -d -r mcc

此处也是我踩坑的一个点,由于不会使用screen,导致这里出了问题,上次连接时没有断开导致下次无法连接,而解决方法是加上 -d来分离上次的会话

要列出屏幕,您可以使用:

screen -ls
  1. 启动mcc
./MinecraftClient
  1. 登录部分 现在,程序将要求您输入账户与密码
账户部分
对于正版用户:输入微软邮箱
对于离线用户:输入游戏id
密码部分
对于正版用户:输入微软账户密码
对于离线用户:输入`-`
!!!注意:密码输入将不会被显示
  1. 在登陆中遇到的问题

账户需要二次验证/无法连接到Microsoft

这个也是我踩坑的一个大点,微软账户的验证堪称玄学,有时需要验证有时又不需要了,所以为了避免在登录过程中的此类报错,我们可以换用另一种方式登录,即将配置文件中的mcc改为browser后重新启动mcc 这时你就会发现:无法正常打开浏览器但是返回了一个URL链接,打开URL链接,登录微软账户,这是你就会发现返回了一个类似于密钥的text,将其复制出来,粘贴回mcc,即可登录成功

  1. 修改配置文件 首先如果你处于游戏中,请先/quit
vim MinecraftClient.ini
  1. 配置账户Account 正如之前所说,正版登录连接错误可以参考上文在登陆中遇到的问题
Account = { Login = "<email>", Password = "<password>" }
#以下为注释
email:正版填写邮箱,离线填写游戏内ID
password:正版填写微软账户密码,离线填写`-`
  1. 配置服务器Server 配置此项后即可直接进入填写的服务器
服务器 = { 主机 = "<ip>", 端口 = <port> }
Server = { Host = "192.168.1.27", Port = 12345 } #示例
  1. 配置登录方式Method
Method = "mcc"

此设置用于定义使用Microsoft帐户登录的方式,可用选项包括mcc 和browser 正如我之前所说的,如果出现错误,可以尝试将此处改为browser

  1. 配置bot主人BotOwners
BotOwners = [ "milutinke", "bradbyte", "BruceChen", ]
  1. 配置mc版本MinecraftVersion
MinecraftVersion = "1.20.4"
  1. 配置自动重生AutoRespawnfalse改为true

以上是我所做的基本配置除此之外,我还配置了自动接tp的配置,这需要修改remote controlchat format

[ChatFormat]
Builtins = false #是否启用MCC内置的聊天检测规则。设置为false 以避免与自定义格式冲突。UserDefined = true# 是否启用下方的自定义正则表达式进行聊天检测。
Public = "<([a-zA-Z0-9_]+)>: (.+)"
Private = '^\[([a-zA-Z0-9_]+) -> 你\] (.+)$'
TeleportRequest = "^([a-zA-Z0-9_]+) 请求传送到你的位置$"

注意,中文服务器基本无法使用默认的聊天检测规则,具体请查看正则表达式

[ChatBot.RemoteControl]
Enabled = true
AutoTpaccept = true
AutoTpaccept_Everyone = false

Enabled:是否开启remotecontrol

AutoTpaccept:是否自动接owner的tp

AutoTpaccept_Everyone:是否自动接所有人的tp

除此之外,mcc对于离线用户同样也有自动登录的解决方案 那就是使用脚本,以下是脚本示例:

[ChatBot.ScriptScheduler]
Enabled = true
[[ChatBot.ScriptScheduler.TaskList]]
Task_Name = "登录RIA"
Trigger_On_First_Login = false
Trigger_On_Login = true
Trigger_On_Times = { Enable = false, Times = [ ] }
Trigger_On_Interval = { Enable = false, MinTime = 5.0, MaxTime = 5.0 }
Action = "send /login 密码1145141919810"

您还可以添加命令进行在有导航服务器时自动加入主服务器 例如/joinq zeroth具体命令取决于所处服务器

此段脚本内容感谢Fle的支持

mcc有着丰富的集成自动功能,详情查看这里

配置mcs(可选)#

配置mcs只是为了让我能够通过web管理,非必要

项目地址已经在开头给出 mcs

快速建立应用实例``部署任意控制台应用程序``localhost``无需额外文件

启动命令screen -d -r mcc

好啦,大功告成!#

Screenshot_2024-09-08-15-02-55-179_com.android.chrome-edit.jpg

呜呜第一次写markdown,十分坐牢

记使用部署Mcc进行挂机和遇到的一些问题
https://asubeats.com/posts/mcc/
Author
Asubeats
Published at
2024-09-10