разрешить ставить определенные блоки на блок с методом onBlockActivated без нажатия шифт

Версия Minecraft
1.16.5
API
Forge
56
4
3
мне нужно каким-то образом сделать так, чтобы я мог ставить черепа на блок без нажатия SHIFT. на блоке есть такая процедурка:

Java:
    @SuppressWarnings("deprecation")
    @Override
    public ActionResultType onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) {
        if(player.getHeldItem(hand).getItem() == CoSRPGItems.CosoriteScrap.get()) {
            if (!world.isRemote()) {
                BlockPos YblockPos = new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ());
                BlockState Yblock = world.getBlockState(YblockPos);
                if(Yblock.getBlock() == Blocks.SKELETON_SKULL || Yblock.getBlock() == Blocks.WITHER_SKELETON_SKULL) {
                    if (!player.isCreative())
                        player.getHeldItem(hand).shrink(1);
                    world.playSound(null, player.getPosX(), player.getPosY(), player.getPosZ(),
                            SoundEvents.PARTICLE_SOUL_ESCAPE, SoundCategory.BLOCKS, 1.7f, 0.7f);
                    world.setBlockState(pos.up(1), Blocks.AIR.getDefaultState());
                    if (!player.inventory.addItemStackToInventory(new ItemStack(CoSRPGItems.Cosorite.get())))
                        player.dropItem(new ItemStack(CoSRPGItems.Cosorite.get()), false);
                }
            }
            else return ActionResultType.FAIL;
        }
        return ActionResultType.CONSUME;
    }
и эта процедурка не дает ставить блоки без шифта. мне не нужно, чтобы можно было ставить все блоки, мне нужно, чтобы можно было без шифта ставить только череп и только череп визера. надеюсь понятно объяснил, что хочу

mcp
 
351
26
97
Ловишь событие PlayerInteractEvent, далее:

1. Проверка что это Server Side
2. Проверка что это твой блок
3. Проверка что в руках игрока Items.WITHER_SKELETON_SKULL
4. Создаёшь свой BlockPos, в него добавляешь корды относительно Direction из события
5. Вызываешь BlockEvent.EntityPlaceEvent, проверяешь что он не отменён
6. Если игрок не в гм, то забираешь из инвентаря один череп
7. Ставишь череп (надеюсь тут уже догадаешься, как это сделать по нормальному, потому что расписывать мне это откровенно лень)
 
56
4
3
1. Проверка что это Server Side
2. Проверка что это твой блок
3. Проверка что в руках игрока Items.WITHER_SKELETON_SKULL
4. Создаёшь свой BlockPos, в него добавляешь корды относительно Direction из события
5. Вызываешь BlockEvent.EntityPlaceEvent, проверяешь что он не отменён
6. Если игрок не в гм, то забираешь из инвентаря один череп
7. Ставишь череп (надеюсь тут уже догадаешься, как это сделать по нормальному, потому что расписывать мне это откровенно лень)
нашел короче способ в разы легче, чем тот, на который я ответил выше

Java:
        if (player.getHeldItem(hand).getItem() == Items.WITHER_SKELETON_SKULL) {
            return ActionResultType.PASS;
        }
        if (player.getHeldItem(hand).getItem() == Items.SKELETON_SKULL) {
            return ActionResultType.PASS;
        }

и все. работает идеально и без костылей
 
Сверху