Помогите Не изменяет DisplayName.

Статус
Закрыто для дальнейших ответов.

MinotaurWorld

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
MinotaurWorld
Не знаю в чём проблема но не изменяется имя предмета в руках.
код:
JavaScript:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (!sender.hasPermission("codeyourhouse.setcode")){
            sender.sendMessage(ChatColor.RED + "У вас не прав!");
            return true;
        }
        if (args.length == 0){
            return false;
        }
        if (args.length > 1){
            return false;
        }
        if (args.length == 1){
        Player p = (Player) sender;
        if (p.getItemInHand().getType() == Material.TRIPWIRE_HOOK){
            p.getItemInHand().getItemMeta().setDisplayName(args[0]);
            p.sendMessage(ChatColor.BLUE + "Успешно!");
        }
        if (p.getItemInHand().getType() == Material.CHEST){
            p.getItemInHand().getItemMeta().setDisplayName(args[0]);
            p.sendMessage(ChatColor.BLUE + "Успешно!");
        }
        if (p.getItemInHand().getType() == Material.FURNACE){
            p.getItemInHand().getItemMeta().setDisplayName(args[0]);
            p.sendMessage(ChatColor.BLUE + "Успешно!");
        }
        if (p.getItemInHand().getType() != Material.TRIPWIRE_HOOK && p.getItemInHand().getType() != Material.CHEST && p.getItemInHand().getType() != Material.FURNACE){
            p.sendMessage(ChatColor.RED + "Имя можно менять только у крюка, сундука, или печки!");
        }
        }
        return true;
    }

}
С командой всё нормально. В чат пишется "Успешно.", но имя не меняется.
 
забыл поставить setItemMeta
 
Java:
                ItemStack it = p.getItemInHand();
                ItemMeta meta = it.getItemMeta();
                meta.setDisplayName(args[0]);
                it.setItemMeta(meta);
 
Ну, начнём с того, что запятая не ставиться перед ИЛИ, а во вторых, если перейти к вопросу, ты не установил meta на свой itemstack.

А вот тебе полный, новый код. Уже исправленный
Код:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(!(sender instanceof Player)) {
            getLogger().info("You cant execute that command, because you not are Player!");
        } else {
            if(cmd.getName().equalsIgnoreCase("command"))
                if(!sender.hasPermission("codeyourhouse.setcode")) {
                    sender.sendMessage("§cУ вас недостаточно прав для исполнения данной команды!");
                    return true;
                } else {
                    if (args.length != 1) {
                        Player p = (Player) sender;
                        if (p.getItemInHand().getType() == Material.TRIPWIRE_HOOK ||
                                p.getItemInHand().getType() == Material.CHEST ||
                                p.getItemInHand().getType() == Material.FURNACE) {
                            p.getItemInHand().getItemMeta().setDisplayName(args[0]);
                            p.sendMessage(ChatColor.BLUE + "Успешно!");
                        }
                        if (p.getItemInHand().getType() != Material.TRIPWIRE_HOOK ||
                                p.getItemInHand().getType() != Material.CHEST ||
                                p.getItemInHand().getType() != Material.FURNACE) {
                            p.sendMessage(ChatColor.RED + "§cДействие невозможно, так как предмет в вашей руке не является §6крюком§c, §6сундуком§c или §6печкой§c!");
                        }
                    }
                    return true;
                }
        }
        return false;
    }
 
Последнее редактирование:
Ну, начнём с того, что запятая не ставиться перед ИЛИ, а во вторых, если перейти к вопросу, ты не установил meta на свой itemstack.

А вот тебе полный, новый код. Уже исправленный
Код:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(!(sender instanceof Player)) {
            getLogger().info("You cant execute that command, because you not are Player!");
        } else {
            if(cmd.getName().equalsIgnoreCase("command"))
                if(!sender.hasPermission("codeyourhouse.setcode")) {
                    sender.sendMessage("§cУ вас недостаточно прав для исполнения данной команды!");
                    return true;
                } else {
                    if (args.length != 1) {
                        Player p = (Player) sender;
                        if (p.getItemInHand().getType() == Material.TRIPWIRE_HOOK ||
                                p.getItemInHand().getType() == Material.CHEST ||
                                p.getItemInHand().getType() == Material.FURNACE) {
                            p.getItemInHand().getItemMeta().setDisplayName(args[0]);
                            p.sendMessage(ChatColor.BLUE + "Успешно!");
                        }
                        if (p.getItemInHand().getType() != Material.TRIPWIRE_HOOK ||
                                p.getItemInHand().getType() != Material.CHEST ||
                                p.getItemInHand().getType() != Material.FURNACE) {
                            p.sendMessage(ChatColor.RED + "§cДействие невозможно, так как предмет в вашей руке не является §6крюка§c, §6сундука§c, или §6печки§c!");
                        }
                    }
                    return true;
                }
        }
        return false;
    }
"Действие невозможно, так как предмет в вашей руке не является крюка, сундука, или печки!"
О каких знания русского языка тут может идти речь? Зачем других учишь тогда?
 
"Действие невозможно, так как предмет в вашей руке не является крюка, сундука, или печки!"
О каких знания русского языка тут может идти речь? Зачем других учишь тогда?
Извини, писал текст на основе его кода. После "или" запятую я не писал. Повторяюсь, это его же запятая...
Всё окончания в словах заменил.
Слушай, MinotaurWorld, не мог бы ты научиться закрывать темы, в которых тебе уже проблему решили?..
А если не решили, то пиши о возникшей ошибке..
 
Ну, начнём с того, что запятая не ставиться перед ИЛИ, а во вторых, если перейти к вопросу, ты не установил meta на свой itemstack.

А вот тебе полный, новый код. Уже исправленный
А в своём коде, ты как будто установил мету на итемстак....
Java:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(!(sender instanceof Player)) {
            getLogger().info("Ты не игрок");
            return true;
        }
        if(!sender.hasPermission("codeyourhouse.setcode")) {
            sender.sendMessage("§cУ вас недостаточно прав для исполнения данной команды!");
            return true;
        }
        if (args.length == 0 || args.length > 1) {
            sender.sendMessage("command args");
            return true;
        }
        Player p = (Player) sender;
        ItemStack it = p.getItemInHand();

        if (it != null && (p.getItemInHand().getType() == Material.TRIPWIRE_HOOK ||
                p.getItemInHand().getType() == Material.CHEST ||
                p.getItemInHand().getType() == Material.FURNACE)) {
            ItemMeta im = it.getItemMeta();
            im.setDisplayName(args[0]);
            it.setItemMeta(im);
            p.sendMessage(ChatColor.BLUE + "Успешно!");
            return true;
        }
        p.sendMessage(ChatColor.RED + "§cДействие невозможно, так как предмет в вашей руке не является §6крюком§c, §6сундуком§c или §6печкой§c!");
        return true;
    }
 
Последнее редактирование:
А в своём коде, ты как будто установил мету на итемстак....
Java:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(!(sender instanceof Player)) {
            getLogger().info("Ты не игрок");
            return true;
        }
        if(!cmd.getName().equalsIgnoreCase("command")) {
            return true;
        }
        if(!sender.hasPermission("codeyourhouse.setcode")) {
            sender.sendMessage("§cУ вас недостаточно прав для исполнения данной команды!");
            return true;
        }
        if (args.length == 0 || args.length > 1) {
            sender.sendMessage("command args");
            return true;
        }
        Player p = (Player) sender;
        ItemStack it = p.getItemInHand();

        if (it != null && (p.getItemInHand().getType() == Material.TRIPWIRE_HOOK ||
                p.getItemInHand().getType() == Material.CHEST ||
                p.getItemInHand().getType() == Material.FURNACE)) {
            ItemMeta im = it.getItemMeta();
            im.setDisplayName(args[0]);
            it.setItemMeta(im);
            p.sendMessage(ChatColor.BLUE + "Успешно!");
            return true;
        }
        p.sendMessage(ChatColor.RED + "§cДействие невозможно, так как предмет в вашей руке не является §6крюком§c, §6сундуком§c или §6печкой§c!");
        return true;
    }
Кстати, да)
Java:
 Зачем это? 
[LIST=1]
[*]       if(!cmd.getName().equalsIgnoreCase("command")) {
[*]           return true;
[*]       }
[/LIST]
 
А в своём коде, ты как будто установил мету на итемстак....
Java:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(!(sender instanceof Player)) {
            getLogger().info("Ты не игрок");
            return true;
        }
        if(!sender.hasPermission("codeyourhouse.setcode")) {
            sender.sendMessage("§cУ вас недостаточно прав для исполнения данной команды!");
            return true;
        }
        if (args.length == 0 || args.length > 1) {
            sender.sendMessage("command args");
            return true;
        }
        Player p = (Player) sender;
        ItemStack it = p.getItemInHand();

        if (it != null && (p.getItemInHand().getType() == Material.TRIPWIRE_HOOK ||
                p.getItemInHand().getType() == Material.CHEST ||
                p.getItemInHand().getType() == Material.FURNACE)) {
            ItemMeta im = it.getItemMeta();
            im.setDisplayName(args[0]);
            it.setItemMeta(im);
            p.sendMessage(ChatColor.BLUE + "Успешно!");
            return true;
        }
        p.sendMessage(ChatColor.RED + "§cДействие невозможно, так как предмет в вашей руке не является §6крюком§c, §6сундуком§c или §6печкой§c!");
        return true;
    }
Извини, писал текст на основе его кода. После "или" запятую я не писал. Повторяюсь, это его же запятая...
Всё окончания в словах заменил.
Взяв его код, я немного убрал лишнего, изменил текст. Я вообще не менял его ошибок. А на счёт правильного кода, я про грамматику, формулировку.

Ну а если быть честными, то это просто маза.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх