Plantations !



  • Bonjour, j'ai suivi un petit tutoriel dans les archives pour pouvoir créer de nouvelles plantations, voici mes classes :

    Principale :

    
    public static Item Laitue;
    public static Block LaitueFarm; //Ici nous avons le bloc qui fait pousser la salade.
    
    Puis :
    
    Laitue = new LaitueEat(2206, 6, 1F, false,this.LaitueFarm, Blocks.farmland).setUnlocalizedName("Laitue").setTextureName("xdoh:laitue"); //Etant donné que la laitue est aussi un item mangeable, je lui ai rajouter des caractéristiques
    
    LaitueFarm = new LaitueFarm(2300).setBlockName("LaitueFarm");
    
    

    La classe LaitueEat:

    public class LaitueEat extends ItemSeedFood{
    
    public LaitueEat(int id, int foodAmount, float saturation, boolean isWolfFood, Block LaitueFarm, Block farmland)
    {
    super(foodAmount, saturation, LaitueFarm, farmland);
    }
    }
    

    Et la plus grande, la classe LaitueFarm:

    public class LaitueFarm extends BlockCarrot
    
    {
    
    public static String[] type = new String[]{"LaitueFarm_0", "LaitueFarm_1", "LaitueFarm_2", "LaitueFarm_3"};
    
    private Icon[] IconArray;
    
    public LaitueFarm (int id)
    
    {
    
    super();
    
    }
    
    public IIcon getIcon(int side, int metadata)
    
    {
    
    return (IIcon) (metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]);
    
    }
    
    public void registerIcons(IIconRegister iconregister)
    
    {
    
    IconArray = new Icon[type.length];
    
    for(int i = 0; i < type.length; i++)
    
    {
    
    IconArray* = (Icon) iconregister.registerIcon("xdoh:" + type*);
    
    }
    
    }
    
    protected Item getSeedItem()
    
    {
    
    return XdohMod.Laitue;
    
    }
    
    protected Item getCropItem()
    
    {
    
    return XdohMod.Laitue;
    
    }
    
    public int damageDropped(int metadata)
    
    {
    
    return metadata;
    
    }
    
    }
    
    

    Bon, quand je lance le jeu, j'essaie de planter ma salade, et c'est le crash le plus total !

    Les logs :

    –-- Minecraft Crash Report ----
    // Don't be sad, have a hug! <3
    
    Time: 08/03/15 14:44
    Description: Unexpected error
    
    java.lang.NullPointerException: Unexpected error
    at net.minecraft.world.chunk.storage.ExtendedBlockStorage.func_150818_a(ExtendedBlockStorage.java:86)
    at net.minecraft.world.chunk.Chunk.func_150807_a(Chunk.java:653)
    at net.minecraft.world.World.setBlock(World.java:519)
    at net.minecraft.world.World.setBlock(World.java:681)
    at net.minecraft.item.ItemSeedFood.onItemUse(ItemSeedFood.java:39)
    at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:143)
    at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:403)
    at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1518)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:2033)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028)
    at net.minecraft.client.Minecraft.run(Minecraft.java:951)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:85)
    at GradleStart.main(GradleStart.java:45)
    
    

    Il y aurait une solution ? 😕 Merci !



  • 1. Mets des balises java;
    2. Ton mod est en 1.7 ? Si oui, tu n'as pas besoin de mettre les id de tes blocs/items.



  • J'ai donc enlevé les ID, mais le crash est toujours présent 😕


  • Administrateurs

    Le bloc doit être initialisé avant l'item, sinon ça cause un NPE. C'est logique.



  • @'robin4002':

    Le bloc doit être initialisé avant l'item, sinon ça cause un NPE. C'est logique.

    Merci de ta réponse, mais ça ne marche toujours pas,

    –-- Minecraft Crash Report ----
    // Everything's going to plan. No, really, that was supposed to happen.
    
    Time: 08/03/15 15:38
    Description: Unexpected error
    
    java.lang.NullPointerException: Unexpected error
    at fr.squizzcraft.xdoh.common.LaitueFarm.getIcon(LaitueFarm.java:40)
    at net.minecraft.client.renderer.RenderBlocks.getBlockIconFromSideAndMetadata(RenderBlocks.java:8451)
    at net.minecraft.client.renderer.RenderBlocks.renderBlockCropsImpl(RenderBlocks.java:4082)
    at net.minecraft.client.renderer.RenderBlocks.renderBlockCrops(RenderBlocks.java:3850)
    at net.minecraft.client.renderer.RenderBlocks.renderBlockByRenderType(RenderBlocks.java:362)
    at net.minecraft.client.renderer.WorldRenderer.updateRenderer(WorldRenderer.java:207)
    at net.minecraft.client.renderer.RenderGlobal.updateRenderers(RenderGlobal.java:1618)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1263)
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1091)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1056)
    at net.minecraft.client.Minecraft.run(Minecraft.java:951)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:85)
    at GradleStart.main(GradleStart.java:45)
    
    

    Je crois qu'il n'arrive pas à trouver les textures et donc à faire le rendu, pourtant, je les ai placées dans assets/xdoh/textures/blocks renommée de ce type : LaitueFarm_0 !


  • Administrateurs

    Cette fois si tu as un NPE sur la textures en effet.
    Heu attend, tu code bien en 1.7.10 ?
    Alors pourquoi tu as des Icon dans ton code ? ça devrait être IIcon.
    Ici :

     private Icon[] IconArray;
    

    Et ici :

            IconArray = new Icon[type.length];
    

    Et la fonction :

            public void registerIcons(IIconRegister iconregister)
    

    Devrait être :

            public void registerBlockIcons(IIconRegister iconregister)
    


  • @'robin4002':

    Cette fois si tu as un NPE sur la textures en effet.
    Heu attend, tu code bien en 1.7.10 ?
    Alors pourquoi tu as des Icon dans ton code ? ça devrait être IIcon.
    Ici :

     private Icon[] IconArray;
    

    Et ici :

            IconArray = new Icon[type.length];
    

    Et la fonction :

            public void registerIcons(IIconRegister iconregister)
    

    Devrait être :

            public void registerBlockIcons(IIconRegister iconregister)
    

    Plus de crash ! Les plantations poussent ! Mais par contre, elles ont un problème avec la poudre d'os, est-ce normal qu'on voit la dernière étape pendant une fraction de seconde et que ça s'arrête après ?


  • Administrateurs

    Que ça s'arrête après ? C'est à dire ?



  • Ben, si on met la poudre dessus, il va m'afficher la dernière image (LaitueFarm_4) pour ensuite ré-afficher la première


  • Administrateurs

    Surement car le code est conçu pour plus de 4 textures. Regarde combien de texture à la carotte pour en être sûr.



  • 4 aussi O.o


  • Administrateurs

    Étrange, tu peux regarder quel est le metadata de ton bloc ?



  • (metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]);