Выдача эффекта от определённого лука вне зависимости какая стрела выпущена

Версия Minecraft
1.12.2
API
Forge
У меня есть определённый лук. Если из него выпускается любая стрела, то эта стрела наделяется эффектом по типу левитаций...
Как?)
 
Последнее редактирование:
7,099
324
1,510
7,099
324
1,510
Пример подобной замены
Ивент отменяется, но сущность не создаётся...
Не кастуется (EntityLevitationArrow) arrow.createArrow(world, stack, player); ...
Java:
@SubscribeEvent
    public static void onPlayerLooseArrow(ArrowLooseEvent event) {
        EntityPlayer player = event.getEntityPlayer();
        boolean flag = event.hasAmmo();
        ItemStack stack = findAmmo(player);
        if (player.getHeldItemMainhand().getItem() == ItemsRegistry.upliftingbow) {
            if (flag) {
                //canceling vanilla event
                event.setCanceled(true);

                World world = event.getWorld();

                float f = ItemBow.getArrowVelocity(event.getCharge());

                if ((double) f >= 0.1D) {
                    if (!world.isRemote) {
                        LevitationArrow arrow = (LevitationArrow) (stack.getItem());
                        EntityLevitationArrow entityarrow = (EntityLevitationArrow) arrow.createArrow(world, stack, player);
                        entityarrow.shoot(player, player.rotationPitch, player.rotationYaw, 0.0F, f * 3.0F, 1.0F);

                        if (f == 1.0F) entityarrow.setIsCritical(true);

                        int j = EnchantmentHelper.getEnchantmentLevel(Enchantments.POWER, stack);

                        if (j > 0) entityarrow.setDamage(entityarrow.getDamage() + (double) j * 0.5D + 0.5D);

                        int k = EnchantmentHelper.getEnchantmentLevel(Enchantments.PUNCH, stack);

                        if (k > 0) entityarrow.setKnockbackStrength(k);

                        if (EnchantmentHelper.getEnchantmentLevel(Enchantments.FLAME, stack) > 0)
                            entityarrow.setFire(100);

                        stack.damageItem(1, player);

                        world.spawnEntity(entityarrow);
                    }
                }
            }
        }
    }
 
Последнее редактирование:
Сверху