众所周知在mc开服十分简单,但是仅限在windows系统,在本地部署服务端需要好朋狗访问一起玩。
应运而生的是需要frp提供公网访问(服务器支持),在mac的终端对小白来说还是望而却步,以此来记录。
前期准备
需要准备的是:
- 一台Mac mini m4
- 一台拥有公网的服务器(用于转发数据,极低配置即可)
- 当然还有一个有耐心的你。
本次使用的整合包是: 尘封古迹和锻造之旅。
思路
在windows下运行整合包只需要解压并执行和bat文件,在类unix比如linux系统(debian和macos)之流,需要使用run.sh
部署本地环境
安装java17
- 获取java17:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
需要选择: macOS Arm 64 DMG Installer
(为什么不是13,14和21和25,俺也不知道为什么) - 获取到java17之后'点击'一路next即可。
获取游戏安装包
可从bilibili以及各个bbs获得...
解压
桌面解压
- 使用bandzip右键即可
终端解压
- 默认使用unzip解压即可但是会遇到以下问题
checkdir error: cannot create ???Ԧ++-1.9??+??- Illegal byte sequence unable to process ???Ԧ++-1.9??+??-/usercache.json. checkdir error: cannot create ???Ԧ++-1.9??+??- Illegal byte sequence unable to process ???Ԧ++-1.9??+??-/usernamecache.json. checkdir error: cannot create ???Ԧ++-1.9??+??- Illegal byte sequence unable to process ???Ԧ++-1.9??+??-/whitelist.json.
- 此问题的出现是因为: Shell 环境的字符编码不是 UTF-8
导致程序(这里是 MC 服务端 / Java)在处理包含中文或非 ASCII 路径 / 文件名时崩溃。
(总结:打包的同学使用的windows终端下的GBK编码) - 解决思路: 强制指定 UTF-8 环境
思路一 :在终端临时指定编码环境
export LANG=zh_CN.GBK
export LC_ALL=zh_CN.GBK思路二: 使用mac系统自带的ditto解压工具:
ditto -x -k source.zip unzip_folder
执行run.sh
默认执行切换到游戏解压根目录,执行' ./run.sh '即可。
cd /dest_folder
chmod +x run.sh
./run.sh- 但是,不是所有同学都会使用终端,所以可以看我结尾写贴一个command的点击脚本,可以同时拉起来frp和mc本体
frp
默认frp架构为:
frpc.exe
frpc.toml #客户端配置文件
frps.exe
frps.toml #服务端配置文件
LICENSE
下载frp到服务端
下载连接:https://github.com/fatedier/frp/releases
版本选择:frp_0.66.0_linux_amd64.tar.gz
配置frp参数
默认frps.toml参数即可
添加system守护
将以下文件放入服务器路径: /etc/systemd/system 并以 frp.service 命名
[Unit]
Description=Frp
Documentation=https://github.com/fatedier/frp/
After=network.target
[Service]
ExecStart=/home/frp/frp_0.66.0_linux_amd64/frps -c /home/frp/frp_0.66.0_linux_amd64/frps.toml
Restart=on-failure
User=root
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
并执行:
systemctl daemon-reload
systemctl start frp
查看frps是否启动成功:active即为成功
systemctl status frp

配置mac客户端
下载客户端:
链接:
frp_0.66.0_darwin_arm64.tar.gz
解压并执行frpc客户端
- 将压缩包解压
配置frpc.toml文件
serverAddr = "你的服务器地址"
serverPort = 7000[[proxies]]
name = "你的链接名"
type = "tcp"
localIP = "127.0.0.1"
localPort = 需要监听的端口,mc默认为25565
remotePort = 远程端口,要提供给朋友的端口由于要适配小白,所以要写一个start.sh的脚本,内容为:
cd /Path/to/frp/folder/
./frpc -c ./frpc.toml
4.给start.sh增加权限
cd /frp_folder
chmod +x start.sh
并行执行脚本
为了方便同时拉起frp和mc,所以写了一个脚本同时启动
#!/bin/bash
# 脚本路径
FRP_SH="/Path/to/frp/folder/frp_0.66.0_darwin_arm64/start.sh" #更改为frp目录下的start.sh
MC_SH="/Path/to/mc/folder/run.sh" ##更改为mc目录下的run.sh
# 启动 FRP 窗口
osascript -e "tell application \"Terminal\" to do script \"cd '$(dirname "$FRP_SH")' && ./$(basename "$FRP_SH")\""
# 启动 MC 窗口
osascript -e "tell application \"Terminal\" to do script \"cd '$(dirname "$MC_SH")' && ./$(basename "$MC_SH")\""
# 自动把终端带到前台
osascript -e "tell application \"Terminal\" to activate"