MFF

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

    Inventaire personnalisé

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    5 Messages 2 Publieurs 1.5k 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.
    • MinantcraftM Hors-ligne
      Minantcraft
      dernière édition par

      J’ai plusieurs problèmes avec mon inventaire personnalisé:

      1. Quand on clique sur un items pour le déplacer, il est directement remis à sa place donc impossible de déplacer les items et si on fais clique molette et qu’on met un objet dans un autre slot et puis qu’on clique dessus, il disparait
      2. Quand j’arrive à mettre un item dans un de mes slots perso, quand je ferme l’inventaire il est droppé

      Je crois qu’il faut utiliser les nbttag et/ou les paquets mais je ne sais pas comment m’y prendre.

      GUI handler:

      public class GuiHandlerMod implements IGuiHandler
      {
      
          @Override
          public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
          {
              if(ID == 1)
              {
                  return new ContainerInventory(player);
              }
              return null;
          }
      
          @Override
          public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
          {
              if(ID == 1)
              {
                  return new GuiInventory(player);
              }
              return null;
          }
      }
      

      Container Inventory:

      public class ContainerInventory extends Container implements IInventory
      {
          public ItemStack[] content = new ItemStack[6];
          private final EntityPlayer player;
      
          public ContainerInventory(EntityPlayer p)
          {
              player = p;
              this.addSlotToContainer(new Slot(this, 0, 180, 93));
              this.addSlotToContainer(new Slot(this, 1, 198, 93));
      
              this.addSlotToContainer(new Slot(this, 2, 180, 124));
              this.addSlotToContainer(new Slot(this, 3, 198, 124));
              this.addSlotToContainer(new Slot(this, 4, 180, 142));
              this.addSlotToContainer(new Slot(this, 5, 198, 142));
      
              this.bindPlayerInventory(player.inventory);
          }
      
          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));
             }
         }
      
          @Override
          public boolean canInteractWith(EntityPlayer player)
          {
              return true;
          }
      
          @Override
          public int getSizeInventory()
          {
              return 42;
          }
      
          @Override
          public ItemStack getStackInSlot(int index)
          {
              return this.content[index];
          }
      
          @Override
          public ItemStack decrStackSize(int index, int amount)
          {
              ItemStack stack = getStackInSlot(index);
              if (stack != null) {
                  if (stack.stackSize > amount) {
                      stack = stack.splitStack(amount);
                      if (stack.stackSize == 0) this.content[index] = null;
                  } else {
                      this.content[index] = null;
                  }
              }
              return stack;
          }
      
          @Override
          public ItemStack getStackInSlotOnClosing(int index)
          {
              ItemStack stack = getStackInSlot(index);
              if (stack != null) this.content[index] = null;
              return stack;
          }
      
          @Override
          public void setInventorySlotContents(int index, ItemStack stack)
          {
              this.content[index] = stack;
          }
      
          @Override
          public String getInventoryName()
          {
              return "container.inventory";
          }
      
          @Override
          public boolean hasCustomInventoryName()
          {
              return false;
          }
      
          @Override
          public int getInventoryStackLimit()
          {
              return 64;
          }
      
          @Override
          public void markDirty()
          {}
      
          @Override
          public boolean isUseableByPlayer(EntityPlayer p_70300_1_)
          {
              return true;
          }
      
          @Override
          public void openInventory()
          {}
      
          @Override
          public void closeInventory()
          {}
      
          @Override
          public boolean isItemValidForSlot(int slot, ItemStack stack)
          {
              return true;
          }
      
          public ItemStack transferStackInSlot(EntityPlayer player, int id)
          {
              ItemStack itemstack = null;
              Slot slot = (Slot)this.inventorySlots.get(id);
      
              if (slot != null && slot.getHasStack())
              {
                  ItemStack itemstack1 = slot.getStack();
                  itemstack = itemstack1.copy();
      
                  if (id == 0)
                  {
                      if (!this.mergeItemStack(itemstack1, 9, 45, true))
                      {
                          return null;
                      }
      
                      slot.onSlotChange(itemstack1, itemstack);
                  }
                  else if (id >= 1 && id < 5)
                  {
                      if (!this.mergeItemStack(itemstack1, 9, 45, false))
                      {
                          return null;
                      }
                  }
                  else if (id >= 5 && id < 9)
                  {
                      if (!this.mergeItemStack(itemstack1, 9, 45, false))
                      {
                          return null;
                      }
                  }
                  else if (itemstack.getItem() instanceof ItemArmor && !((Slot)this.inventorySlots.get(5 + ((ItemArmor)itemstack.getItem()).armorType)).getHasStack())
                  {
                      int j = 5 + ((ItemArmor)itemstack.getItem()).armorType;
      
                      if (!this.mergeItemStack(itemstack1, j, j + 1, false))
                      {
                          return null;
                      }
                  }
                  else if (id >= 9 && id < 36)
                  {
                      if (!this.mergeItemStack(itemstack1, 36, 45, false))
                      {
                          return null;
                      }
                  }
                  else if (id >= 36 && id < 45)
                  {
                      if (!this.mergeItemStack(itemstack1, 9, 36, false))
                      {
                          return null;
                      }
                  }
                  else if (!this.mergeItemStack(itemstack1, 9, 45, false))
                  {
                      return null;
                  }
      
                  if (itemstack1.stackSize == 0)
                  {
                      slot.putStack((ItemStack)null);
                  }
                  else
                  {
                      slot.onSlotChanged();
                  }
      
                  if (itemstack1.stackSize == itemstack.stackSize)
                  {
                      return null;
                  }
      
                  slot.onPickupFromSlot(player, itemstack1);
              }
      
              return itemstack;
          }
      }
      

      GuiInventory:

      public class GuiInventory extends GuiContainer
      {
         private static final ResourceLocation textures = new ResourceLocation(Reference.MOD_ID, "textures/gui/container/brawlcraft_inventory.png");
         private IInventory playerInv;
      
         public GuiInventory(EntityPlayer player)
         {
             super(new ContainerInventory(player));
             this.playerInv = player.inventory;
             this.allowUserInput = false;
             this.xSize = 228;
             this.ySize = 166;
         }
      
         @Override
         protected void drawGuiContainerBackgroundLayer(float partialRenderTick, int x, int y)
         {
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            this.mc.getTextureManager().bindTexture(textures);
            int k = (this.width - this.xSize) / 2;
            int l = (this.height - this.ySize) / 2;
            this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
         }
      
         protected void drawGuiContainerForegroundLayer(int x, int y)
         {
            String tileName = "container.inventory";
            this.fontRendererObj.drawString(tileName, (this.xSize - this.fontRendererObj.getStringWidth(tileName)) / 2, 6, 0x00ff00);
            String tileName2 = "weapons";
            this.fontRendererObj.drawString(tileName, (this.xSize - this.fontRendererObj.getStringWidth(tileName)) / 2, 6, 0x00ff00);
            String tileName3 = "gadgets";
            this.fontRendererObj.drawString(tileName, (this.xSize - this.fontRendererObj.getStringWidth(tileName)) / 2, 6, 0x00ff00);
         }
      }
      

      Merci d’avance

      Minantcraft ;)

      >! Binary Dimension
      [url=https://minecraft.cu…

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

        Le problème vient de ta fonction transferStackInslot, ce que tu fais de tes items n’est pas très claire

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

          Oui je l’ai rajouter mais ça faisait la même chose avant

          Envoyé de mon SM-G360F en utilisant Tapatalk

          Minantcraft ;)

          >! Binary Dimension
          [url=https://minecraft.cu…

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

            Essaie de détailler ce que tu veux faire pour chaque slot pour ensuite le traduire en code

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

              Bien c’est l’inventaire de base mais avec 6 slots en plus, 2 réservés à des trucs extends weapons et 4 extends gadgets

              Minantcraft 😉

              Minantcraft ;)

              >! Binary Dimension
              [url=https://minecraft.cu…

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

              MINECRAFT FORGE FRANCE © 2024

              Powered by NodeBB