11 mai 2016, 18:21

Bon je t’ai déjà rapidement fait ceci pour les minérais vanilla UNIQUEMENT :

public class ItemTestPickaxe extends ItemPickaxe
{
public ItemTestPickaxe()
{
super(ToolMaterial.EMERALD);
MinecraftForge.EVENT_BUS.register(this);
}

@Override
public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity)
{
if((double)block.getBlockHardness(world, x, y, z) != 0.0D)
{
stack.damageItem(1, entity);
}
this.dropSmeltOre(block, x, y, z, (EntityPlayer)entity);
return true;
}

private void dropSmeltOre(Block block, int x, int y, int z, EntityPlayer player)
{
if(block instanceof BlockOre)
{
System.out.println(block.getUnlocalizedName());
ItemStack result = FurnaceRecipes.smelting().getSmeltingResult(new ItemStack(block));
System.out.println(result.getDisplayName());
if(!player.worldObj.isRemote && result != null)
player.worldObj.spawnEntityInWorld(new EntityItem(player.worldObj, x, y, z, result));
}
}

@SubscribeEvent
public void onOreDestroyed(BlockEvent.HarvestDropsEvent event)
{
if(event.block instanceof BlockOre)
event.drops.clear();
}
}

Maintenant je regarde pour les mods ajoutant de nouveaux minérais …

ATTENTION :
Après m’en être rendu compte, je viens de me rendre compte que j’ai fait une petite bêtise dans mon code, que tu pourras régler (pas compliqué …). Si tu mines des BlockOre, tels que les minérais de redstone ou encore de lapis, mon code adapté pour d’autres minérais ayant besoin d’être cuits, feront spawn qu’une seule redstone ou qu’un seul lapis. Donc en fait il faudrait que tu retravailles avec des conditions l’event pour modifier la quantité du drop, ou tout simplement l’arraylist drops, je pense que c’est faisable en rajoutant ton itemstack avec une quantité (un des integer en paramètre du constructeur ItemStack) random comme le fait MC. Si tu n’y arrives pas, je t’aiderai (comme d’hab j’ai envie de dire) 😛