1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

В разработке ItemStack выдать предмет с зачарованиями

Тема в разделе "Разработка плагинов для новичков", создана пользователем Thorgathis, 5 ноя 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    ItemStack выдать предмет с зачарованиями
    помогите пожалуйста


    Код:
     @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
            if(e.getEntity().getShooter() instanceof Player) {
                Player p = (Player) e.getEntity().getShooter();
                Player t = (Player) e.getHitEntity();
                if(e.getEntity() instanceof /*проверка предмета(нужно ещё на энчант)*/Snowball) {
                    if(e.getHitEntity() instanceof Player) {
                        if (p.getGameMode() == GameMode.SURVIVAL) {
                            //выдоча предмета с энчантом
                        }
                        if (p.getGameMode() == GameMode.CREATIVE) {
                            
                        }
    
                        p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
                        Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
                    }
                }
            }
        }
     
    Последнее редактирование: 5 ноя 2021
  2. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    ItemMeta
     
  3. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    ты туту я сказал ItemMeta я знаю что ItemMeta я не понимаю как его выдать
     
  4. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Код:
    player.getInventory().addItem(yourItem);
     
  5. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    с ЭНЧАНТОМ как
     
  6. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Делаешь энчант через ItemMeta, как сказал LOVEC3327, а потом выдаешь, как я тебе сказал
     
  7. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    как его сделать????
     
  8. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Код:
    ItemStack itemStack = что-то;
    itemStack.addEnchantment(Enchantment.ЗАЧАРОВАНИЕ, уровень);
     
  9. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Ты используешь не тод метод. Я написал addEnchantment(), а не getEnchantmentLevel()
     
  10. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    да я понял а как выдать именно снежок


    Код:
    @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
            if(e.getEntity().getShooter() instanceof Player) {
                Player p = (Player) e.getEntity().getShooter();
                Player t = (Player) e.getHitEntity();
                ItemStack item = p.getPlayer().getInventory().getItemInMainHand();
    
                if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                    if(e.getHitEntity() instanceof Player) {
                        if (p.getGameMode() == GameMode.SURVIVAL) {
                            item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
                        }
                        if (p.getGameMode() == GameMode.CREATIVE) {
                            
                        }
    
                        p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
                        Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
                    }
                }
            }
        }
     
  11. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
     
  12. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    так


    Код:
    @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
            if(e.getEntity().getShooter() instanceof Player) {
                Player p = (Player) e.getEntity().getShooter();
                Player t = (Player) e.getHitEntity();
                ItemStack item = p.getPlayer().getInventory().getItemInMainHand();
    
                if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                    if(e.getHitEntity() instanceof Player) {
                        if (p.getGameMode() == GameMode.SURVIVAL) {
                            p.getInventory().addItem(item);
                            item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
                        }
                        if (p.getGameMode() == GameMode.CREATIVE) {
                          
                        }
    
                        p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
                        Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
                    }
                }
            }
        }
     
  13. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Ты сначала выдаешь предмет, а потом устанавливаешь предмету энчант, поменяй местами ._.
     
  14. Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    После того как изменяешь предмет в Inventory игрока лучше делать еще:
    PHP:
                player.updateInventory();
     
  15. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Глупости какие, первый раз слышу.
     
  16. Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ну да ты попробуй изменить предмет у игрока. Он изменится только после updateInventory. Как минимум у меня так.
     
  17. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Ну у меня всё отлично с этим
     
  18. Автор темы
    Thorgathis

    Thorgathis Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    Сервер выдает ошыбку null
    вот код
    ругается на эту строку
    item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);


    Код:
        @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
            if(e.getEntity().getShooter() instanceof Player) {
                Player p = (Player) e.getEntity().getShooter();
                Player t = (Player) e.getHitEntity();
                ItemStack item = p.getPlayer().getInventory().getItemInMainHand();
                item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
                item.setType(Material.SNOWBALL);
                if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                    if(e.getHitEntity() instanceof Player) {
                        if (p.getGameMode() == GameMode.SURVIVAL) {
                            p.getInventory().addItem(item);
                            p.updateInventory();
    
                        }
                        if (p.getGameMode() == GameMode.CREATIVE) {
                          
                        }
    
                        p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
                        Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
                    }
                }
            }
        }
    @mirrerror
     
  19. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    Потому что у игрока может не быть предмета в руке. Добавь это сразу после объявления предмета
    Код:
    if(yourItem == null) return;
     
  20. LOVEC3327

    LOVEC3327 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Да нет, тут скорее проблема в материале AIR, который не имеет меты. getItemInMainHand не возвращает null.
     
Статус темы:
Закрыта.

Поделиться этой страницей