@‘robin4002’:
Actuellement est-ce que “Mort” s’affiche dans la console ?
Car si oui alors l’event est bien appelé côté client, donc non pas besoin de paquet.
Et ton paquet tel que tu l’as fait doit aller du serveur vers le client.
Non, “Mort” s’affiche pas dans la console.
Du coup j’ai ça:
Event:
| |
| @SubscribeEvent |
| public void onDeath(LivingDeathEvent event) |
| { |
| |
| if(event.entityLiving instanceof EntityPlayer) |
| { |
| |
| event.entityLiving.setHealth(1); |
| |
| if(event.entityLiving.worldObj.isRemote){ |
| Main.network.sendToServer(new PacketGui()); |
| Mort.settimer(10000); |
| System.out.println("Mort"); |
| } |
| |
| } |
| |
| } |
Packet:
| |
| public class PacketGui implements IMessage { |
| |
| public int i; |
| |
| public PacketGui(){ |
| |
| } |
| public PacketGui(int i){ |
| this.i = i; |
| } |
| |
| @Override |
| public void fromBytes(ByteBuf buf) { |
| i = buf.readInt(); |
| } |
| |
| @Override |
| public void toBytes(ByteBuf buf) { |
| buf.writeInt(i); |
| } |
| |
| public static class Handler implements IMessageHandler <packetgui, imessage="">{ |
| @SideOnly(Side.CLIENT) |
| public IMessage onMessage(PacketGui message, MessageContext ctx) { |
| |
| Minecraft.getMinecraft().displayGuiScreen(new Mort()); |
| return message; |
| } |
| |
| } |
| |
| } |
| |
Gui:
| |
| public class Mort extends GuiScreen { |
| |
| @SideOnly(Side.CLIENT) |
| |
| private ResourceLocation ressource = new ResourceLocation("dd:textures/gui/death.png"); |
| |
| private int medecin; |
| |
| private int spawn; |
| |
| public static int timer = 10000; |
| |
| int guiWidth = 256; |
| |
| int guiHeight = 256; |
| |
| public Mort() { |
| |
| } |
| |
| @Override |
| public void initGui() { |
| |
| int guiX = (this.width - guiWidth) / 2; |
| |
| int guiY = (this.height - guiHeight) / 2; |
| |
| medecin = 0; |
| |
| spawn = 1; |
| |
| buttonList.clear(); |
| |
| buttonList.add(new GuiButton(medecin, guiX + 170, guiY + 226 + 5, 58, 20, "§aAppeller un médecin")); |
| |
| buttonList.add(new GuiButton(spawn, guiX + 80, guiY, 120, 20, "§5Respawn possible dans")); |
| |
| super.initGui(); |
| } |
| |
| @Override |
| protected void keyTyped(char typedChar, int keyCode) { |
| |
| } |
| |
| @Override |
| protected void actionPerformed(GuiButton button) { |
| |
| switch(button.id) { |
| case 0: |
| Main.network.sendToServer(new PacketMedecin()); |
| break; |
| case 1: |
| if(timer > 0) |
| { |
| EntityPlayer player1 = Minecraft.getMinecraft().thePlayer; |
| ChatComponentText text1 = new ChatComponentText("§7Vous ne pouvez pas respawn ! il vous reste: " + timer / 100 + " §7secondes"); |
| player1.addChatComponentMessage(text1); |
| timer –; |
| break; |
| } |
| else |
| { |
| |
| EntityPlayer player1 = Minecraft.getMinecraft().thePlayer; |
| player1.setDead(); |
| Minecraft.getMinecraft().thePlayer.closeScreen(); |
| break; |
| } |
| default: |
| break; |
| } |
| |
| super.actionPerformed(button); |
| } |
| |
| @Override |
| public void updateScreen() { |
| super.updateScreen(); |
| } |
| |
| public void drawScreen(int mouseX, int mouseY, float partialTick) |
| |
| { |
| |
| String tilename = "§5 : " + timer-- / 100; |
| |
| mc.getTextureManager().bindTexture(ressource); |
| |
| this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 127, 0, 0, 256, 255); |
| if(timer > 0) |
| { |
| this.fontRendererObj.drawString(tilename, this.width / 2 + 95 - this.fontRendererObj.getStringWidth(tilename) / 2, 1, 0); |
| } |
| super.drawScreen(mouseX, mouseY, partialTick); |
| } |
| |
| public static void settimer(int newtimer) |
| { |
| timer = newtimer; |
| } |
| |
| @Override |
| public void onGuiClosed() { |
| |
| } |
| |
| } |
| |
Register packet:
| |
| network = NetworkRegistry.INSTANCE.newSimpleChannel("dd:"); |
| network.registerMessage(PacketGui.Handler.class, PacketGui.class, 0, Side.SERVER); |
| |
Mon gui ne s’ouvre toujours pas.</packetgui,>