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

Помогите Работа с файлами.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Slavchik2001, 9 май 2017.

  1. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Знакомый говнокод призона...
     
  2. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Капец, понадобится достаточно много времени, чтобы разобраться мне в коде.
     
  3. Bomber123

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

    Баллы:
    76
    омг!!!!!!!!!
     
  4. TheZefirrkka

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

    Баллы:
    76
    +, там система сохранения конфига гавно, часто слетают лвла и тп.
     
  5. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Мне нужно решить два вопроса: как сделать, чтобы при заходе нового игрока создавался файл с нужным содержимым, и как сделать, чтобы при убийстве игрока, киллеру в этот файл добавлялась одна единица в определенную графу, в моем случае "kills". И та же история со смертями. Ну или предложите альтернативу, если вам не сложно. Ведь я новичок, еще многого не знаю, и чтобы не писать "говнокод", хотя даже его я не смогу написать, я спрашиваю у вас. Все когда-то были начинающими, не пишете же вы коды с пеленок.
     
  6. TheZefirrkka

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

    Баллы:
    76
    PlayerDeathEvent =>
    Main.getConfig().set(p.getName() + ".kills", Main.getConfig().getInt(p.getName() + ".kills" + 1));
     
  7. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Спасибо, большое.
     
  8. TheZefirrkka

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

    Баллы:
    76
    Можешь и сразу статик вносить при входе игрока
    Так даже лучше.
     
  9. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Подскажи, как опытный кодер, как лучше сделать: Чтобы для каждого игрока свой файл или чтобы данные игроков сохранялись в одном файле?
     
  10. xDark

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

    Баллы:
    96
    HashMap -> file.
    file -> HashMap
    В разных файлах
     
  11. TheZefirrkka

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

    Баллы:
    76
    В разных файлах.
     
  12. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Ладно, спасибо. Пойду читать, что такое HashMap...
     
  13. TheZefirrkka

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

    Баллы:
    76
  14. iD3LSY

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

    Баллы:
    76
    Главное - написать призон. Как, почему, зачем... Неважно! Даже если ты не знаешь, что такое мапы, то да. Почему бы и нет? Одного лаганого нехватает кристаликса, на котором игроки телепортируются назад. То, что pitch, yaw влияет на тп - я вообще молчу...

    Спасибо человеку, который нанял 15-и летнего кодера(Kargond).
     
  15. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    И к чему ты это? Я просил помощи, а не облить дерьмом.
     
  16. iD3LSY

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

    Баллы:
    76
    Дерьмом я не обливал, если почитать пару раз, то можно сделать вывод, что лучше не начинать изучение ни одного из языка программирования. А то, что ты еще и с говно призона начинаешь, тебя явно не в правильное русло направит (код там хня).
     
  17. Grazy

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

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Лол, он же написал что начал писать плагин для статистики.
    Вот тут я несогласен если ты хочешь научиться программировать, не важно на каком языке, ты должен с чего-то начинать. Статьи почитать, книжки или даже видео уроки. В общем суть не в этом, главное то что ты хочешь этому научиться. Даже тот самый Kargon, сколько ему сейчас лет? В одной из моих тем он сам говорил что был не опытен тогда. Неважно как начинающие пишут код, для них уже что-то написанное и рабочоее большое достижение. Главное потом в ближайшим будущем посмотреть на свой код и сказать "какой же я был не опытен тогда".
     
  18. FominEvgeni

    FominEvgeni Участник

    Баллы:
    31
    Имя в Minecraft:
    Superzeka
    Кинь его профиль
     
  19. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Не говори с этим человеком, ему лишь бы кого-то дерьмом облить.
     
  20. alexandrage

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

    Баллы:
    173
    Вот держи простенький апи для работы с конфигами.
    CustomConfig.java
    Код:
    package Example;
    
    import java.io.File;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    
    public class CustomConfig {
      
        private YamlConfiguration yml;
        private File file;
      
        CustomConfig(String name) {
            this.file = new File(Main.plugin().getDataFolder(), name+".yml");
            yml = YamlConfiguration.loadConfiguration(file);
            this.file.getParentFile().mkdirs();
        }
      
        public FileConfiguration get() {
            return yml;
        }
      
        public void save() {
            try {
                yml.save(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      
        public void reload() {
            try {
                yml.load(file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    Configs.java
    Код:
    package Example;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class Configs {
        private Map<String, CustomConfig> sfg = new HashMap<String, CustomConfig>();
    
        public CustomConfig get(String name) {
            if(sfg.get(name)==null) add(name);
            return sfg.get(name);
        }
    
        public Map<String, CustomConfig> getConfigs() {
            return sfg;
        }
    
        public void add(String name) {
            CustomConfig custom = new CustomConfig(name);
            sfg.put(name, custom);
        }
    
        public void save(String name) {
            if(sfg.get(name)==null) add(name);
            try {
                sfg.get(name).save();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      
        public void saveAll() {
            for(String name : sfg.keySet()) {
                save(name);
            }
        }
    }
    Пример использования в главном класса, условно Main.java
    Код:
    package Example;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
      
        private static Main instance;
        private static Configs config;
      
        public static Main plugin() {
            return instance;
        }
    
        public static Configs config() {
            return config;
        }
    
        @Override
        public void onEnable() {
            instance = this;
            config = new Configs();
        }
      
        @Override
        public void onDisable() {
            config.saveAll();
        }
    }
    Работа с конфигом до некуда простая.
    Получить-создать конфиг игрока.
    CustomConfig cfg = Main.config().get(username);
    Записать патч с именем kills со значением 10 .
    cfg.get().set("kills", 10);
    Сохранить в файл когда нужно. Не обязательно saveAll() в onDisable сохраняет все загруженные конфиги при остановке сервера.
    cfg.save();
    Прочитать патч с именем kills. "0" как дефольтный аргумент, если записи еще нет.
    cfg.get().get("kills", "0");
     

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