Drop quand bloc cassé



  • Salut les amis, vous vous rappelez de mon bloc de minerai de cuivre (sous techne)? bha voila quand on le casse, looter le minerai c'est pas cool.

    que mettre dans la fonction ```java
    idDropped



  • Tu regarde dans une classe block existante.

    
    public int idDropped(int par1, Random par2Random, int par3)
    {
    return TONBLOC.blockID;
    }
    
    
    
    public int idDropped(int par1, Random par2Random, int par3)
    {
    return TONITEM.itemID;
    }
    
    

    Et pour la quantité tu a

    
    public int quantityDropped(Random par1Random)
    {
    return QUANTITEE;
    }
    
    


  • ok merci

    EDIT: j'ai bien mis les deux donction mais quand je casse le bloc cela ne drop rien.
    un truc a ajouter dans la classe de l'item a par public static int idDropped;



  • Ouai, item…

    donc .itemID a la place de idDropped



  • cela ne fait rien:

    public class coppermineralitem extends Item{
    
    public static int idDropped;
    public static int itemID;
    
    public coppermineralitem(int id){
    super(id);
    this.setCreativeTab(CreativeTabs.tabMaterials);
    setMaxStackSize(64);
    }
    }
    

  • Administrateurs

    Ta class coppermineralitem devrais ressemblé à ça:

    public class coppermineralitem extends Item{
    
    public coppermineralitem(int id){
    super(id);
    this.setCreativeTab(CreativeTabs.tabMaterials);
    setMaxStackSize(64);
    }
    
    public int idDropped(int par1, Random par2Random, int par3)
    {
    return this.itemID;
    }
    
    public int quantityDropped(Random par1Random)
    {
    return 1;
    }
    }
    


  • heu ca ne marche pas




  • Un item ne drop rien, il ne peut pas être miné.
    Ces méthodes sont a mettre dans la classe du bloc.



  • blocks:

    
    package Mineralherb.Blocks;
    
    import java.util.Random;
    
    import Mineralherb.ClientProxy;
    import Mineralherb.Items.coppermineralitem;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockContainer;
    import net.minecraft.block.material.Material;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.world.World;
    
    public class coppermineral extends BlockContainer
    {
    
    public coppermineral(int id)
    {
    super(id, Material.rock);
    this.setCreativeTab(CreativeTabs.tabBlock);
    
    }
    public TileEntity createTileEntity(World world, int metadata)
    {
    return new TileEntityCopper();
    }
    
    public boolean hasTileEntity(int metadata)
    {
    return true;
    }
    
    public boolean renderAsNormalBlock()
    {
    return false;
    }
    
    public boolean isOpaqueCube()
    {
    return false;
    }
    
    public int idDropped(int par1, Random par2Random, int par3)
    {
    return coppermineralitem.idDropped;
    }
    public int quantityDropped(Random par1Random)
    {
    return 2;
    }
    
    @SideOnly(Side.CLIENT)
    public int getRenderType()
    {
    return ClientProxy.renderInventoryTESRId;
    }
    
    @Override
    public TileEntity createNewTileEntity(World world) {
    // TODO Auto-generated method stub
    return new TileEntityCopper();
    }
    }
    
    

    item:

    
    package Mineralherb.Items;
    
    import java.util.Random;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    
    public class coppermineralitem extends Item{
    
    public static int idDropped;
    public static int itemID;
    
    public coppermineralitem(int id){
    super(id);
    this.setCreativeTab(CreativeTabs.tabMaterials);
    setMaxStackSize(64);
    }
    }
    
    

    voila mes deux classes, qu'est ce qui cloche?


  • Administrateurs

    public int idDropped(int metadata, Random rand, int fortune)
    {
    return TaClassePrincipale.coppermineralitem.itemID;
    }
    


  • TaClassePrincipale: Mineralherbmain ?


  • Administrateurs

    Non, tu remplace par le nom de la classe principale.tu mets le nom de l'objet de l'item qui doit être dropé.itemID
    C'est pas compliqué.



  • EDIT: résolue: une génération random et voila:
    int randomloot;
    int lower = 1;
    int higher = 6;

    int random = (int)(Math.random() * (higher-lower)) + lower;
    return this.blockID == MineralherbMain.coppermineralitem.itemID ? 6 + par1Random.nextInt(2) : random;


Log in to reply