1.7.10 GuiScreen & Commande
-
Ah non c’est bon je suis c** ca marche ! merci beaucoup !!!
Edit : Enfaite non ca marche pas quand je fais la commande ca m’ouvre rien
Class principale :
network = NetworkRegistry.INSTANCE.newSimpleChannel("narcotimod"); network.registerMessage(PacketOpenGui.Handler.class, PacketOpenGui.class, 0, Side.SERVER); } @EventHandler public void serverStarting(FMLServerStartingEvent event) { event.registerServerCommand(new CommandTest()); }Class du PacketGuiOpen:
public class PacketOpenGui implements IMessage { public PacketOpenGui() {} @Override public void fromBytes(ByteBuf buf) {} @Override public void toBytes(ByteBuf buf) {} public static class Handler implements IMessageHandler <packetopengui, imessage="">{ @SideOnly(Side.CLIENT) @Override public IMessage onMessage(PacketOpenGui message, MessageContext ctx) { Minecraft.getMinecraft().displayGuiScreen(new GuiScreenTest());//On fait un packet car si on utilise la classe Minecraft côté serveur en multijoueur ça crash! System.out.println("Ca marche le Gui !"); return null; } } }Class de la Command
package fr.mrlebest.narcotimod.common; import java.util.List; import fr.mrlebest.narcotimod.common.network.PacketOpenGui; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.util.EnumChatFormatting; public class CommandTest extends CommandBase { @Override public String getCommandName() { return "test"; } @Override public String getCommandUsage(ICommandSender p_71518_1_) { // TODO Auto-generated method stub return "Usage: /lenomdetacommande"; } @Override public void processCommand(ICommandSender sender, String[] args) { if(sender instanceof EntityPlayer) { EntityPlayerMP playermp = (EntityPlayerMP)sender; // sendpacket NarcotiMod.network.sendTo(new PacketOpenGui(), playermp);// Cette fois si enregistre ton packet côté CLIENT System.out.println("Ca marche !"); } } }Class du GuiScreen
package fr.mrlebest.narcotimod.client.gui; import fr.mrlebest.narcotimod.common.NarcotiMod; import fr.mrlebest.narcotimod.common.network.PacketOpenGui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.util.ResourceLocation; public class GuiScreenTest extends GuiScreen { private ResourceLocation ressource = new ResourceLocation("TONMODID:textures/gui/LENOMDETATEXTURE.png"); private int ButtonExemple; public GuiScreenTest() { } @Override public void initGui() { ButtonExemple = 0; this.buttonList.add(new GuiButton(ButtonExemple, width / 2 - 123, 230, 40, 20, "Bouton Exemple")); super.initGui(); } @Override protected void keyTyped(char typedChar, int keyCode) { super.keyTyped(typedChar, keyCode); } @Override protected void actionPerformed(GuiButton button) { switch(button.id) { case 0: // Envoie du packet ici NarcotiMod.network.sendToServer(new PacketOpenGui()); break; default: break; } super.actionPerformed(button); } @Override public void updateScreen() { super.updateScreen(); } public void drawScreen(int mouseX, int mouseY, float partialTick) { mc.getTextureManager().bindTexture(ressource); this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 125, 0, 0, 256, 250); super.drawScreen(mouseX, mouseY, partialTick); } } ```</packetopengui,> -
De rien si c’est résolu met le sujet comme Résolu
-
Le message “Ca marche le Gui !” s’affiche t-il dans la console ?
-
Non mais le ça marche il s’affiche
-
Donc ton paquet ne fonctionne pas correctement.
Et je crois avoir trouvé le problème.
network.registerMessage(PacketOpenGui.Handler.class, PacketOpenGui.class, 0, Side.SERVER);
Devrait être :
network.registerMessage(PacketOpenGui.Handler.class, PacketOpenGui.class, 0, Side.CLIENT); -
Tu es sur pareque dans le tuto de RedPlay c’est écrit Server
-
Il faut mettre celui qui reçoit le paquet. Dans ton cas c’est le client.
-
Et si je met le mod sur un serveur avec le solde.Client ça va marcher ?
-
oui ça marchera
-
Ok merci beaucoup juste dernière question c’est ou pour modifier les dimensions du GuiScreen ? Je sais que c’est la :
public void drawScreen(int mouseX, int mouseY, float partialTick) { mc.getTextureManager().bindTexture(ressource); this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 200, 0, 0, 256, 250); super.drawScreen(mouseX, mouseY, partialTick); }mais il faut modifier quoi exactement ?
-
this.drawTexturedModalRect(this.width / 2 - 135, this.height / 2 - 200, 0, 0, 256, 250); -> 256 / 250 (a la fin) il me semble
Et pour l’enregistrement du packet je t’avais dis côté server c’est ma faute!
-
Pas grave
Merci beaucoup ca marche a la perfection !!! je met en resolu