MFF

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

    Craft de machine type four.

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    12 Messages 3 Publieurs 2.7k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • T Hors-ligne
      thecraft38
      dernière édition par

      Oui c’est exactement sa

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

        Salut, il faut que tu regardes du coté de ta fonction canSmelt() (ou nom semblable) de ton four, tu dois regarder si la stackSize de l’ingrédient est supérieure à 2

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

          Le problème est que je n’ai pas de fonction cansmelt

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

            Elle doit avoir un autre nom je pense, montre les fonctions qui gèrent la cuisson de ton four.

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

              Tous le code qui gère la cuisson est sur le premier message le reste sert a la gui etc

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

                envoi le tile entity de ton block stp

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

                  Voila le title entity :

                  package thecraft.mod.common;
                  
                  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 TileEntityEwiliteMachine extends TileEntity implements IInventory
                  {
                  private ItemStack[] contents = new ItemStack[4];
                  private int workingTime = 0;
                  private int workingTimeNeeded = 200;
                  
                  @Override
                     public void writeToNBT(NBTTagCompound compound)
                     {
                         super.writeToNBT(compound);
                         NBTTagList nbttaglist = new NBTTagList();
                  
                         for (int i = 0; i < this.contents.length; ++i) //pour les slots
                         {
                             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)
                  {t
                  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.ewilitemachine";
                  }
                  
                  @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;
                         }
                         else
                         {
                             ItemStack itemstack = MachineTutoRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2]});
                             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 = EwiliteMachinerecipe.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
                  • SpyManS Hors-ligne
                    SpyMan
                    dernière édition par

                    Dans ta fonction canSmelt() ligne 174 tu verifi juste si dans les slots en question le stacksize de l’itemstack est SUPERIEURE ou EGALE au nombre d’items requis et tu demarre le craft
                    (et puis si tu y arrive pas envoi le dossier “src” et je te le ferais)

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

                      Je n’y arrive pas donc je te donne le src et j’ai une question au passage si tu veux par exemple plusieurs craft je vais devoir passer par un système d’éxeption comme le gui handler dans la class de recipes ?
                      http://www.mediafire.com/file/55shea1d1daoan4/src.zip

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

                        Je vais voir cela plus en détail quand j’aurais un peu plus de temps
                        tout ce que je sais c’est qu’il faut récupérer les itemstacks du craft et verif si en fonction du craft le stacksize de l’itemstack est supérieure ou égale a la quantité désiré, le check de la quantié doit se derouler dans dans la class du craft de la machine en question dans la fonction isSameKey si je me souviens bien et il faut par conséquent modifier aussi la fonction getSmeltingResult pour pouvoir recuperer de stacksize de chaque itemstack dans chaque slot de la mahine

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB