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

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

Discussion in 'Разработка плагинов для новичков' started by TwixGo, Jun 13, 2016.

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

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

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

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

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

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

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

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

    Trophy Points:
    46
    Имя в Minecraft:
    Rfg0
    Code:
        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);
            }
        }
     
    
    
     
    Last edited: Jun 13, 2016
  6. Автор темы
    TwixGo

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

    Trophy Points:
    61
    Имя в Minecraft:
    TwixGo
    Не вышло вставить код. Напишу вам весь код класса:
    Code:
    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 Активный участник Пользователь

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

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

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

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

    Trophy Points:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Code:
    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);
        }
    }
    
    Нужно будет - метод в другой класс перенесёте.

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

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

    Trophy Points:
    46
    Имя в Minecraft:
    Rfg0
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

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

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

    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

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

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

Share This Page