MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Texture item

    Planifier Épinglé Verrouillé Déplacé Résolu 1.11.x
    1.11.x
    43 Messages 9 Publieurs 8.7k Vues 1 Watching
    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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Faudrait passer par un event alors.

      1 réponse Dernière réponse Répondre Citer 0
      • S Hors-ligne
        Sebenf0rce
        dernière édition par

        @robin4002:

        Faudrait passer par un event alors.

        Ah d’accord 😞
        J’ai essayé de voir la liste des event. J’ai trouvé celui là qui pourrait m’être utile mais il ne semble pas exister en 1.11 : PlayerUseItemEvent

        1 réponse Dernière réponse Répondre Citer 0
        • Alexandre1156A Hors-ligne
          Alexandre1156
          dernière édition par

          @‘Sebenf0rce’:

          @‘robin4002’:

          Faudrait passer par un event alors.

          Ah d’accord 😞
          J’ai essayé de voir la liste des event. J’ai trouvé celui là qui pourrait m’être utile mais il ne semble pas exister en 1.11 : PlayerUseItemEvent

          Celui là :

          
          PlayerInteractEvent.RightClickBlock
          
          

          Il suffit de cancel l’event et d’afficher ton Gui.

          1 réponse Dernière réponse Répondre Citer 1
          • S Hors-ligne
            Sebenf0rce
            dernière édition par

            @Alexandre1156:

            @‘Sebenf0rce’:

            @‘robin4002’:

            Faudrait passer par un event alors.

            Ah d’accord 😞
            J’ai essayé de voir la liste des event. J’ai trouvé celui là qui pourrait m’être utile mais il ne semble pas exister en 1.11 : PlayerUseItemEvent

            Celui là :

            
            PlayerInteractEvent.RightClickBlock
            
            

            Il suffit de cancel l’event et d’afficher ton Gui.

            Merci, par contre comment je peux vérifier que le block a été right click avec mon item ?

            1 réponse Dernière réponse Répondre Citer 0
            • BrokenSwingB Hors-ligne
              BrokenSwing Moddeurs confirmés Rédacteurs
              dernière édition par

              Avec l’instance du joueur tu peux vérifier si l’item qu’il tient quand la main est ton item

              1 réponse Dernière réponse Répondre Citer 1
              • S Hors-ligne
                Sebenf0rce
                dernière édition par

                @‘BrokenSwing’:

                Avec l’instance du joueur tu peux vérifier si l’item qu’il tient quand la main est ton item

                J’ai réussis à faire ça (est-ce que je suis sur la bonne piste ?)

                public class EventPlayerUseItem {
                
                @SubscribeEvent
                public void onRightClick(PlayerInteractEvent.RightClickBlock event) {
                if (event.getItemStack() != null) {
                Item item = event.getItemStack().getItem();
                
                if (item == Items.chestExplorer) {
                event.setCanceled(true);
                player.openGui(Main.instance, 0, world, pos.getX(), pos.getY(), pos.getZ());
                }
                }
                }
                }
                

                Seulement je ne sais pas comment récupérer l’instance du player du coup la ligne suivante ne fonctionne pas : player.openGui(Main.instance, 0, world, pos.getX(), pos.getY(), pos.getZ());

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

                  event.getPlayer() ?

                  1 réponse Dernière réponse Répondre Citer 1
                  • S Hors-ligne
                    Sebenf0rce
                    dernière édition par

                    Alors j’ai du nouveau !

                    Voici ma classe maintenant :

                    public class EventPlayerUseItem {
                    
                    @SubscribeEvent
                    public void onRightClick(PlayerInteractEvent.RightClickBlock event) {
                    System.out.println("on rentre dans l'event");
                    if (event.getItemStack() != null) {
                    Item item = event.getItemStack().getItem();
                    
                    if (item == Items.chestExplorer) {
                    System.out.println("cliqué par un chest explorer");
                    event.setCanceled(true);
                    event.getEntityPlayer().openGui(Main.instance, 0, event.getWorld(), event.getPos().getX(), event.getPos().getY(), event.getPos().getZ());
                    }
                    }
                    }
                    }
                    

                    On voit apparaître mon gui cependant tout de suite après le gui du coffre apparait et je ne vois pas pourquoi.
                    C’est bien event.setCanceled(true); ?

                    Edit :

                    J’ai trouvé ça :

                    @SubscribeEvent
                    public void onGuiOpen(GuiOpenEvent event) {
                    System.out.println("A gui is open !");
                    if(event.) { //si je tiens l'objet
                    
                    }
                    }
                    

                    Je peux peut être utilisé ça pour cancel l’event ? Cependant je ne peux pas faire de event.getItemStack() comme avec l’event RightClickBlock  pour vérifier que mon item est utilisé. Y a t’il une autre solution pour vérifier si mon item est utilisé ?

                    1 réponse Dernière réponse Répondre Citer 0
                    • Benjamin LoisonB Hors-ligne
                      Benjamin Loison
                      dernière édition par

                      Tu sembles être côté client, regardes la liste des évents sur ce forum si tu peux cancer ou non ces évents.
                      Pour vérifier l’item penses à Minecraft.getMinecraft().thePlayer.itemInHand ou je ne sais plus très bien et tu check comme ça 😉

                      >! Développeur de Altis-Life (Arma III) sur Minecraft !
                      >! Site web     : https://lemnoslife.com

                      1 réponse Dernière réponse Répondre Citer 0
                      • S Hors-ligne
                        Sebenf0rce
                        dernière édition par

                        J’ai donc modifier la classe qui est comme ceci maintenant :

                        public class EventPlayerUseItem {
                        
                        @SubscribeEvent
                        public void onRightClick(PlayerInteractEvent.RightClickBlock event) {
                        System.out.println("on rentre dans l'event");
                        if (event.getItemStack() != null) {
                        Item item = event.getItemStack().getItem();
                        
                        if (item == Items.chestExplorer) {
                        System.out.println("cliqué par un chest explorer");
                        event.setCanceled(true);
                        event.getEntityPlayer().openGui(Main.instance, 0, event.getWorld(), event.getPos().getX(), event.getPos().getY(), event.getPos().getZ());
                        }
                        }
                        }
                        
                        @SubscribeEvent
                        public void onGuiOpen(GuiOpenEvent event) {
                        if(event.getGui() instanceof GuiChest && Minecraft.getMinecraft().player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND).getItem() == Items.chestExplorer) {
                        event.setCanceled(true);
                        }
                        }
                        }
                        

                        Il y a un petit problème, en effet lors de la première ouverture du coffre il ne se passe rien, mon inventaire disparaît et il y a une erreur dans la console.
                        Lorsque je reclick sur le coffre cette fois mon gui s’ouvre bien.

                        Voici l’erreur obtenu :

                        [13:13:58] [Client thread/FATAL]: Error executing task
                        java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 46, Size: 46
                        at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_141]
                        at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.util.Util.runTask(Util.java:30) [Util.class:?]
                        at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1117) [Minecraft.class:?]
                        at net.minecraft.client.Minecraft.run(Minecraft.java:407) [Minecraft.class:?]
                        at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_141]
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
                        at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_141]
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
                        at GradleStart.main(GradleStart.java:26) [start/:?]
                        Caused by: java.lang.IndexOutOfBoundsException: Index: 46, Size: 46
                        at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_141]
                        at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.inventory.Container.getSlot(Container.java:135) ~[Container.class:?]
                        at net.minecraft.inventory.Container.setAll(Container.java:559) ~[Container.class:?]
                        at net.minecraft.client.network.NetHandlerPlayClient.handleWindowItems(NetHandlerPlayClient.java:1306) ~[NetHandlerPlayClient.class:?]
                        at net.minecraft.network.play.server.SPacketWindowItems.processPacket(SPacketWindowItems.java:72) ~[SPacketWindowItems.class:?]
                        at net.minecraft.network.play.server.SPacketWindowItems.processPacket(SPacketWindowItems.java:13) ~[SPacketWindowItems.class:?]
                        at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
                        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_141]
                        at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.util.Util.runTask(Util.java:29) ~[Util.class:?]
                        … 15 more
                        [13:13:58] [Client thread/FATAL]: Error executing task
                        java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 54, Size: 46
                        at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_141]
                        at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.util.Util.runTask(Util.java:30) [Util.class:?]
                        at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1117) [Minecraft.class:?]
                        at net.minecraft.client.Minecraft.run(Minecraft.java:407) [Minecraft.class:?]
                        at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_141]
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
                        at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_141]
                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
                        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
                        at GradleStart.main(GradleStart.java:26) [start/:?]
                        Caused by: java.lang.IndexOutOfBoundsException: Index: 54, Size: 46
                        at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_141]
                        at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.inventory.Container.getSlot(Container.java:135) ~[Container.class:?]
                        at net.minecraft.inventory.Container.putStackInSlot(Container.java:551) ~[Container.class:?]
                        at net.minecraft.client.network.NetHandlerPlayClient.handleSetSlot(NetHandlerPlayClient.java:1262) ~[NetHandlerPlayClient.class:?]
                        at net.minecraft.network.play.server.SPacketSetSlot.processPacket(SPacketSetSlot.java:33) ~[SPacketSetSlot.class:?]
                        at net.minecraft.network.play.server.SPacketSetSlot.processPacket(SPacketSetSlot.java:11) ~[SPacketSetSlot.class:?]
                        at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
                        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_141]
                        at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_141]
                        at net.minecraft.util.Util.runTask(Util.java:29) ~[Util.class:?]
                        … 15 more
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • Benjamin LoisonB Hors-ligne
                          Benjamin Loison
                          dernière édition par

                          Mhh je ne vois pas désolé, sinon penses à la valise Java pour ton code 😉

                          >! Développeur de Altis-Life (Arma III) sur Minecraft !
                          >! Site web     : https://lemnoslife.com

                          1 réponse Dernière réponse Répondre Citer 0
                          • S Hors-ligne
                            Sebenf0rce
                            dernière édition par

                            Ah mince merci quand même 😞
                            Quelqu’un d’autre a une idée ?

                            Edit :

                            ```java

                            SubscribeEvent
                               public void onGuiOpen(GuiOpenEvent event) {
                                   if(event.getGui() instanceof GuiChest && Minecraft.getMinecraft().player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND).getItem() == Items.chestExplorer) {
                                       event.setCanceled(true);
                                       //Minecraft.getMinecraft().player.openGui(Main.instance, 0, Minecraft.getMinecraft().world, event., event.getPos().getY(), event.getPos().getZ());
                                   }
                               }

                            
                            c'est le cancel de cette méthode qui fait tout bugué en fait
                            est ce que vous savez par hasard si il y a une autre manière de cancel l'ouverture du gui ?
                            1 réponse Dernière réponse Répondre Citer 1
                            • FlowF Hors-ligne
                              Flow
                              dernière édition par

                              Quand Benjamin Loison te dis de penser aux Balises c’est pas pour rien ^^ C’est beaucoup plus lisible pour les personnes qui t’entourent elle sont à mettre,  au début de ton code tu mets :
                              :::
                              [.java]
                              :::

                              et à la fin

                              :::
                              [./java]
                              :::

                              SANS LE point bien évidemment…

                              Oui ce gif est drôle.

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

                              MINECRAFT FORGE FRANCE © 2024

                              Powered by NodeBB