MFF

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

    Problème GUI

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    76 Messages 6 Publieurs 11.9k 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.
    • BrokenSwingB Hors-ligne
      BrokenSwing Moddeurs confirmés Rédacteurs
      dernière édition par

      Ça rend pas trop mal :
      Gui :

      
      package com.google.SpyMan.Mechanicalcraft.common.BlockAlloyer;
      
      import org.lwjgl.opengl.GL11;
      
      import com.google.SpyMan.Mechanicalcraft.common.MechanicalCraft;
      
      import net.minecraft.client.gui.inventory.GuiContainer;
      import net.minecraft.client.resources.I18n;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.inventory.IInventory;
      import net.minecraft.util.ResourceLocation;
      
      public class GuiAlloyer extends GuiContainer
      {
      private static final ResourceLocation texture = new ResourceLocation(MechanicalCraft.MOD_ID,"textures/gui/container/GuiAlloyer1.png");
      private TileEntityAlloyer tileAlloyer;
      private IInventory playerInv;
      
      public GuiAlloyer(TileEntityAlloyer tile, InventoryPlayer inventory)
      {
      super(new ContainerAlloyer(tile, inventory));
      this.tileAlloyer = tile;
      this.playerInv = inventory;
      this.allowUserInput = false;
      this.ySize = 200;
      this.xSize = 200;
      }
      
      @Override
      protected void drawGuiContainerBackgroundLayer(float partialRenderTick, int x, int y)
      {
      GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
      this.mc.getTextureManager().bindTexture(texture);
      int k = (this.width - this.xSize) / 2;
      int l = (this.height - this.ySize) / 2;
      this.drawTexturedModalRect(k, l, 0, 0, 175, 200);
      
      if(this.tileAlloyer.isBurning())
      {
      /*
      * this.drawTexturedModalRect(x, y, u, v, width, height)
      *
      * x: correspond à la coordonnée x du gui (in-game) où s'affichera la texture de la barre de progression.
      * y: correspond à la coordonnée y du gui (in-game) où s'affichera la texture de la barre de progression.
      * u: correspond à la position x de votre barre de progression sur votre texture (dans les ressources, l'image .png).
      * v: correspond à la position y de votre barre de progression sur votre texture (dans les ressources, l'image .png).
      * width: correspond à la largeur du morceau de texture que vous voulez afficher.
      * height: correspond à la hauteur du morceau de texture que vous voulez afficher.
      */
      int i = this.tileAlloyer.getCookProgress();
      this.drawTexturedModalRect(k + 47, l + 46, 0, 2, 100, i);
      }
      }
      
      protected void drawGuiContainerForegroundLayer(int x, int y)
      {
      this.fontRendererObj.drawString(this.playerInv.hasCustomInventoryName() ? this.playerInv.getInventoryName() : I18n.format(this.playerInv.getInventoryName()), 9, this.ySize - 127, 4210752);
      }
      }
      
      

      Container :

      
      package com.google.SpyMan.Mechanicalcraft.common.BlockAlloyer;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.inventory.Container;
      import net.minecraft.inventory.IInventory;
      import net.minecraft.inventory.Slot;
      import net.minecraft.item.ItemStack;
      
      public class ContainerAlloyer extends Container
      {
      private TileEntityAlloyer tileAlloyer;
      
      public ContainerAlloyer(TileEntityAlloyer tile, InventoryPlayer inventory)
      {
      this.tileAlloyer = tile;
      this.addSlotToContainer(new Slot((IInventory)tile, 0, 43, 17));//dust 1
      this.addSlotToContainer(new Slot((IInventory)tile, 1, 69, 17));//dust 2
      this.addSlotToContainer(new Slot((IInventory)tile, 2, 56, 53));//coal
      this.addSlotToContainer(new AlloyerSlotResult(tile, 3, 116, 35));//result
      this.bindPlayerInventory(inventory);
      }
      
      @Override
      public boolean canInteractWith(EntityPlayer player)
      {
      return this.tileAlloyer.isUseableByPlayer(player);
      }
      
      private void bindPlayerInventory(InventoryPlayer inventory)
      {
      int i;
      for (i = 0; i < 3; ++i)
      {
      for (int j = 0; j < 9; ++j)
      {
      this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
      }
      }
      
      for (i = 0; i < 9; ++i)
      {
      this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142));
      }
      }
      
      public ItemStack transferStackInSlot(EntityPlayer player, int quantity)
      {
      ItemStack itemstack = null;
      Slot slot = (Slot)this.inventorySlots.get(quantity);
      
      if (slot != null && slot.getHasStack())
      {
      ItemStack itemstack1 = slot.getStack();
      itemstack = itemstack1.copy();
      
      if (quantity < this.tileAlloyer.getSizeInventory())
      {
      if (!this.mergeItemStack(itemstack1, this.tileAlloyer.getSizeInventory(), this.inventorySlots.size(), true))
      {
      return null;
      }
      }
      else if (!this.mergeItemStack(itemstack1, 0, this.tileAlloyer.getSizeInventory(), false))
      {
      return null;
      }
      
      if (itemstack1.stackSize == 0)
      {
      slot.putStack((ItemStack)null);
      }
      else
      {
      slot.onSlotChanged();
      }
      }
      return itemstack;
      }
      
      public void onContainerClosed(EntityPlayer player)
      {
      super.onContainerClosed(player);
      this.tileAlloyer.closeInventory();
      }
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • SCAREXS Hors-ligne
        SCAREX
        dernière édition par

        Les valeurs dépendent de ta texture : déjà il faut regarder si ta texture fait du 256x256

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

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

          Merci de votre aide, mais il me reste encore un problème, la flèche de progression de s’affiche pas et comment modifie ton la vitesse de craft ?

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

            Euh, c’est normal que workingTimeNeeded soit toujours égal à 0 (cela correspond à un craft instantané), c’est cette valeur qui contrôle la vitesse (en ticks ton si tu met 20 ça fera 1 seconde) et si tu l’augmentes, normalement la flèche s’affichera.

            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
            • SpyManS Hors-ligne
              SpyMan
              dernière édition par

              ça ne fonctionne pas 😕 c’est toujours instantané

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

                Je viens de m’apercevoir que la barre de progression s’affiche en fonction du nombre de craft quelle peut faire et pas en fonction du craft en cour

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

                  Comment ça en fonction du nombre de craft qu’elle peut faire ?

                  Et attention au double-post ^^

                  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
                  • SpyManS Hors-ligne
                    SpyMan
                    dernière édition par

                    le craft se lance mais la progress bar augmente en fonction du nombre de craft terminé mais pas pour le craft en cour
                    J’ai mit workingTimeNeeded = 200 ça change rien 😕

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

                      Ah oui c’est bizarre… Je vais regarder où il pourrait avoir une autre erreur

                      EDIT:

                          @SideOnly(Side.CLIENT)
                          public int getCookProgress()
                          {
                              return this.workingTime * 41 / this.workingTimeNeeded;
                          }
                      

                      Le 41 est censé être la largeur de ta barre, sauf que sur ta texture, la barre fait 24 pixels, donc mets ça à 24.

                      Si ça marche pas, la seule autre source possible de l’erreur est la synchro client-serveur.

                      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
                      • SpyManS Hors-ligne
                        SpyMan
                        dernière édition par

                        C’est déjà fait depuis longtemps 🙂 c’est que tu a pas le dernier src.zip

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

                          @‘SpyMan’:

                          C’est déjà fait depuis longtemps 🙂 c’est que tu a pas le dernier src.zip

                          Pourtant je suis sur d’avoir le dernier  😕

                          Alors ça ne peut être que la synchro client-serveur, c’est le seul truc différent par rapport à mon four.

                          Mets un condition if(!wordObj.isRemote) avant le contenu de ta méthode updateEntity et dans ton container, mets les fonctions addCraftingToCrafters(), detectAndSendChanges et updateProgressBar() du four vanilla.

                          Si ça toujours marche pas, je sais pas d’où ça vient

                          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
                          • SpyManS Hors-ligne
                            SpyMan
                            dernière édition par

                            Je crains que ça ce fonctionne poins

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

                              La vitesse de craft c’est la variable workingTimeNeeded dans ton TE et pour la barre de progression c’est a peu preès ça :

                              
                              if(this.tileAlloyer.isBurning())
                              {
                              /*
                              * this.drawTexturedModalRect(x, y, u, v, width, height)
                              *
                              * x: correspond à la coordonnée x du gui (in-game) où s'affichera la texture de la barre de progression.
                              * y: correspond à la coordonnée y du gui (in-game) où s'affichera la texture de la barre de progression.
                              * u: correspond à la position x de votre barre de progression sur votre texture (dans les ressources, l'image .png).
                              * v: correspond à la position y de votre barre de progression sur votre texture (dans les ressources, l'image .png).
                              * width: correspond à la largeur du morceau de texture que vous voulez afficher.
                              * height: correspond à la hauteur du morceau de texture que vous voulez afficher.
                              */
                              int i = tileAlloyer.getCookProgress() * 41 / 24; //Fix parce que ya pas les bonne valeurs dans ton TE
                              this.drawTexturedModalRect(k + 80, l + 35, 176, 14, i, 24);
                              }
                              
                              
                              1 réponse Dernière réponse Répondre Citer 0
                              • SpyManS Hors-ligne
                                SpyMan
                                dernière édition par

                                Mais pourquoi la variable workingTimeNeeded ne change pas le vitesse craft

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

                                  Si ça ne change pas la durée de craft c’est sûrement parce que tu ne repose pas un bloc pour tester, tu utilise le bloc déjà posé contenant l’ancienne valeur de workingTimeNeeded, essai en reposant un bloc

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

                                    enfin workingTimeNeeded a fait effet, mais cette maudite progress bar est toujours basé sur les craft terminés et pas ceux en cour

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

                                      C’est à dire les craft terminés ? Dans ton TE tu as ça ?

                                      
                                      @SideOnly(Side.CLIENT)
                                      public int getCookProgress()
                                      {
                                      return this.workingTime * 24 / this.workingTimeNeeded;
                                      }
                                      
                                      

                                      Et dans ton gui :

                                      
                                      if(this.tileAlloyer.isBurning())
                                      {
                                      
                                      int i = tileAlloyer.getCookProgress();
                                      this.drawTexturedModalRect(k + 80, l + 35, 176, 14, i, 24);
                                      }
                                      
                                      
                                      1 réponse Dernière réponse Répondre Citer 0
                                      • SpyManS Hors-ligne
                                        SpyMan
                                        dernière édition par

                                        Oui biensur

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

                                          “int i = this.tileAlloyer.getCookProgress() * 41 / 24;”

                                          Retire le “* 41 / 24”

                                          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
                                          • BrokenSwingB Hors-ligne
                                            BrokenSwing Moddeurs confirmés Rédacteurs
                                            dernière édition par

                                            Ton container :

                                            
                                            public class ContainerAlloyer extends Container
                                            {
                                            private TileEntityAlloyer tileAlloyer;
                                            private int workingTime;
                                            private int workingTimeNeeded;
                                            
                                            public ContainerAlloyer(TileEntityAlloyer tile, InventoryPlayer inventory)
                                            {
                                            this.tileAlloyer = tile;
                                            this.addSlotToContainer(new Slot((IInventory)tile, 0, 43, 17));//dust 1
                                            this.addSlotToContainer(new Slot((IInventory)tile, 1, 69, 17));//dust 2
                                            this.addSlotToContainer(new Slot((IInventory)tile, 2, 56, 53));//coal
                                            this.addSlotToContainer(new AlloyerSlotResult(tile, 3, 116, 35));//result
                                            this.bindPlayerInventory(inventory);
                                            }
                                            
                                            @Override
                                            public boolean canInteractWith(EntityPlayer player)
                                            {
                                            return this.tileAlloyer.isUseableByPlayer(player);
                                            }
                                            
                                            private void bindPlayerInventory(InventoryPlayer inventory)
                                            {
                                            int i;
                                            for (i = 0; i < 3; ++i)
                                            {
                                            for (int j = 0; j < 9; ++j)
                                            {
                                            this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
                                            }
                                            }
                                            
                                            for (i = 0; i < 9; ++i)
                                            {
                                            this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142));
                                            }
                                            }
                                            
                                            public ItemStack transferStackInSlot(EntityPlayer player, int quantity)
                                            {
                                            ItemStack itemstack = null;
                                            Slot slot = (Slot)this.inventorySlots.get(quantity);
                                            
                                            if (slot != null && slot.getHasStack())
                                            {
                                            ItemStack itemstack1 = slot.getStack();
                                            itemstack = itemstack1.copy();
                                            
                                            if (quantity < this.tileAlloyer.getSizeInventory())
                                            {
                                            if (!this.mergeItemStack(itemstack1, this.tileAlloyer.getSizeInventory(), this.inventorySlots.size(), true))
                                            {
                                            return null;
                                            }
                                            }
                                            else if (!this.mergeItemStack(itemstack1, 0, this.tileAlloyer.getSizeInventory(), false))
                                            {
                                            return null;
                                            }
                                            
                                            if (itemstack1.stackSize == 0)
                                            {
                                            slot.putStack((ItemStack)null);
                                            }
                                            else
                                            {
                                            slot.onSlotChanged();
                                            }
                                            }
                                            return itemstack;
                                            }
                                            
                                            public void onContainerClosed(EntityPlayer player)
                                            {
                                            super.onContainerClosed(player);
                                            this.tileAlloyer.closeInventory();
                                            }
                                            
                                            public void detectAndSendChanges()
                                            {
                                            super.detectAndSendChanges();
                                            
                                            for(int i = 0; i < this.crafters.size(); ++i)
                                            {
                                            ICrafting icrafting = (ICrafting)this.crafters.get(i);
                                            
                                            if(this.workingTime != this.tileAlloyer.workingTime)
                                            {
                                            icrafting.sendProgressBarUpdate(this, 0, this.tileAlloyer.workingTime);
                                            }
                                            
                                            if(this.workingTimeNeeded != this.tileAlloyer.workingTimeNeeded)
                                            {
                                            icrafting.sendProgressBarUpdate(this, 1, this.tileAlloyer.workingTimeNeeded);
                                            }
                                            }
                                            
                                            this.workingTime = this.tileAlloyer.workingTime;
                                            this.workingTimeNeeded = this.tileAlloyer.workingTimeNeeded;
                                            }
                                            
                                            @SideOnly(Side.CLIENT)
                                            public void updateProgressBar(int id, int value)
                                            {
                                            if(id == 0)
                                            {
                                            this.tileAlloyer.workingTime = value;
                                            }
                                            
                                            if(id == 1)
                                            {
                                            this.tileAlloyer.workingTimeNeeded = value;
                                            }
                                            }
                                            }
                                            
                                            

                                            Et tu dois bien sûr passer en public les 2 variables de durée dans ton TE

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB