Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Как сделать чтение из файла

Тема в разделе "Разработка плагинов для новичков", создана пользователем TwixGo, 13 июн 2016.

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

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Заканчивая дописывать свой плагин на репорты, я решил сделать команду просмотра всех репортов внутри игры(не открывая файл),(/report-list) и столкнулся с проблемой. Найдя код чтения файла в интернете, я попытался впихнуть его, но ничего хорошего из этого не вышло. Теперь пришел сюда, надеюсь на помощь.
     
  2. Хостинг MineCraft
    <
  3. Rfg0

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

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Что именно не получилось? Тебе код нужен? Или помощь?
     
  4. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Мне нужен код, который бы доставал содержимое файла после строчки reports (либо всё вместе), и записывал бы его в переменную, которая бы в последствии командой sendMessage(String) выводилась к игроку.
    upload_2016-6-13_10-48-23.png
     
  5. Rfg0

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

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Код:
        public List<String> getReportList(){//Получить лист.
            File file = new File("путь до файла.yml");
            if(file.exists()){
                  YamlConfiguration conf = YamlConfiguration.loadConfiguration(file);
                  return conf.getStringList("reports");
            }
            return null;
        
        }
     
        public void sendReportList(Player p){//отправить
            List<String> list = this.getReoportList();
            if(list == null){
                p.sendMessage("Нету крч");
                return;
            }
            for(String s: list){
                p.sendMessage(s);
            }
        }
     
    
    
     
    Последнее редактирование: 13 июн 2016
  6. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Не вышло вставить код. Напишу вам весь код класса:
    Код:
    package aReports;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    
    public class ReportsList implements CommandExecutor{
    
        private mainClass plugin;
    
        public ReportsList(mainClass plugin) {
            this.plugin = plugin;
           
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            String reportPerm = plugin.getConfig().getString("permissions.clear-reports");
            if(!sender.hasPermission(reportPerm)){
                String noperms = plugin.getConfig().getString("messages.no-permission");
                noperms = noperms.replace("&", "§");
                sender.sendMessage(noperms);
                return true;
               
            }
            if(args.length >= 1){
                String toomanyargs = plugin.getConfig().getString("messages.too-many-args");
                toomanyargs = toomanyargs.replace("&", "§");
                sender.sendMessage(toomanyargs);
                return false;
            }
    
           
            return true;
        }
    
    }
    
     
  7. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Это ужасно.
     
  8. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Это мой первый плагин ._.
     
  9. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Код:
    package aReports;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    
    public class ReportsList
    implements CommandExecutor
    {
        private mainClass plugin;
        private String report_perm;
        private String no_perms;
        private String too_many_args;
    
        public ReportsList (mainClass plugin, FileConfiguration config)
        {
            this.plugin = plugin;
    
            report_perm = config.getString("permissions.clear-reports");
            no_perms = colorMessage(config.getString("messages.no-permission"));
            too_many_args = colorMessage(config.getString("messages.too-many-args"));
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
        {
            if (!sender.hasPermission(reportPerm))
            {
                sender.sendMessage(noperms);
                return true;
            }
    
            if (args.length >= 1)
            {
                sender.sendMessage(toomanyargs);
                return true;
            }
    
            return false;
        }
    
        public String colorMessage(String string)
        {
            return ChatColor.translateAlternateColorCodes('&', string);
        }
    }
    
    Нужно будет - метод в другой класс перенесёте.

    А, да. После создания такого конструктора - как у меня, вам нужно будет добавить аргумент в виде конфига в метод регистрации команды.
    Код:
    this.getCommand("ваша команда").setExecutor(new [ваш класс](this, this.getConfig()));
    
     
    Последнее редактирование: 13 июн 2016
  10. Rfg0

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

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Код:
    package aReports;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    public class ReportsList
    implements CommandExecutor
    {
        private mainClass plugin;
       
       private String report_perm;
       private String no_perms;
       private String too_many_args;
    
    
        public ReportsList(mainClass plugin, FileConfiguration config)
        {
            this.plugin = plugin;
            report_perm = config.getString("permissions.clear-reports");
            no_perms = config.getString("messages.no-permission");
            too_many_args = config.getString("messages.too-many-args");
        }
       public List<String> getReportList(){//Получить лист.
          File file = new File("путь до файла.yml");
           if(file.exists()){
                  YamlConfiguration conf = YamlConfiguration.loadConfiguration(file);
                 return conf.getStringList("reports");
           }
           return null;
     
       }
    
       public void sendReportList(CommandSender p, List<String list>){//отправить
           if(list == null){
                p.sendMessage("Нету крч");
               return;
           }
           for(String s: list){
                p.sendMessage(s);
           }
      }
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("report-list")){
    
        if (!sender.hasPermission(reportPerm))
            {
                sender.sendMessage(noperms);
                return true;
            }
            if (args.length >= 1)
            {
                sender.sendMessage(toomanyargs);
                return false;
            }
            this.sendReportList(sender, this.getReportList());
            return true;
         
       }
         return true
    }
    писал без IDE могут быть ошибки.
     
  11. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Зачем ты употребил this.getReportList, если это локальный метод и достаточно просто getReportList.
     
  12. Rfg0

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

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Упс... Виноват.
     
  13. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Спасибо конечно, но ваш код не работает, возможно я слишком тупой.
     
  14. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    В каком месте он не работает?
     
  15. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Вставил код:
    upload_2016-6-13_12-18-16.png
    По исправлял ошибки с помощью Eclips-ового контекстного меню

    Код:
    package aReports;
    import java.io.File;
    import java.util.List;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    public class ReportsList
    implements CommandExecutor
    {
        private mainClass plugin;
      
       private String report_perm;
       private String no_perms;
       private String too_many_args;
        public ReportsList(mainClass plugin, FileConfiguration config)
        {
            this.setPlugin(plugin);
            setReport_perm(config.getString("permissions.clear-reports"));
            setNo_perms(config.getString("messages.no-permission"));
            setToo_many_args(config.getString("messages.too-many-args"));
        }
       public List<String> getReportList(){//Получить лист.
          File file = new File("путь до файла.yml");
           if(file.exists()){
                  YamlConfiguration conf = YamlConfiguration.loadConfiguration(file);
                 return conf.getStringList("reports");
           }
           return null;
       }
       public void sendReportList(CommandSender p, List<String> list){//отправить
           if(list == null){
                p.sendMessage("Нету крч");
               return;
           }
           for(String s: list){
                p.sendMessage(s);
           }
      }
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("report-list")){
        String reportPerm = null;
        if (!sender.hasPermission(reportPerm))
            {
                String noperms = null;
                sender.sendMessage(noperms);
                return true;
            }
            if (args.length >= 1)
            {
                String toomanyargs = null;
                sender.sendMessage(toomanyargs);
                return false;
            }
            this.sendReportList(sender, this.getReportList());
            return true;
        
       }
         return true;
    }
        public String getToo_many_args() {
            return too_many_args;
        }
        public void setToo_many_args(String too_many_args) {
            this.too_many_args = too_many_args;
        }
        public String getNo_perms() {
            return no_perms;
        }
        public void setNo_perms(String no_perms) {
            this.no_perms = no_perms;
        }
        public String getReport_perm() {
            return report_perm;
        }
        public void setReport_perm(String report_perm) {
            this.report_perm = report_perm;
        }
        public mainClass getPlugin() {
            return plugin;
        }
        public void setPlugin(mainClass plugin) {
            this.plugin = plugin;
        }}
    Возникла ошибка в main классе:
    upload_2016-6-13_12-22-2.png
     
  16. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Я уже писал об этом. Ставьте после this запятую идописывайте this.getConfig()
     
  17. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Я, в принципе, пользуюсь эклипсом второй день, как в прочем и делаю что-то на Java. Может поясните тупому?
     
  18. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    А, да. После создания такого конструктора - как у меня, вам нужно будет добавить аргумент в виде конфига в метод регистрации команды.
    Код:
    getCommand("ваша команда").setExecutor(new [ваш класс](this, this.getConfig()));
    
     
  19. Автор темы
    TwixGo

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

    Баллы:
    61
    Имя в Minecraft:
    TwixGo
    Спасибо, если не сложно, можете написать весь код для класса?
     
  20. Rfg0

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

    Баллы:
    46
    Имя в Minecraft:
    Rfg0
    Тебе уже написали.[DOUBLEPOST=1465904178,1465904143][/DOUBLEPOST]Ещё в чем проблема?
     

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