Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Метки:
Теги Теги
java 8 spigot 1.16.5 плагины
Статус
Закрыто для дальнейших ответов.

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 + "Кикнуты администратором"));
                }
            }
        }
    }
 
Последнее редактирование:
Ты используешь не тод метод. Я написал addEnchantment(), а не getEnchantmentLevel()
да я понял а как выдать именно снежок


Код:
@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 + "Кикнуты администратором"));
                }
            }
        }
    }
 
так


Код:
@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 + "Кикнуты администратором"));
                }
            }
        }
    }
 
так


Код:
@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 + "Кикнуты администратором"));
                }
            }
        }
    }
Ты сначала выдаешь предмет, а потом устанавливаешь предмету энчант, поменяй местами ._.
 
так


Код:
@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 + "Кикнуты администратором"));
                }
            }
        }
    }
После того как изменяешь предмет в Inventory игрока лучше делать еще:
PHP:
            player.updateInventory();
 
Сервер выдает ошыбку 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​
 
Сервер выдает ошыбку 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 + "Кикнуты администратором"));
                }
            }
        }
    }
Потому что у игрока может не быть предмета в руке. Добавь это сразу после объявления предмета
Код:
if(yourItem == null) return;
 
Потому что у игрока может не быть предмета в руке. Добавь это сразу после объявления предмета
Код:
if(yourItem == null) return;
Да нет, тут скорее проблема в материале AIR, который не имеет меты. getItemInMainHand не возвращает null.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх