Résolu [SANS SUITE] Crash Serveur
-
@‘SCAREX’:
System.out.println(“coucou, je suis de quel côté ?”) et tu envoies les logs
Bah j’ai que côté serveur
[18:48:30] [Server thread/INFO]: Packet serveur
-
Tu as déjà un print “packet” dans la fonction qui est appelé côté client.
Tu as juste à regarder dans le fichier fml-client-latest.log qui se trouve dans le dossier logs (ou dans la console si tu tests sur eclipse) -
@‘robin4002’:
Tu as déjà un print “packet” dans la fonction qui est appelé côté client.
Tu as juste à regarder dans le fichier fml-client-latest.log qui se trouve dans le dossier logs (ou dans la console si tu tests sur eclipse)Ah bah oui côté client ça marche je vous les dis que en solo le gui s’ouvrait mais pas multi.
[22:19:27] [Client thread/INFO] [STDOUT]: [com.DeathDelay.net.packet.PacketGui$Handler:onMessage:38]: Packet client
-
Tu n’as pas compris.
Vas sur un serveur et regardes les logs du client. -
Comment te dire que… j’ai pas vraiment de fml-client:
-
Normal puisque ceci est le dossier logs du serveur …
-
@‘robin4002’:
Normal puisque ceci est le dossier logs du serveur …
Je marque fml-client dans le dossier de mon serveur en haut a droite dans recherche aucun élément .
-
Tu te co sur le serveur et essaye d’ouvrir ce gui, puis tu va dans le dossier logs du client.
Envoyé via mobile
-
Le client, c’est toi, ton Minecraft avec ton joueur, donc les logs du client sont dans .minecraft/logs/
-
@‘robin4002’:
Le client, c’est toi, ton Minecraft avec ton joueur, donc les logs du client sont dans .minecraft/logs/
Ahhhhhhhhhhhhhhhhh ok
Oui ! le print est dans les logs client:
[12:36:27] [Client thread/INFO] [STDOUT/]: [com.DeathDelay.net.packet.PacketGui$Handler:onMessage:38]: Packet client
-
Du il n’y a pas de raison pour que le gui ne s’affiche pas.
Étrange. -
@‘robin4002’:
Du il n’y a pas de raison pour que le gui ne s’affiche pas.
Étrange.Bah c’est bizarre ouais…
Y’a pas une érreur dans le gui ou le packet ?
gui:
public class Mort extends GuiScreen { 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 / 20 + " §7secondes"); player1.addChatComponentMessage(text1); timer --; } else { EntityPlayer player1 = Minecraft.getMinecraft().thePlayer; player1.setDead(); Minecraft.getMinecraft().thePlayer.closeScreen(); } break; default: break; } super.actionPerformed(button); } public void updateScreen() { super.updateScreen(); } public void drawScreen(int mouseX, int mouseY, float partialTick) { String tilename = "§5 : " + timer-- / 20; 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; } public void onGuiClosed() { } }
public class PacketGui implements IMessage { public PacketGui(){ } @Override public void fromBytes(ByteBuf buf) { } @Override public void toBytes(ByteBuf buf) { System.out.println("Packet serveur"); } public static class Handler implements IMessageHandler <packetgui, imessage="">{ @SideOnly(Side.CLIENT) public IMessage onMessage(PacketGui message, MessageContext ctx) { Minecraft.getMinecraft().displayGuiScreen(new Mort()); Mort.settimer(10000); System.out.println("Packet client"); return null; } } } ```</packetgui,>
-
Essaye de mettre des prints dans le constructeur du gui, et dans initGui().
Envoyé via mobile
-
Sinon envoi ton dossier src en entier pour qu’on puisse tester de notre côté
-
@‘SCAREX’:
Sinon envoi ton dossier src en entier pour qu’on puisse tester de notre côté
Tenez:
-
Euh comment dire… Tout fonctionne très bien, je n’ai absolument rien modifié et ton gui s’affiche correctement.
En revanche pense à respecter la convention java dans tes mods. De plus tu as beaucoup de choses qui sont inutiles, par exemple tu as 2 instances de mods dans ta classe principale dont 1 qui n’a pas du tout le même modid que ton mod.
-
@‘SCAREX’:
Euh comment dire… Tout fonctionne très bien, je n’ai absolument rien modifié et ton gui s’affiche correctement.
En revanche pense à respecter la convention java dans tes mods. De plus tu as beaucoup de choses qui sont inutiles, par exemple tu as 2 instances de mods dans ta classe principale dont 1 qui n’a pas du tout le même modid que ton mod.
Whatt c’est vrai x)? tu as essayer en multi ? car moi sous kcauldron bah rien ne s’affiche.
Je vais re essayer sur un autre serveur voir je vous dis!edit: Exact x) j’avais pas vus merci
(Je parle des instances)
-
Sur serveur aussi ça fonctionne
-
@‘SCAREX’:
Sur serveur aussi ça fonctionne
Mais whaat ? perso ça marche pas c’est ma version de cauldron ou quoi? x)
J’ai essayer sur mon serveur en local sur un hébergeur rien ^^ -
Bon,
Après avoir regarder encore de plus près le soucis vient de la fonction draw (du moins je crois).J’ai ajouter un debug dans la fonction draw, elle ne s’affiche pas dans les logs.
Dans les logs du client j’ai ça:
[19:03:42] [Client thread/INFO] [FML/]: [Client thread] Client side modded connection established [19:03:42] [Client thread/DEBUG] [FML/]: Overriding dimension: using 0 [19:04:30] [Client thread/INFO] [STDOUT/]: [com.DeathDelay.net.Gui.Mort:func_73866_w_:49]: initgui // init gui [19:04:30] [Client thread/INFO] [STDOUT/]: [com.DeathDelay.net.packet.PacketGui$Handler:onMessage:38]: Packet client // packet [19:05:46] [Client thread/DEBUG] [FML/]: Reverting to frozen data state. [19:05:46] [Client thread/INFO] [FML/]: Applying holder lookups [19:05:46] [Client thread/INFO] [FML/]: Holder lookups applied
Log Serveur:
[19:04:30] [Server thread/INFO] [/]: Packet serveur [19:04:30] [Server thread/INFO] [/]: Event onDeath [19:04:30] [Server thread/INFO] [/]: boolean: true
Classe de mon gui:
package com.DeathDelay.net.Gui; import com.DeathDelay.net.Main; import com.DeathDelay.net.packet.PacketGui; import com.DeathDelay.net.packet.PacketMedecin; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ResourceLocation; public class Mort extends GuiScreen { 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; System.out.println("initgui"); 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 / 20 + " §7secondes"); player1.addChatComponentMessage(text1); timer –; } else { Minecraft.getMinecraft().thePlayer.closeScreen(); EntityPlayer player1 = Minecraft.getMinecraft().thePlayer; player1.setDead(); } break; default: break; } super.actionPerformed(button); } public void updateScreen() { super.updateScreen(); } public void drawScreen(int mouseX, int mouseY, float partialTick) { System.out.println("drawsceen"); String tilename = "§5 : " + timer-- / 20; 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; } public void onGuiClosed() { } } ```Mais la question que je me pose c'est si y'aurais un soucis dans la fonction drawscreen j'aurais quand même une fenêtre ouverte non ? une fenêtre transparente ? Je sais pas d'ou le problème vient c'est plutôt chiant SCAREX me dis que ça marche chez lui perso moi ça marche je sais pas pourquoi.. Si quelqu'un d'autre peut essayer de son côté voir parce que c'est bizarre..