3 个版本 (重大变更)

0.2.0-alpha.1+mc.1.20.12023 年 8 月 11 日
0.1.0+mc1.19.22022 年 9 月 4 日
0.0.1 2022 年 1 月 20 日

#608 in 游戏开发

每月 44 次下载

MIT 许可证

600KB
11K SLoC

license chat on Discord GitHub sponsors

一个用于构建 Minecraft: Java Edition 服务器端的 Rust 框架。

Valence 是建立在 Bevy ECS 之上的,旨在从头开始用 Rust 创建一个完全兼容 Minecraft 的服务器。你可以把 Valence 看作是 为 Minecraft 服务器设计的游戏引擎。它默认功能不多,但通过编写自己的游戏逻辑并利用 Bevy 强大的 插件系统,你可以实现几乎所有功能。

如动态脚本、专用可执行文件和原版游戏机制等具有偏见的特性都将作为可选插件来构建。这种模块化程度对于希望构建高度定制化 Minecraft 体验(如迷你游戏服务器)的人来说是理想的。

⚠️ Valence 仍处于早期开发阶段,许多功能尚未实现或不完整。请预期会遇到错误、限制和破坏性变更。

目标

Valence 力求成为以下内容

  • 完整的。为 Minecraft 协议的全面范围提供抽象。
  • 灵活的。可以轻松地从用户代码中扩展 Valence。提供对 Minecraft 协议的直接访问。
  • 模块化的。选择您需要的组件。
  • 直观的。易于使用且难以误用的 API。丰富的文档和示例非常重要。
  • 高效的。考虑到多核 CPU,优化系统资源的使用。Valence 使用很少的内存,并且可以在不卡顿的情况下同时支持 成千上万的玩家(假设您有足够的带宽)。
  • 最新的。针对最新的稳定版 Minecraft。同时支持多个版本的计划尚未制定。但是,您可以使用带有 ViaBackwards 的代理来实现与较旧客户端的向后兼容性。

当前状态

以下是值得注意的成就

  • valence_nbt:一个用于 Minecraft 的命名二进制标签 (NBT) 格式的快速新库。
  • 身份验证、加密和压缩
  • 方块状态
  • 区块
  • 实体和元数据
  • 用于快速空间实体查询的边界体积层次结构
  • 玩家列表和玩家皮肤
  • 维度、生物群系和世界
  • JSON 文本 API
  • 一个从游戏中提取数据到JSON文件的Fabric模组。这些文件通过构建脚本处理,以生成项目的Rust代码。这些JSON文件也可以在其他项目中使用。
  • 物品栏
  • 物品
  • 粒子
  • 铁砧文件格式(只读)
  • 代理支持(VelocityBungeecordWaterfall

这是一段简要视频,展示了示例和一些Valence的功能。

入门指南

运行示例

在克隆了存储库之后,运行

cargo r -r --example

来查看示例列表。我建议尝试 parkourgame_of_lifeterraincow_sphere

接下来,打开您的Minecraft客户端并连接到地址 localhost。如果一切顺利,您应该正在服务器上玩游戏。

将Valence添加为依赖项

Valence发布在 crates.io。运行 cargo add valence 将其添加到您的项目中。文档在此处可用 这里

然而,crates.io版本可能已过时。要使用最新的开发版本,将Valence添加为 git依赖项

[dependencies]
valence = { git = "https://github.com/valence-rs/valence" }

运行 cargo d --open 在您的项目中查看最新文档。

贡献

欢迎贡献!请参阅 CONTRIBUTING.md。您可以通过加入 DiscordGitHub Discussions 来讨论项目并提问。

许可

代码根据 MIT 许可发布,而Valence标志则根据 CC BY-NC-ND 4.0 许可发布。

资金

如果您想从财务上做出贡献,请考虑在 GitHubPatreon 上赞助我(rj00a)。

我很乐意继续开发Valence,您的支持将帮助我做到这一点。谢谢!

依赖项

~17–32MB
~549K SLoC