Comment enlever un item d'un stack avec onItemUse



  • Bonjour, je tente depuis 2 jours de créer un item "stackable" qui a le même effet que la hache(avec clic droit sur une buche ça enlève l'écorce.) jusque la tout va bien j'ai juste copier coller cette effet.

    Je voudrais, lorsque je fait clic droit sur une buche, que ça enlève un item du stack (ex: j'en est 16 dans ma main et après le clic il m'en reste 15) et pas que sa donne des damageItem.

    J'ai fait me recherche mais je comprend pas comment l'utiliser dans mon code ou juste ça fonctionne pas.

    je tien a préciser que je suis un débutant et que j'ai pas toucher au code de minecraft depuis la 1.7 merci de la compréhension.

    ( Mon item avec le onItemUse de la hache )

    
    protected static final Map<Block, Block> BLOCK_STRIPPING_MAP = (new Builder<Block, Block>()).put(Blocks.OAK_WOOD, Blocks.STRIPPED_OAK_WOOD).put(Blocks.OAK_LOG, Blocks.STRIPPED_OAK_LOG).put(Blocks.DARK_OAK_WOOD, Blocks.STRIPPED_DARK_OAK_WOOD).put(Blocks.DARK_OAK_LOG, Blocks.STRIPPED_DARK_OAK_LOG).put(Blocks.ACACIA_WOOD, Blocks.STRIPPED_ACACIA_WOOD).put(Blocks.ACACIA_LOG, Blocks.STRIPPED_ACACIA_LOG).put(Blocks.BIRCH_WOOD, Blocks.STRIPPED_BIRCH_WOOD).put(Blocks.BIRCH_LOG, Blocks.STRIPPED_BIRCH_LOG).put(Blocks.JUNGLE_WOOD, Blocks.STRIPPED_JUNGLE_WOOD).put(Blocks.JUNGLE_LOG, Blocks.STRIPPED_JUNGLE_LOG).put(Blocks.SPRUCE_WOOD, Blocks.STRIPPED_SPRUCE_WOOD).put(Blocks.SPRUCE_LOG, Blocks.STRIPPED_SPRUCE_LOG).build();
       
     public ActionResultType onItemUse(ItemUseContext context) {
            World world = context.getWorld();
            BlockPos blockpos = context.getPos();
            BlockState blockstate = world.getBlockState(blockpos);
            Block block = BLOCK_STRIPPING_MAP.get(blockstate.getBlock());
            if (block != null) {
               PlayerEntity playerentity = context.getPlayer();
               world.playSound(playerentity, blockpos, SoundEvents.ITEM_AXE_STRIP, SoundCategory.BLOCKS, 1.0F, 1.0F);
               if (!world.isRemote) {
                  world.setBlockState(blockpos, block.getDefaultState().with(RotatedPillarBlock.AXIS, blockstate.get(RotatedPillarBlock.AXIS)), 11);
                  if (playerentity != null) {
                     context.getItem().damageItem(1, playerentity, (p_220040_1_) -> {
                        p_220040_1_.sendBreakAnimation(context.getHand());
                     });
                  }
               }
    
               return ActionResultType.SUCCESS;
            } else {
               return ActionResultType.PASS;
            }
         }
    

    Un grand merci de l'aide.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonjour,

    C'est juste context.getItem().shrink(1) pour réduire de 1 le nombre d'item.



  • @Axhar005 a dit dans Comment enlever un item d'un stack avec onItemUse :

    Merci beaucoup maintenant je comprend mieux, le context.getItem return l'item que l'on a dans notre main.


Log in to reply