服务器使用量
未统计
服务玩家数
未统计
下载量
6,964
插件详细介绍
简介
此 API 允许你通过反射访问类、字段和方法。但与默认的反射方法不同,你可以指定多个名称,API 将自动解析到实际存在的类/字段/方法。这对于插件使用 net.minecraft.server 类并希望兼容多个版本(例如 1.8 和 1.9)尤其有用。它还提供了一些实用的 Minecraft 相关方法,例如一个适用于 1.9 和 1.8(/1.7)的 DataWatcher 类。
核心功能
- 多版本兼容:通过指定多个可能的类名、字段名或方法名,自动适配不同版本的 Minecraft 或 Spigot,无需手动进行版本检查。
- 便捷的解析器:提供
ClassResolver、FieldResolver、MethodResolver、ConstructorResolver等工具,简化反射操作。 - 内置实用工具:包含
DataWatcher等类,帮助处理跨版本的 Minecraft 特定数据操作。
使用方法
以下是如何使用 NMSClassResolver 和 ClassResolver 来跨版本访问类的示例。
访问 NMS 类
假设你需要访问 NMS 的 ChatSerializer 类。在 1.8_R2 之前,它位于 net.minecraft.server.ChatSerializer,之后则被移至 net.minecraft.server.IChatBaseComponent$ChatSerializer。使用 NMSClassResolver 可以轻松处理:
Class<?> chatSerializer = new NMSClassResolver().resolveSilent(
"ChatSerializer",
"IChatBaseComponent$ChatSerializer"
);NMSClassResolver会自动添加net.minecraft.server前缀。resolveSilent方法会忽略所有抛出的异常。
访问非 NMS 或复杂类
对于像 Title 数据包这样在不同版本中位于多个不同类的情况,可以使用通用的 ClassResolver:
ClassResolver resolver = new ClassResolver();
Class<?> packetTitle = resolver.resolveSilent(
"net.minecraft.server." + Minecraft.getVersion() + "PacketPlayOutTitle", // > 1.8
"org.spigotmc.ProtocolInjector$PacketTitle" // protocol-hack 版本
);
Class<?> packetAction = resolver.resolveSilent(
"net.minecraft.server." + Minecraft.getVersion() + "PacketPlayOutTitle$EnumTitleAction", // > 1.8 R3
"net.minecraft.server." + Minecraft.getVersion() + "EnumTitleAction", // < 1.8 R3
"org.spigotmc.ProtocolInjector$PacketTitle$Action" // protocol-hack 版本
);更多信息
- 详细文档:请查阅 Javadoc 以获取关于
ClassResolver、FieldResolver、MethodResolver、ConstructorResolver和DataWatcher的完整详细信息。 - Maven 支持:此项目可通过 Maven 依赖集成。
链接与支持
- 源码:可在提供的链接查看源代码。
- 问题追踪:通过 Issue Tracker 报告问题。
- Javadoc:访问在线 API 文档。
- 网站:访问插件官方网站。
- 捐赠:作者免费提供所有插件,但欢迎捐赠以支持其持续开发和维护。
测试支持版本
版本分布
基本信息
插件名称
[API] ReflectionHelper
作者
inventivetalent
平台
Bukkit / Spigot
支持版本
1.7 - 1.17
点赞数
1
最近版本
暂无数据
-