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

    Résolu Conflit entre GuiHandler

    1.8.x
    1.8
    3
    4
    776
    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.
    • Gabs
      Gabs dernière édition par

      Bonjour,

      Comme vous l’avez vus dans le titre j’ai un conflit entre GuiHandler.

      Je m’expliques:

      J’ai deux item: un item “panierlinge” et un item “coli” .

      Tout deux sont des items identique a l’item backpack .

      Mais voilà: les deux items appelle le même handler (même en utilisant les ID).

      Je vous passe les classes et les logs se serra plus simple de comprendre:

      classe coli:

      
      public class coli extends Item {
      
      @Override
      public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
      player.openGui(Main.instance, 3, world, (int) player.posX, (int) player.posY, (int) player.posZ);
      System.out.println("right click item coli");
      return stack;
      }
      
      }
      
      

      init Main class:

      
       @EventHandler
          public void init(FMLInitializationEvent event)
          {
          proxy.init();
      
      NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerPanierLinge());
      //  
      NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerInv());
      
      NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerColi());// c'est ce handler qui est appeller par les deux items
      System.out.println("init main class");
      //  
      // NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerMachine());
      
      //Events
          MinecraftForge.EVENT_BUS.register(new Events());
          FMLCommonHandler.instance().bus().register(new Events());
      
          }
      
      

      GuiHandler Coli:

      
      public class GuiHandlerColi implements IGuiHandler{
      
      @Override
      public Object getServerGuiElement(int ID, EntityPlayer player, World world,
      int x, int y, int z) {
      if(ID == 3)
      if (player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof coli))
      
      return new ContainerColi(player.inventory, new InventoryColi(player.getHeldItem(), 54));
      System.out.println("getServerGuiElement, ID:" + ID);
      return null;
      }
      
      @Override
      public Object getClientGuiElement(int ID, EntityPlayer player, World world,
      int x, int y, int z) {
      System.out.println("");
      if(ID == 3)
      if (player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof coli))
      return new GuiColi(player.inventory, new InventoryColi(player.getHeldItem(), 54));
      System.out.println("getClientGuiElement, ID:" + ID);
      return null;
      }
      
      }
      
      

      je vous passe l’item panierlinge:

      
      public class panierlinger extends Item {
      
      public panierlinger() {
      this.maxStackSize = 1; // N'oubliez pas ceci, çà empêche l'item d'être stackable
      
      }
      
      @Override
      public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
      player.openGui(Main.instance, 0, world, (int) player.posX, (int) player.posY, (int) player.posZ);
      System.out.println("right click panierlinge item");
      return stack;
      }
      
      }
      
      

      Et les logs:

      
      [11:21:28] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiHandlerColi:getClientGuiElement:26]: 
      [11:21:28] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiHandlerColi:getClientGuiElement:30]: getClientGuiElement, ID:3
      [11:21:28] [Client thread/INFO] [STDOUT]: [com.CSC.net.item.coli:onItemRightClick:15]: right click item coli
      [11:21:28] [Server thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiHandlerColi:getServerGuiElement:19]: getServerGuiElement, ID:3
      [11:21:28] [Server thread/INFO] [STDOUT]: [com.CSC.net.item.coli:onItemRightClick:15]: right click item coli
      [11:21:34] [Server thread/INFO]: <floriangabet>–------------
      [11:21:34] [Client thread/INFO]: [CHAT] <floriangabet>–------------
      [11:21:38] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiHandlerColi:getClientGuiElement:26]: 
      [11:21:38] [Client thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiHandlerColi:getClientGuiElement:30]: getClientGuiElement, ID:0
      [11:21:38] [Client thread/INFO] [STDOUT]: [com.CSC.net.item.panierlinger:onItemRightClick:20]: right click panierlinge item
      [11:21:38] [Server thread/INFO] [STDOUT]: [com.CSC.net.GUI.GuiHandlerColi:getServerGuiElement:19]: getServerGuiElement, ID:0
      [11:21:38] [Server thread/INFO] [STDOUT]: [com.CSC.net.item.panierlinger:onItemRightClick:20]: right click panierlinge item
      
      

      L’item panierlinge exécute le GuiHandlerColi alors qu’il ne devrais pas, de plus il y a un if ID == 3, et son id et de 0 .

      Merci d’avance :)</floriangabet></floriangabet>

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

        Il n’est pas possible d’avoir plusieurs gui handler. Le dernier a être enregistrer et le seul qui reste car à chaque fois que tu en enregistrer un nouveau ça écrase celui d’avant.
        Un mod = un gui handler.

        Je passe mon temps à le répéter dans la section support …

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

          Tu ne devrais pas avoir deux handlers, tout mod ne doit en avoir qu’un seul, dans tes items tu donner un id différent et mettre un if pour chaque id.

          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

            D’accord 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