[SANS SUITE] Crash Serveur
-
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 appliedLog Serveur:
[19:04:30] [Server thread/INFO] [/]: Packet serveur [19:04:30] [Server thread/INFO] [/]: Event onDeath [19:04:30] [Server thread/INFO] [/]: boolean: trueClasse 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.. -
J’ai testé le problème vient bien de Cauldron, à mon avis le problème vient du fait que tu essayes d’ouvrir un gui alors que ton joueur est mort alors que sur forge le joueur ne meurt pas. Aucune idée pourquoi
-
@‘SCAREX’:
J’ai testé le problème vient bien de Cauldron, à mon avis le problème vient du fait que tu essayes d’ouvrir un gui alors que ton joueur est mort alors que sur forge le joueur ne meurt pas. Aucune idée pourquoi
Ahh ouais je vois, est-ce que avec l’event LivingHurtEvent c’est possible ? je check si le joueur est a 1 demi-cœurs et si oui j’exécute mon code possible ? par contre la question que je me pose si le joueur passe directement de par 2 cœurs à 0 (a cause d’un grande chute ou autres…) est-ce que le code va être exécute ?
Merci en tous cas ! +2
-
A ce jour tu utilises quel event ?