- 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;
}
}
}
Подскажите, что не так, ошибки не вижу, а ошибку не очень понимаю.