MFF

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

    Création nouvelle recette sur une machine

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    20 Messages 3 Publieurs 2.8k 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.
    • M Hors-ligne
      mosca421
      dernière édition par

      
      package fr.serveur.mods.MachinePala;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.inventory.IInventory;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.nbt.NBTTagList;
      import net.minecraft.tileentity.TileEntity;
      
      public class TileEntityMachinePala extends TileEntity implements IInventory {
      
      private ItemStack[] contents = new ItemStack[13]; 
      private int workingTime = 0; 
      private int workingTimeNeeded = 10; //Test
      
      @Override 
          public void writeToNBT(NBTTagCompound compound)
          {
              super.writeToNBT(compound);
              NBTTagList nbttaglist = new NBTTagList();
      
              for (int i = 0; i < this.contents.length; ++i) 
              {
                  if (this.contents* != null)
                  {
                      NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                      nbttagcompound1.setByte("Slot", (byte)i);
                      this.contents*.writeToNBT(nbttagcompound1);
                      nbttaglist.appendTag(nbttagcompound1);
                  }
              }
      
              compound.setTag("Items", nbttaglist);
              compound.setShort("workingTime",(short)this.workingTime);
              compound.setShort("workingTimeNeeded", (short)this.workingTimeNeeded);
          }
      
      @Override
          public void readFromNBT(NBTTagCompound compound)
          {
              super.readFromNBT(compound);
      
              NBTTagList nbttaglist = compound.getTagList("Items", 10);
              this.contents = new ItemStack[this.getSizeInventory()];
      
              for (int i = 0; i < nbttaglist.tagCount(); ++i) 
              {
                  NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                  int j = nbttagcompound1.getByte("Slot") & 255;
      
                  if (j >= 0 && j < this.contents.length)
                  {
                      this.contents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                  }
              }
      
              this.workingTime = compound.getShort("workingTime"); 
              this.workingTimeNeeded = compound.getShort("workingTimeNeeded");
          }
      
      @Override
      public int getSizeInventory() { 
      return this.contents.length;
      }
      
      @Override
      public ItemStack getStackInSlot(int slotIndex) { 
      return this.contents[slotIndex];
      }
      
      @Override 
      public ItemStack decrStackSize(int slotIndex, int amount) {
      if (this.contents[slotIndex] != null)
             {
                 ItemStack itemstack;
      
                 if (this.contents[slotIndex].stackSize <= amount)
                 {
                     itemstack = this.contents[slotIndex];
                     this.contents[slotIndex] = null;
                     this.markDirty();
                     return itemstack;
                 }
                 else
                 {
                     itemstack = this.contents[slotIndex].splitStack(amount);
      
                     if (this.contents[slotIndex].stackSize == 0)
                     {
                         this.contents[slotIndex] = null;
                     }
      
                     this.markDirty();
                     return itemstack;
                 }
             }
             else
             {
                 return null;
             }
      }
      
      @Override
      public ItemStack getStackInSlotOnClosing(int slotIndex) {
      if (this.contents[slotIndex] != null)
              {
                  ItemStack itemstack = this.contents[slotIndex];
                  this.contents[slotIndex] = null;
                  return itemstack;
              }
              else
              {
                  return null;
              }
      }
      
      @Override
      public void setInventorySlotContents(int slotIndex, ItemStack stack) {
      this.contents[slotIndex] = stack;
      
              if (stack != null && stack.stackSize > this.getInventoryStackLimit())
              {
                  stack.stackSize = this.getInventoryStackLimit();
              }
      
              this.markDirty();
      }
      
      @Override
      public String getInventoryName() { 
      return "tile.machineTuto";
      }
      
      @Override
      public boolean hasCustomInventoryName() {
      return false;
      }
      
      @Override
      public int getInventoryStackLimit() {
      return 64;
      }
      
      @Override
      public boolean isUseableByPlayer(EntityPlayer player) {
      return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
      }
      
      @Override
      public void openInventory() {
      
      }
      
      @Override
      public void closeInventory() {
      
      }
      
      @Override
      public boolean isItemValidForSlot(int slot, ItemStack stack) {
      return slot == 3 ? false : true;
      }
      
      public boolean isBurning()
          {
      return this.workingTime > 0;
      }
      
      private boolean canSmelt()
          {
              if (this.contents[0] == null || this.contents[1] == null || this.contents[2] == null) 
              {
                  return false; //On ne peut pas lancer le processus
              }
              else
              {
                  ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2]}); //Il y a une erreur ici, c'est normal, on y vient après (c'est pour les recettes)
                  if (itemstack == null) return false; 
                  if (this.contents[3] == null) return true; 
                  if (!this.contents[3].isItemEqual(itemstack)) return false; 
                  int result = contents[3].stackSize + itemstack.stackSize;
                  return result <= getInventoryStackLimit() && result <= this.contents[3].getMaxStackSize(); 
              }
          }
      
      public void updateEntity() 
          {
          if(this.isBurning() && this.canSmelt()) 
          {
          ++this.workingTime; 
          }
          if(this.canSmelt() && !this.isBurning()) 
          {
          this.workingTime = 1; 
          }
          if(this.canSmelt() && this.workingTime == this.workingTimeNeeded) 
          {
          this.smeltItem(); 
          this.workingTime = 0; 
          }
              if(!this.canSmelt()) 
              {
                     this.workingTime= 0; 
              }
          }
      
      public void smeltItem()
          {
              if (this.canSmelt())
              {
                  ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2]}); 
                   if (this.contents[3] == null) 
                   {
                        this.contents[3] = itemstack.copy(); 
                   }
                   else if (this.contents[3].getItem() == itemstack.getItem()) 
                   {
                        this.contents[3].stackSize += itemstack.stackSize; 
                   }
      
                   –this.contents[0].stackSize; 
                   –this.contents[1].stackSize;
                   –this.contents[2].stackSize;
      
                   if (this.contents[0].stackSize <= 0) 
                   {
                       this.contents[0] = null;
                   }
                   if (this.contents[1].stackSize <= 0)
                   {
                       this.contents[1] = null;
                   }
                   if (this.contents[2].stackSize <= 0)
                   {
                       this.contents[2] = null;
                   }
              }
          }
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        Bah voilà, il est là le problème, il faut que tu modifie correctement les fonctions canSmelt() et smeltItem(). Elles sont ici faites pour 3 slots, or tu en as beaucoup plus

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

          Toujours pareil j’ai modifier tileentity :

          package fr.serveur.mods.MachinePala;
          
          import net.minecraft.entity.player.EntityPlayer;
          import net.minecraft.inventory.IInventory;
          import net.minecraft.item.ItemStack;
          import net.minecraft.nbt.NBTTagCompound;
          import net.minecraft.nbt.NBTTagList;
          import net.minecraft.tileentity.TileEntity;
          
          public class TileEntityMachinePala extends TileEntity implements IInventory {
          
          private ItemStack[] contents = new ItemStack[13]; 
          private int workingTime = 0; 
          private int workingTimeNeeded = 10; //Test
          
          @Override 
              public void writeToNBT(NBTTagCompound compound)
              {
                  super.writeToNBT(compound);
                  NBTTagList nbttaglist = new NBTTagList();
          
                  for (int i = 0; i < this.contents.length; ++i) 
                  {
                      if (this.contents* != null)
                      {
                          NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                          nbttagcompound1.setByte("Slot", (byte)i);
                          this.contents*.writeToNBT(nbttagcompound1);
                          nbttaglist.appendTag(nbttagcompound1);
                      }
                  }
          
                  compound.setTag("Items", nbttaglist);
                  compound.setShort("workingTime",(short)this.workingTime);
                  compound.setShort("workingTimeNeeded", (short)this.workingTimeNeeded);
              }
          
          @Override
              public void readFromNBT(NBTTagCompound compound)
              {
                  super.readFromNBT(compound);
          
                  NBTTagList nbttaglist = compound.getTagList("Items", 10);
                  this.contents = new ItemStack[this.getSizeInventory()];
          
                  for (int i = 0; i < nbttaglist.tagCount(); ++i) 
                  {
                      NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                      int j = nbttagcompound1.getByte("Slot") & 255;
          
                      if (j >= 0 && j < this.contents.length)
                      {
                          this.contents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                      }
                  }
          
                  this.workingTime = compound.getShort("workingTime"); 
                  this.workingTimeNeeded = compound.getShort("workingTimeNeeded");
              }
          
          @Override
          public int getSizeInventory() { 
          return this.contents.length;
          }
          
          @Override
          public ItemStack getStackInSlot(int slotIndex) { 
          return this.contents[slotIndex];
          }
          
          @Override 
          public ItemStack decrStackSize(int slotIndex, int amount) {
          if (this.contents[slotIndex] != null)
                 {
                     ItemStack itemstack;
          
                     if (this.contents[slotIndex].stackSize <= amount)
                     {
                         itemstack = this.contents[slotIndex];
                         this.contents[slotIndex] = null;
                         this.markDirty();
                         return itemstack;
                     }
                     else
                     {
                         itemstack = this.contents[slotIndex].splitStack(amount);
          
                         if (this.contents[slotIndex].stackSize == 0)
                         {
                             this.contents[slotIndex] = null;
                         }
          
                         this.markDirty();
                         return itemstack;
                     }
                 }
                 else
                 {
                     return null;
                 }
          }
          
          @Override
          public ItemStack getStackInSlotOnClosing(int slotIndex) {
          if (this.contents[slotIndex] != null)
                  {
                      ItemStack itemstack = this.contents[slotIndex];
                      this.contents[slotIndex] = null;
                      return itemstack;
                  }
                  else
                  {
                      return null;
                  }
          }
          
          @Override
          public void setInventorySlotContents(int slotIndex, ItemStack stack) {
          this.contents[slotIndex] = stack;
          
                  if (stack != null && stack.stackSize > this.getInventoryStackLimit())
                  {
                      stack.stackSize = this.getInventoryStackLimit();
                  }
          
                  this.markDirty();
          }
          
          @Override
          public String getInventoryName() { 
          return "tile.machineTuto";
          }
          
          @Override
          public boolean hasCustomInventoryName() {
          return false;
          }
          
          @Override
          public int getInventoryStackLimit() {
          return 64;
          }
          
          @Override
          public boolean isUseableByPlayer(EntityPlayer player) {
          return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
          }
          
          @Override
          public void openInventory() {
          
          }
          
          @Override
          public void closeInventory() {
          
          }
          
          @Override
          public boolean isItemValidForSlot(int slot, ItemStack stack) {
          return slot == 12 ? false : true;
          }
          
          public boolean isBurning()
              {
          return this.workingTime > 0;
          }
          
          private boolean canSmelt()
              {
                  if (this.contents[0] == null || this.contents[1] == null || this.contents[2] == null || this.contents[3] == null || this.contents[4] == null || this.contents[5] == null || this.contents[6] == null || this.contents[7] == null || this.contents[8] == null || this.contents[9] == null || this.contents[10] == null || this.contents[11] == null) 
                  {
                      return false; //On ne peut pas lancer le processus
                  }
                  else
                  {
                      ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2]}); //Il y a une erreur ici, c'est normal, on y vient après (c'est pour les recettes)
                      if (itemstack == null) return false; 
                      if (this.contents[12] == null) return true; 
                      if (!this.contents[12].isItemEqual(itemstack)) return false; 
                      int result = contents[12].stackSize + itemstack.stackSize;
                      return result <= getInventoryStackLimit() && result <= this.contents[3].getMaxStackSize(); 
                  }
              }
          
          public void updateEntity() 
              {
              if(this.isBurning() && this.canSmelt()) 
              {
              ++this.workingTime; 
              }
              if(this.canSmelt() && !this.isBurning()) 
              {
              this.workingTime = 1; 
              }
              if(this.canSmelt() && this.workingTime == this.workingTimeNeeded) 
              {
              this.smeltItem(); 
              this.workingTime = 0; 
              }
                  if(!this.canSmelt()) 
                  {
                         this.workingTime= 0; 
                  }
              }
          
          public void smeltItem()
              {
                  if (this.canSmelt())
                  {
                      ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2],this.contents[3], this.contents[4], this.contents[5],this.contents[6], this.contents[7], this.contents[8],this.contents[9], this.contents[10], this.contents[11]}); 
                       if (this.contents[12] == null) 
                       {
                            this.contents[12] = itemstack.copy(); 
                       }
                       else if (this.contents[12].getItem() == itemstack.getItem()) 
                       {
                            this.contents[12].stackSize += itemstack.stackSize; 
                       }
          
                       –this.contents[0].stackSize; 
                       –this.contents[1].stackSize;
                       –this.contents[2].stackSize;
                       –this.contents[3].stackSize; 
                       –this.contents[4].stackSize;
                       –this.contents[5].stackSize;
                       –this.contents[6].stackSize; 
                       –this.contents[7].stackSize;
                       –this.contents[8].stackSize;
                       –this.contents[9].stackSize; 
                       –this.contents[10].stackSize;
                       –this.contents[11].stackSize;
          
                       if (this.contents[0].stackSize <= 0) 
                       {
                           this.contents[0] = null;
                       }
                       if (this.contents[1].stackSize <= 0)
                       {
                           this.contents[1] = null;
                       }
                       if (this.contents[2].stackSize <= 0)
                       {
                           this.contents[2] = null;
                       }
                       if (this.contents[3].stackSize <= 0) 
                       {
                           this.contents[3] = null;
                       }
                       if (this.contents[4].stackSize <= 0)
                       {
                           this.contents[4] = null;
                       }
                       if (this.contents[5].stackSize <= 0)
                       {
                           this.contents[5] = null;
                       }
                       if (this.contents[6].stackSize <= 0) 
                       {
                           this.contents[6] = null;
                       }
                       if (this.contents[7].stackSize <= 0)
                       {
                           this.contents[7] = null;
                       }
                       if (this.contents[8].stackSize <= 0)
                       {
                           this.contents[8] = null;
                       }
                       if (this.contents[9].stackSize <= 0) 
                       {
                           this.contents[9] = null;
                       }
                       if (this.contents[10].stackSize <= 0)
                       {
                           this.contents[10] = null;
                       }
                       if (this.contents[11].stackSize <= 0)
                       {
                           this.contents[11] = null;
                       }
                  }
              }
          }
          
          
          1 réponse Dernière réponse Répondre Citer 0
          • BrokenSwingB Hors-ligne
            BrokenSwing Moddeurs confirmés Rédacteurs
            dernière édition par

            Ligne 176, faut passer les ItemStacks en arguments sinon il trouvera jamais la recette
            Et ligne 12 il me semble qu’il faudrait que tu mettes [12] et pas [13]

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

              package fr.serveur.mods.MachinePala;
              
              import net.minecraft.entity.player.EntityPlayer;
              import net.minecraft.inventory.IInventory;
              import net.minecraft.item.ItemStack;
              import net.minecraft.nbt.NBTTagCompound;
              import net.minecraft.nbt.NBTTagList;
              import net.minecraft.tileentity.TileEntity;
              
              public class TileEntityMachinePala extends TileEntity implements IInventory {
              
              private ItemStack[] contents = new ItemStack[13]; 
              private int workingTime = 0; 
              private int workingTimeNeeded = 10; //Test
              
              @Override 
                  public void writeToNBT(NBTTagCompound compound)
                  {
                      super.writeToNBT(compound);
                      NBTTagList nbttaglist = new NBTTagList();
              
                      for (int i = 0; i < this.contents.length; ++i) 
                      {
                          if (this.contents* != null)
                          {
                              NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                              nbttagcompound1.setByte("Slot", (byte)i);
                              this.contents*.writeToNBT(nbttagcompound1);
                              nbttaglist.appendTag(nbttagcompound1);
                          }
                      }
              
                      compound.setTag("Items", nbttaglist);
                      compound.setShort("workingTime",(short)this.workingTime);
                      compound.setShort("workingTimeNeeded", (short)this.workingTimeNeeded);
                  }
              
              @Override
                  public void readFromNBT(NBTTagCompound compound)
                  {
                      super.readFromNBT(compound);
              
                      NBTTagList nbttaglist = compound.getTagList("Items", 10);
                      this.contents = new ItemStack[this.getSizeInventory()];
              
                      for (int i = 0; i < nbttaglist.tagCount(); ++i) 
                      {
                          NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                          int j = nbttagcompound1.getByte("Slot") & 255;
              
                          if (j >= 0 && j < this.contents.length)
                          {
                              this.contents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                          }
                      }
              
                      this.workingTime = compound.getShort("workingTime"); 
                      this.workingTimeNeeded = compound.getShort("workingTimeNeeded");
                  }
              
              @Override
              public int getSizeInventory() { 
              return this.contents.length;
              }
              
              @Override
              public ItemStack getStackInSlot(int slotIndex) { 
              return this.contents[slotIndex];
              }
              
              @Override 
              public ItemStack decrStackSize(int slotIndex, int amount) {
              if (this.contents[slotIndex] != null)
                     {
                         ItemStack itemstack;
              
                         if (this.contents[slotIndex].stackSize <= amount)
                         {
                             itemstack = this.contents[slotIndex];
                             this.contents[slotIndex] = null;
                             this.markDirty();
                             return itemstack;
                         }
                         else
                         {
                             itemstack = this.contents[slotIndex].splitStack(amount);
              
                             if (this.contents[slotIndex].stackSize == 0)
                             {
                                 this.contents[slotIndex] = null;
                             }
              
                             this.markDirty();
                             return itemstack;
                         }
                     }
                     else
                     {
                         return null;
                     }
              }
              
              @Override
              public ItemStack getStackInSlotOnClosing(int slotIndex) {
              if (this.contents[slotIndex] != null)
                      {
                          ItemStack itemstack = this.contents[slotIndex];
                          this.contents[slotIndex] = null;
                          return itemstack;
                      }
                      else
                      {
                          return null;
                      }
              }
              
              @Override
              public void setInventorySlotContents(int slotIndex, ItemStack stack) {
              this.contents[slotIndex] = stack;
              
                      if (stack != null && stack.stackSize > this.getInventoryStackLimit())
                      {
                          stack.stackSize = this.getInventoryStackLimit();
                      }
              
                      this.markDirty();
              }
              
              @Override
              public String getInventoryName() { 
              return "tile.machineTuto";
              }
              
              @Override
              public boolean hasCustomInventoryName() {
              return false;
              }
              
              @Override
              public int getInventoryStackLimit() {
              return 64;
              }
              
              @Override
              public boolean isUseableByPlayer(EntityPlayer player) {
              return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
              }
              
              @Override
              public void openInventory() {
              
              }
              
              @Override
              public void closeInventory() {
              
              }
              
              @Override
              public boolean isItemValidForSlot(int slot, ItemStack stack) {
              return slot == 12 ? false : true;
              }
              
              public boolean isBurning()
                  {
              return this.workingTime > 0;
              }
              
              private boolean canSmelt()
                  {
                      if (this.contents[0] == null || this.contents[1] == null || this.contents[2] == null || this.contents[3] == null || this.contents[4] == null || this.contents[5] == null || this.contents[6] == null || this.contents[7] == null || this.contents[8] == null || this.contents[9] == null || this.contents[10] == null || this.contents[11] == null) 
                      {
                          return false; //On ne peut pas lancer le processus
                      }
                      else
                      {
                          ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2],this.contents[3], this.contents[4], this.contents[5],this.contents[6], this.contents[7], this.contents[8],this.contents[9], this.contents[10], this.contents[11]}); //Il y a une erreur ici, c'est normal, on y vient après (c'est pour les recettes)
                          if (itemstack == null) return false; 
                          if (this.contents[12] == null) return true; 
                          if (!this.contents[12].isItemEqual(itemstack)) return false; 
                          int result = contents[12].stackSize + itemstack.stackSize;
                          return result <= getInventoryStackLimit() && result <= this.contents[12].getMaxStackSize(); 
                      }
                  }
              
              public void updateEntity() 
                  {
                  if(this.isBurning() && this.canSmelt()) 
                  {
                  ++this.workingTime; 
                  }
                  if(this.canSmelt() && !this.isBurning()) 
                  {
                  this.workingTime = 1; 
                  }
                  if(this.canSmelt() && this.workingTime == this.workingTimeNeeded) 
                  {
                  this.smeltItem(); 
                  this.workingTime = 0; 
                  }
                      if(!this.canSmelt()) 
                      {
                             this.workingTime= 0; 
                      }
                  }
              
              public void smeltItem()
                  {
                      if (this.canSmelt())
                      {
                          ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2],this.contents[3], this.contents[4], this.contents[5],this.contents[6], this.contents[7], this.contents[8],this.contents[9], this.contents[10], this.contents[11]}); 
                           if (this.contents[12] == null) 
                           {
                                this.contents[12] = itemstack.copy(); 
                           }
                           else if (this.contents[12].getItem() == itemstack.getItem()) 
                           {
                                this.contents[12].stackSize += itemstack.stackSize; 
                           }
              
                           –this.contents[0].stackSize; 
                           –this.contents[1].stackSize;
                           –this.contents[2].stackSize;
                           –this.contents[3].stackSize; 
                           –this.contents[4].stackSize;
                           –this.contents[5].stackSize;
                           –this.contents[6].stackSize; 
                           –this.contents[7].stackSize;
                           –this.contents[8].stackSize;
                           –this.contents[9].stackSize; 
                           –this.contents[10].stackSize;
                           –this.contents[11].stackSize;
              
                           if (this.contents[0].stackSize <= 0) 
                           {
                               this.contents[0] = null;
                           }
                           if (this.contents[1].stackSize <= 0)
                           {
                               this.contents[1] = null;
                           }
                           if (this.contents[2].stackSize <= 0)
                           {
                               this.contents[2] = null;
                           }
                           if (this.contents[3].stackSize <= 0) 
                           {
                               this.contents[3] = null;
                           }
                           if (this.contents[4].stackSize <= 0)
                           {
                               this.contents[4] = null;
                           }
                           if (this.contents[5].stackSize <= 0)
                           {
                               this.contents[5] = null;
                           }
                           if (this.contents[6].stackSize <= 0) 
                           {
                               this.contents[6] = null;
                           }
                           if (this.contents[7].stackSize <= 0)
                           {
                               this.contents[7] = null;
                           }
                           if (this.contents[8].stackSize <= 0)
                           {
                               this.contents[8] = null;
                           }
                           if (this.contents[9].stackSize <= 0) 
                           {
                               this.contents[9] = null;
                           }
                           if (this.contents[10].stackSize <= 0)
                           {
                               this.contents[10] = null;
                           }
                           if (this.contents[11].stackSize <= 0)
                           {
                               this.contents[11] = null;
                           }
                      }
                  }
              }
              
              

              Toujours pareil =/

              Ligne 12 = 12 = crash
              13 cela ne crash pas

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

                Ah mais tu as 13 slots, pas 12 c’est pour ça, dans ton premier post tu dit avoir 12 slots, 11 d’inputs et 1 d’output mais en fait tu as 13 slots, 12 d’input et 1 d’output

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

                  nop j’ai bien 11 slots et 1 de sortie
                  Mais comme j’ai vue sur un tuto il y a toujours un chiffre en plus exemple 10 slot faudra mettre 11

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

                    
                    package fr.serveur.mods.MachinePala;
                    
                           import net.minecraft.entity.player.EntityPlayer;
                           import net.minecraft.inventory.IInventory;
                           import net.minecraft.item.ItemStack;
                           import net.minecraft.nbt.NBTTagCompound;
                           import net.minecraft.nbt.NBTTagList;
                           import net.minecraft.tileentity.TileEntity;
                    
                    public class TileEntityMachinePala extends TileEntity implements IInventory {
                    
                       private ItemStack[] contents = new ItemStack[13];
                       private int workingTime = 0;
                       private int workingTimeNeeded = 10; //Test
                    
                       @Override
                       public void writeToNBT(NBTTagCompound compound)
                       {
                           super.writeToNBT(compound);
                           NBTTagList nbttaglist = new NBTTagList();
                    
                           for (int i = 0; i < this.contents.length; ++i)
                           {
                               if (this.contents* != null)
                               {
                                   NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                                   nbttagcompound1.setByte("Slot", (byte)i);
                                   this.contents*.writeToNBT(nbttagcompound1);
                                   nbttaglist.appendTag(nbttagcompound1);
                               }
                           }
                    
                           compound.setTag("Items", nbttaglist);
                           compound.setShort("workingTime",(short)this.workingTime);
                           compound.setShort("workingTimeNeeded", (short)this.workingTimeNeeded);
                       }
                    
                       @Override
                       public void readFromNBT(NBTTagCompound compound)
                       {
                           super.readFromNBT(compound);
                    
                           NBTTagList nbttaglist = compound.getTagList("Items", 10);
                           this.contents = new ItemStack[this.getSizeInventory()];
                    
                           for (int i = 0; i < nbttaglist.tagCount(); ++i)
                           {
                               NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                               int j = nbttagcompound1.getByte("Slot") & 255;
                    
                               if (j >= 0 && j < this.contents.length)
                               {
                                   this.contents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                               }
                           }
                    
                           this.workingTime = compound.getShort("workingTime");
                           this.workingTimeNeeded = compound.getShort("workingTimeNeeded");
                       }
                    
                       @Override
                       public int getSizeInventory() {
                           return this.contents.length;
                       }
                    
                       @Override
                       public ItemStack getStackInSlot(int slotIndex) {
                           return this.contents[slotIndex];
                       }
                    
                       @Override
                       public ItemStack decrStackSize(int slotIndex, int amount) {
                           if (this.contents[slotIndex] != null)
                           {
                               ItemStack itemstack;
                    
                               if (this.contents[slotIndex].stackSize <= amount)
                               {
                                   itemstack = this.contents[slotIndex];
                                   this.contents[slotIndex] = null;
                                   this.markDirty();
                                   return itemstack;
                               }
                               else
                               {
                                   itemstack = this.contents[slotIndex].splitStack(amount);
                    
                                   if (this.contents[slotIndex].stackSize == 0)
                                   {
                                       this.contents[slotIndex] = null;
                                   }
                    
                                   this.markDirty();
                                   return itemstack;
                               }
                           }
                           else
                           {
                               return null;
                           }
                       }
                    
                       @Override
                       public ItemStack getStackInSlotOnClosing(int slotIndex) {
                           if (this.contents[slotIndex] != null)
                           {
                               ItemStack itemstack = this.contents[slotIndex];
                               this.contents[slotIndex] = null;
                               return itemstack;
                           }
                           else
                           {
                               return null;
                           }
                       }
                    
                       @Override
                       public void setInventorySlotContents(int slotIndex, ItemStack stack) {
                           this.contents[slotIndex] = stack;
                    
                           if (stack != null && stack.stackSize > this.getInventoryStackLimit())
                           {
                               stack.stackSize = this.getInventoryStackLimit();
                           }
                    
                           this.markDirty();
                       }
                    
                       @Override
                       public String getInventoryName() {
                           return "tile.machineTuto";
                       }
                    
                       @Override
                       public boolean hasCustomInventoryName() {
                           return false;
                       }
                    
                       @Override
                       public int getInventoryStackLimit() {
                           return 64;
                       }
                    
                       @Override
                       public boolean isUseableByPlayer(EntityPlayer player) {
                           return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
                       }
                    
                       @Override
                       public void openInventory() {
                    
                       }
                    
                       @Override
                       public void closeInventory() {
                    
                       }
                    
                       @Override
                       public boolean isItemValidForSlot(int slot, ItemStack stack) {
                           return slot != 13;
                       }
                    
                       public boolean isBurning()
                       {
                           return this.workingTime > 0;
                       }
                    
                       private boolean canSmelt()
                       {
                           if (this.contents[0] == null || this.contents[1] == null || this.contents[2] == null || this.contents[3] == null || this.contents[4] == null || this.contents[5] == null || this.contents[6] == null || this.contents[7] == null || this.contents[8] == null || this.contents[9] == null || this.contents[10] == null || this.contents[11] == null || this.contents[12] == null)
                           {
                               return false; //On ne peut pas lancer le processus
                           }
                           else
                           {
                               ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2],this.contents[3], this.contents[4], this.contents[5],this.contents[6], this.contents[7], this.contents[8],this.contents[9], this.contents[10], this.contents[11], this.contents[12]}); //Il y a une erreur ici, c'est normal, on y vient après (c'est pour les recettes)
                               if (itemstack == null) return false;
                               if (this.contents[13] == null) return true;
                               if (!this.contents[13].isItemEqual(itemstack)) return false;
                               int result = contents[13].stackSize + itemstack.stackSize;
                               return result <= getInventoryStackLimit() && result <= this.contents[13].getMaxStackSize();
                           }
                       }
                    
                       public void updateEntity()
                       {
                           if(this.isBurning() && this.canSmelt())
                           {
                               ++this.workingTime;
                           }
                           if(this.canSmelt() && !this.isBurning())
                           {
                               this.workingTime = 1;
                           }
                           if(this.canSmelt() && this.workingTime == this.workingTimeNeeded)
                           {
                               this.smeltItem();
                               this.workingTime = 0;
                           }
                           if(!this.canSmelt())
                           {
                               this.workingTime= 0;
                           }
                       }
                    
                       public void smeltItem()
                       {
                           if (this.canSmelt())
                           {
                               ItemStack itemstack = MachineRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2],this.contents[3], this.contents[4], this.contents[5],this.contents[6], this.contents[7], this.contents[8],this.contents[9], this.contents[10], this.contents[11], this.contents[12]});
                               if (this.contents[13] == null)
                               {
                                   this.contents[13] = itemstack.copy();
                               }
                               else if (this.contents[13].getItem() == itemstack.getItem())
                               {
                                   this.contents[13].stackSize += itemstack.stackSize;
                               }
                    
                               –this.contents[0].stackSize;
                               –this.contents[1].stackSize;
                               –this.contents[2].stackSize;
                               –this.contents[3].stackSize;
                               –this.contents[4].stackSize;
                               –this.contents[5].stackSize;
                               –this.contents[6].stackSize;
                               –this.contents[7].stackSize;
                               –this.contents[8].stackSize;
                               –this.contents[9].stackSize;
                               –this.contents[10].stackSize;
                               –this.contents[11].stackSize;
                               –this.contents[12].stackSize;
                    
                               if (this.contents[0].stackSize <= 0)
                               {
                                   this.contents[0] = null;
                               }
                               if (this.contents[1].stackSize <= 0)
                               {
                                   this.contents[1] = null;
                               }
                               if (this.contents[2].stackSize <= 0)
                               {
                                   this.contents[2] = null;
                               }
                               if (this.contents[3].stackSize <= 0)
                               {
                                   this.contents[3] = null;
                               }
                               if (this.contents[4].stackSize <= 0)
                               {
                                   this.contents[4] = null;
                               }
                               if (this.contents[5].stackSize <= 0)
                               {
                                   this.contents[5] = null;
                               }
                               if (this.contents[6].stackSize <= 0)
                               {
                                   this.contents[6] = null;
                               }
                               if (this.contents[7].stackSize <= 0)
                               {
                                   this.contents[7] = null;
                               }
                               if (this.contents[8].stackSize <= 0)
                               {
                                   this.contents[8] = null;
                               }
                               if (this.contents[9].stackSize <= 0)
                               {
                                   this.contents[9] = null;
                               }
                               if (this.contents[10].stackSize <= 0)
                               {
                                   this.contents[10] = null;
                               }
                               if (this.contents[11].stackSize <= 0)
                               {
                                   this.contents[11] = null;
                               }
                               if(this.contents[12].stackSize <= 0)
                               {
                                   this.contents[12] = null;
                               }
                           }
                       }
                    }
                    
                    

                    Essai

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

                      Nop ça ne marche pas =/

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

                        Bah oui, normal que ça marche pas, j’ai écrit n’importe quoi -_-’ (je viens de m’en apercevoir) J’y retourne.

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

                          Tu peux m’envoyer la classe de ton bloc que je test

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

                            package fr.serveur.mods.MachinePala;
                            
                            import fr.serveur.mods.Mods;
                            import net.minecraft.block.Block;
                            import net.minecraft.block.BlockContainer;
                            import net.minecraft.block.material.Material;
                            import net.minecraft.creativetab.CreativeTabs;
                            import net.minecraft.entity.item.EntityItem;
                            import net.minecraft.entity.player.EntityPlayer;
                            import net.minecraft.inventory.IInventory;
                            import net.minecraft.item.ItemStack;
                            import net.minecraft.nbt.NBTTagCompound;
                            import net.minecraft.tileentity.TileEntity;
                            import net.minecraft.world.World;
                            
                            public class MachinePala extends BlockContainer{
                            
                            public MachinePala()
                            {
                              super(Material.rock); //Mettez le material qui convient
                              this.setResistance(8.0F);
                              this.setHarvestLevel("pickaxe", 2); //Outil pour casser le bloc, pour le chiffre : 0=bois, 1=pierre, 2=fer, 3=diamant
                              this.setBlockTextureName(Mods.MODID + ":machinePala");
                              this.setCreativeTab(CreativeTabs.tabBlock);//N'oubliez pas de remplacer "ModTutoriel"
                              // … Mettez les attributs complémentaires que vous voulez
                            }
                            
                            @Override
                                public TileEntity createNewTileEntity(World world, int metadata) //Instancie le TileEntity
                                {
                                    return new TileEntityMachinePala();
                                }
                            
                                @Override
                                public boolean hasTileEntity(int metadata) //Permet de savoir si le bloc a un TileEntity
                                {
                                    return true;
                                }
                            
                                public void breakBlock(World world, int x, int y, int z, Block block, int metadata)
                                {
                                    TileEntity tileentity = world.getTileEntity(x, y, z);
                            
                                   if (tileentity instanceof IInventory)
                                   {
                                    IInventory inv = (IInventory)tileentity;
                                       for (int i1 = 0; i1 < inv.getSizeInventory(); ++i1)
                                       {
                                           ItemStack itemstack = inv.getStackInSlot(i1);
                            
                                           if (itemstack != null)
                                           {
                                               float f = world.rand.nextFloat() * 0.8F + 0.1F;
                                               float f1 = world.rand.nextFloat() * 0.8F + 0.1F;
                                               EntityItem entityitem;
                            
                                               for (float f2 = world.rand.nextFloat() * 0.8F + 0.1F; itemstack.stackSize > 0; world.spawnEntityInWorld(entityitem))
                                               {
                                                   int j1 = world.rand.nextInt(21) + 10;
                            
                                                   if (j1 > itemstack.stackSize)
                                                   {
                                                       j1 = itemstack.stackSize;
                                                   }
                            
                                                   itemstack.stackSize -= j1;
                                                   entityitem = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
                                                   float f3 = 0.05F;
                                                   entityitem.motionX = (double)((float)world.rand.nextGaussian() * f3);
                                                   entityitem.motionY = (double)((float)world.rand.nextGaussian() * f3 + 0.2F);
                                                   entityitem.motionZ = (double)((float)world.rand.nextGaussian() * f3);
                            
                                                   if (itemstack.hasTagCompound())
                                                   {
                                                       entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
                                                   }
                                               }
                                           }
                                       }
                            
                                       world.func_147453_f(x, y, z, block);
                                   }
                            
                                    super.breakBlock(world, x, y, z, block, metadata);
                                }
                            
                                public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
                                {
                                    if(world.isRemote)
                                    {
                                        return true;
                                    }
                                    else
                                    {
                                        player.openGui(Mods.instance, 0, world, x, y, z);
                                        return true;
                                    }
                                }
                            
                            }
                            
                            

                            Voila Voila

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

                              Il y avait un problème lors de ta déclaration de slot, tu as sauté l’id 2
                              Je m’y remet demain si d’ici là personne n’a résolu le problème, chez moi il est 2h30, je vais dormir.

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

                                J’ai corriger mais toujours rien =/
                                Bod Pareil =p

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

                                  Commit sur github

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

                                    Merci !

                                    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