>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Java

在 Java 中无需变通方案和 Mojang 代码编写 Minecraft 服务器:Minestom 入门介绍

像 Paper、Spigot 或 Bukkit 这样的经典服务器都是从原始的 Minecraft jar 文件衍生而来的。这些平台的开发者花了数年时间反编译 Mojang 的代码、修补漏洞、优化那些最初并未考虑大量玩家场景的东西。最终,社区得到的是相当笨重的单体架构。

每个 tick 的实体、红石逻辑、水流物理计算和地形生成都在服务器上运行,即使你只需要一个简单的轻量级大厅来重定向玩家。如果你运行一个有一百名玩家的快速会话,一半的 CPU 资源将用于玩家甚至没有意识到的机制。

Minestom 走了一条完全不同的道路。它不是 Bukkit 的分支,也不是对原版核心的另一个补丁。

Minestom 是什么

该项目被创建为一个网络框架和 Java 库,从零开始实现 Minecraft 网络协议。它不包含一行原始的 Mojang 代码。

这里没有默认世界、没有现成的生物、也没有红石物理。当你启动一个干净的 Minestom 实例时,你会看到玩家生成在无限虚空中。之后发生的一切完全由开发者的代码定义。

这种方法提供了难得的灵活性。你可以从一开始就定义规则,而不是通过 Spigot API 事件重写现有的游戏行为。服务器在几秒钟内启动,消耗的内存极少。

架构亮点

Minestom 的架构与 Minecraft 生态系统中常见的解决方案有很大不同。

并行处理和实例

传统的 Minecraft 服务器在单个主线程中执行几乎所有关键逻辑。Minestom 将游戏世界划分为独立的实例。

每个实例在自己的线程中处理。如果你的服务器上同时运行着五十场小游戏比赛,它们不会相互干扰。一个地点的 TPS 下降不会影响相邻的竞技场。

直接数据包处理

Minestom 直接处理网络数据包,而不是创建不必要的内存垃圾的复杂对象层次结构。如果需要显示一千个方块或更新玩家的位置,框架会直接构建数据包,没有中间开销。

自定义实体和命令系统

Minestom 完全重新设计了命令和实体系统。命令通过集成在框架核心中的便捷声明式 API 构建。

最简单的服务器示例

你实际上可以用几十行代码启动一个可工作的服务器。以下是基本初始化的样子:

代码示例

这段代码创建了一个可工作的 Minecraft 服务器,你可以从普通客户端连接到它。它只占用几兆字节的内存,并立即启动。

该项目适合哪些任务

不要认为 Minestom 可以完全替代 Paper 用于任何项目。如果你的目标是运行一个和朋友一起玩游戏的普通生存服务器,需要村民、末影龙和药水酿造机制,Minestom 会迫使你手动编写所有这些机制。

该框架在其他场景中展现其优势:

  • 需要即时响应和同时支持数千名玩家的网络大厅和休息室。
  • 需要竞技场隔离和高性能的快节奏小游戏,如 BedWars 或 SkyWars。
  • 用于检查网络基础设施的负载测试和机器人。
  • 游戏网络协议的教育项目和实验。

硬币的另一面

在将你的想法迁移到 Minestom 之前,你应该考虑客观的困难。

主要缺点是缺少原版逻辑。物品掉落物理、生物 AI、洞穴生成算法,甚至基本的库存,都需要找到现成的社区库或独立实现。

Spigot 或 Paper 的标准插件在这里也不起作用。整个生态系统都是围绕 Minestom API 从头开始构建的。

总结

对于厌倦了传统 Minecraft 服务器限制的 Java 开发者来说,Minestom 将是一个很好的发现。它把与游戏的交互变成了愉快的开发工作,使用干净的 API,不需要回顾旧的原版代码。

如果你需要对性能和网络的完全控制,请查看 GitHub 上的 Minestom 仓库。它是游戏开源领域最简洁、最有趣的项目之一。

相关项目