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

      En gros tu veut plusieurs item dans le meme slot ?

      1 réponse Dernière réponse Répondre Citer 0
      • 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