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

  • Автор темы Автор темы TwixGo
  • Дата начала Дата начала

TwixGo

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
TwixGo
Заканчивая дописывать свой плагин на репорты, я решил сделать команду просмотра всех репортов внутри игры(не открывая файл),(/report-list) и столкнулся с проблемой. Найдя код чтения файла в интернете, я попытался впихнуть его, но ничего хорошего из этого не вышло. Теперь пришел сюда, надеюсь на помощь.
 
Что именно не получилось? Тебе код нужен? Или помощь?
 
Мне нужен код, который бы доставал содержимое файла после строчки reports (либо всё вместе), и записывал бы его в переменную, которая бы в последствии командой sendMessage(String) выводилась к игроку.
upload_2016-6-13_10-48-23.png
 
Мне нужен код, который бы доставал содержимое файла после строчки reports (либо всё вместе), и записывал бы его в переменную, которую бы в последствии командой sendMessage(String) выводилась к игроку.
Java:
    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);
        }
    }
 
Последнее редактирование:
Не вышло вставить код. Напишу вам весь код класса:
Java:
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;
    }

}
 
Не вышло вставить код. Напишу вам весь код класса:
Java:
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;
    }

}
Это ужасно.
 
Java:
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);
    }
}
Нужно будет - метод в другой класс перенесёте.

А, да. После создания такого конструктора - как у меня, вам нужно будет добавить аргумент в виде конфига в метод регистрации команды.
Java:
this.getCommand("ваша команда").setExecutor(new [ваш класс](this, this.getConfig()));
 
Последнее редактирование:
Java:
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 могут быть ошибки.
 
Java:
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, no_perms;

    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 могут быть ошибки.
Зачем ты употребил this.getReportList, если это локальный метод и достаточно просто getReportList.
 
Спасибо конечно, но ваш код не работает, возможно я слишком тупой.
 
Вставил код:
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
 
Вставил код:
Посмотреть вложение 41218
По исправлял ошибки с помощью 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 классе:
Посмотреть вложение 41219
Я уже писал об этом. Ставьте после this запятую идописывайте this.getConfig()
 
Я уже писал об этом. Ставьте после this запятую идописывайте this.getConfig()
Я, в принципе, пользуюсь эклипсом второй день, как в прочем и делаю что-то на Java. Может поясните тупому?
 
А, да. После создания такого конструктора - как у меня, вам нужно будет добавить аргумент в виде конфига в метод регистрации команды.
Java:
getCommand("ваша команда").setExecutor(new [ваш класс](this, this.getConfig()));
 
Спасибо, если не сложно, можете написать весь код для класса?
 
Назад
Верх