Решено

  • Автор темы Автор темы Den42
  • Дата начала Дата начала

Den42

Активный участник
Пользователь
Баллы
76
Помогите пожалуйста! Почему появляется ошибка?

Error☹️35, 5) java: cannot find symbol
symbol: class COMMAND_block
location: class ru.kesudar.ultra.blocks.ubMain
 
JAVA не может найти символ... Ты что-то с синтаксом напортачил, а вообще скинь 35 строчку сюда, путь к классу: ru.kesudar.ultra.blocks.ubMain
 
Я не понимаю почему, но у меня перестала нормально работать предыдущая версия плагина, которая ранее работала как надо. При исполнении команды /block из класса COMMAND_block(), кидает NPE, ругаясь на строчку:
plugin.c.getString("world"), которая получает строку из config.yml. И вообще, любое действие с конфигом не приносит никаких результатов.
Вот код работы с config.yml:
Главный класс ubMain:

Код:
public class ubMain extends JavaPlugin implements Listener {

    public static ubMain plugin;
    FileConfiguration c = getConfig();
    public void createConfiguration() {
        c.options().header("MyPlugin");
        c.addDefault("code", String.valueOf("unkown_key"));
        c.addDefault("world", String.valueOf("banworld"));
        c.addDefault("x", Double.valueOf(0));
        c.addDefault("y", Double.valueOf(0));
        c.addDefault("z", Double.valueOf(0));
        c.addDefault("yaw", Double.valueOf(0));
        c.addDefault("pitch", Double.valueOf(0));
        c.addDefault("whitelist-cmd", Arrays.asList(new String[]{
                "/login", "/register", "/reg", "/logout", "/ukey", "/mykeys"}));
        c.options().copyDefaults(true);
        saveConfig();
    }
  public void onEnable(){
        plugin = this;
        Bukkit.getPluginManager().registerEvents(this, this);
        createConfiguration();
        getCommand("block").setExecutor(new COMMAND_block());
}
}
 
Последнее редактирование:
В других классах создаю static ubMain plugin = ubMain.plugin; и вызываю строку из конфига через plugin.c.getString("world");
В конфиге эта строка есть
 
При компиляции пишет, что класс ubMain имеет несохраненные или непроверенные операции
 
Плагин переписываю с нуля второй раз, и одна и та-же ошибка появляется!
 
Класс COMMAND_uSetPoint: (не кидает ошибку при вызове файла конфигурации)
Данные успешно сохраняются при вызове команды.

Код:
package ru.kesudar.ultra.blocks;

import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class COMMAND_uSetPoint implements CommandExecutor {

    static ubMain plugin = ubMain.plugin;

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(sender instanceof Player){
            Player p = (Player)sender;
            if(p.hasPermission("ultrablocks.command.usetpoint")){
                World w = p.getWorld();
                if(w.getName().equals(plugin.getConfig().getString("world"))){
                    if(args.length == 0){
                        plugin.c.set("x", p.getLocation().getBlockX());
                        plugin.c.set("y", p.getLocation().getBlockY());
                        plugin.c.set("z", p.getLocation().getBlockZ());
                        plugin.c.set("pitch", p.getLocation().getPitch());
                        plugin.c.set("yaw", p.getLocation().getYaw());
                        plugin.saveConfig();
                        p.sendMessage(ubLocale.prefix + ubLocale.set_spawn_point);
                        return true;
                    }
                }else{
                    p.sendMessage(ubLocale.prefix + "§cERROR! Wrong world");
                    return false;
                }
            }else{
                p.sendMessage(ubLocale.no_perm);
                return false;
            }
        }
        return false;
    }
}
Класс COMMAND_block() (Кидает NPE при обращении к конфигу)

Код:
public class COMMAND_block implements CommandExecutor{

    static ubMain plugin = ubMain.plugin;

    Timer block_message = new Timer();

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        if(sender instanceof Player){
            Player p = (Player)sender;
            if(p.hasPermission("ultrablocks.command.block")){
                if(args.length == 0){
                    return false;
                }else if(args.length == 1){
                    return false;
                }else if(args.length > 1){
                    String pName = args[0];
                    int i = 1;
                    StringBuilder str = new StringBuilder();
                    while (i < args.length) {
                        str.append(String.valueOf(args[i]) + " ");
                        i++;
                    }
                    String reason = str.toString().trim();
                    if(Bukkit.getServer().getPlayer(pName) != null){
                        plugin.saveConfig(); //Кидает NPE
                        plugin.reloadConfig();
                        Player target = Bukkit.getServer().getPlayer(pName);
                        String w = plugin.c.getString("world");
                        Location loc = new Location(Bukkit.getWorld(w), plugin.c.getDouble("x"), plugin.c.getDouble("y"), plugin.c.getDouble("z"), (float) plugin.c.getDouble("yaw"), (float) plugin.c.getDouble("pitch"));
                        String pGroup = ubMain.chat.getPrimaryGroup(target);
                        plugin.data.set("Players." + pName + ".banned", pName);
                        plugin.data.set("Players." + pName + ".reason", reason);
                        plugin.data.set("Players." + pName + ".group", pGroup);
                        ubManager.saveDataFiles();
                        ubManager.reloadDataFiles();
                        List<String> removePerms = new ArrayList();
                        removePerms = plugin.c.getStringList("remove-perm");
                        for(String pex : removePerms){
                            PermissionsEx.getPermissionManager().getUser(target).removePermission(pex);
                        }
                        p.sendMessage(ubLocale.prefix + "§aВы успешно выдали блокировку игроку: §f" + pName);
                        target.sendMessage(ubLocale.prefix + "§eВы были заблокированы на этом сервере!");
                        target.sendMessage("§cЗабанил: §e" + p.getName());
                        target.sendMessage("§cПричина: §e" + reason);
                        if(Bukkit.getWorld(w) == null){
                            p.sendMessage(ubLocale.prefix + "§4ВНИМАНИЕ! §fПроверьте, существует ли мир, указанный в конфигурации!");
                            Bukkit.getServer().getConsoleSender().sendMessage(ubMain.consolePrefix + "§4Check whether there is a world specified in the configuration!");
                            target.kickPlayer(ubLocale.prefix + "§eОшибка при телепортации в §c" + w);
                            return false;
                        }else{
                            target.teleport(loc);
                        }
                        return true;
                    }else{
                        p.sendMessage(ubLocale.prefix + "Игрок, которого вы пытаетесь заблокировать, оффлайн, либо несуществует!");
                        return false;
                    }
                }
            }
        }
    return false;
    }
}
 
В других классах создаю static ubMain plugin = ubMain.plugin; и вызываю строку из конфига через plugin.c.getString("world");
В конфиге эта строка есть
Не нужно создавать экземпляр класса ubMain. Напиши так ubMain.plugin.c.getString("world");
 
Один вопрос: почему при создании экземпляра класса ubMain в классе COMMAND_uSetPoint() операции с конфигом работали, а в классе COMMAND_block() нет
 
Один вопрос: почему при создании экземпляра класса ubMain в классе COMMAND_uSetPoint() операции с конфигом работали, а в классе COMMAND_block() нет
Хз

Можно вопрос, что это такое?)
 
Назад
Верх