Ошибка при отправке пакета

Версия Minecraft
1.7.10
1,417
44
594
Буду краток:
Краш, который кикает из одиночки и ломает сервер:
Java:
[14:59:25] [Server thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught
io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(8) exceeds writerIndex(4): SlicedByteBuf(ridx: 0, widx: 4, cap: 4/4, unwrapped: UnpooledHeapByteBuf(ridx: 1, widx: 5, cap: 5/5))
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?]
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) [IntegratedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(8) exceeds writerIndex(4): SlicedByteBuf(ridx: 0, widx: 4, cap: 4/4, unwrapped: UnpooledHeapByteBuf(ridx: 1, widx: 5, cap: 5/5))
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1160) ~[AbstractByteBuf.class:?]
    at io.netty.buffer.AbstractByteBuf.readLong(AbstractByteBuf.java:624) ~[AbstractByteBuf.class:?]
    at io.netty.buffer.AbstractByteBuf.readDouble(AbstractByteBuf.java:642) ~[AbstractByteBuf.class:?]
    at ru.mtt.naruto.server.packages.SetParticl.fromBytes(SetParticl.java:39) ~[SetParticl.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:17) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:77) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 13 more
[14:59:25] [Server thread/ERROR] [FML]: There was a critical exception handling a packet on channel narutopartserver
io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(8) exceeds writerIndex(4): SlicedByteBuf(ridx: 0, widx: 4, cap: 4/4, unwrapped: UnpooledHeapByteBuf(ridx: 1, widx: 5, cap: 5/5))
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?]
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) [IntegratedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(8) exceeds writerIndex(4): SlicedByteBuf(ridx: 0, widx: 4, cap: 4/4, unwrapped: UnpooledHeapByteBuf(ridx: 1, widx: 5, cap: 5/5))
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1160) ~[AbstractByteBuf.class:?]
    at io.netty.buffer.AbstractByteBuf.readLong(AbstractByteBuf.java:624) ~[AbstractByteBuf.class:?]
    at io.netty.buffer.AbstractByteBuf.readDouble(AbstractByteBuf.java:642) ~[AbstractByteBuf.class:?]
    at ru.mtt.naruto.server.packages.SetParticl.fromBytes(SetParticl.java:39) ~[SetParticl.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:17) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:77) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    ... 13 more

Регистрирую пакет:
В клиент прокси:
Java:
    public static SimpleNetworkWrapper networkserver;
    @Override
    public void preInit() {
        networkserver = NetworkRegistry.INSTANCE.newSimpleChannel(Constants.MODID+"keyh");
        networkserver.registerMessage(KeyPackage.Handler.class, KeyPackage.class, 0, Side.SERVER);
        super.preInit();
    }

Вызываю:
Java:
    @SubscribeEvent
    public void onKeyInput(KeyInputEvent event) {
        // checking inGameHasFocus prevents your keys from firing when the player is typing a chat message
        // NOTE that the KeyInputEvent will NOT be posted when a gui screen such as the inventory is open
        // so we cannot close an inventory screen from here; that should be done in the GUI itself
        if (mc.inGameHasFocus) {
            if (keys[Q].getIsKeyPressed()) {
                ProxyClient.partnetwork.sendToServer(new KeyPackage(1));
                ExpandPlayer.get(mc.thePlayer).addpp(1);
            }
            if (keys[W].getIsKeyPressed()) {
                //ProxyClient.partnetwork.sendToServer(new KeyPackage(2));
                ExpandPlayer.get(mc.thePlayer).addpp(2);               
            }
            if (keys[E].getIsKeyPressed()) {
                //ProxyClient.partnetwork.sendToServer(new KeyPackage(3));
                ExpandPlayer.get(mc.thePlayer).addpp(3);               
            }
        }
    }

Пакет:
Java:
public class KeyPackage  implements IMessage {
    public int key;
    public KeyPackage() {
    }   
    public KeyPackage(int key) {
        this.key = key;
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
        buf.writeInt(key);
    }

    @Override
    public void fromBytes(ByteBuf buf) {
        key = buf.readInt();
    }
    
    public static class Handler implements IMessageHandler<KeyPackage, IMessage> {

        @Override
        public IMessage onMessage(KeyPackage packet, MessageContext message) {
            EntityPlayerMP player = message.getServerHandler().playerEntity;
            int id = packet.key;
            ExpandPlayer.get(player).addpp(id);
            return null;
        }

    }
}

Подскажите, что не так, ошибки не вижу, а ошибку не очень понимаю.
 
Решение
Регистрирую пакет:
В клиент прокси:
То что должно обрабатываться на серверной. Пытается обработать где? Т.е. networkserver должен быть: на сервере - для обработки и на клиенте - для отправки на сервер.

timaxa007

Модератор
5,831
409
672
Регистрирую пакет:
В клиент прокси:
То что должно обрабатываться на серверной. Пытается обработать где? Т.е. networkserver должен быть: на сервере - для обработки и на клиенте - для отправки на сервер.
 
Сверху