提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
179行目: | 179行目: | ||
以下は、より高度なプラグインを製作するための、応用のトピックです。<br> | 以下は、より高度なプラグインを製作するための、応用のトピックです。<br> | ||
− | + | あなたは既定の''config.yml''を作成するだけでよく、保存したり、移動したりする必要は今後ありません。 | |
=== コンフィグのオプション === | === コンフィグのオプション === | ||
193行目: | 193行目: | ||
==== CopyDefaults ==== | ==== CopyDefaults ==== | ||
− | ''CopyDefaults''オプションは''Configuration'' | + | ''CopyDefaults''オプションは''Configuration''クラスのsaveメソッドを変更しています。<br> |
− | + | 既定では、デフォルトのコンフィグを保存先ファイルに上書きしません。<br> | |
− | + | もし引数にtrueが設定された場合、ファイルの上書きをします。<br> | |
− | + | しかし、1度書き込みが行われるのみで、あなたがデフォルト値を変更したとしてもその値が反映されるわけではありません。 | |
==== PathSeparator ==== | ==== PathSeparator ==== | ||
227行目: | 227行目: | ||
プラグインのメソッドを実装した後、それと同じコンテキストで継承された''getConfig()''、 ''reloadConfig()''、 ''saveConfig()''、および ''saveDefaultConfig()''メソッドで呼び出すことができます。<br> | プラグインのメソッドを実装した後、それと同じコンテキストで継承された''getConfig()''、 ''reloadConfig()''、 ''saveConfig()''、および ''saveDefaultConfig()''メソッドで呼び出すことができます。<br> | ||
下記のコード例では、1つのクラスで複数の yaml ファイルにアクセスすることができます。<br> | 下記のコード例では、1つのクラスで複数の yaml ファイルにアクセスすることができます。<br> | ||
− | このようなクラス実装例を、 [https://gist.github.com/3174347 ここに] 示します。 | + | このようなクラス実装例を、 [https://gist.github.com/3174347 ここに] 示します。 |
まず、2つのフィールドを宣言し、カスタム構成ファイルごとに null に初期化する必要があります。<br> | まず、2つのフィールドを宣言し、カスタム構成ファイルごとに null に初期化する必要があります。<br> | ||
299行目: | 299行目: | ||
customConfigFile = new File(getDataFolder(), "customConfig.yml"); | customConfigFile = new File(getDataFolder(), "customConfig.yml"); | ||
} | } | ||
− | if (!configFile.exists()) { | + | if (!configFile.exists()) { |
this.plugin.saveResource(fileName, false); | this.plugin.saveResource(fileName, false); | ||
} | } | ||
309行目: | 309行目: | ||
コンフィグAPI は、前述のように''ConfigurationSerializable''インターフェイスを実装する Java オブジェクトを格納することができます。<br> | コンフィグAPI は、前述のように''ConfigurationSerializable''インターフェイスを実装する Java オブジェクトを格納することができます。<br> | ||
オブジェクトのシリアル化では、各種オブジェクトを簡単に保存したり読み込んだりする仕組みを、実装者に提供してくれています。<br> | オブジェクトのシリアル化では、各種オブジェクトを簡単に保存したり読み込んだりする仕組みを、実装者に提供してくれています。<br> | ||
− | + | 開発者は'[http://jd.bukkit.org/doxygen/da/dac/classorg_1_1bukkit_1_1Location.html Location]''を取得できるシリアライズラッパークラスを使うことで、YAMLに''Location''を保存するような処理がとても簡単に使用することができます。 | |
− | API | + | API でシリアル化することができますようにクラスは''ConfigurationSerializable''インターフェイスを実装するだけでなく、また implment、Javadoc で指摘したように、以下のいずれかの必要があります。<br> |
− | * | + | * 1つの''Map''を受け入れるコンストラクター |
− | * | + | * 1つの''Map''を受け入れてクラスを返す、"deserialize" という名前のstaticメソッド |
− | * | + | * 1つの''Map''を受け入れてクラスを返す、"valueOf" という名前のstaticメソッド |
シリアライズされたオブジェクトをデシリアライズするには、ConfigurationSerialization に登録されている必要があります。<br> | シリアライズされたオブジェクトをデシリアライズするには、ConfigurationSerialization に登録されている必要があります。<br> | ||
− | registerClass | + | registerClass メソッドは、シリアル化されたクラスごとに1回呼び出す必要があります。 |
このステートメントは、メインクラスの初期化ブロックに記述することができます。 | このステートメントは、メインクラスの初期化ブロックに記述することができます。 | ||
329行目: | 329行目: | ||
クラスがシリアル化されるとき、完全修飾名でマークされています。 | クラスがシリアル化されるとき、完全修飾名でマークされています。 | ||
− | + | エイリアスをクラスに設定しておくと、代わりにクラスが、エイリアスの完全修飾名を持つ形でシリアル化されません。<br> | |
− | ''SerializeAs''アノテーションを、ConfigurationSerializableを実装するクラスに指定します。 | + | ''SerializeAs''アノテーションを、ConfigurationSerializableを実装するクラスに指定します。 |
<source lang="java">@SerilizeAs(String)</source> | <source lang="java">@SerilizeAs(String)</source> | ||