1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите ConfigurationSerializable ошибок нет а код не пашет

Тема в разделе "Разработка плагинов для новичков", создана пользователем JHIID13, 5 авг 2020.

  1. Автор темы
    JHIID13

    JHIID13 Новичок Пользователь

    Баллы:
    21
    Короче леплю аля кланвар но ничего не пашет
    Clan
    Код:
            private Set<ClanManager> clans = new HashSet<ClanManager>();
            public void onEnable(){
            instance = this;
            ConfigurationSerialization.registerClass(ClanManager.class);
            getCommand("clan").setExecutor(new Clans(this));
            SettingsManager.getInstance().setup(this);
            }
            public void onDisable() {
            }
    Код:
    private final Clan plugin;
         public Clans(Clan plugin) {
                this.plugin = plugin;
            }
        
        @SuppressWarnings("unlikely-arg-type")
        public boolean onCommand( CommandSender arg0,  Command arg1, String arg2,String[] arg3) {
            if(arg0 instanceof Player) {
                Player p = (Player) arg0;
                if(arg3.length>0) {
                    if(arg3[0].equalsIgnoreCase("create")) {
                        if(!arg3[1].isEmpty()) {
                            p.sendMessage(ChatColor.BLUE+""+ChatColor.BOLD + "[CLANWAR] Клан создан: "+arg3[1]);
                            SettingsManager.getInstance().set("clans", new ClanManager(p.getUniqueId(), arg3[1]).serialize());
                        }else {
                            p.sendMessage(ChatColor.BLUE+""+ChatColor.BOLD + "[CLANWAR]Ошибка.(((");
                            return true;
                        }
                    }
                    else if (arg3[0].equalsIgnoreCase("invite")) {
                    }
                    else if (arg3[0].equalsIgnoreCase("remove")) {
                        p.sendMessage(ChatColor.BLUE+""+ChatColor.BOLD + "[CLANWAR]Клан розформирован.");
                    }
                    else if (arg3[0].equalsIgnoreCase("save")) {
                    }
                    else if (arg3[0].equalsIgnoreCase("save")) {
                    }
                    else if (arg3[0].equalsIgnoreCase("save")) {
                    }
                    else if (arg3[0].equalsIgnoreCase("save")) {
                    }
                    else {
                        p.sendMessage(ChatColor.BLUE+""+ChatColor.BOLD + "[CLANWAR]Ошибка.(((");
                        return true;
                    }
                }else {
                        p.sendMessage(ChatColor.BLUE+""+ChatColor.BOLD + "[CLANWAR]-------------------------------------------");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan create <name> - Создать клан.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan invite <player> - Пригласить игрока в клан.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan join <player> - Присоеденится к клану.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan info [ClanName] - Информаци о клане.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan kick <player> - Выгнать игрока.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan base - Телепортироватся на базу клана.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan leave - Покинуть клан.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan chat - Обявление клану.");
                        p.sendMessage(ChatColor.GREEN+""+ChatColor.BOLD + "/clan remove - Розформировать клан.");
                        p.sendMessage(ChatColor.BLUE+""+ChatColor.BOLD + "----------------------------------------------------");
                        return true;
                }
            if(arg0 instanceof ConsoleCommandSender)
            {
                arg0.sendMessage("Ti OBOSRALSYA");
                return true;
            }
            
        }
            return true;
        }
    }
    Код:
    @SerializableAs("ClanManager")
    public class ClanManager implements ConfigurationSerializable{
        private String name;
        private UUID owner;
        private HashSet<UUID> members = new HashSet<UUID>();
        private HashSet<UUID> invited = new HashSet<UUID>();
        private Location base;
        
        //стандартный ввод.
        public ClanManager(UUID owner, String name) {
            this.name = name;
            this.owner = owner;
            this.members = new HashSet<UUID>();
            members.add(owner);
        }
        public String getName() {
            return this.name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public UUID getOwner() {
            return this.owner;
        }
        public void setOwner(UUID owner) {
            this.owner = owner;
        }
        public HashSet<UUID> getMembers(){
            return this.members;
        }
        public void setMembers(HashSet<UUID> members) {
            this.members = members;
        }
        public ClanManager(Map<String, Object> map) {
            this.name = (String) map.get("name");
            this.owner = (UUID) map.get(owner);
            this.members = new HashSet<UUID>();
            this.members.add(owner);
            //new ArrayList<String>(Arrays.asList(((String) map.get("members")).split(","))); // map.get("members") -> Pogo,Stick,29
        }
        public Map<String, Object> serialize() {
            Map<String, Object> serialized = new HashMap<String, Object>();
            serialized.put("name", getName());
            serialized.put("owner", getOwner().toString());
            List<String> mems = new ArrayList<String>();
            for (UUID uuid : members) {
                mems.add(uuid.toString());
            }
            serialized.put("members", mems);
            return serialized;
        }
    }
    Код:
    public class SettingsManager {
        
        private SettingsManager() { }
    
        private static SettingsManager instance = new SettingsManager();
        
        public static SettingsManager getInstance() {
            return instance;
        }
        
        public void setup(Plugin p) {
            if (!p.getDataFolder().exists()) p.getDataFolder().mkdir();
            
            file = new File(p.getDataFolder(), "teams.yml");
            
            if (!file.exists()) {
                try { file.createNewFile(); }
                catch (Exception e) { e.printStackTrace(); }
            }
            
            config = YamlConfiguration.loadConfiguration(file);
        }
        
        private File file;
        private FileConfiguration config;
        
        public void set(String path, Object value) {
            config.set(path, value);
            save();
        }
        
        public ConfigurationSection createConfigurationSection(String path) {
            ConfigurationSection cs = config.createSection(path);
            save();
            return cs;
        }
        
        @SuppressWarnings("unchecked")
        public <T> T get(String path) {
            return (T) config.get(path);
        }
        
        public void save() {
            try { config.save(file); }
            catch (Exception e) { e.printStackTrace(); }
        }
     
  2. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    У тебя клан менеджер должен иметь еще статический метод deserialize, какой именно - читай в доках.
    Еще советую при выключении плагина удалять регистрацию сериализатора.
     
  3. Автор темы
    JHIID13

    JHIID13 Новичок Пользователь

    Баллы:
    21
    Спасибо попробую
     
  4. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    А зачем?
     
  5. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    На случай если будет какой нибудь PlugMan который разгружает плагины.
     
  6. Автор темы
    JHIID13

    JHIID13 Новичок Пользователь

    Баллы:
    21
    Чет не получается может я чет не монимаю скиньте норм урок пожалуйста у меня гугл с костылями.
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Это делается вот так this.getConfig().get("name", MyConfigSer.class);
     

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