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

Помогите Конфиг value.value.value

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

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

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    Как можно сделать что то типа этого

    upload_2018-8-12_18-26-33.png

    - Подскажите как сделать такое и что-бы его можно было изменять, я пытался сам но у меня не получалось.

    upload_2018-8-12_18-28-59.png

    upload_2018-8-12_18-29-46.png
     

    Вложения:

  2. Exception_Prototype

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

    Баллы:
    96
    PHP:
    config.set("nickcname.ip"value);
    config.set("nickcname.port"value);
    config.set("nickcname.uuid"value);
    //todo: save
     
  3. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    А как достать потом допустим порт?
     
  4. Exception_Prototype

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

    Баллы:
    96
    Если порт 100% int то:
    PHP:
    config.getInt("nickcname.port");
     
  5. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    А лучше как достать и отправить игроку весь список
     
  6. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    Хм ошибка при релоуде если уже есть строки
    ```
    [19:05:19 ERROR]: Cannot load plugins\plugin\data.yml
    org.bukkit.configuration.InvalidConfigurationException: could not determine a constructor for the tag tag:yaml.org,2002:java.net.InetSocketAddress
    in 'string', line 2, column 7:
    ip: !!java.net.InetSocketAddress {}
    ^

    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:162) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:130) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:178) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at plugin.Main.onEnable(Main.java:30) [Chorus-Virus.jar:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:382) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:331) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:753) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.Bukkit.reload(Bukkit.java:525) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:649) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:635) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]
    Caused by: org.yaml.snakeyaml.constructor.ConstructorException: could not determine a constructor for the tag tag:yaml.org,2002:java.net.InetSocketAddress
    in 'string', line 2, column 7:
    ip: !!java.net.InetSocketAddress {}
    ^

    at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructUndefined.construct(SafeConstructor.java:539) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:462) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:183) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.configuration.file.YamlConstructor$ConstructCustomObject.construct(YamlConstructor.java:26) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:147) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-809c399]
    ... 20 more
    [19:05:19 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [19:05:19 INFO]: CONSOLE: Reload complete.```
     
  7. Exception_Prototype

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

    Баллы:
    96
  8. Exception_Prototype

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

    Баллы:
    96
    Ващет в твоём не надо лишний раз париться, поэтому прям так получай и отправляй.
    И да, лучше используй конфиг для каждого игрока отдельно.
    https://github.com/alexandrage/Example/blob/master/src/Example/sfg/Configs.java
    https://github.com/alexandrage/Example/blob/master/src/Example/sfg/CustomConfig.java
    Автор @alexandrage
     
  9. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
  10. Exception_Prototype

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

    Баллы:
    96
    что за релоуд? Как ты его делаешь?
     
  11. Exception_Prototype

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

    Баллы:
    96
    Я не много привёл в порядок [ИМХО], не понимаю, что у тебя за reload.
    Крч попробуй так:
    PHP:
    public final class Main extends JavaPlugin {

        private 
    File configFile = new File(getDataFolder(), "data.yml");
        private 
    FileConfiguration config;

        @
    Override
        
    public void onEnable() {
            
    super.onEnable();

            if (!
    this.configFile.exists()) {
                try {
                    
    this.configFile.createNewFile();
                } catch (
    IOException e) {
                    
    e.printStackTrace();
                }
            }

            
    this.config YamlConfiguration.loadConfiguration(this.configFile);

            
    //saveData(); - НЕ НАДО, Конфиг сам сохранится при выключении сервера.

            
    Bukkit.getPluginManager().registerEvents(new EventsHandler(this), this);

        }

        
    void saveData() {
            try {
                
    this.config.save(this.configFile);
            } catch (
    IOException e) {
                
    e.printStackTrace();
            }
        }

        public 
    FileConfiguration getDataConfig() {
            return 
    config;
        }

        @
    Override
        
    public void onDisable() {
            
    super.onDisable();
            
    saveData();
        }

    }

    public final class 
    EventsHandler implements Listener {

        private final 
    Main main;

        public 
    EventsHandler(Main main) {
            
    this.main main;
        }

        @
    EventHandler
        
    public void onPlayerJoin(PlayerJoinEvent event) {

            final 
    FileConfiguration config this.main.getDataConfig();
            final 
    Player player event.getPlayer();
            final 
    UUID uuid player.getUniqueId();
            final 
    String name player.getName();

            if (!
    config.contains(name)) {
                
    config.set(name ".ip"player.getAddress().getAddress()); //UPD
                
    config.set(name ".uuid"uuid);
                
    player.sendMessage("Your uuid: " uuid);
                
    //main.SaveData(); - НЕ НАДО, Конфиг сам сохранится при выключении сервера.
            
    }
         
        }

    }
    .
     
    Последнее редактирование: 12 авг 2018
  12. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
  13. Exception_Prototype

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

    Баллы:
    96
    Жалуется на знаки восклицания походу.
    Короче, так делать нельзя:
    PHP:
    config.set(name ".ip"player.getAddress());
    Этим ты пытаешься объект сокета в конфиг пихнуть.

    Убери сохранение IP в конфиг и просто выводи через sout в консоль player.getAddress(), там будет объект сокета возвращаться, тебе из него вроде надо сделать ещё раз getAddress(), т.е. player.getAddress().getAddress(); чтобы получить корректный IP. Вот как только получишь - тогда и сохраняй в конфиг.

    На баките при тестировании плагинов(не всегда) сервер лучше перезапускать, а ещё лучше научиться пользоваться дебагом. Поищи в разделе, где то тема была с инструкцией. Там типо запуск сервера из IDE и рефрешить изменённые классы плагина прям в памяти уже запущенного сервера с этим плагином. Очень удобно и перезапускать ничего не придётся. Но reload работает криво.
     
  14. alexandrage

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

    Баллы:
    173
    Код:
            
            ConfigurationSection nickname = this.getConfig().getConfigurationSection("nickname");
            nickname.set("ip", "localhost");
            nickname.set("port", 100);
            nickname.set("uuid", "uuid");
            nickname.getString("ip");
            nickname.getInt("port");
            nickname.getString("uuid");
     
  15. Nikolai_Faint

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

    Баллы:
    96
  16. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    Почему когда я изменяю конфиг он возращает назад на прежнее значение ?
     
  17. Akame

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

    Баллы:
    76
    Имя в Minecraft:
    Akame
    Потому, что логика в коде не предусмотрена, взяв при старте сервера все данные в ОЗУ и возвращая их при завершении, парсив новый поверх существующего файла конфига.
    Останови сервер и тогда редактируй.
     

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