Encore ces foutues plantations ?



  • Salut ! Je reviens encore à la charge à cause de mes plantations et j'en suis désolé, je remercie par ailleurs les quelques modeurs de ce forum à m'avoir aider au sujet de tout ces crashs interminable 😉

    Bref, rentrons dans le vif du sujet, alors voilà, j'ai un (gros) problème, quand je plante ma graine, tout va bien, je veux dire par là que la première texture apparaît ! Or, interviennent ici de gros soucis, si je veux tout faire grandir avec de la bone meal, ce n'est pas la seconde texture qui apparaît mais la dernière, et si je retape dessus avec la poudre, l'affichage revient à celui de base. Et j'ai constater dans la journée un autre soucis, dans ma classe, j'ai préciser que je voulais ma Laitue comme drop, que ce soit en graine ou en récolte mais il me drop des carottes !

    Au final, je me demande si ça ne peut pas provenir de l'extends, pourrais-je être (encore) aider ?

    Voici les classes au besoin :

    Principale :

    package fr.squizzcraft.xdoh.common;
    
    import net.minecraft.block.Block;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.init.Blocks;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemSeedFood;
    import net.minecraft.item.ItemSeeds;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.common.registry.LanguageRegistry;
    import cpw.mods.fml.common.Mod.Instance;
    
    @Mod(modid = "xdoh", name = "xdoh", version = "1.0.0")
    public class XdohMod {
    
    public static final String MODID = "xdoh";
    
    @Instance(MODID)
    public static XdohMod instance;
    
    @SidedProxy(clientSide = "fr.squizzcraft.xdoh.client.ClientProxy", serverSide = "fr.squizzcraft.xdoh.common.CommonProxy")
    public static CommonProxy proxy;
    
    public static Item Whisky;
    public static Item Vodka;
    public static Item Biere;
    public static Item Pepsi;
    public static Item Coca;
    public static Item Redbull;
    public static Item Ration;
    public static Item Chocolat;
    public static Item Purifie;
    public static Item Chips;
    public static Item Biscuit;
    public static Item Boite;
    
    public static Block LaitueFarm;
    
    public static Item Laitue;
    public static Item Fraise;
    public static Item Kiwi;
    public static Item Orange;
    public static Item Haricot;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
    
    LaitueFarm = new LaitueFarm(2300).setBlockName("LaitueFarm");
    LanguageRegistry.addName(LaitueFarm, "LaitueFarm");
    GameRegistry.registerBlock(LaitueFarm, "LaitueFarm");
    
    // Ici j'ai utiliser le ItemSeedFood car la Laitue est aussi mangeable (encore comme la carotte)
    
    Laitue = new ItemSeedFood(6, 1F, this.LaitueFarm, Blocks.farmland).setUnlocalizedName("Laitue").setTextureName("xdoh:laitue");
    LanguageRegistry.addName(Laitue, "Laitue");
    GameRegistry.registerItem(Laitue, "Laitue");
    
    }
    
    @EventHandler
    public void Init(FMLInitializationEvent event)
    {
    
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    
    }
    
    }
    

    Et la classe du block porteur des textures :

    package fr.squizzcraft.xdoh.common;
    
    import javax.swing.Icon;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.BlockCarrot;
    import net.minecraft.block.BlockCrops;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.init.Items;
    import net.minecraft.item.Item;
    import net.minecraft.util.IIcon;
    
    public class LaitueFarm extends BlockCarrot
    
    {
    
    public static String[] type = new String[]{"laitue_stage_0", "laitue_stage_1", "laitue_stage_2"};
    
    private IIcon[] 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 registerBlockIcons(IIconRegister iconregister)
    
    {
    
            IconArray = new IIcon[type.length];
    
    for(int i = 0; i < type.length; i++)
    
    {
    
    IconArray* = (IIcon) iconregister.registerIcon("xdoh:" + type*);
    
    }
    
    }
    
    protected Item getSeedItem()
    
    {
    
    return XdohMod.Laitue; // donne la graine
    
    }
    
    protected Item getCropItem()
    
    {
    
    return XdohMod.Laitue; // donne la récolte
    
    }
    
    public int damageDropped(int metadata)
    
    {
    
    return metadata;
    
    }
    
    }
    

    J'ai bien sur utiliser le tutoriel de ce forum sur les plantations pour ce code.

    Merci  !  😛


  • Moddeurs confirmés Rédacteurs Administrateurs

    Pour la texture je t'ai déjà demander de regarder quel est le metadata du bloc quand tu vois x texture (tu peux mette une fonction onActivated et faire un player.addChatMessage de world.getBlockMetadata)

    Pour les drop, essaye d'ajouter @Override au dessus des fonctions getSeedItem et getCropItem. Si ça fait une erreur c'est que les fonctions ont changés de nom.



  • Alors, j'ai réussi à m'arranger pour les drop (J'ai réutiliser les mêmes fonctions que la classe BlockCarrot.java) mais je n'ai pas vraiment compris l'histoire de cette fonction pour le metadata, que dois-je faire ?


  • Moddeurs confirmés Rédacteurs Administrateurs

    ​    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
       {
           player.addChatMessage(new ChatComponentText(String.valueOf(world.getBlockMetadata(x,y,z)));
           return true;
       }
    

    Ensuite tu vas en jeu, tu fais pousser ta plante une fois puis tu fais un clic droit dessus
    Tu la fait pousser une deuxième fois et à nouveau un clic droit.

    Et après tu mets dit quel metadata à ta plante avec quelle textures.



  • Donc, à la base, le metadata est de zéro, et il reste à ce metadata ! Il ne veux même plus intéragir avec la bone meal O.o

    Edit : La fonction empêchait le clic droit au final avec la bone meal ^^' Bon, les textures ne changent même plus (Il reste à la texture laitue_stage_0), mais par contre, après avoir remis la fonction, il m'indique que le metadata est à 7..


  • Moddeurs confirmés Rédacteurs Administrateurs

    Pourtant il devrait monter jusqu'à 4 grand max.
    Tu as un code spécial pour la bone meal ?



  • Non non, il est de base !


  • Moddeurs confirmés Rédacteurs Administrateurs

    Faudrait le modifier, ou adapter le code pour la texture.



  • Alors j'ai essayer mais ça ne change rien ^^'


  • Moddeurs confirmés Rédacteurs Administrateurs

    Envoie ton code après modif.


Log in to reply