#minecraft-server #minecraft #server #redstone

bin+lib mchprs

专为红石设计的多线程 Minecraft 服务器

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 游戏

MIT 许可证

270KB
7K SLoC

Minecraft 高性能红石服务器

Build Status License: MIT Crates.io

一个专为红石设计的 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、命令处理、世界保存/加载等都是由这个线程处理的。如果这个线程崩溃,玩家将被发送回服务器线程以移动到另一个绘图*。

* 尚未实现。

许可证

MIT

依赖关系

~31–43MB
~696K SLoC