Пакеты отдают EOFException

Версия Minecraft
1.6.4

jopi

Попрошайка
1,421
30
260
Хз почему так
Регистрация
@NetworkMod(clientSideRequired = true, serverSideRequired = false, channels = {"arpg"}, packetHandler = PacketHandler.class)
Java:
ublic class PacketHandler implements IPacketHandler {
    private static final Charset charset = Charset.forName("UTF-8");
    public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {
        try {
            EntityPlayer var1 = (EntityPlayer)player;
            ByteArrayDataInput in = ByteStreams.newDataInput(packet.data);
            int packetID = in.readUnsignedByte();
            PacketBase packet = PacketBase.constructPacket(packetID);
            packet.read(in);
            packet.execute(var1, var1.worldObj.isRemote ? Side.CLIENT : Side.SERVER);
        } catch (Exception e) {
            if (player instanceof EntityPlayerMP) {
                e.printStackTrace();
            }
        }
    }
}
Java:
public abstract class PacketBase {
    public static final String CHANNEL = "arpg";
    private static final BiMap idMap;

    public static PacketBase constructPacket(int packetId) throws Exception, IllegalAccessException, InstantiationException {
        Class clazz = (Class) idMap.get(Integer.valueOf(packetId));
        if (clazz == null) {
            throw new Exception("Unknown Packet Id!");
        } else {
            return (PacketBase) clazz.newInstance();
        }
    }

    public final int getPacketId() {
        if (idMap.inverse().containsKey(this.getClass())) {
            return ((Integer) idMap.inverse().get(this.getClass())).intValue();
        } else {
            throw new RuntimeException("Packet " + this.getClass().getSimpleName() + " is missing a mapping!");
        }
    }

    public final Packet makePacket() {
        ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeByte(this.getPacketId());
        this.write(out);
        return PacketDispatcher.getPacket(CHANNEL, out.toByteArray());
    }
   
    public abstract void write(ByteArrayDataOutput var1);
    public abstract void read(ByteArrayDataInput var1) throws Exception;
    public abstract void execute(EntityPlayer var1, Side var2) throws Exception;

    static {
        Builder builder = ImmutableBiMap.builder();
        builder.put(nextID(), POpenGui.class);
        builder.put(nextID(), PSendAccessories.class);
        builder.put(nextID(), PSendChaotics.class);
        builder.put(nextID(), PUpdateStats.class);
        builder.put(nextID(), PUseChaotic.class);
        idMap = builder.build();
    }
}
Java:
public class POpenGui extends PacketBase {
    public int id;
    public POpenGui() {}
    public POpenGui(int id) {
        this.id = id;
    }
   
    public void write(ByteArrayDataOutput var1) {
        var1.write(this.id);
    }

    public void read(ByteArrayDataInput var1) throws Exception {
        this.id = var1.readInt();//EOF кидает тут
    }

    public void execute(EntityPlayer var1, Side var2) throws Exception {
        System.out.println("ee((");
        var1.openGui(AMod.INSTANCE, 0, var1.worldObj, 0, 0, 0);
    }
}
 
Краш-лог
[INFO] [STDERR] java.lang.IllegalStateException: java.io.EOFException
[INFO] [STDERR] at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readInt(ByteStreams.java:377)
[INFO] [STDERR] at union.cubeground.mod.common.handler.packet.POpenGui.read(POpenGui.java:24)
[INFO] [STDERR] at union.cubeground.mod.common.handler.PacketHandler.onPacketData(PacketHandler.java:24)
[INFO] [STDERR] at cpw.mods.fml.common.network.NetworkRegistry.handlePacket(NetworkRegistry.java:255)
[INFO] [STDERR] at cpw.mods.fml.common.network.NetworkRegistry.handleCustomPacket(NetworkRegistry.java:245)
[INFO] [STDERR] at cpw.mods.fml.common.network.FMLNetworkHandler.handlePacket250Packet(FMLNetworkHandler.java:85)
[INFO] [STDERR] at net.minecraft.network.NetServerHandler.handleCustomPayload(NetServerHandler.java:1130)
[INFO] [STDERR] at net.minecraft.network.packet.Packet250CustomPayload.processPacket(Packet250CustomPayload.java:70)
[INFO] [STDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
[INFO] [STDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141)
[INFO] [STDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54)
[INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109
[INFO] [STDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:691)
[INFO] [STDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:587)
[INFO] [STDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129)
[INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484)
[INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
[INFO] [STDERR] Caused by: java.io.EOFException
[INFO] [STDERR] at java.io.DataInputStream.readInt(Unknown Source)
[INFO] [STDERR] at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readInt(ByteStreams.java:375)
[INFO] [STDERR] ... 16 more
Краш-лог:
[INFO] [STDERR] java.lang.IllegalStateException: java.io.EOFException
[INFO] [STDERR] 	at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readInt(ByteStreams.java:377)
[INFO] [STDERR] 	at union.cubeground.mod.common.handler.packet.POpenGui.read(POpenGui.java:24)
[INFO] [STDERR] 	at union.cubeground.mod.common.handler.PacketHandler.onPacketData(PacketHandler.java:24)
[INFO] [STDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.handlePacket(NetworkRegistry.java:255)
[INFO] [STDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.handleCustomPacket(NetworkRegistry.java:245)
[INFO] [STDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.handlePacket250Packet(FMLNetworkHandler.java:85)
[INFO] [STDERR] 	at net.minecraft.network.NetServerHandler.handleCustomPayload(NetServerHandler.java:1130)
[INFO] [STDERR] 	at net.minecraft.network.packet.Packet250CustomPayload.processPacket(Packet250CustomPayload.java:70)
[INFO] [STDERR] 	at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
[INFO] [STDERR] 	at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:141)
[INFO] [STDERR] 	at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:54)
[INFO] [STDERR]         at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109
[INFO] [STDERR] 	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:691)
[INFO] [STDERR] 	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:587)
[INFO] [STDERR] 	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:129)
[INFO] [STDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484)
[INFO] [STDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
[INFO] [STDERR] Caused by: java.io.EOFException
[INFO] [STDERR] 	at java.io.DataInputStream.readInt(Unknown Source)
[INFO] [STDERR] 	at com.google.common.io.ByteStreams$ByteArrayDataInputStream.readInt(ByteStreams.java:375)
[INFO] [STDERR] 	... 16 more

jopi

Попрошайка
1,421
30
260
Длина всех данных - 3
я отправляю сначала int в виде Short, потом Integer почему так происходит вообще?

Прикол в том что на 1.5.2 этот код работает спокойно, такой-же код в других средах на 1.6.4 тоже робит
а тут нет
 
Последнее редактирование:

necauqua

когда-то был anti344
Администратор
1,216
27
172
unsigned byte - это, по сути, шорт
Возможно конкретно в байтбуфах майнкрафта это и так по какой-то причине, но вообще прочитал абсолютный бред.
Стоп, там байтбуфы из нетти, не, ты полный бред сказал.
signed byte - от -128 по 127, и unsigned - от 0 по 255, там и там по 8 бит, просто signed использует один бит для знака.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Ну один фиг он бред сказал так-то
Хотя вероятность сказочного говнокода уже в коде игры тогда ненулевая.
 
Сверху