0

私は、静的な在庫を開き、クリックしてキットを入手するサインショップで bukkit プラグインを作成しています。インベントリの設定が完了しました。サインをクリックすると開き、欲しいアイテムがそこにあります。ただし、インベントリをクリックすると、最初の if ステートメントが false を返します。これが私のコードです:

@EventHandler
    public void onInventoryClick(InventoryClickEvent e){
        if (e.getInventory() == kitInvent){
            Player player = (Player) e.getWhoClicked();
            player.sendMessage("Kit Shop Opened");

            if (e.getCurrentItem().getItemMeta().getDisplayName() == ChatColor.DARK_PURPLE + "Grenadier Kit"){
                e.setCancelled(true);
                player.getInventory().clear();
                Potion potion = new Potion(PotionType.INSTANT_DAMAGE, 1);
                potion.setSplash(true);
                ItemStack grenadeStack = new ItemStack(Material.POTION, 32);


                potion.apply(grenadeStack);
                player.getInventory().addItem(grenadeStack);
            }
        }
    }

「if (e.getInventory() == kitInvent)」の部分を通過できません。コメント アウトすると、「Kit Shop Opened」というメッセージが送信されるためです。

また、アイテムのタイトルをチェックする次の if ステートメントを正しく実行していますか? 私もそこに問題がありましたが、それが単に前の if ステートメントのせいなのかどうかはわかりませんでした。

どんな助けでも大歓迎です!

4

3 に答える 3

0

if (e.getInventory().equals(kitInvent))== の代わりに使用する必要があります。.equals は、参照ではなく同一の値を探します。

次の if ステートメントについては、.equals を使用することもお勧めします。これは、文字列を比較するときに == を使用するのは不適切なコーディング方法と考えられているためです。

于 2013-08-28T16:26:41.530 に答える