Crée des blocks avancé déstructible que par certains item



  • Bonjour la compagnie c'est re moi aujourd'hui dans la finalisation de mon premier mod je me heurt a un soucie après quelques recherches infructueuses je me tourne vers vous ! Je souhaiterais définir qu'un block soit destructible par un certain type de pickaxe et que si il n'est utilisé le bon outils le block ne drop pas  mais sans sucé

    
    classe du block
    
    **public class BlockOreCopper extends Block {
    
    public BlockOreCopper(Material Material) {
    super(Material);
    this.setHarvestLevel("ironToolMaterial", 4);
    this.setHardness(4.0F);
    
    classe de la tools materials
    
    public static final Item.ToolMaterial ToolFlintMaterial = EnumHelper
    .addToolMaterial("ToolFlintMaterial", 0, 125, 1F, 1F, 2);
    
    }
    **
    
    


  • @'Orkals':

    Bonjour la compagnie c'est re moi aujourd'hui dans la finalisation de mon premier mod je me heurt a un soucie après quelques recherches infructueuses je me tourne vers vous ! Je souhaiterais définir qu'un block soit destructible par un certain type de pickaxe et que si il n'est utilisé le bon outils le block ne drop pas  mais sans sucé

    
    classe du block
    
    **public class BlockOreCopper extends Block {
    
    public BlockOreCopper(Material Material) {
    super(Material);
    this.setHarvestLevel("ironToolMaterial", 4);
    this.setHardness(4.0F);
    
    classe de la tools materials
    
    public static final Item.ToolMaterial ToolFlintMaterial = EnumHelper
    .addToolMaterial("ToolFlintMaterial", 0, 125, 1F, 1F, 2);
    
    }
    **
    
    

    Tu peux te servir de l'event BreakEvent et que si 'item tenu par le joueur ayant détruit le block correspond à tel ou tel type de pickaxe et bien tu te sers de la méthode dropItem(Item i, float f) (je ne suis pas très sûr des arguments tu regarderas), sinon tu cancel l'event et le block ne sera pas détruit


  • Administrateurs

    @'Orkals':

    Je souhaiterais définir qu'un block soit destructible par un certain type de pickaxe et que si il n'est utilisé le bon outils le block ne drop pas  mais sans sucé

    ?!?
    J'ai rien compris à la fin.

    Si tu veux qu'il ne soit que destructible avec un item en particulier, tu peux utiliser ça :

    ​ public float getPlayerRelativeBlockHardness(EntityPlayer player, World world, int x, int y, int z)
    ​ {
    ​ ​ if(player.inventory.getCurrentItem() == null || player.inventory.getCurrentItem().getItem() != ClassePrincipale.TaPioche)
    ​ ​ {
    ​ ​ ​ return -1;
    ​ ​ }
    ​ return ForgeHooks.blockStrength(this, player, world, x, y, z);
    ​ }
    


  • j'ai pas réussi a faire que mon item ne drop pas,  je vais testé merci les gars



  • Je te prépare l'event vite fait comme tu veux tu feras tes modifications par-dessus

    @SubscribeEvent
    
    public void onBlockDestroyed(BreakEvent event)
    {
    if (event.block instanceof MainClass.tonBlock && event.getPlayer != null)
    {
    EntityPlayer player = event.getPlayer();
    ItemStack currentItem = player.inventory.getCurrentItem();
    if(currentItem != null)
    {
    Item heldItem = currentItem.getItem();
    if(heldItem != null && heldItem instanceof MainClass.TonItem)
    {
    player.dropItem(MainClass.ItemSouhaiteDroppe, 1);
    }
    }
    }
    
    }
    

    Voilà je t'ai fait ça vite fait ça devrait correspondre à tes attentes



  • Merci les gars



  • @'Orkals':

    Merci les gars

    Si le code que je t'ai filé marche comme tu le souhaitais tu peux passer le sujet en résolu.