MFF

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

    [1.8+/1.9+/1.10+][NEI] Créer un plugin NotEnoughItems pour sa table de craft/son four

    Planifier Épinglé Verrouillé Déplacé Tutoriels des membres
    53 Messages 8 Publieurs 14.9k Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • MinantcraftM Hors-ligne
      Minantcraft
      dernière édition par

      @‘AymericRed’:

      Rédaction du tutoriel (enfin) totalement terminée, j’ai juste à vérifier si je me suis pas gouré quelque part, et c’est bon 😉

      Super merci beaucoup 🙂

      PS: Pour le bonus tu pourrait expliquer comment faire pour ajouter un texte au ‘r’ ou au ‘u’ pour avoir une description comme pour l’unstable ingot la description de son utilisation dangereuse. Ou en appuyant sur ‘r’ sur un item, un texte qui dit qu’il se trouve dans les donjons, …

      Minantcraft ;)

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

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

        Bonne idée, je vais voir ça

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

          @‘AymericRed’:

          Bonne idée, je vais voir ça

          On merci

          Minantcraft 😉

          Minantcraft ;)

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

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

            Bonjour, je voudrais savoir quelles sont les choses à enlever si on à pas besoin de fuel. Et quelles sont les choses à ajouter si on à plusieurs ingrédient. PS: Ma machine est du même genre que ça: https://www.minecraftforgefrance.fr/showthread.php?tid=2017

            Minantcraft ;)

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

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

              Salut, je pense que tu devrais supprimer tout ce qui touche au mot “fuel” dans la classe du handler du four (et ne pas faire de handler pour le fuel), et modifier la classe “SmeltingPair” pour qu’elle prenne en charge plusieurs ingrédients, puis modifier les fonctions qui chargent les recettes. Si t’a besoin d’aide, je pense que ce sera plus simple par MP 😉

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

                Une queston je pourrais savoir comment certaint mod comme mekanisme… peuvent montrer leur crafd dans une machine sur nei ?

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

                  *Si je vous ai[st] aidé, n’oubliez pas de m’aider en me donnant un petit +

                  Et si vous est une marque de pluriel et pas un vouvoiement, aidé%(red)

                  Minantcraft ;)

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

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

                    @Yeyvo Ils utilisent l’API de NEI (comme ce tutoriel) et adaptent le code pour afficher les recettes des machines.

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

                      @‘AymericRed’:

                      @Yeyvo Ils utilisent l’API de NEI (comme ce tutoriel) et adaptent le code pour afficher les recettes des machines.

                      Je croit que ça pourrait mérité un tuto je vais commencé a lire leur code et j’en ferais un je croit

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

                        Alors j’ai peut-être zappé quelque chose, mais il y a déjà ce tuto.

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

                          Srx? Sur mff ?

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

                            Bah…le sujet sur lequel tu es actuellement traite de NEI.

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

                              Correction de quelques petites erreurs dans le code pour les fours, améliorations du sommaire, des pré-requis et ajout de liens pour passer certaines parties qui peuvent être inutiles à certains.

                              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
                              • InfiniteI Hors-ligne
                                Infinite
                                dernière édition par robin4002

                                Pourquoi a chaque fois que je fais un truc ,ça va pas  😢

                                Aidez moi svp !

                                Mes Sites(Mes Sites)
                                |
                                |    Site général : Game & play
                                |   Site de projets (en dev !) :Infinite's Ressources
                                J'ai et je suis content d'avoir 16,75 points d'ICRating

                                1 réponse Dernière réponse Répondre Citer 0
                                • InfiniteI Hors-ligne
                                  Infinite
                                  dernière édition par robin4002

                                  Pourquoi ça fonctionne pas  😢

                                  Aidez moi svp !

                                  buildscript {
                                      repositories {
                                          mavenCentral()
                                          maven {
                                              name = "forge"
                                              url = "http://files.minecraftforge.net/maven"
                                          }
                                          maven {
                                              name = "sonatype"
                                              url = "https://oss.sonatype.org/content/repositories/snapshots/"
                                          }
                                  maven {
                                  name 'CB Repo'
                                  url "http://chickenbones.net/maven/"
                                   }
                                      }
                                      dependencies {
                                          classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
                                      }
                                  }
                                  
                                  apply plugin: 'forge'
                                  
                                  version = "1.0"
                                  group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
                                  archivesBaseName = "modid"
                                  
                                  minecraft {
                                      version = "1.7.10-10.13.4.1614-1.7.10"
                                      runDir = "eclipse"
                                  }
                                  
                                  dependencies {
                                      // you may put jars on which you depend on in ./libs
                                      // or you may define them like so..
                                      //compile "some.group:artifact:version:classifier"
                                      //compile "some.group:artifact:version"
                                  
                                      // real examples
                                      //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
                                      //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
                                  
                                      // for more info…
                                      // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
                                      // http://www.gradle.org/docs/current/userguide/dependency_management.html
                                  deobfCompile  "codechicken:NotEnoughItems:1.7.10-1.0.5.120:deobf"
                                  
                                  }
                                  
                                  processResources
                                  {
                                      // this will ensure that this task is redone when the versions change.
                                      inputs.property "version", project.version
                                      inputs.property "mcversion", project.minecraft.version
                                  
                                      // replace stuff in mcmod.info, nothing else
                                      from(sourceSets.main.resources.srcDirs) {
                                          include 'mcmod.info'
                                  
                                          // replace version and mcversion
                                          expand 'version':project.version, 'mcversion':project.minecraft.version
                                      }
                                  
                                      // copy everything else, thats not the mcmod.info
                                      from(sourceSets.main.resources.srcDirs) {
                                          exclude 'mcmod.info'
                                      }
                                  }
                                  

                                  Mes Sites(Mes Sites)
                                  |
                                  |    Site général : Game & play
                                  |   Site de projets (en dev !) :Infinite's Ressources
                                  J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                                    Bon alors après avoir un peu regardé sur internet, la raison est ce que je pensais : 1.7.10.
                                    J’ai l’impression que le gradle fourni avec la 1.7.10 n’a pas cette fonction, remplaces “deobfCompile” par “compile” et ça devrait fonctionner.

                                    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
                                    • InfiniteI Hors-ligne
                                      Infinite
                                      dernière édition par robin4002

                                      On va dire que ça fonctionne pas tout a fait 😕

                                      Dans son tuto SCAREX utilise la version dev de NEI , c’est pas ce que je devrai faire ?

                                      On peut voir que la deobf est pas disponible en 1.7.10

                                      0_1535669542553_neidl1.7.PNG
                                      0_1535669545304_neidl1.11.PNG

                                      Mes Sites(Mes Sites)
                                      |
                                      |    Site général : Game & play
                                      |   Site de projets (en dev !) :Infinite's Ressources
                                      J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                                        Ce sont les versions dev qu’il faut utiliser.

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

                                          Bonjour !

                                          J’ai suivi le tutoriel de BrokenSwing pour faire un “block de type four” et j’ai suivi ce tutoriel mais j’ai l’impression de voir les tutoriels différemment des autres XD

                                          J’ai plusieurs erreurs indiqués par eclipse :
                                          sur “instance” de Map <itemstack, itemstack=“”>recipes = CompressorRecipes.instance().getSmeltingList();(eclipse dit :The method instance() is undefined for the type CompressorRecipes)

                                          et sur “getItemBurnTime” de int burnTime = CompressorTE.getItemBurnTime(item); (eclipse me dit The method getItemBurnTime(ItemStack) is undefined for the type CompressorTE)

                                          Voici ma class CompressorRecipeHandler :

                                          
                                          package com.iutils.infinite.nei;
                                          
                                          import java.awt.Rectangle;
                                          import java.util.ArrayList;
                                          import java.util.Arrays;
                                          import java.util.HashSet;
                                          import java.util.List;
                                          import java.util.Map;
                                          import java.util.Map.Entry;
                                          import java.util.Set;
                                          
                                          import com.iutils.infinite.Reference;
                                          import com.iutils.infinite.gui.GuiCompressor;
                                          import com.iutils.infinite.recipes.CompressorRecipes;
                                          import com.iutils.infinite.tileentities.CompressorTE;
                                          
                                          import codechicken.nei.ItemList;
                                          import codechicken.nei.NEIServerUtils;
                                          import codechicken.nei.PositionedStack;
                                          import codechicken.nei.recipe.FurnaceRecipeHandler.FuelPair;
                                          import codechicken.nei.recipe.TemplateRecipeHandler;
                                          import net.minecraft.block.Block;
                                          import net.minecraft.block.BlockDoor;
                                          import net.minecraft.client.gui.inventory.GuiContainer;
                                          import net.minecraft.client.resources.I18n;
                                          import net.minecraft.init.Blocks;
                                          import net.minecraft.init.Items;
                                          import net.minecraft.item.Item;
                                          import net.minecraft.item.ItemStack;
                                          
                                          public class CompressorRecipeHandler extends TemplateRecipeHandler
                                          {
                                              public static final String INDENTIFIER = Reference.MOD_ID + ".crafting";
                                              public static ArrayList <fuelpair>afuels;
                                          
                                              @Override
                                              public String getRecipeName()
                                              {
                                                  return I18n.format("recipename.compressorrecipe");
                                              }
                                          
                                              @Override
                                              public String getGuiTexture()
                                              {
                                                  return GuiCompressor.textures.toString();
                                              }
                                          
                                              @Override
                                              public Class getGuiClass()
                                              {
                                                  return GuiCompressor.class;
                                              }
                                          
                                              @Override
                                              public String getOverlayIdentifier()
                                              {
                                                  return INDENTIFIER;
                                              }
                                          
                                              @Override
                                              public void loadTransferRects()
                                              {
                                                  transferRects.add(new RecipeTransferRect(new Rectangle(84, 23, 24, 18), INDENTIFIER));//Vous pouvez bien sur changer la position et la taille du rectangle (les arguments sont x, y, width, height)
                                              }
                                          
                                              @Override
                                              public void loadCraftingRecipes(String outputId, Object… results)
                                              {
                                                 if (outputId.equals(INDENTIFIER) && getClass() == CompressorRecipeHandler.class) //Si on doit afficher toutes les recettes de ce type
                                                 {
                                                     Map <itemstack, itemstack="">recipes = CompressorRecipes.instance().getSmeltingList();
                                                     for (Entry <itemstack, itemstack="">recipe : recipes.entrySet()) //Pour toutes les recettes
                                                         arecipes.add(new SmeltingPair(recipe.getKey(), recipe.getValue())); //On l'ajoute à celles à afficher
                                                 } 
                                                 else
                                                     super.loadCraftingRecipes(outputId, results); //Va charger les recettes pour un item précis
                                              }
                                          
                                              @Override
                                              public void loadCraftingRecipes(ItemStack result) 
                                              {
                                                 Map <itemstack, itemstack="">recipes = CompressorRecipes.instance().getSmeltingList();
                                                 for (Entry <itemstack, itemstack="">recipe : recipes.entrySet()) //Pour chaque recette
                                                 {
                                                     if (NEIServerUtils.areStacksSameType(recipe.getValue(), result)) //On teste si elle correspond à celle que l'on cherche
                                                         arecipes.add(new SmeltingPair(recipe.getKey(), recipe.getValue())); //On l'ajoute aux recettes à afficher
                                                 }
                                              }
                                          
                                              @Override
                                              public void loadUsageRecipes(String inputId, Object... ingredients) 
                                              {
                                                 if (inputId.equals("fuel") && getClass() == CompressorRecipeHandler.class)
                                                     loadCraftingRecipes(INDENTIFIER);
                                                 else
                                                     super.loadUsageRecipes(inputId, ingredients);
                                              }
                                          
                                              @Override
                                              public void loadUsageRecipes(ItemStack ingredient) 
                                              {
                                                 Map <itemstack, itemstack="">recipes = CompressorRecipes.instance().getSmeltingList();
                                                 for (Entry <itemstack, itemstack="">recipe : recipes.entrySet()) //Pour chaque recette
                                                 {
                                                     if (NEIServerUtils.areStacksSameTypeCrafting(recipe.getKey(), ingredient))  //On teste si elle correspond à celle que l'on cherche
                                                     {
                                                         SmeltingPair arecipe = new SmeltingPair(recipe.getKey(), recipe.getValue());
                                                         arecipe.setIngredientPermutation(Arrays.asList(arecipe.ingred), ingredient);
                                                         arecipes.add(arecipe); //On l'ajoute aux recettes à afficher
                                                     }
                                                 }
                                              }
                                          
                                              public class SmeltingPair extends CachedRecipe 
                                              {
                                                     public SmeltingPair(ItemStack ingred, ItemStack result) 
                                              {
                                                         ingred.stackSize = 1;
                                              //Slot pour les ingrédients
                                                         this.ingred = new PositionedStack(ingred, 51, 6); //51 : position x du slot sur le gui, 6 : position y
                                              //Slot pour le résultat
                                                         this.result = new PositionedStack(result, 111, 24); //111 : position x du slot sur le gui, 24 : position y
                                                     }
                                          
                                                     public List <positionedstack>getIngredients()
                                              {
                                                         return getCycledIngredients(cycleticks / 48, Arrays.asList(ingred)); //Retourne un des ingrédients possibles en fonction du temps
                                                     }
                                          
                                                     public PositionedStack getResult()
                                              {
                                                         return result;
                                                     }
                                          
                                                     public PositionedStack getOtherStack() //Retourne des stacks supplémentaires non impliqués directement dans la recette (exemple ici avec les fuels)
                                                     {
                                                         return afuels.get((cycleticks / 48) % afuels.size()).stack;
                                                     }
                                          
                                                     PositionedStack ingred;
                                                     PositionedStack result;
                                                 }
                                          
                                              @Override
                                              public TemplateRecipeHandler newInstance() 
                                              {
                                                  if (afuels == null || afuels.isEmpty()) //si la liste est vide
                                                      findFuels();
                                                  return super.newInstance(); //Retourne une instance de la classe (appelle le constructeur)
                                              }
                                              private static Set excludedFuels() //Fuels qui ne seront pas affichés sur le gui
                                             {
                                                  Set efuels = new HashSet();
                                                  efuels.add(Items.coal);
                                                  return efuels;
                                              }
                                              private static void findFuels() //Pour chaque item existant, regarde si on peu l'utiliser comme carburant, et si oui l'ajoute à la liste des carburants
                                              {
                                                  afuels = new ArrayList<fuelpair>();
                                                  Set efuels = excludedFuels();
                                                  for (ItemStack item : ItemList.items)
                                                 {
                                                      Block block = Block.getBlockFromItem(item.getItem());
                                                      if (block instanceof BlockDoor)
                                                          continue;
                                                      if (efuels.contains(item.getItem()))
                                                          continue;
                                                      int burnTime = CompressorTE.getItemBurnTime(item);
                                                      if (burnTime > 0) {
                                                          afuels.add(new FuelPair(item.copy(), burnTime));
                                                      }
                                                  }
                                              }
                                          
                                          }
                                          
                                          

                                          ma class CompressorRecipes :

                                          
                                          package com.iutils.infinite.recipes;
                                          
                                          import java.util.HashMap;
                                          import java.util.Iterator;
                                          import java.util.Map;
                                          import java.util.Map.Entry;
                                          
                                          import com.iutils.infinite.init.ItemMod;
                                          
                                          import net.minecraft.block.Block;
                                          import net.minecraft.init.Blocks;
                                          import net.minecraft.init.Items;
                                          import net.minecraft.item.Item;
                                          import net.minecraft.item.ItemStack;
                                          
                                          public class CompressorRecipes
                                          {
                                              private static final CompressorRecipes smeltingBase = new CompressorRecipes();
                                              private Map smeltingList = new HashMap();
                                          
                                              public CompressorRecipes()
                                              {
                                                  this.addRecipe(Blocks.planks, Blocks.planks, Items.coal, new ItemStack(ItemMod.quarter_compressed_wood_block));
                                                  this.addRecipe(Blocks.stone, Blocks.stone, Items.coal, new ItemStack(ItemMod.quarter_compressed_stone_block));
                                                  this.addRecipe(Blocks.iron_block, Blocks.iron_block, Items.coal, new ItemStack(Items.iron_ingot));
                                              }
                                          
                                              public void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3, ItemStack stack4)
                                              {
                                                  ItemStack[] stackList = new ItemStack[]{stack1, stack2, stack3};
                                                  this.smeltingList.put(stackList, stack4);
                                              }
                                          
                                                  public void addRecipe(Item item1, Item item2, Item item3, ItemStack stack)
                                              {
                                                  this.addRecipe(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), stack);
                                              }
                                          
                                              public void addRecipe(Block block1, Item item2, Item item3, ItemStack stack)
                                              {
                                                  this.addRecipe(Item.getItemFromBlock(block1), item2, item3, stack);
                                              }
                                          
                                              public void addRecipe(Block block1, Block block2, Item item3, ItemStack stack)
                                              {
                                                  this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), item3, stack);
                                              }
                                          
                                              public void addRecipe(Block block1, Block block2, Block block3, ItemStack stack)
                                              {
                                                  this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), Item.getItemFromBlock(block3), stack);
                                              }
                                          
                                              public ItemStack getSmeltingResult(ItemStack[] stack)
                                              {
                                                  Iterator iterator = this.smeltingList.entrySet().iterator();
                                                  Entry entry;
                                          
                                                  do
                                                  {
                                                      if (!iterator.hasNext())
                                                      {
                                                          return null;
                                                      }
                                                     entry = (Entry)iterator.next();
                                                 }
                                                 while (!this.isSameKey(stack, (ItemStack[])entry.getKey()));
                                          
                                                 return (ItemStack)entry.getValue();
                                               }
                                          
                                              private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
                                              {
                                                  boolean isSame = false;
                                                  for(int i=0; i<=2; i++)
                                                  {
                                                      if(stackList*.getItem() == stackList2*.getItem())
                                                      {
                                                              isSame = true;
                                                      }
                                                      else
                                                      {
                                                          return false;
                                                      }
                                                  }
                                                  return isSame;
                                              }
                                          
                                              public Map getSmeltingList()
                                              {
                                                 return this.smeltingList;
                                              }
                                          
                                          public static CompressorRecipes smelting()
                                             {
                                                 return smeltingBase;
                                             }
                                          }
                                          
                                          

                                          et la class CompressorTE :

                                          
                                          package com.iutils.infinite.tileentities;
                                          
                                          import com.iutils.infinite.init.BlockMod;
                                          import com.iutils.infinite.recipes.CompressorRecipes;
                                          
                                          import cpw.mods.fml.relauncher.Side;
                                          import cpw.mods.fml.relauncher.SideOnly;
                                          import net.minecraft.block.Block;
                                          import net.minecraft.client.Minecraft;
                                          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.network.NetworkManager;
                                          import net.minecraft.network.Packet;
                                          import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
                                          import net.minecraft.server.MinecraftServer;
                                          import net.minecraft.tileentity.TileEntity;
                                          import net.minecraft.world.World;
                                          import net.minecraftforge.common.util.Constants;
                                          
                                          public class CompressorTE extends TileEntity implements IInventory
                                          {
                                              private ItemStack[] contents = new ItemStack[4];
                                              private String customName;
                                              private int workingTime = 0;
                                              private int workingTimeNeeded = 250;
                                          
                                              @Override
                                              public void readFromNBT(NBTTagCompound compound)
                                              {
                                                  super.readFromNBT(compound);
                                          
                                                  if (compound.hasKey("CustomName", Constants.NBT.TAG_STRING))
                                                  {
                                                      this.customName = compound.getString("CustomName");
                                                  }
                                          
                                                  NBTTagList nbttaglist = compound.getTagList("Items", Constants.NBT.TAG_COMPOUND);
                                                  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 void writeToNBT(NBTTagCompound compound)
                                              {
                                                  super.writeToNBT(compound);
                                                  NBTTagList nbttaglist = new NBTTagList();
                                          
                                                  if (this.hasCustomInventoryName())
                                                  {
                                                      compound.setString("CustomName", this.customName);
                                                  }
                                          
                                                  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);
                                              }
                                          
                                              public Packet getDescriptionPacket()
                                              {
                                                  NBTTagCompound nbttagcompound = new NBTTagCompound();
                                                  this.writeToNBT(nbttagcompound);
                                                  return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound);
                                              }
                                          
                                              public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
                                              {
                                                  this.readFromNBT(pkt.func_148857_g());
                                              }
                                          
                                              @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 this.hasCustomInventoryName() ? this.customName : "tile.compressor.name";
                                              }
                                          
                                              @Override
                                              public boolean hasCustomInventoryName()
                                              {
                                                  return this.customName != null && !this.customName.isEmpty();
                                              }
                                          
                                              public void setCustomName(String customName)
                                              {
                                                  this.customName = customName;
                                              }
                                          
                                              @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 slotIndex, ItemStack stack)
                                              {
                                                  return false;
                                              }
                                          
                                              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 = CompressorRecipes.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 = CompressorRecipes.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;
                                                       }
                                                  }
                                              }
                                          
                                              @SideOnly(Side.CLIENT)
                                              public int getCookProgress()
                                              {
                                                  return this.workingTime * 41 / this.workingTimeNeeded;
                                              }
                                          }
                                          
                                          

                                          J’espère que quelqu’un pourra m’aider  :)</fuelpair></positionedstack></itemstack,></itemstack,></itemstack,></itemstack,></itemstack,></itemstack,></fuelpair></itemstack,>

                                          Mes Sites(Mes Sites)
                                          |
                                          |    Site général : Game & play
                                          |   Site de projets (en dev !) :Infinite's Ressources
                                          J'ai et je suis content d'avoir 16,75 points d'ICRating

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

                                            Alors oui comme le tuto de BrokenSwing est en 1.7.10 je l’ai pas suivi pour faire mon tuto, mais ces modifs sont pas bien compliquées ^^ :
                                            “CompressorRecipes.instance()” => “CompressorRecipes.smelting()”.
                                            Et pour “CompressorTE.getItemBurnTime(item);”, vu que ta variable workingTimeNeeded ne change jamais, tu peux remplacer par sa valeur, 250.

                                            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
                                            • 1
                                            • 2
                                            • 3
                                            • 2 / 3
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB