-1

I try to learn some thing about plugin for minecraft.
In my way i got to make config files.
From there everything is ok i can read it, save it into the pluginfolder..
But when i change it into my resourceFolder it dosn't update into the pluginfolder.
I try to find a way to do it but i dont know how to do.

If someone can help me, thanks a lot

My FilesUtils class:

public enum FilesUtil {
  // Définie les fichiers de config
  CONFIG("config.yml"),
  LANG("lang.yml");

  private final String fileName;
  private final File dataFolder;

  FilesUtil(String fileName) {
    this.fileName = fileName;
    this.dataFolder = FirstPlugin.getInstance().getDataFolder();
  }

  // Copie le fichier resource du jar vers le fichier du dossier du plugin
  public void create(Logger logger) {
    // Vérifie si le fichier resource jar n'est pas null et n'est pas vide
    if (fileName == null || fileName.isEmpty()) {
      throw new IllegalArgumentException("ResourcePath cannot be null or empty");
    }

    // lit le fichier resource jar
    InputStream in = FirstPlugin.getInstance().getResource(fileName);

    // Vérifie que le fichier n'est pas null
    if (in == null) {
      throw new IllegalArgumentException("The resource '" + fileName + "' cannot be found in plugin jar");
    }

    // Vérifie si le dossier du plugin n'existe pas et qu'on'a pas pu le créer
    if (!dataFolder.exists() && !dataFolder.mkdir()) {
      logger.severe("Failed to make directory");
    }

    // Fichier plugin
    File outFile = getFile();

    try {
      // Vérifie si le fichier plugin existe
      if (!outFile.exists()) {
        logger.info("The " + fileName + " was not found, creation in progress ...");

        // Permet d'écrire sur le fichier
        OutputStream out = new FileOutputStream(outFile);
        // Indique le nombre d'octets lu à chaque tour de boucle
        byte[] buf = new byte[1024];
        // Résultat de la lecture
        int n;
        // Tant qu'infile n'est pas lu
        while ((n = in.read(buf)) >= 0) {
          // Écrire dans outfile
          out.write(buf, 0, n);
        }

        // Fermeture des flux
        out.close();
        in.close();

        // On vérifie si le fichier du plugin est bien créé
        if (!(outFile.exists())) {
          logger.severe("Unable to copy the file");
        }

      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    }

  // Retourne un File plutôt qu'un nom de fichier
  public File getFile() {
    return new File(dataFolder, fileName);
  }

  // Permet de récupérer facilement le fichier config
  public FileConfiguration getConfig() {
    return YamlConfiguration.loadConfiguration(getFile());
  }

  // Permet de sauvegarder le fichier de configuration
  public void save(FileConfiguration config) {
    try {
      config.save(getFile());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public String getFileName() {
    return fileName;
  }

}
Meridias
  • 1
  • 1
  • 1
    Please trim your code to make it easier to find your problem. Follow these guidelines to create a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). – Community Oct 18 '22 at 21:07

1 Answers1

0

It's normal that it doesn't change the config file on the plugin folder. If you want to update it, just remove it and it will create a new one.

For the file config.yml you can just do saveDefaultConfig() in your onEnable() and it will be copied in good folder.

For others, you can simply do:

File file = new File(getDataFolder(), "my-file.yml");
try (InputStream in = getResource("my-config-file.yml"); OutputStream out = new FileOutputStream(file)) {
    ByteStreams.copy(in, out);
} catch (Exception e) {
    e.printStackTrace();
}

This code copied my-config-file.yml from your plugin to plugins/YourPlugin/my-file.yml in your server file.

Elikill58
  • 4,050
  • 24
  • 23
  • 45