- injector --- 完全使用java编写的一些工具
java swing的一个layout- 一些集合(
Collection)的实现 io相关内容- 数学相关内容
- 下载器和多线程下载器
- *反射相关工具(使用
Unsafe实现的访问器,在不调用构造函数的情况下创建空白实例)
- kotlin --- kotlin相关内容,依赖
injector模块injector中的内容使用kotlin包装方便kotlin调用- 序列化工具,支持序列化和反序列化,与
ObjectInput/OutputStream类似,区别为不检查Serializable,且序列化结果为可见字符组成的字符串
- net --- 目前仅有数据包流和多频道数据包流 依赖
kotlin模块 - Bukkit-injector --- Minecraft Bukkit插件相关工具 依赖
injector模块- 命令注入工具,命令注册管理
- 配置文件封装
- 文字颜色和渐变颜色解析
Gui创建工具- 通过告示牌、聊天、铁砧获取玩家输入
- *附魔注册
- plugin --- 将
Bukkit-injector打包为插件
- 使用了
Unsafe,在对java中某些类进行反射时,会因权限问题无法成功(例如Class类等),使用Unsafe可以避免. 但需要注意的是,在安全管理器启用的状态下Unsafe可能无法工作 - 在不使用构造函数的情况下创建实例,此功能的实现与
ObjectInputStream创建实例类似但没有对于是否继承Serializable的检查. 通过此方法创建的实例为空白的,即简单类型为0或false,复杂类型为null但是这些功能全部基于反射、1中提到的Unsafe,以及一些不规范内容实现,并不能保证在三方jdk上稳定运行
空白实例创建示例:
import me.nullaqua.api.reflect.ReflectionAccessor;
public class TEST
{
public static void main(String[] args) throws Throwable
{
A a=ReflectionAccessor.blankInstance(A.class);
System.out.println(a);
}
}
class A
{
final int a, b;
public A()
{
a=1;
b=2;
System.out.println("构造函数被调用");
throw new RuntimeException();
}
@Override
public String toString()
{
return "{ a="+a+", b="+b+" }";
}
}无报错,且输出以下内容:
{ a=0, b=0 }