MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Comment faire pour qu'un item puisse retirer un block

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    7 Messages 2 Publieurs 349 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • DeansD Hors-ligne
      Deans
      dernière édition par robin4002

      Bonsoir,

      Je vient vers vous pour vous demandez de l’aide. Voilà après plusieurs tentatives de ma part pour faire en sorte que mon item puisse retirer un block avec la fonction onItemRightClick, mais je n’arrive pas à faire fonctionner.

      Voici la classe de l’item :

      package fr.vesperia.vesperiamod.items.tools;
      
      import fr.vesperia.vesperiamod.VesperiaMod;
      import fr.vesperia.vesperiamod.init.ModItems;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.ActionResult;
      import net.minecraft.util.EnumHand;
      import net.minecraft.world.World;
      
      public class ItemBreakerObsidian extends Item 
      {
      	public ItemBreakerObsidian(String name)
      	{
      		setRegistryName(name);
      		setUnlocalizedName(name);
      		maxStackSize = 1;
      		setMaxDamage(100);
      		setCreativeTab(VesperiaMod.Modtab);
      
      		ModItems.instance.getItems().add(this);
      	}
      
      	public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
      	{
      		
      	}
      }
      

      Merci d’avance 😃

      1 réponse Dernière réponse Répondre Citer 0
      • En0ri4nE Hors-ligne
        En0ri4n
        dernière édition par

        Salut !
        C’est assez simple : tu vérifies si le monde n’est pas client : !world.isRemote puis tu fais world.destroyBlock(BlockPos, dropBlock); mais utilise la fonction onItemUse car cette fonction s’executes quand tu click sur un block et te donnes aussi la position du block 😄

        Le java c'est comme une boîte de chocolat, on sait jamais sur quoi on va tomber !

        1 réponse Dernière réponse Répondre Citer 1
        • DeansD Hors-ligne
          Deans
          dernière édition par Deans

          @Eno_gamer10 a dit dans Comment faire pour qu'un item puisse retirer un block :

          world.destroyBlock(BlockPos, dropBlock);

          C’est ce que j’ai fait plus ou moins, mais je souhaite faire en sorte que l’item casse un block en particulier et aussi qui permet de la durabilité.

          Voici le code que j’ai fait :

          
          import fr.vesperia.vesperiamod.VesperiaMod;
          import fr.vesperia.vesperiamod.init.ModItems;
          import net.minecraft.entity.player.EntityPlayer;
          import net.minecraft.item.Item;
          import net.minecraft.item.ItemStack;
          import net.minecraft.util.ActionResult;
          import net.minecraft.util.EnumActionResult;
          import net.minecraft.util.EnumFacing;
          import net.minecraft.util.EnumHand;
          import net.minecraft.util.math.BlockPos;
          import net.minecraft.world.World;
          
          public class ItemBreakerObsidian extends Item 
          {
          	public ItemBreakerObsidian(String name)
          	{
          		setRegistryName(name);
          		setUnlocalizedName(name);
          		maxStackSize = 1;
          		setMaxDamage(100);
          		setCreativeTab(VesperiaMod.Modtab);
          
          		ModItems.instance.getItems().add(this);
          	}
          	
          	@Override
          	public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand,
          			EnumFacing facing, float hitX, float hitY, float hitZ) 
          	{
          		if(!worldIn.isRemote)
          		{
          			worldIn.destroyBlock(pos.offset(facing), false);
          		}
          		return super.onItemUse(player, worldIn, pos, hand, facing, hitX, hitY, hitZ);
          	}
          }
          

          Merci pour ton aide.

          1 réponse Dernière réponse Répondre Citer 0
          • En0ri4nE Hors-ligne
            En0ri4n
            dernière édition par

            Pour faire ça tu check le block à la position comme ça :

            if(world.getBlockState(BlockPos).getBlock() == Blocks.OBSIDIAN)
            

            Puis pour enlever de la durabilité tu fais comme ça :

            player.getHeldItemMainhand().damageItem(1, player);
            

            Ici l’itemstack va avoir 1 en moins dans sa durabilité mais met bien cette fonction dans la condition sinon meme quand le block ne sera pas celui que tu voudras l’item va être cassé

            Le java c'est comme une boîte de chocolat, on sait jamais sur quoi on va tomber !

            1 réponse Dernière réponse Répondre Citer 0
            • DeansD Hors-ligne
              Deans
              dernière édition par

              @Eno_gamer10 a dit dans Comment faire pour qu'un item puisse retirer un block :

              player.getHeldItemMainhand().damageItem(1, player);

              Alors ça enlève la durabilité et ça fait l’action, mais le block ne ce retire pas.

              1 réponse Dernière réponse Répondre Citer 0
              • En0ri4nE Hors-ligne
                En0ri4n
                dernière édition par En0ri4n

                pourquoi pos.offset(facing) ? juste pos
                Tu peux me montrer ton code ?

                Le java c'est comme une boîte de chocolat, on sait jamais sur quoi on va tomber !

                1 réponse Dernière réponse Répondre Citer 0
                • DeansD Hors-ligne
                  Deans
                  dernière édition par

                  Oui c’est moi je suis bête, mais merci beaucoup ça fonctionne.

                  Passe une bonne soirée à toi.

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB