-3

Java、bukkit でマインクラフト プラグインを作成しようとしています。

@EventHandler
public void onItemDrop(PlayerDropItemEvent e) {
    /*
     * Dropping items
     */
    Item item = e.getItemDrop();
    item.setMetadata("NODROP", new FixedMetadataValue(plugin, e.getPlayer()));
    if (!e.getPlayer().hasPermission("nodrop.drop")) {
        e.getItemDrop().remove();
        e.getPlayer().sendMessage(colorizeText(ChatColor.RED + getConfig().getString("drop-message")));
    }
}

私が得ているエラーは「プラグイン」です

    item.setMetadata("NODROP", new FixedMetadataValue(plugin, e.getPlayer()));

つまり:

プラグインを変数に解決できません

助けてください!

4

2 に答える 2

0

したがって、メソッド本体内に次のようなコード行を追加する必要があります。

Plugin plugin = new Plugin();

pluginまたは、インスタンス変数として 宣言することもできます:

public class Foo  
{
    private Plugin plugin;  //initialize later  
    ...
    public void onItemDrop(PlayerDropItemEvent e) {  
     ...
   }  
}
于 2013-02-01T21:04:50.547 に答える
0

@ Woot4Mooの答えが正しいとは思いません。率直に言って; プラグインを実行しようとするとエラーが発生します。

上記のエラーは、次の 2 つの方法のいずれかで修正できます。

プラグインをこれに変更
EventListener がメイン プラグイン クラス ( を拡張するクラス) にある場合は、セクションを にJavaPlugin変更するだけです。pluginthis
item.setMetadata("NODROP", new FixedMetadataValue(this, e.getPlayer()));

プラグインのインスタンスを取得する
EventListener がプラグインの別のセクションにある場合は、リスナーを宣言するときにそれを変更し、getServer().getPluginManager().registerEvents(this, new SomeEventListener(this)送信されたプラグイン インスタンスを取得して保存するコンストラクターを作成します。

public SomeEventListener(JavaPlugin instance) {
    this.plugin = instance;
}

次に、item.setMetadata をそのままにしておくことができます。

于 2013-02-01T21:21:25.507 に答える