Bukkitで新しいコンフィグを作成する方法

クライアント/サーバーMODの開発に関する話題、技術交換はこちらで。質問は質問フォーラムへお願いします。
  • (PostNo.269107)

Bukkitで新しいコンフィグを作成する方法

投稿記事by カーボンファイバー » 2016年4月01日(金) 19:46

BukkitではgetConfig()メソッドしかなく、config.yml以外の作成方法が分からないという方もいるのではないでしょうか。
大規模なプラグインのために、コンフィグを新規作成するコードを作成したのでお見せします
コード: 全て選択
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

import org.bukkit.ChatColor;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;

public class ConfigManager {

   private final JavaPlugin plugin;
   private final File configFile;
   private final YamlConfiguration config;
   /**
    * カラーコードに変換される文字
    */
   public static final char COLOR_KEY = '&';

   /**
    * 指定したファイル名でコンフィグマネージャーを作成します 場所はプラグインのデータフォルダになります
    *
    * @param fileName
    * @throws FileNotFoundException
    *             ファイルが存在しない場合
    * @throws IOException
    *             ファイルの読み取りが出来なかった場合
    * @throws InvalidConfigurationException
    *             ロードが無効だった場合
    */
   public ConfigManager(String fileName,JavaPlugin plugin) throws FileNotFoundException, IOException, InvalidConfigurationException {
      this.plugin = plugin;
      this.config = new YamlConfiguration();
      this.configFile = new File(plugin.getDataFolder(), fileName);
      if (configFile.exists() == false) {// 存在しなかったらリソースのほうから取り寄せる
         try (InputStream in = plugin.getResource(fileName)) {
            if (in != null)// リソースが存在すれば
               Files.copy(in, Paths.get(configFile.toURI()));//コピー
            else// なければ
               throw new FileNotFoundException();// 例外発生
         }
      }
      // ロードさせないと値が取得できない
      load();
   }

   /**
    * コンフィグをセーブします
    *
    * @throws IOException
    *             ファイルの書き込みが出来なかった場合
    */
   public void save() throws IOException {
      config.save(configFile);
   }

   protected void load() throws FileNotFoundException, IOException, InvalidConfigurationException {
      config.load(configFile);
   }

   /**
    * @return コンフィグを取得します
    */
   public YamlConfiguration getConfig() {
      return config;
   }
最後に編集したユーザー カーボンファイバー [ 2016年4月20日(水) 16:19 ], 累計 2 回
学生なら、IntelliJ IDEA Ultimate EditionとかGit Hub Developer Editionとかの有料サービスがただになるので、試してみてね
アバター
カーボンファイバー
ID:ab1140b8
石炭掘り
 
記事: 181
登録日時: 2013年10月20日(日) 12:40

  • (PostNo.269830)

Re: Bukkitで新しいコンフィグを作成する方法

投稿記事by King(qpwakaba) » 2016年4月07日(木) 21:03

JavaPluginを継承しているクラス ってコードに埋め込むくらいならコンストラクタの引数で受け取ったほうが汎用性上がると思う。
以下サイン
調べて見つからないことを質問して、「そのくらい調べろ」と言われたら それは調べが足りないとき。

投稿画面のBBコード挿入ボタン を追加するユーザースクリプト作りました。良かったらどうぞ。
https://greasyfork.org/ja/scripts/18657
最大描画距離を64チャンクまで伸ばすMod作ってます。
viewtopic.php?t=30697
アバター
King(qpwakaba)
ID:2958b814
ダイヤモンド掘り
 
記事: 821
登録日時: 2013年3月26日(火) 10:25

  • (PostNo.270784)

Re: Bukkitで新しいコンフィグを作成する方法

投稿記事by カーボンファイバー » 2016年4月18日(月) 22:33

King(qpwakaba) さんが書きました:JavaPluginを継承しているクラス ってコードに埋め込むくらいならコンストラクタの引数で受け取ったほうが汎用性上がると思う。

あー・・・全く考えてなかった。ありがとう御座います!修正しておきます!
学生なら、IntelliJ IDEA Ultimate EditionとかGit Hub Developer Editionとかの有料サービスがただになるので、試してみてね
アバター
カーボンファイバー
ID:ab1140b8
石炭掘り
 
記事: 181
登録日時: 2013年10月20日(日) 12:40


Return to 開発関連

x