Salut
J’ai remplacé le GuiSleep par un gui qui y est extends, et Override deux fonctions : actionPerformed et keyTyped. J’ai ensuite créé un packet qui est censé être envoyé au serveur quand le joueur fais échap et appuie sur le bouton leave Bed. Le packet ajoute au joueur la potion avec un temps total de 0 tick. Comme vous pouvez le voir, j’ai dit que le packet est censé être envoyé. Hélas, il ne s’envoie pas, ça met plutôt des erreurs dans les logss
Déjà, voilà mes classes :
Le gui
| package ThisisChristmas.Client; |
| |
| import java.io.IOException; |
| |
| import ThisisChristmas.ChristmasEffectMessage; |
| import net.minecraft.client.gui.GuiButton; |
| import net.minecraft.client.gui.GuiSleepMP; |
| import net.minecraft.client.network.NetHandlerPlayClient; |
| import net.minecraft.network.play.client.CPacketEntityAction; |
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; |
| |
| public class GuiSleepMPExt extends GuiSleepMP{ |
| |
| @Override |
| protected void actionPerformed(GuiButton button) throws IOException |
| { |
| if (button.id == 1) |
| { |
| ThisisChristmas.ThisisChristmas.network.sendToServer(new ChristmasEffectMessage("effect")); |
| System.out.println("send"); |
| this.wakeFromSleep(); |
| } |
| else |
| { |
| super.actionPerformed(button); |
| } |
| } |
| |
| @Override |
| protected void keyTyped(char typedChar, int keyCode) throws IOException |
| { |
| if (keyCode == 1) |
| { |
| ThisisChristmas.ThisisChristmas.network.sendToServer(new ChristmasEffectMessage("effect")); |
| System.out.println("send"); |
| this.wakeFromSleep(); |
| } |
| else if (keyCode != 28 && keyCode != 156) |
| { |
| super.keyTyped(typedChar, keyCode); |
| } |
| else |
| { |
| String s = this.inputField.getText().trim(); |
| |
| if (!s.isEmpty()) |
| { |
| this.sendChatMessage(s); |
| } |
| |
| this.inputField.setText(""); |
| this.mc.ingameGUI.getChatGUI().resetScroll(); |
| } |
| } |
| |
| private void wakeFromSleep() |
| { |
| NetHandlerPlayClient nethandlerplayclient = this.mc.thePlayer.connection; |
| nethandlerplayclient.sendPacket(new CPacketEntityAction(this.mc.thePlayer, CPacketEntityAction.Action.STOP_SLEEPING)); |
| } |
| } |
| |
Dans la classe principale :
| |
| public static SimpleNetworkWrapper network = NetworkRegistry.INSTANCE.newSimpleChannel(MODID); |
| |
| |
| network.registerMessage(ChristmasEffectMessageHandler.class, ChristmasEffectMessage.class, 0, Side.SERVER); |
| |
ChristmasEffectMessage
| package ThisisChristmas; |
| |
| import io.netty.buffer.ByteBuf; |
| import net.minecraftforge.fml.common.network.ByteBufUtils; |
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; |
| |
| public class ChristmasEffectMessage implements IMessage{ |
| |
| protected String msg; |
| |
| public ChristmasEffectMessage() |
| { |
| |
| } |
| |
| public ChristmasEffectMessage(String message) |
| { |
| message = msg; |
| } |
| |
| @Override |
| public void fromBytes(ByteBuf buf) |
| { |
| msg = ByteBufUtils.readUTF8String(buf); |
| } |
| |
| @Override |
| public void toBytes(ByteBuf buf) |
| { |
| ByteBufUtils.writeUTF8String(buf, msg); |
| } |
| |
| } |
| |
ChristmasEffectMessageHander
| package ThisisChristmas; |
| |
| import net.minecraft.entity.player.EntityPlayerMP; |
| import net.minecraft.network.Packet; |
| import net.minecraft.util.text.ITextComponent; |
| import net.minecraftforge.fml.common.network.simpleimpl.IMessage; |
| import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; |
| import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; |
| |
| public class ChristmasEffectMessageHandler implements IMessageHandler<christmaseffectmessage, imessage="">{ |
| |
| @Override |
| public IMessage onMessage(ChristmasEffectMessage message, MessageContext ctx) |
| { |
| if(message.msg.equals("effect")) |
| { |
| EntityPlayerMP playerName = ctx.getServerHandler().playerEntity; |
| ThisisChristmas.proxy.MagicOfChristmasEffect(playerName, 0); |
| } |
| return null; |
| } |
| |
| } |
| |
Et voilà l’erreurs : Partie 1
| [17:22:02] [Client thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught |
| io.netty.handler.codec.EncoderException: java.lang.NullPointerException |
| at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[MessageToMessageEncoder.class:4.0.23.Final] |
| at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.0.23.Final] |
| at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658) ~[AbstractChannelHandlerContext.class:4.0.23.Final] |
| at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716) ~[AbstractChannelHandlerContext.class:4.0.23.Final] |
| at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:706) ~[AbstractChannelHandlerContext.class:4.0.23.Final] |
| at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:741) ~[AbstractChannelHandlerContext.class:4.0.23.Final] |
| at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:895) ~[DefaultChannelPipeline.class:4.0.23.Final] |
| at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:240) ~[AbstractChannel.class:4.0.23.Final] |
| at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToServer(SimpleNetworkWrapper.java:270) [SimpleNetworkWrapper.class:?] |
| at ThisisChristmas.Client.GuiSleepMPExt.actionPerformed(GuiSleepMPExt.java:19) [GuiSleepMPExt.class:?] |
| at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:494) [GuiScreen.class:?] |
| at net.minecraft.client.gui.GuiChat.mouseClicked(GuiChat.java:181) [GuiChat.class:?] |
| at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:609) [GuiScreen.class:?] |
| at net.minecraft.client.gui.GuiChat.handleMouseInput(GuiChat.java:141) [GuiChat.class:?] |
| at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:575) [GuiScreen.class:?] |
| at net.minecraft.client.Minecraft.runTick(Minecraft.java:1796) [Minecraft.class:?] |
| at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1119) [Minecraft.class:?] |
| at net.minecraft.client.Minecraft.run(Minecraft.java:404) [Minecraft.class:?] |
| at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] |
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92] |
| at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92] |
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92] |
| at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92] |
| at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] |
| at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] |
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92] |
| at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92] |
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_92] |
| at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_92] |
| at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] |
| at GradleStart.main(GradleStart.java:26) [start/:?] |
| Caused by: java.lang.NullPointerException |
| at net.minecraftforge.fml.common.network.ByteBufUtils.writeUTF8String(ByteBufUtils.java:132) ~[ByteBufUtils.class:?] |
| at ThisisChristmas.ChristmasEffectMessage.toBytes(ChristmasEffectMessage.java:30) ~[ChristmasEffectMessage.class:?] |
| at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:11) ~[SimpleIndexedCodec.class:?] |
| at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?] |
| at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:54) ~[FMLIndexedMessageToMessageCodec.class:?] |
| at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67) ~[MessageToMessageCodec$1.class:4.0.23.Final] |
| at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[MessageToMessageEncoder.class:4.0.23.Final] |
| … 30 more |
Partie 2```
nov. 30, 2016 5:22:02 PM io.netty.channel.embedded.EmbeddedChannel recordException
AVERTISSEMENT: More than one exception was raised. Will report only the first one and log others.
io.netty.handler.codec.EncoderException: java.lang.NullPointerException
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107)
at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:706)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:741)
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:895)
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:240)
at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToServer(SimpleNetworkWrapper.java:270)
at ThisisChristmas.Client.GuiSleepMPExt.actionPerformed(GuiSleepMPExt.java:19)
at net.minecraft.client.gui.GuiScreen.mouseClicked(GuiScreen.java:494)
at net.minecraft.client.gui.GuiChat.mouseClicked(GuiChat.java:181)
at net.minecraft.client.gui.GuiScreen.handleMouseInput(GuiScreen.java:609)
at net.minecraft.client.gui.GuiChat.handleMouseInput(GuiChat.java:141)
at net.minecraft.client.gui.GuiScreen.handleInput(GuiScreen.java:575)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1796)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1119)
at net.minecraft.client.Minecraft.run(Minecraft.java:404)
at net.minecraft.client.main.Main.main(Main.java:118)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
at GradleStart.main(GradleStart.java:26)
Caused by: java.lang.NullPointerException
at net.minecraftforge.fml.common.network.ByteBufUtils.writeUTF8String(ByteBufUtils.java:132)
at ThisisChristmas.ChristmasEffectMessage.toBytes(ChristmasEffectMessage.java:30)
at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:11)
at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.encodeInto(SimpleIndexedCodec.java:7)
at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.encode(FMLIndexedMessageToMessageCodec.java:54)
at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67)
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89)
… 30 more
[17:22:02] [Client thread/INFO] [STDOUT]: [ThisisChristmas.Client.GuiSleepMPExt:actionPerformed:20]: send
J
L
Pourquoi ça me fait cet erreur ? Est-ce que la méthode que j
PS : j