2

bukkit API を使用して、次の疑似コードのような呼び出しを行うことは可能ですか?

Bukkit.getPluginManager().getPlugin("PluginName").getJarFile();

MobBountyReloaded のようなプラグインの場合は、plugins/MobBountyReloaded_v235.jar.

.jarプラグインの名前にまたはを追加するだけのようなよく知られた命名スキームを使用してファイルを探してみまし<version>.jarたが、常に正しい結果が得られるとは限りません。上記の例は、plugin.ymlファイルのバージョン番号が just235ではなく_v235であり、一部のプラグインは のようなスキームを使用するため失敗します<PluginName>-<Version>-<buildnumber>.jar

これを達成する簡単な方法はありますか?ロードされたすべてのプラグインのファイル情報は、メモリ内のどこかにある必要がありますね?

4

2 に答える 2

6

プラグインからロードされたクラスがある場合、コード ソース機能を使用して、クラスがロードされた jar を取得できます。

Bukkit.getPluginManager().getPlugin("PluginName").getClass().getProtectionDomain().getCodeSource().getLocation();
于 2012-09-06T15:44:01.543 に答える
1

org.bukkit.plugin.java.JavaPluginサブクラスで、

this.getFile().getAbsoluteFile();

this.getFile()だけが次のようなパスを含む完全なjarファイル名を返します: "plugins \clj-minecraft-1.0.1-SNAPSHOT-standalone.jar"

私の場合、これが必要でした:「file:/S:/cb/plugins/memorystone-2.0.0-SNAPSHOT.jar」をURL(URIではなく)として:this.getFile()。toURI()。toURL( );

[org.bukkit /bukkit"1.4.5-R0.3-SNAPSHOT"]でテスト済み

于 2012-12-04T06:49:52.780 に答える