
玩家交互库
为默认相机视角添加PlayerInteractionEvent,作为PlayerInteractEvent、PlayerMouseButtonEvent和SwitchActiveSlotEvent的替代方案。
PlayerInteractLib
PlayerInteractLib 是一个轻量级的服务端库,用于修复 Hytale 服务器 API 中缺失的玩家交互事件。
它引入了一个功能完整的 PlayerInteractionEvent,用于替代当前 API 中无法正常工作的或缺失的 PlayerInteractEvent。
该事件允许插件响应真实的玩家交互,包括与世界、方块和物品的交互。
该库设计为其他服务端插件和模组的依赖项使用,无需修改服务端内部。
👑 面向服主
如果您是服主,只需将此模组放入 mods 文件夹即可。
无需任何配置或设置。
🧩 面向插件开发者
PlayerInteractLib 通过响应式事件流(SubmissionPublisher)暴露玩家交互事件,允许插件订阅并异步响应玩家操作。
✨ 功能特点
- 为服务端 API 补充缺失的
PlayerInteractionEvent - 提供可靠的玩家交互检测
- 支持与方块、物品和世界的交互
- 包含玩家身份和手持物品信息
- 异步、非阻塞的事件传递(Java Flow API)
- 轻量且仅作为依赖(无游戏玩法逻辑)
如何使用
1. 将库添加到您的项目 在项目中创建一个 libs 文件夹,并将库的 .jar 文件放入其中:
project-root/
├─ libs/
│ └─ PlayerInteractLib.jar
└─ build.gradle
示例结构:

2. 在 build.gradle 中添加依赖
dependencies { implementation fileTree(di r: 'libs', includes: ['*.jar']) }
3. 在 manifest.json 中声明依赖 将库作为依赖添加到您插件的 manifest.json 中:
"Dependencies": { "Hytale:PlayerInteractLib": "*" }
📦 PlayerInteractionEvent 数据
public record PlayerInteractionEvent(
InteractionType interactionType,
String uuid,
String itemInHandId,
SyncInteractionChain interaction
) {}
可用信息
玩家 UUID
标识执行交互的玩家。
交互类型(InteractionType)
确定操作的类型(例如:主交互 / 副交互)。
手持物品
玩家当前使用的物品 ID(可能为 null)。
交互上下文(SyncInteractionChain)
包含与交互相关的上下文数据,例如:
* 交互状态
* 交互链标识符
* 世界或方块交互元数据
底层的网络和协议细节被有意隐藏,以保持 API 简洁且对插件友好。
使用示例
PlayerInteractLib lib =
(PlayerInteractLib) PluginManager.get()
.getPlugin(PluginIdentifier.fromString("Hytale:PlayerInteractLib"));
SubmissionPublisher<PlayerInteractionEvent> publisher = lib.getPublisher();
publisher.subscribe(new Flow.Subscriber<>() {
@Override
public void onSubscribe(Flow.Subscription subscription) {
subscription.request(Long.MAX_VALUE);
}
@Override
public void onNext(PlayerInteractionEvent event) {
String uuid = event.getUuid();
var interactionType = event.getInteractionType();
String username = Universe.get()
.getPlayer(UUID.fromString(uuid))
.getUsername();
System.out.println(username + " performed " + interactionType);
}
@Override public void onError(Throwable t) {}
@Override public void onComplete() {}
});
🧠 常见用例
- 区域保护系统
- 自定义方块或物品行为
- 基于交互的机制
- 反恶意破坏或权限检查
- 玩家操作日志记录与分析
ℹ️ 注意事项
- 事件以异步方式传递
- 修改世界状态的插件应确保适当的同步
- 此库应严格作为依赖项使用

还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。