Minestom 是一个开源库,使开发人员能够创建自己的 Minecraft 服务器软件,而无需 Mojang 的任何代码。
Mojang 的普通服务器和基于minestom 的服务器之间的主要区别是我们的服务器默认不包含任何功能!然而,我们有一个完整的 API,旨在让您轻松实现一切可能。
这是一个开发者 API,不适合最终用户使用。用这个替换 Bukkit/Forge/Sponge是行不通的,因为我们没有实现它们的任何 API。
Minestom 不像 Bukkit/Forge/Sponge 那样安装。由于 Minestom 是一个 Java 库,因此必须以与加载任何其他 Java 库相同的方式加载它。这意味着您需要添加 Minestom 作为依赖项,添加代码并自行编译。
Minestom 可在 Maven Central 上使用,并且可以按如下方式安装(Gradle/Groovy):
repositories {
mavenCentral()
maven { url ' https://jitpack.io ' }
}
dependencies {
implementation ' net.minestom:minestom-snapshots:<???> '
}
此处提供了如何使用 Minestom 库的示例。或者您可以查看官方 wiki 或 javadocs。
自发布以来,《我的世界》已经发生了很大的变化,如今大多数服务器都没有利用普通功能,甚至因此而陷入困境。我们的目标受众是那些想要创建一个从普通功能中获益甚少的服务器的人。例如创意、kitpvp。目标是为需要的人提供更高的性能。换句话说,当实现您想要的每个缺失的普通功能所需的时间比删除每个会减慢您速度的普通功能花费的时间更少时,使用 Minestom 是有意义的。
Minestom 并不完美,我们的选择使其在某些情况下变得更好,而在另一些情况下则变得更糟。
即使我们在游戏中默认不包含任何内容,我们也会简化您添加它们的方式,这是预览。
这是我们的主要理念,世界非常适合与朋友一起生存,但当规模扩大时,它可能会变得难以管理。最好的例子可以在 Skyblock 或迷你游戏中找到,无法正确分离每个部分并被迫将所有内容保存在文件中,更不用说其中包含的不必要数据所造成的开销。实例是一个轻量级的解决方案,能够仅将每个块保存在内存中,立即将其复制并发送给另一个玩家,并具有自定义序列化等等......
能够直接在旅途中创建实例是必须具备的,我们相信它可以推动更多项目向前发展。
实例还具有性能优势,与其他一些完全单线程或可能每个世界使用一个线程的实例不同,我们使用一组线程(池)来独立于实例管理所有块,这意味着使用更多的 CPU 功率。
默认情况下,Minestom 不知道什么是箱子,您必须告诉他它会打开一个库存。每个“特殊块”(不仅仅是视觉块)都需要一个专门的处理程序。应用此处理程序后,您将拥有一个可以轻松放置在任何地方的块。然而,所有块都在视觉上存在,只是默认情况下它们不会进行交互。
“被动”或“攻击性”怪物这些术语并不存在,没有人会阻止你让一只飞鸡冲向任何离得太近的玩家,由于混淆和巨大的继承,使用 NMS 这样做确实是一团糟。
这是 Minecraft 发展很大的一个领域,库存现在大量用作具有可点击项目和回调的客户端 <-> 服务器接口,我们原生支持这些交互,无需对您的解决方案进行编程。
命令是客户端和服务器之间最简单的通信方式。自 1.13 Minecraft 合并了一个名为“Brigadier”的新库以来,我们集成了一个 API,旨在充分利用 args 类型的潜力。
#mcdevs
- 协议和文件格式研究。请参阅贡献文件!所有 WIP 功能均作为草稿 PR 进行预览
该项目根据 Apache License Version 2.0 获得许可。