cnYeqi
本帖最后由 cnYeqi 于 2023-2-18 08:12 编辑

版本
ProtolLib最新开发版
内核1.19.3 PAPER
文档
https://wiki.vg/Protocol#Open_Screen
错误
Caused by: com.comphenix.protocol.reflect.FieldAccessException: Field index 1 is out of bounds for length 1

代码
public void initPacket (String title,int id,int type){
    setPacket(ProtocolLibHook.getPm().createPacket(PacketType.Play.Server.OPEN_WINDOW));
    packet.getModifier().writeDefaults();
    WrappedChatComponent wcc=WrappedChatComponent.fromText(title);
    packet.getChatComponents().write(0,wcc);
    packet.getIntegers().write(0,id);
    packet.getIntegers().write(1,type); //写入失败 数组下标溢出
}

疑问
1.打开容器的数据包大纲就是Open_WINDOW但是文档中是Open_Screen它们是同一个数据包么
2.根据文件所写的有一个整型的容器类型数据,但是写入默认后整型数据只有一个容器ID,怎么才能设置打开的容器的类型

美味的曲奇
https://www.spigotmc.org/threads ... 91709/#post-4547547
一 模 一 样

cnYeqi
美味的曲奇 发表于 2023-2-18 10:13
https://www.spigotmc.org/threads/an-error-occurred-while-using-protocollib.591709/#post-4547547
一  ...

Caused by: com.comphenix.protocol.reflect.FieldAccessException: Field index 0 is out of bounds for length 0

代码
packet.getStrings().write(0,type);

似乎还是不行 怎么把类型名写进去

Rothes
类型低版本是String,低于1.19的高版本是int,1.19+是Object常量,你需要反编译自行查看数据包的结构