Bloc Plante



  • Bonjour à tous,

    Je suis en train de créer un mod dédié au métier de fleuriste, avec une grande variété de fleurs, mais j'ai un soucis avec mon code, pas grand chose, mais j'ai besoin d'un coup de pouce 😉

    Voici mon Code :

    Ma Classe Principale :

    package fr.simelya.fleuriste.common;
    
    import net.minecraft.block.Block;
    import net.minecraft.creativetab.CreativeTabs;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    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 fr.simelya.fleuriste.proxy.CommonProxy;
    
    @Mod(modid = ModFleuriste.MODID, name = "Fleuriste", version = "1.0.0")
    
    public class ModFleuriste {
    
    public static final String MODID = "fleuriste";
    
    @Instance(MODID)
    public static ModFleuriste instance;
    
    @SidedProxy(clientSide = "fr.simelya.fleuriste.proxy.ClientProxy", serverSide = "fr.simelya.fleuriste.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    public static CreativeTabs tabsFleuriste = new TabsFleuriste("creativetabsfleuriste");
    
    public static Block alliumc, dandelionc, houstoniac, margueritec, orchideec, rosec, tulipec, bouquet, haiemargueritec, arumc, dahliac, crocusc, deliphiniumc, ecinanceec, liliumc, haiedahliac;
    
    @EventHandler
    public void preinit(FMLPreInitializationEvent event)
    {
    alliumc = new BlockAllium(6000).setBlockName("Allium").setBlockTextureName(MODID + ":allium").setStepSound(Block.soundTypeGrass);
    
    GameRegistry.registerBlock(alliumc, ItemBlockAllium.class, "alliumc");
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    proxy.registerRender();
    }
    
    @EventHandler
    public void postinit(FMLPostInitializationEvent event)
    {
    
    }
    
    }
    
    

    Ma Classe Block :

    package fr.simelya.fleuriste.common;
    
    import java.util.List;
    import java.util.Random;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockFlower;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    
    public class BlockAllium extends BlockFlower {
    
    protected BlockAllium(int id) {
    super(Material.plants);
    this.setCreativeTab(ModFleuriste.tabsFleuriste);
    // TODO Auto-generated constructor stub
    }
    
    public static String[] subBlock = new String[]{"alliumblanc", "alliumbleuclair", "alliumbleu", "alliumcyan", "alliumgrisclair", "alliumgris", "alliumjaune", "alliummagenta", "alliummarron", "alliumnoir", "alliumorange", "alliumrose", "alliumrouge", "alliumvertclair", "alliumvert", "alliumviolet"};
    private IIcon[] IconArray;
    
    @SideOnly(Side.CLIENT)
       public void getSubBlocks(Item item, CreativeTabs tabs, List list)
       {
           list.add (new ItemStack(item, 1, 0));
           list.add (new ItemStack(item, 1, 1));
           list.add (new ItemStack(item, 1, 2));
           list.add (new ItemStack(item, 1, 3));
           list.add (new ItemStack(item, 1, 4));
           list.add (new ItemStack(item, 1, 5));
           list.add (new ItemStack(item, 1, 6));
           list.add (new ItemStack(item, 1, 7));
           list.add (new ItemStack(item, 1, 8));
           list.add (new ItemStack(item, 1, 9));
           list.add (new ItemStack(item, 1, 10));
           list.add (new ItemStack(item, 1, 11));
           list.add (new ItemStack(item, 1, 12));
           list.add (new ItemStack(item, 1, 13));
           list.add (new ItemStack(item, 1, 14));
           list.add (new ItemStack(item, 1, 15));
           }
    
       public int quantityDropped(Random par1Random)
       {
           return 1;
       }
    
       public IIcon getIcon(int side, int metadata)
    {
    return (IIcon) (metadata < subBlock.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]);
    }
    
       public void registerBlockIcons(IIconRegister iconregister)
    {
    IconArray = new IIcon[subBlock.length];
    
    for(int i = 0; i < subBlock.length; i++)
    {
    IconArray* = (IIcon) iconregister.registerIcon("verrier:" + subBlock*);
    }
    
    }
    
    public boolean renderAsNormalBlock()
       {
           return false;
    
       }
    
    }
    

    Ma Classe ItemBlock :

    package fr.simelya.fleuriste.common;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.item.ItemBlock;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    
    public class ItemBlockAllium extends ItemBlock {
    
    public ItemBlockAllium(Block block) {
    super(block);
           this.setMaxDamage(0);
           this.setHasSubtypes(true);
    this.setCreativeTab(ModFleuriste.tabsFleuriste);
    }
       @SideOnly(Side.CLIENT)
       public IIcon getIconFromDamage(int metadata)
       {
           return this.field_150939_a.getIcon(2, metadata);
       }
       public int getMetadata(int metadata)
       {
           return metadata;
       }
    
       public String getUnlocalizedName(ItemStack stack)
       {
           int metadata = stack.getItemDamage();
    
           if (metadata < 0 || metadata >= BlockAllium.subBlock.length)
           {
            metadata = 0;
           }
    
           return super.getUnlocalizedName() + "." + BlockAllium.subBlock[metadata];
       }
    
    }
    
    

    L'erreur se situe dans ma classe Block, au niveau du constructeur : "super(Material.plants); " est souligné en rouge avec comme erreur >> The constructor BlockFlower(Material) is undefined

    Ce n'est pas grand chose j'en suis sur, mais bon, il me semblait que le constructeur était bien défini.

    Merci d'avance !

    P.S : Pour information je ne souhaite pas intégrer de WorldGen des plantes, celles-ci ne seront que craftables par les personnes ayant le métier de fleuriste 😉



  • Je ne veux pas dire de bêtises, mais tu n'as pas créé le matériel plants.


  • Administrateurs

    C'est pour ça que pour coder il faut savoir les bases de java …
    Ce message veut dire que dans la classe mère il n'y a pas de constructeur contenant Material.



  • Ok ok, navré j'apprends par moi même, j'ai plutôt bien avancé, il ne me reste plus qu'à trouver comment mettre la plante dans les flower pots, le reste c'est ok !

    La Classe Principale :

    package fr.simelya.fleuriste.common;
    
    import net.minecraft.block.Block;
    import net.minecraft.creativetab.CreativeTabs;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    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 fr.simelya.fleuriste.proxy.CommonProxy;
    
    @Mod(modid = ModFleuriste.MODID, name = "Fleuriste", version = "1.0.0")
    
    public class ModFleuriste {
    
    public static final String MODID = "fleuriste";
    
    @Instance(MODID)
    public static ModFleuriste instance;
    
    @SidedProxy(clientSide = "fr.simelya.fleuriste.proxy.ClientProxy", serverSide = "fr.simelya.fleuriste.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    public static CreativeTabs tabsFleuriste = new TabsFleuriste("creativetabsfleuriste");
    
    public static Block alliumc, dandelionc, houstoniac, margueritec, orchideec, rosec, tulipec, bouquet, haiemargueritec, arumc, dahliac, crocusc, deliphiniumc, ecinanceec, liliumc, haiedahliac;
    
    @EventHandler
    public void preinit(FMLPreInitializationEvent event)
    {
    alliumc = new BlockAllium(6000).setBlockName("Allium").setBlockTextureName(MODID + ":allium").setStepSound(Block.soundTypeGrass);
    
    GameRegistry.registerBlock(alliumc, ItemBlockAllium.class, "alliumc");
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event)
    {
    proxy.registerRender();
    }
    
    @EventHandler
    public void postinit(FMLPostInitializationEvent event)
    {
    
    }
    
    }
    
    

    La Classe Block :

    package fr.simelya.fleuriste.common;
    
    import java.util.List;
    import java.util.Random;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockBush;
    import net.minecraft.block.BlockFlower;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    
    public class BlockAllium extends BlockBush {
    
    private int field_149862_O;
    
    protected BlockAllium(int id)
    {
    super(Material.plants);
    this.field_149862_O = id;
    this.setCreativeTab(ModFleuriste.tabsFleuriste);
    // TODO Auto-generated constructor stub
    }
    
    public static String[] subBlock = new String[]{"alliumblanc", "alliumbleuclair", "alliumbleu", "alliumcyan", "alliumgrisclair", "alliumgris", "alliumjaune", "alliummagenta", "alliummarron", "alliumnoir", "alliumorange", "alliumrose", "alliumrouge", "alliumvertclair", "alliumvert", "alliumviolet"};
    private IIcon[] IconArray;
    
    @SideOnly(Side.CLIENT)
    public void getSubBlocks(Item item, CreativeTabs tabs, List list)
    {
    list.add (new ItemStack(item, 1, 0));
    list.add (new ItemStack(item, 1, 1));
    list.add (new ItemStack(item, 1, 2));
    list.add (new ItemStack(item, 1, 3));
    list.add (new ItemStack(item, 1, 4));
    list.add (new ItemStack(item, 1, 5));
    list.add (new ItemStack(item, 1, 6));
    list.add (new ItemStack(item, 1, 7));
    list.add (new ItemStack(item, 1, 8));
    list.add (new ItemStack(item, 1, 9));
    list.add (new ItemStack(item, 1, 10));
    list.add (new ItemStack(item, 1, 11));
    list.add (new ItemStack(item, 1, 12));
    list.add (new ItemStack(item, 1, 13));
    list.add (new ItemStack(item, 1, 14));
    list.add (new ItemStack(item, 1, 15));
    }
    
    public int quantityDropped(Random par1Random)
    {
    return 1;
    }
    
    public IIcon getIcon(int side, int metadata)
    {
    return (IIcon) (metadata < subBlock.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]);
    }
    
    public void registerBlockIcons(IIconRegister iconregister)
    {
    IconArray = new IIcon[subBlock.length];
    
    for(int i = 0; i < subBlock.length; i++)
    {
    IconArray* = (IIcon) iconregister.registerIcon("fleuriste:" + subBlock*);
    }
    
    }
    
    public boolean renderAsNormalBlock()
    {
    return false;
    
    }
    
    public boolean isOpaqueCube()
    {
    return false;
    }
    
    @SideOnly(Side.CLIENT)
    public int getRenderBlockPass()
    {
    return 1;
    }
    
    }
    

    La Classe ItemBlock :

    package fr.simelya.fleuriste.common;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.item.ItemBlock;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    
    public class ItemBlockAllium extends ItemBlock {
    
    public ItemBlockAllium(Block block) {
    super(block);
    this.setMaxDamage(0);
    this.setHasSubtypes(true);
    this.setCreativeTab(ModFleuriste.tabsFleuriste);
    }
    @SideOnly(Side.CLIENT)
    public IIcon getIconFromDamage(int metadata)
    {
    return this.field_150939_a.getIcon(2, metadata);
    }
    public int getMetadata(int metadata)
    {
    return metadata;
    }
    
    public String getUnlocalizedName(ItemStack stack)
    {
    int metadata = stack.getItemDamage();
    
    if (metadata < 0 || metadata >= BlockAllium.subBlock.length)
    {
    metadata = 0;
    }
    
    return super.getUnlocalizedName() + "." + BlockAllium.subBlock[metadata];
    }
    
    }
    
    

  • Administrateurs

    Pour le pot de fleur ça va pas être possible sans créer un nouveau pot de fleur.
    En passant je déplaces dans la bonne section, du code n'a rien dans à faire dans la section Cauldron.



  • Ok, je vais essayer de voir cela, merci et désolé pour la mauvaise section : /