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

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

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;
    }
 
В каком смысле не работает, если указано из конфига? Название, лор не ставятся? Попробуй перепроверить ссылку, может поставил 2 точки, а может и наоборот, забыл поставить ту точку. Проверь, может у тебя конфиг загружается позже выполнения, а может вообще не загружается. Пытайся дебажить, выводить все значения из конфига в чат.
Я в душе не чаю, что это за цикл for. Можешь кинуть полный класс, описать ошибку? Не так, что не работает когда конфиг, а по-нормальному. Что не работает, при каких условиях, на какой строке (хотя бы предположительно).
Я пробую и в начале цикла выводить просто надпись ,ничего не работает
Ты какой то глупый. Никто тебе сможет поможет, ты не можешь нормально сказать, что именно не работает...
 
Ты какой то глупый. Никто тебе сможет поможет, ты не можешь нормально сказать, что именно не работает...
О чем можно вести разговор ,если ты не знаешь ,что такое цикл for ,вот тебе полный класс
до строки for (String s: items) работает ,все что идет дальше ,не работает
Код:
public class Core extends JavaPlugin implements Listener{
   
    private String message1;

   
    static WeakHashMap<Player, Long> usertime = new WeakHashMap<Player, Long>();
    List<String> items = this.getConfig().getStringList("items");
    List<String> players = new ArrayList<String>();

   
    @Override
    public void onEnable() {
        File config = new File(getDataFolder() + File.separator + "config.yml");
        if(!config.exists()){
            getLogger().info("Creating new ,file config...");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }
        getLogger().info("[ChristmasPresent] Плагин включен.");
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }
   
   
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player) {
            Player p = (Player)sender;
            if(check((Player) sender, 5000)) {
                if(cmd.getName().equalsIgnoreCase("present")) {  
                        for (String s: items){
                            ItemStack item = new ItemStack(Material.getMaterial(s.toUpperCase()));
                            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);
                            p.getInventory().addItem(new ItemStack(item));
                            p.sendMessage(message1.replace("&", "§"));
                        }
                }
                return true;
            }
        }
        return true;
    }

    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;
    }                                
}
 
Если нету ошибок - делай дебаг, if где-то вернул false
 
О чем можно вести разговор ,если ты не знаешь ,что такое цикл for ,вот тебе полный класс
до строки for (String s: items) работает ,все что идет дальше ,не работает
Код:
public class Core extends JavaPlugin implements Listener{
  
    private String message1;

  
    static WeakHashMap<Player, Long> usertime = new WeakHashMap<Player, Long>();
    List<String> items = this.getConfig().getStringList("items");
    List<String> players = new ArrayList<String>();

  
    @Override
    public void onEnable() {
        File config = new File(getDataFolder() + File.separator + "config.yml");
        if(!config.exists()){
            getLogger().info("Creating new ,file config...");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }
        getLogger().info("[ChristmasPresent] Плагин включен.");
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }
  
  
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player) {
            Player p = (Player)sender;
            if(check((Player) sender, 5000)) {
                if(cmd.getName().equalsIgnoreCase("present")) { 
                        for (String s: items){
                            ItemStack item = new ItemStack(Material.getMaterial(s.toUpperCase()));
                            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);
                            p.getInventory().addItem(new ItemStack(item));
                            p.sendMessage(message1.replace("&", "§"));
                        }
                }
                return true;
            }
        }
        return true;
    }

    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;
    }                               
}
Мда, ты реал какой то отбитый в задницу. Ты кидаешь 1 кусок кода, говоришь: "не работает!!!". Что не работает - не объясняешь... Ты не понимаешь, что я спрашиваю? Алло, что не работает?
 
message1 у тебя нулл, чо тут не понятного - то...
Писец, докатились...
 
ТС же сказал, что у него не выполняется содержимое цикла for. Про исключения ничего не говорил.
Получается, просто список items пуст. Или я чего-то не понимаю?
 
ТС же сказал, что у него не выполняется содержимое цикла for. Про исключения ничего не говорил.
Получается, просто список items пуст. Или я чего-то не понимаю?
Если у него реально список пустой, то он еще глупее, чем писал я раньше...

UPD: вот твой фикс. Пробуй отправить игроку items.size(). Если он 0, то у тебя в конфиге нету объекта с ключом "items".
 
Если у него реально список пустой, то он еще глупее, чем писал я раньше...

UPD: вот твой фикс. Пробуй отправить игроку items.size(). Если он 0, то у тебя в конфиге нету объекта с ключом "items".
В общем ,оказывается проблема с конфигом,выдает в консоль nulll ,да,возможно я еще не все знаю,именно поэтому пишу вам,чтобы помогли разобраться
Вот мой код
Код:
package ru.PuxTa4.Main;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.WeakHashMap;
import java.util.logging.Level;

import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{
    
    static WeakHashMap<Player, Long> usertime = new WeakHashMap<Player, Long>();
    protected static YamlConfiguration config;
    
    public static YamlConfiguration getConfig(JavaPlugin pl, String configName) {
        File file = new File(pl.getDataFolder(), configName);
        if (file.isDirectory()) {
            file.delete();
        }
        if (!file.exists()) {
            try (InputStream i = pl.getClass().getClassLoader().getResourceAsStream(configName)) {
                FileUtils.copyInputStreamToFile(i, file);
            } catch (IOException e) {
                 pl.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName);
            }
            return new YamlConfiguration();
        }
        return YamlConfiguration.loadConfiguration(file);
    }
      
    public static void loadconfig() {
        config.addDefault("warrior.items", "-IRON_SWORD");
        config.options().copyDefaults(true);
        config.addDefault("broadcast1",
                "&4Новый подарок будет доступен через &5{time} &4секунды.");
        config.addDefault("cooldown", Integer.valueOf(10));
    }
    @Override
    public void onEnable() {
        saveDefaultConfig();
        getLogger().info("[ChristmasPresent] Плагин включен.");
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }
 
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player) {
            Player p = (Player)sender;
            if(check((Player) sender, 5000)) {
                if(cmd.getName().equalsIgnoreCase("present")) {   
                    List<String> items = config.getStringList("warrior.items.");
                    final short[] number = {0};
                    for (String i : items){
                        
                        ItemStack warrior1 = new ItemStack(Material.getMaterial(i.toUpperCase()));
                        p.getInventory().setItem(number[0], warrior1);
                        number[0]++;
                        p.sendMessage(String.valueOf(getConfig().getStringList("warrior.items.")));
                        
                    }
                        items.size();
                }
                return true;
            }
        }
        return true;
    }
    
     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;
        }                 
    @Override
    public void onDisable() {
        try {
            config.save("config.yml");
       } catch (IOException ex) {
            this.getLogger().log(Level.WARNING, "Ошибка при сохранении конфигов", ex);
       }
    }
}
Вот ошибка в консоли
_t3uo3NvRsKafOu1phSUDw.png

Помогите пожалуйста.
 
Он у тебя на 64 строку ругается, а там, вроде как, декларация переменной и все
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх