Помогите Не работает команды

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

TorwaldOswarld

Активный участник
Пользователь
Баллы
78
Имя в Minecraft
PuxTa4
Всем привет ,пытаюсь сделать выдачу предмета из конфига.Не пойму почему не срабатывает команда,подскажите пожалуйста как исправить проблему
Код:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player) {
            Player p = (Player)sender;
            if(check((Player) sender, getConfig().getInt("cooldown"))) {
                if(cmd.getName().equalsIgnoreCase("present")) {
                    for (String s: items){
                        ItemStack item = new ItemStack(Material.getMaterial(s.toUpperCase()));
                        item.getItemMeta().setDisplayName(this.getConfig().getString("items."+s+".name").replace("&", "§"));
                        item.getItemMeta().setLore(this.getConfig().getStringList("items.."+s+"lore"));
                        p.getInventory().addItem(new ItemStack(item));
                        p.sendMessage(message1.replace("&", "§"));
                    }
                }
                return true;
            }
        }
        return true;
    }
 
ItemMeta неправильно изменяешь.
А так, где ошибка? Если нету, скинь код метода check().
 
а как его надо правильно изменить ?
Вот метод Check()
Код:
    static boolean check(Player user, long tmp) {
        long time = System.currentTimeMillis();
        Long last = usertime.get(user);
        if(last!= null) {
            if((time-last)<tmp) {
                user.sendMessage("§7§l[§4§lНовогодний Подарок§7§l] §e§lСледующий подарок будет доступен через§e§l " + (tmp-(time-last)) + " §e§lминут");
                return false;
            }
        }
        usertime.put(user, time);
        return true;
    }
 
ItemMeta неправильно изменяешь.
А так, где ошибка? Если нету, скинь код метода check().
Ответ выше,ошибки никакой нету ,когда компилирую плагин ,загружаю на сервер ,пишу команду ,ничего не выдает ,ни сообщения ,ничего
 
а как его надо правильно изменить ?
Вот метод Check()
Код:
    static boolean check(Player user, long tmp) {
        long time = System.currentTimeMillis();
        Long last = usertime.get(user);
        if(last!= null) {
            if((time-last)<tmp) {
                user.sendMessage("§7§l[§4§lНовогодний Подарок§7§l] §e§lСледующий подарок будет доступен через§e§l " + (tmp-(time-last)) + " §e§lминут");
                return false;
            }
        }
        usertime.put(user, time);
        return true;
    }
PHP:
ItemMeta meta = item.getItemMeta();
meta.setDisplayName...
item.setItemMeta(meta);
Проверь корректно ли работает check (отладку сделай).
 
PHP:
ItemMeta meta = item.getItemMeta();
meta.setDisplayName...
item.setItemMeta(meta);
Проверь корректно ли работает check (отладку сделай).
правильно работает ,я пробовал сделать выдачу предмета не через конфиг ,все работало
 
Ты эту мету не сохраняешь.
PHP:
ItemMeta meta = item.getItemMeta();

meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("items." + s + ".name")));
meta.setLore(this.getConfig().getStringList("items." + s + "lore").stream().map(str -> ChatColor.translateAlternateColorCodes('&', str)).collect(Collectors.toList()));

item.setItemMeta(meta);
 
Кстати, сейчас присмотрелся, и вот что.
  1. У тебя должно быть в конфиге указано время кд в миллисекундах;
  2. Не нужно делать проверку last на нуль. Если оно нуль, то ты просто ничего не делаешь, а соответственно выполнить команду 1-ый раз у тебя не получится. Если задать какое нибудь время в мапу для игрока, которое бы подходило по кд - то все сработает.
 
Кстати, сейчас присмотрелся, и вот что.
  1. У тебя должно быть в конфиге указано время кд в миллисекундах;
  2. Не нужно делать проверку last на нуль. Если оно нуль, то ты просто ничего не делаешь, а соответственно выполнить команду 1-ый раз у тебя не получится. Если задать какое нибудь время в мапу для игрока, которое бы подходило по кд - то все сработает.
в конфиге время кд указано в милисекундах,и даже с проверкой нуль все работает ,если выдавать предмет не через конфиг
 
в конфиге время кд указано в милисекундах,и даже с проверкой нуль все работает ,если выдавать предмет не через конфиг
В каком смысле не работает, если указано из конфига? Название, лор не ставятся? Попробуй перепроверить ссылку, может поставил 2 точки, а может и наоборот, забыл поставить ту точку. Проверь, может у тебя конфиг загружается позже выполнения, а может вообще не загружается. Пытайся дебажить, выводить все значения из конфига в чат.
 
В каком смысле не работает, если указано из конфига? Название, лор не ставятся? Попробуй перепроверить ссылку, может поставил 2 точки, а может и наоборот, забыл поставить ту точку. Проверь, может у тебя конфиг загружается позже выполнения, а может вообще не загружается. Пытайся дебажить, выводить все значения из конфига в чат.
Пробую пересоздать конфиг
 
В общем ,как я понял ,все работает до цикла for,внутри цикла ничего не работает
Я в душе не чаю, что это за цикл for. Можешь кинуть полный класс, описать ошибку? Не так, что не работает когда конфиг, а по-нормальному. Что не работает, при каких условиях, на какой строке (хотя бы предположительно).
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх