• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Ouvrir un GUI quand un texte apparait dans le chat

    1.7.x
    1.7.10
    3
    11
    1550
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • P
      PlayFlop_ dernière édition par

      Bonjour,
      J’ai fait pas mal de recherches et je ne trouve que ce code.
      Qui de mon coté ne fonctionne pas.

      Je voudrais ouvrir un GUI quand un texte apparait dans le chat.
      Je me connecte a un serveur et la par exemple il y a “Please register ……”
      Et dés que le message apparait, ça ouvre le menu GUI

        @SideOnly(Side.CLIENT)
        @SubscribeEvent
        public void onClientChatMessage(ClientChatReceivedEvent event)
        {
                if(event.message.getFormattedText().startsWith("/login"))
                {
               Minecraft.getMinecraft().displayGuiScreen(new GuiLogin());
                }
        }
      
      1 réponse Dernière réponse Répondre Citer 0
      • Deleted
        Deleted dernière édition par

        Salut, qu’est-ce qui ne va pas avec le code actuel ?

        1 réponse Dernière réponse Répondre Citer 0
        • P
          PlayFlop_ dernière édition par

          Bha en fait sa n’ouvre pas le gui…
          Alors que sur mon serveur j’ai mon plugin qui envoi le message dans le chat. C’est justement pour sa que je ne comprend pas…

          Envoyé de mon ZTE BLADE V7 LITE en utilisant Tapatalk

          1 réponse Dernière réponse Répondre Citer 0
          • Deleted
            Deleted dernière édition par

            Peint dans ton Event le String donné par event.message.getFormattedText() afin de voir s’il commencé réellement par “/login”. De mémoire, je crois qu’il commencé d’abord par un crochet suivis du pseudo du sender.

            1 réponse Dernière réponse Répondre Citer 0
            • P
              PlayFlop_ dernière édition par

              Comment je peut faire ça ?
              Je suis pas douer dans ce genre de chose…

              Envoyé de mon ZTE BLADE V7 LITE en utilisant Tapatalk

              Edit:
              J’ai réussi grace atoi, MERCI beaucoup ! ❤

              Editx2:

              J’ai un crash lorsque je clique sur le bouton qui exécute la commande /login ****** 😕
              Crash report:

              –-- Minecraft Crash Report ----
              // Surprise! Haha. Well, this is awkward.
              
              Time: 28/07/17 12:51
              Description: Unexpected error
              
              java.lang.StringIndexOutOfBoundsException: String index out of range: -5
              at java.lang.String.substring(Unknown Source)
              at fr.playflop.legitium.common.MainClass.onClientChatMessage(MainClass.java:273)
              at cpw.mods.fml.common.eventhandler.ASMEventHandler_35_MainClass_onClientChatMessage_ClientChatReceivedEvent.invoke(.dynamic)
              at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
              at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
              at net.minecraft.client.network.NetHandlerPlayClient.handleChat(NetHandlerPlayClient.java:793)
              at net.minecraft.network.play.server.S02PacketChat.processPacket(S02PacketChat.java:56)
              at net.minecraft.network.play.server.S02PacketChat.processPacket(S02PacketChat.java:83)
              at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
              at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317)
              at net.minecraft.client.Minecraft.runTick(Minecraft.java:1694)
              at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1040)
              at net.minecraft.client.Minecraft.run(Minecraft.java:962)
              at net.minecraft.client.main.Main.main(Main.java:164)
              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 net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
              at GradleStart.main(Unknown Source)
              
              A detailed walkthrough of the error, its code path and all known details is as follows:
              ---------------------------------------------------------------------------------------
              
              -- Head --
              Stacktrace:
              at java.lang.String.substring(Unknown Source)
              at fr.playflop.legitium.common.MainClass.onClientChatMessage(MainClass.java:273)
              at cpw.mods.fml.common.eventhandler.ASMEventHandler_35_MainClass_onClientChatMessage_ClientChatReceivedEvent.invoke(.dynamic)
              at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54)
              at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:140)
              at net.minecraft.client.network.NetHandlerPlayClient.handleChat(NetHandlerPlayClient.java:793)
              at net.minecraft.network.play.server.S02PacketChat.processPacket(S02PacketChat.java:56)
              at net.minecraft.network.play.server.S02PacketChat.processPacket(S02PacketChat.java:83)
              at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
              at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317)
              
              -- Affected level --
              Details:
              Level name: MpServer
              All players: 1 total; [EntityClientPlayerMP['PlayFlop'/366, l='MpServer', x=119,50, y=82,62, z=252,50]]
              Chunk stats: MultiplayerChunkCache: 441, 441
              Level seed: 0
              Level generator: ID 00 - default, ver 1\. Features enabled: false
              Level generator options: 
              Level spawn location: World: (112,64,256), Chunk: (at 0,4,0 in 7,16; contains blocks 112,0,256 to 127,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
              Level time: 5466227 game time, 39606228 day time
              Level dimension: 0
              Level storage version: 0x00000 - Unknown?
              Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
              Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
              Forced entities: 15 total; [EntityClientPlayerMP['PlayFlop'/366, l='MpServer', x=119,50, y=82,62, z=252,50], EntitySpider['Spider'/130, l='MpServer', x=118,00, y=13,00, z=274,28], EntityZombie['Zombie'/108, l='MpServer', x=76,50, y=22,00, z=273,97], EntityChicken['Chicken'/142, l='MpServer', x=165,75, y=66,00, z=220,89], EntitySkeleton['Skeleton'/430, l='MpServer', x=90,50, y=50,00, z=280,50], EntitySkeleton['Skeleton'/432, l='MpServer', x=83,50, y=43,00, z=257,50], EntityCreeper['Creeper'/148, l='MpServer', x=166,00, y=10,00, z=232,50], EntitySkeleton['Skeleton'/118, l='MpServer', x=80,66, y=13,00, z=291,50], EntityZombie['Zombie'/217, l='MpServer', x=80,50, y=51,00, z=229,50], EntitySkeleton['Skeleton'/121, l='MpServer', x=86,50, y=35,00, z=288,50], EntityZombie['Zombie'/122, l='MpServer', x=85,50, y=35,00, z=288,50], EntitySkeleton['Skeleton'/285, l='MpServer', x=79,69, y=17,00, z=265,72], EntitySkeleton['Skeleton'/286, l='MpServer', x=85,50, y=18,00, z=270,50], EntityZombie['Zombie'/127, l='MpServer', x=111,47, y=15,00, z=273,97], EntityEnderman['Enderman'/415, l='MpServer', x=133,50, y=31,00, z=274,50]]
              Retry entities: 0 total; []
              Server brand: Spigot
              Server type: Non-integrated multiplayer server
              Stacktrace:
              at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
              at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2567)
              at net.minecraft.client.Minecraft.run(Minecraft.java:991)
              at net.minecraft.client.main.Main.main(Main.java:164)
              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 net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
              at GradleStart.main(Unknown Source)
              
              – System Details --
              Details:
              Minecraft Version: 1.7.10
              Operating System: Windows 8.1 (amd64) version 6.3
              Java Version: 1.8.0_131, Oracle Corporation
              Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
              Memory: 856543456 bytes (816 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
              JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
              AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
              IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
              FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 7 mods loaded, 7 mods active
              States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
              UCHIJA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
              UCHIJA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
              UCHIJA Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
              UCHIJA CodeChickenCore{1.0.7.47} [CodeChicken Core] (minecraft.jar) 
              UCHIJA EraKnight{1.0} [EraKnight] (bin) 
              UCHIJA craftguide{1.6.8.1} [CraftGuide] (c.zip) 
              UCHIJA reachdisplaymod{1.0} [Reach Display Mod] ([1.7.10]ReachDisplayMod-1.0.jar) 
              GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 381.65' Renderer: 'GeForce GT 740M/PCIe/SSE2'
              Launched Version: 1.7.10
              LWJGL: 2.9.1
              OpenGL: GeForce GT 740M/PCIe/SSE2 GL version 4.5.0 NVIDIA 381.65, NVIDIA Corporation
              GL Caps: Using GL 1.3 multitexturing.
              Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
              Anisotropic filtering is supported and maximum anisotropy is 16.
              Shaders are available because OpenGL 2.1 is supported.
              
              Is Modded: Definitely; Client brand changed to 'fml,forge'
              Type: Client (map_client.txt)
              Resource Packs: []
              Current Language: English (US)
              Profiler Position: N/A (disabled)
              Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
              Anisotropic Filtering: Off (1)
              

              Eclipse:

              Stacktrace:
              at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
              at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2567)
              at net.minecraft.client.Minecraft.run(Minecraft.java:991)
              at net.minecraft.client.main.Main.main(Main.java:164)
              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 net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
              at GradleStart.main(Unknown Source)
              

              GuiLogin

              package fr.playflop.legitium.proxy;
              
              import java.util.Map.Entry;
              
              import net.minecraft.client.Minecraft;
              import net.minecraft.client.gui.FontRenderer;
              import net.minecraft.client.gui.GuiButton;
              import net.minecraft.client.gui.GuiScreen;
              import net.minecraft.client.gui.GuiTextField;
              import net.minecraft.client.resources.I18n;
              import net.minecraft.util.EnumChatFormatting;
              import net.minecraft.util.ResourceLocation;
              
              import org.lwjgl.input.Keyboard;
              import org.lwjgl.opengl.GL11;
              
              import cpw.mods.fml.client.config.GuiSlider;
              import fr.playflop.legitium.client.radio.RadioHandler;
              
              public class GuiLogin extends GuiScreen
              {
              private GuiTextField textfield;
              int guiWidth= 250; // Taille du gui (largeur)
              int guiHeight= 250;// Taille du gui (hauteur)
              public void initGui() {
              
              int posX = (this.width - guiWidth) / 2;
              int posY = (this.height - guiHeight) / 2;
              this.textfield = new GuiTextField(this.fontRendererObj, this.width / 2 - 78, this.height / 2 - 75, 150, 20);
                     this.buttonList.add(new GuiButton(10, this.width / 2 - 80, this.height / 2 - 45, 155, 20, I18n.format(EnumChatFormatting.GOLD + "Connection")));
              
              textfield.setMaxStringLength(16);
              textfield.setText("");
                     this.textfield.setFocused(false);
              
                  }
              protected void actionPerformed(GuiButton button) {
                      switch (button.id) {
                          case 10:
                          String mdp = textfield.getText();
                          Minecraft.getMinecraft().thePlayer.sendChatMessage("/login " + mdp);
                              this.mc.displayGuiScreen((GuiScreen) null);
                              this.mc.setIngameFocus();
                              //System.out.println("/login " + mdp);
                              break;
              
                      }
                  }
              @Override                                                               
              public void drawScreen(int x, int y, float ticks )
              {
              int guix =(width - guiWidth) /2 ;
              int guiy =(height - guiHeight) /2;
              
              GL11.glColor4f(1,1,1,1);
              drawDefaultBackground();
              
              mc.renderEngine.bindTexture(new ResourceLocation("eraknight:textures/gui/guilogin.png")); // Le chemin de ton GUI
              
              drawTexturedModalRect(guix, guiy, 0, 0, guiWidth, guiHeight);
              
              this.drawDefaultBackground();
              
              this.textfield.drawTextBox(); // On met ton textfield ici
              
              super.drawScreen(x, y, ticks);
              }
              @Override
              public boolean doesGuiPauseGame()
              {
              return false;
              }
              protected void keyTyped(char par1, int par2)
                  {
                      super.keyTyped(par1, par2);
                      this.textfield.textboxKeyTyped(par1, par2);
                  }
              
              public void updateScreen()
                  {
                      super.updateScreen();
                  }
              protected void mouseClicked(int x, int y, int btn) 
              {
                     super.mouseClicked(x, y, btn);
                     this.textfield.mouseClicked(x, y, btn);
              }
              
                  //Minecraft.getMinecraft().displayGuiScreen(null);
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                Le problème est ici : at fr.playflop.legitium.common.MainClass.onClientChatMessage(MainClass.java:273)
                Il nous faudrait cette ligne

                1 réponse Dernière réponse Répondre Citer 0
                • P
                  PlayFlop_ dernière édition par

                  @‘robin4002’:

                  Le problème est ici : at fr.playflop.legitium.common.MainClass.onClientChatMessage(MainClass.java:273)
                  Il nous faudrait cette ligne

                  La voici:

                  String message = event.message.getUnformattedText().substring(Minecraft.getMinecraft().getSession().getUsername().length() + 3, event.message.getUnformattedText().length());

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                    Tu essaies de coupe une partie de chaine plus grande que la chaine elle même.
                    Avant de faire ce code il faudrait la condition suivante :
                    if(message.length() > Minecraft.getMinecraft().getSession().getUsername().length() + 3)

                    pour éviter ce crash;

                    1 réponse Dernière réponse Répondre Citer 0
                    • P
                      PlayFlop_ dernière édition par

                      @‘robin4002’:

                      Tu essaies de coupe une partie de chaine plus grande que la chaine elle même.
                      Avant de faire ce code il faudrait la condition suivante :
                      if(message.length() > Minecraft.getMinecraft().getSession().getUsername().length() + 3)

                      pour éviter ce crash;

                      Le truc c’est que je veux pas diviser la ligne 😕

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                        Hein ? Je ne comprends pas le problème.

                        1 réponse Dernière réponse Répondre Citer 0
                        • P
                          PlayFlop_ dernière édition par

                          J’ai réglé mon souci, merci ! 🙂

                          1 réponse Dernière réponse Répondre Citer 0
                          • 1 / 1
                          • Premier message
                            Dernier message
                          Design by Woryk
                          Contact / Mentions Légales

                          MINECRAFT FORGE FRANCE © 2018

                          Powered by NodeBB