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

      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