跳转到主要内容

Geyser API

Geyser 拥有一个 API,用于扩展 Geyser 的功能,并允许你在自己的插件、模组或扩展中与 Geyser 进行交互。

我可以在哪里使用 Geyser API?​

你可以在以下场景中使用 Geyser API:

  • 用于 Paper/Spigot、Velocity、Waterfall/BungeeCord 等的插件
  • 用于 Fabric 或 NeoForge 的模组
  • Geyser 扩展

访问 Geyser API​

有关如何在项目中包含 Geyser API 依赖的信息,请参阅此处。

文档​

Geyser API 提供了可订阅的事件,或者有关玩家是否通过 Geyser 加入的信息,并让你能够增强 Geyser 的功能(即注册自定义物品)。 (很快,方块和实体也可以)。 它可以在 Geyser 扩展中轻松使用,有关这些内容的详细信息,请参阅此处。

快速概览:

信息

Javadocs 可在此处找到。

GeyserApi:​

GeyserApi 接口是访问 Geyser API 提供的各种功能的中心访问点,提供了例如与玩家连接交互的方法。 它扩展了 Base API 接口,该接口提供了有关单个玩家的基本信息。

GeyserApi 类是 API 的基类,你需要使用它来访问 API 的任何部分。
要访问它,你只需输入:

GeyserApi.api();

获得实例后,你就可以访问所有方法了。
使用 API 模块中的文档查看(并获取有关)每个可用方法的信息。
大多数 API 方法都有简单的解释。 由于 Geyser API 扩展了 Floodgate 和 Geyser 共享的 Base API,你也可以使用 Base API 的方法。

我们将重点介绍几个,帮助你快速上手:​

GeyserApi#isBedrockPlayer(UUID)
用于检查给定 UUID 的在线玩家是否是基岩版玩家。

GeyserApi#connectionByUuid(UUID)
用于获取在线玩家的 Connection。
如果玩家不是基岩版玩家,此方法将返回 null。

信息

你不需要等到基岩版玩家上线才能使用 getPlayer 和 isBedrockPlayer 方法。
你甚至可以在预登录事件中使用它们。

GeyserApi#sendForm(UUID, Form(Builder))
用于向具有给定 UUID 的基岩版玩家发送表单。
点击此处获取有关表单的更多信息。

GeyserApi#onlineConnectionsCount()
用于获取在线基岩版玩家的数量。

Geyser API 简短概述​

Cumulus​

虽然技术上不直接在 Geyser API 中,但 Geyser API 也提供了 Cumulus 库。 它允许你向玩家发送基岩版表单。有关更多信息,请参阅 Cumulus。

事件​

事件包包含 Geyser 触发的所有事件。有关如何监听 Geyser 事件的详细信息,请参阅此处。

命令​

此包包含与 Geyser 中的命令相关的类和接口,允许 Geyser 扩展注册自定义命令。

实体​

实体包包含与 Geyser 中的实体相关的类和接口,例如 GeyserPlayerEntity 接口, 它代表 Geyser 中的玩家实体。此接口扩展了 GeyserEntity 接口,同时提供了专门针对玩家实体的额外功能, 例如目前的展示表情动作。

物品​

物品包包含与 Geyser 中的物品相关的类和接口。你可以创建自定义物品并使用 Geyser API 注册它们。 有关如何注册自定义物品的详细信息,请参阅此处。

方块​

方块包包含与 Geyser 中的方块相关的类和接口。你可以使用此包创建自定义方块,并使用 GeyserDefineCustomBlocksEvent 注册它们。 有关详细信息,请参阅此处。

网络​

网络包包含通过 RemoteServer 接口提供的有关远程服务器的基本信息, 例如服务器的 IP 地址和端口,以及远程服务器的协议版本。或者认证类型。 你还可以通过 BedrockListener 接口获取 Geyser 监听的端口/IP。

皮肤​

皮肤包包含一些代表皮肤数据的记录。如果你想更改玩家的皮肤,你可以监听 SessionSkinApplyEvent,并在那里设置新的皮肤、皮肤几何形状或披风。

资源包​

资源包包包含与 Geyser 中的资源包相关的类和接口。你可以创建自定义资源包,并在玩家登录前使用 SessionLoadResourcePacksEvent 将它们发送到各个会话。 如果你想向所有会话发送资源包,你可以使用 GeyserDefineResourcePacksEvent。

可以使用 PackCodec 创建资源包,例如提供的 PathPackCodec。 这允许你从文件路径加载基岩版资源包:

ResourcePack pack = ResourcePack.create(PackCodec.path(path));

扩展​

此包提供了创建和管理扩展所需的组件。 有关扩展的更详细说明,请参阅此处。