4 个版本 (2 个破坏性更新)
0.3.0 | 2020年7月10日 |
---|---|
0.2.0 | 2020年6月14日 |
0.1.1 | 2020年4月19日 |
0.1.0 | 2020年4月19日 |
#309 in 游戏
270KB
7K SLoC
Minecraft 高性能红石服务器
一个专为红石设计的 Minecraft 创意服务器。每个 256x256 的地块都在一个单独的线程上运行,允许更低的延迟,更高的并发性,以及许多令人惊叹的额外功能!
MCHPRS 与传统服务器非常不同。因为这个服务器是为计算红石的使用而量身定制的,所以这里没有包含许多 Vanilla Minecraft 服务器的一部分。但话虽如此,MCHPRS 也带来了许多独特的功能。
构建
如果 Rust 编译器尚未安装,您可以在他们的官方网站上找到如何安装的说明。
git clone https://github.com/MCHPR/MCHPRS.git
cd MCHPRS
cargo build --release
完成后,优化的可执行文件将位于 ./target/release/mchprs
或 ./target/release/mchprs.exe
,具体取决于您的操作系统。
在 Windows 上构建
要在 Windows 上构建,将 Cargo.toml
的最后一行替换为
rusqlite = {version="0.23.1", features=["bundled"]}
用法
命令
命令 | 别名 | 描述 |
---|---|---|
/rtps[rtps] |
无 | 设置地块中 红石 每秒滴答次数为 [rtps] 。 (游戏滴答中有两个红石滴答) |
/radvance[滴答] |
/radv |
通过 [滴答] 个红石滴答推进地块。 |
/teleport[玩家] |
/tp |
将您传送到 [玩家] 。 |
/stop |
无 | 停止服务器。 |
/地块信息 |
/p i |
获取您所在地块的所有者。 |
/地块声明 |
/p c |
如果您所在的地块尚未被声明,则声明该地块。 |
//pos1 |
//1 |
设置您的 WorldEdit 首位位置。 |
//pos2 |
//2 |
设置您的 WorldEdit 第二位位置。 |
//设置 [方块] |
无 | 将您选择的方块设置为 [方块] |
//替换 [旧方块] [新方块] |
无 | 将你选中的所有[oldblock] 替换为[newblock] 。 |
//复制 |
//c |
将你的选中内容复制到剪贴板。 |
//粘贴 |
//p |
将剪贴板内容粘贴到世界上。 |
//计数[区块] |
无 | 计算你选中中的所有[block] 。 |
//加载 |
无 | 从./schems/ 文件夹中加载一个原理图。如果出现问题,请确保原理图是Sponge格式。 |
致谢
- @AL1L 对WorldEdit和其他各种功能的贡献。
- @DavidGarland 对内存存储中
get_entry
的快速和总体改进。这个简单的函数运行了红石30%的运行时间。
贡献
欢迎拉取请求。对于主要更改,请先创建一个问题来讨论你想更改的内容。
内部结构
当服务器启动时,主线程(从现在起将被称为服务器线程)加载Config.toml
文件并启动网络线程。线程使用消息传递进行通信。
服务器线程
服务器线程处理服务器的初始化过程和连接客户端的登录/ping过程。如果客户端完成登录过程,将加载一个包含客户端的Player
结构。
网络线程
网络线程处理所有传入的客户端。然后客户端通过网络传递发送到服务器线程。
绘图线程
绘图线程处理服务器的大部分逻辑。绘图线程是真正的魔法所在。玩家移动、玩家旋转、WorldEdit、命令处理、世界保存/加载等都是由这个线程处理的。如果这个线程崩溃,玩家将被发送回服务器线程以移动到另一个绘图*。
* 尚未实现。
许可证
依赖关系
~31–43MB
~696K SLoC