MFF

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

    [1.12] Créer un four

    Planifier Épinglé Verrouillé Déplacé Les interfaces (GUI) et les container
    1.11.x
    58 Messages 13 Publieurs 15.9k Vues 7 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Ok en fait la fonction update est nommé tick chez toi (probablement car tu n’as pas la même version des mappings que dans le tutoriel).
      Donc renomme simplement la fonction update en tick et retire la fonction généré en dessous.

      Ensuite pour le crash, c’est parce que tu enregistres un bloc qui est null.
      Tu peux envoyer le code de la classe MachineBlock ?

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

        @robin4002

        package com.ben.heaven.blocks;
        
        import com.ben.heaven.Heaven;
        import com.ben.heaven.tileentity.TileMachineBuilder;
        
        import net.minecraft.block.BlockContainer;
        import net.minecraft.block.material.Material;
        import net.minecraft.block.state.IBlockState;
        import net.minecraft.entity.EntityLivingBase;
        import net.minecraft.entity.player.EntityPlayer;
        import net.minecraft.inventory.InventoryHelper;
        import net.minecraft.item.ItemStack;
        import net.minecraft.tileentity.TileEntity;
        import net.minecraft.util.EnumBlockRenderType;
        import net.minecraft.util.EnumFacing;
        import net.minecraft.util.EnumHand;
        import net.minecraft.util.math.BlockPos;
        import net.minecraft.world.World;
        
        public class MachineBuilder extends BlockContainer {
        	
        	public MachineBuilder(String name, Material materialIn) {
        		
        		super(materialIn);
        		setUnlocalizedName(name);
        		setRegistryName(name);
        		
        	}
        
        	@Override
        	public boolean hasTileEntity() {
        		return true;
        	}
        	@Override
        	public TileEntity createNewTileEntity(World world, int metadata) {
        		return new TileMachineBuilder();
        	}
        
        	@Override
        	public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
        	    TileEntity tileentity = worldIn.getTileEntity(pos);
        	 
        	    if (tileentity instanceof TileMachineBuilder) {
        	        InventoryHelper.dropInventoryItems(worldIn, pos,
        	                (TileMachineBuilder) tileentity);
        	    }
        	 
        	    super.breakBlock(worldIn, pos, state);
        	}
        	
        	@Override
        	public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
        	    if (world.isRemote) {
        	        return true;
        	    } else {
        	        TileEntity tileentity = world.getTileEntity(pos);
        	 
        	        if (tileentity instanceof TileMachineBuilder) {
        	            player.openGui(Heaven.instance, 0, world, pos.getX(),
        	                    pos.getY(), pos.getZ());
        	        }
        	 
        	        return true;
        
        	    }
        
        	}
        	
        	@Override
        	public EnumBlockRenderType getRenderType(IBlockState state) {
        	    return EnumBlockRenderType.MODEL;
        
        	}
        	
        	@Override
        	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
        	    if (stack.hasDisplayName()) {
        	        TileEntity tileentity = worldIn.getTileEntity(pos);
        	 
        	        if (tileentity instanceof TileMachineBuilder) {
        	            ((TileMachineBuilder) tileentity).setCustomName(stack
        	                    .getDisplayName());
        	        }
        	    }
        	}
        }
        
        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 robin4002

          at com.ben.heaven.init.MachineBlock.registerBlocks(MachineBlock.java:32)

          C’est MachineBlock qu’il me faut, pas MachineBuilder.

          T 2 réponses Dernière réponse Répondre Citer 0
          • T Hors-ligne
            TionebBen3119 @robin4002
            dernière édition par

            @robin4002 en fait c’est bon l’erreur etait du a la mauvaise nomination de la fonction merci beaucoup^^

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

              @robin4002 par contre g verifie la classe recipe je ne vois pas ce qui ne va pas mais la machine ne transforme pas les pommes et fleche en patate cuite (j’ai repris l’exemple du tuto pour test)065b9b92-f30e-48f7-bc5b-808b4b713b8b-image.png voici egalement ma classe recipe

              package com.ben.heaven.recipes;
              
              import java.util.HashMap;
              import java.util.Iterator;
              import java.util.Map.Entry;
              
              import net.minecraft.init.Items;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              
              public class RecipesMachineBuilder
              {
              	private static final HashMap <ItemStack[], ItemStack>recipes = new HashMap<ItemStack[], ItemStack>();
              	static {
              	    addRecipe(Items.APPLE, Items.ARROW, Items.BAKED_POTATO);
              	}
              	
              	private static void addRecipe(Item ingredient1, Item ingredient2, Item resultat1) {
              	    addRecipe(new ItemStack(ingredient1), new ItemStack(ingredient2), new ItemStack(resultat1));
              	}
              	 
              	private static void addRecipe(ItemStack ingredient1, ItemStack ingredient2, ItemStack resultat1) {
              	    recipes.put(new ItemStack[]{ingredient1, ingredient2}, resultat1);
              	}
              	
              	private static boolean areKeysEqual(ItemStack[] key1, ItemStack[] key2) {
              	    if(key1.length != key2.length) return false;
              	 
              	    for(int i = 0; i < key1.length; i++) {
              	        ItemStack s1 = key1[i];
              	        ItemStack s2 = key2[i];
              	        if(s1.isEmpty() && !s2.isEmpty()) return false;
              	        if(!s1.isEmpty() && s2.isEmpty()) return false;
              	        if(s1.getItem() != s2.getItem()) return false;
              	        if(s1.getItemDamage() != s2.getItemDamage()) return false;
              	    }
              	    return true;
              	}
              	
              	public static ItemStack getRecipeResult(ItemStack[] ingredients) {
              	    Iterator<Entry<ItemStack[], ItemStack>> it = recipes.entrySet().iterator();
              	    while(it.hasNext()) {
              	        Entry <ItemStack[], ItemStack>entry = it.next();
              	        if(areKeysEqual(entry.getKey(), ingredients)) {
              	            return entry.getValue();
              	        }
              	    }
              	    return null;
              	}
              }
              
              T 1 réponse Dernière réponse Répondre Citer 0
              • T Hors-ligne
                TionebBen3119 @TionebBen3119
                dernière édition par

                @robin4002 saurais tu pourquoi la recette ne fonctionne pas ?

                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

                  Non, sinon j’aurai déjà répondu.

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

                    @robin4002 d’accord excuse moi ^^

                    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

                      Il faut que tu debug ton code de ton côté.

                      Lances le jeu en mode debug (icône de scarabée) puis mets des points d’arrêt aux endroits pertinent dans le code (par exemple dans la fonction tick, c’est ici qu’il vérifie s’il y a quelque chose à faire).

                      Quand l’exécution arrive sur un point d’arrêt cela mets en pause le jeu et tu peux observer le contenu des variables.

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

                        @robin4002 D’accord pour le debug pas de probleme mais les points d’arret et la suite je comprends ce qu’il faut faire mais je ne comprends pas comment ^^

                        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

                          Premier lien après recherche google : https://pierrejean.wp.imt.fr/2014/02/17/eclipse-debogage-et-points-darrets/

                          Un jour je ferai une vidéo sur l’utilisation du debogguer.

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

                            Dans la classe du Gui tu peux supprimer la ligne drawDefaultBackground() et ajouter a la place dans la classe ceci:

                                public void drawScreen(int mouseX, int mouseY, float partialTicks)
                                {
                                    this.drawDefaultBackground();
                                    super.drawScreen(mouseX, mouseY, partialTicks);
                                    this.renderHoveredToolTip(mouseX, mouseY);
                                }
                            

                            comme ca en plus sa rend les tooltips des items quand tu passes dessus 😉

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

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB