提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
26行目: | 26行目: | ||
''config.yml''がデータフォルダ配下に存在しない場合は、空の''config.yml''ファイルを読み込んだ事と等しい結果となり、''FileConfiguration''オブジェクトも空の状態でロードされます。 | ''config.yml''がデータフォルダ配下に存在しない場合は、空の''config.yml''ファイルを読み込んだ事と等しい結果となり、''FileConfiguration''オブジェクトも空の状態でロードされます。 | ||
− | |||
{{warning}} ''getConfig()''の戻り値は、staticなフィールドに割り当てないで下さい。 | {{warning}} ''getConfig()''の戻り値は、staticなフィールドに割り当てないで下さい。 | ||
− | + | {{warning}} このような割り当てを行うと、''getConfig()''はreloadConfigの後でも再び割り当て処理を繰り返してしまいます。{{note}}''getConfig()''の戻り値は一旦適切なフィールドに割り当ててから利用する事をお勧めします | |
− | {{warning}} このような割り当てを行うと、''getConfig()''はreloadConfigの後でも再び割り当て処理を繰り返してしまいます。 | ||
− | |||
− | {{note}}''getConfig()''の戻り値は一旦適切なフィールドに割り当ててから利用する事をお勧めします | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== デフォルト値 === | === デフォルト値 === | ||
+ | ''config.yml''のデフォルト値は、プラグインのユーザに提供されます。 | ||
+ | 設定ファイルが、プラグインのデータディレクトリ配下に存在しない, 空である, キーが無い・・・といった状態である場合には、プラグインのJarファイル内に定義された値が、デフォルト値としてロードされます。 | ||
− | + | デフォルト値は、データフォルダ配下に存在する''config.yml''が提供しようと意図していた内容と、まったく同一な内容のYAML形式ファイルによって提供されるべきで、そのファイル名は''config.yml''であり、[[Plugin YAML|plugin.yml]]と同一の場所に配置されている必要があります。 | |
− | |||
− | |||
− | |||
− | |||
− | [[Plugin YAML|plugin.yml]] | ||
− | |||
− | |||
− | + | プラグインのデータフォルダ配下の''config.yml''をデフォルト値で上書きしたい場合は、JavaPluginクラスの''saveDefaultConfig()''メソッドを呼び出す必要があります。既存のファイルを上書きしたくない場合は、copyDefaultsオプションにtrueを設定します。 | |
− | + | 動的な値をデフォルト値とする場合、addDefaults(Map<String,Object>)や'''addDefault(String, Object)'''のようにコーディングする事で実現できます。 | |
− | <blockquote><source lang="java"> | + | 特殊なケースとして、新規のデフォルト値を既存の''config.yml''に追加したい場合は、copyDefaultsにtrueをセットします。 <blockquote><source lang="java">getConfig().options().copyDefaults(true)</source></blockquote> |
− | |||
− | |||
− | |||
− | |||
=== コンフィグ値の取得 === | === コンフィグ値の取得 === | ||
− | |||
コンフィグ値の読み込み処理は、複数のgetterメソッドの呼び出し処理から成ります。全てのgetterメソッドの一覧は[http://jd.bukkit.org/doxygen/dd/d7c/classorg_1_1bukkit_1_1configuration_1_1file_1_1FileConfiguration.html こちら]です。一般的な用途のgetterメソッドは下記です。 | コンフィグ値の読み込み処理は、複数のgetterメソッドの呼び出し処理から成ります。全てのgetterメソッドの一覧は[http://jd.bukkit.org/doxygen/dd/d7c/classorg_1_1bukkit_1_1configuration_1_1file_1_1FileConfiguration.html こちら]です。一般的な用途のgetterメソッドは下記です。 | ||
*getBoolean(String) | *getBoolean(String) | ||
111行目: | 49行目: | ||
*getStringList(String) | *getStringList(String) | ||
+ | ==== Keyの活用 ==== | ||
+ | キーを用いたコンフィグ値の取得処理には、'''FileConfigurationSection'''(コンフィグファイルの階層構造を表すオブジェクト)と、それにアクセスするための'''キー'''と呼ばれる値を利用して行います。キー値の取得には''getKeys(boolean)''メソッドを用い、セクションの取得には''getConfigurationSection(String)''メソッドを用います。キーに先立って、コンフィグファイルのセクションが必要です。 | ||
+ | |||
+ | ''getKeys(boolean)''メソッドのboolean型パラメタは、キーを再帰的に取得するかどうかを指定します。trueであれば、子階層のキーも含めて取得します。falseであれば、対象階層のみのキーを返します。 | ||
+ | |||
+ | *getKeys(boolean) | ||
+ | {{note}} このメソッドは、String型の[http://download.oracle.com/javase/1,5.0/docs/api/java/util/Set.html Set] を返します。 | ||
=== コンフィグ値のセット === | === コンフィグ値のセット === | ||
122行目: | 67行目: | ||
利用例: <blockquote><source lang="java"> | 利用例: <blockquote><source lang="java"> | ||
− | // | + | // setting a boolean value |
this.getConfig().set("path.to.boolean", true); | this.getConfig().set("path.to.boolean", true); | ||
− | // | + | // setting a String |
− | this.getConfig().set("path.to.string", | + | String string = "Hello World!"; |
+ | this.getConfig().set("path.to.string", stringValue); | ||
− | // | + | // Setting a List of Strings |
− | // | + | // The List of Strings is first defined in this array |
− | String[] listOfStrings = {" | + | String[] listOfStrings = {"Hello World", "Welcome to Bukkit", "Have a Good Day!"}; |
− | this.getConfig().set("path.to.list", Arrays.asList(listOfStrings | + | this.getConfig().set("path.to.list", Arrays.asList(listOfStrings); |
− | // | + | // Setting a vector |
+ | // event is assumed to be an existing event inside an "onEvent" method. | ||
Vector vector = event.getPlayer().getLocation().toVector(); | Vector vector = event.getPlayer().getLocation().toVector(); | ||
this.getConfig().set("path.to.vector", vector); | this.getConfig().set("path.to.vector", vector); | ||
− | // | + | // Erasing a value |
− | this.getConfig().set("path.to. | + | this.getConfig().set("path.to.value", null);</source></blockquote><br> |
− | </source></blockquote> | ||
==== HashMapの活用 ==== | ==== HashMapの活用 ==== | ||
148行目: | 94行目: | ||
=== コンフィグファイルのセーブ === | === コンフィグファイルのセーブ === | ||
setメソッドを利用して''FileConfiguration''に多くの変更を加えるか、''Lists''(設定値インスタンスの内部値がList派生型になっている領域を指している)の内容を変更した場合、プラグインの無効化後も残したい設定値であればディスクに書き出すべきです。'''saveConfig'''メソッドを呼び出して、既存の(ディスク上の)コンフィグファイルに上書き保存しましょう。<blockquote><source lang="java">this.saveConfig();</source></blockquote> | setメソッドを利用して''FileConfiguration''に多くの変更を加えるか、''Lists''(設定値インスタンスの内部値がList派生型になっている領域を指している)の内容を変更した場合、プラグインの無効化後も残したい設定値であればディスクに書き出すべきです。'''saveConfig'''メソッドを呼び出して、既存の(ディスク上の)コンフィグファイルに上書き保存しましょう。<blockquote><source lang="java">this.saveConfig();</source></blockquote> | ||
− | |||
=== ディスクからのリロード === | === ディスクからのリロード === | ||
− | プラグインのデータフォルダ上の''config.yml''が、ユーザによって変更されている可能性を疑って下さい。この変更点はメモリ上の設定値に反映されていません。''reloadConfig()''メソッドを呼び出して、ディスク上の設定値をプラグインにロードする事ができます。ただしメモリ上の設定値が、ロード内容で上書きされる事にも留意して下さい。 | + | プラグインのデータフォルダ上の''config.yml''が、ユーザによって変更されている可能性を疑って下さい。この変更点はメモリ上の設定値に反映されていません。''reloadConfig()''メソッドを呼び出して、ディスク上の設定値をプラグインにロードする事ができます。ただしメモリ上の設定値が、ロード内容で上書きされる事にも留意して下さい。<source lang="java">this.reloadConfig();</source> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 応用 == | == 応用 == | ||
以下は、より高度なプラグインを製作するための、応用のトピックです。<br> | 以下は、より高度なプラグインを製作するための、応用のトピックです。<br> | ||
− | + | あなたは既定の''config.yml''を作成するだけでよく、保存したり、移動したりする必要は今後ありません。 | |
=== コンフィグのオプション === | === コンフィグのオプション === | ||
189行目: | 111行目: | ||
現在、4つのオプションがあります。<br> | 現在、4つのオプションがあります。<br> | ||
メソッドはオーバーロードされているものがあり、例えば、''copyDefaults()''はブール値を返しますが、''copyDefaults(boolean)''は自分自身を返します。<br> | メソッドはオーバーロードされているものがあり、例えば、''copyDefaults()''はブール値を返しますが、''copyDefaults(boolean)''は自分自身を返します。<br> | ||
− | '''訳者注''' | + | '''訳者注''' 引数を指定しないメソッドはオプション値を返し、引数を指定するメソッドはオプション値を設定するようです。 |
==== CopyDefaults ==== | ==== CopyDefaults ==== | ||
− | ''CopyDefaults''オプションは''Configuration'' | + | ''CopyDefaults''オプションは''Configuration''クラスのsaveメソッドを変更しています。<br> |
− | + | 既定では、デフォルトのコンフィグを保存先ファイルに上書きしません。<br> | |
− | + | もし引数にtrueが設定された場合、ファイルの上書きをします。<br> | |
− | + | しかし、1度書き込みが行われるのみで、あなたがデフォルト値を変更したとしてもその値が反映されるわけではありません。 | |
==== PathSeparator ==== | ==== PathSeparator ==== | ||
212行目: | 134行目: | ||
もし''copyHeader()''がtrueを返したら、既定のconfig.ymlから保存先にヘッダーを保存したことを示します。 | もし''copyHeader()''がtrueを返したら、既定のconfig.ymlから保存先にヘッダーを保存したことを示します。 | ||
− | === | + | === 取得・リロード・セーブとカスタマイズ === |
− | + | === シリアライズとデ・シリアライズ === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==== エイリアス ==== | ==== エイリアス ==== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 利用例 == | == 利用例 == | ||
361行目: | 158行目: | ||
// もしconfig.ymlが存在しないなら、既定のconfig.ymlをコピーします。 | // もしconfig.ymlが存在しないなら、既定のconfig.ymlをコピーします。 | ||
this.saveDefaultConfig(); | this.saveDefaultConfig(); | ||
− | + | ||
// 新しいリスナーを登録します。 | // 新しいリスナーを登録します。 | ||
getServer().getPluginManager().registerEvents(new Listener() { | getServer().getPluginManager().registerEvents(new Listener() { | ||
− | + | ||
@EventHandler | @EventHandler | ||
− | public | + | public playerJoin(PlayerJoinEvent event) { |
// プレイヤーがサーバーに参加したときに、config.ymlに書かれたメッセージを送ります。 | // プレイヤーがサーバーに参加したときに、config.ymlに書かれたメッセージを送ります。 | ||
event.getPlayer().sendMessage(SimpleMOTD.this.getConfig().getString("message")); | event.getPlayer().sendMessage(SimpleMOTD.this.getConfig().getString("message")); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
}, this); | }, this); | ||
380行目: | 171行目: | ||
// rulesコマンドのCommandExecutorを登録します。 | // rulesコマンドのCommandExecutorを登録します。 | ||
this.getCommand("rules").setExecutor(new CommandExecutor() { | this.getCommand("rules").setExecutor(new CommandExecutor() { | ||
− | + | ||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | ||
// コマンド実行時にコマンド実行者へ、config.ymlのrulesの内容を送ります。 | // コマンド実行時にコマンド実行者へ、config.ymlのrulesの内容を送ります。 | ||
List<String> rules = SimpleMOTD.this.getConfig().getStringList("rules"); | List<String> rules = SimpleMOTD.this.getConfig().getStringList("rules"); | ||
− | for (String s : rules) | + | for (String s : rules) |
sender.sendMessage(s); | sender.sendMessage(s); | ||
} | } | ||
402行目: | 193行目: | ||
- Respect others | - Respect others | ||
- Have Fun | - Have Fun | ||
− | |||
− | |||
− | |||
</source> | </source> |