2016-07-17 12 views
2

別のクラスでitemmetaを使用するにはどうすればよいですか?ItemMeta - コマンドとリスナー

public class Kart implements CommandExecutor { 
    @Override 
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
     Player p = (Player) sender; 

     if (label.equalsIgnoreCase("kart")) { 
      if (p.hasPermission("teamenders.komut.kart")) { 

       ItemStack kart = new ItemStack(Material.PAPER); 
       ItemMeta kartM = kart.getItemMeta(); 
       ArrayList<String> tt = new ArrayList<String>(); 
       kartM.setDisplayName(ChatColor.DARK_AQUA + "Yetki Karti"); 
       tt.add(ChatColor.DARK_GREEN + "Giris Yetkisi"); 
       kartM.setLore(tt); 
       kart.setItemMeta(kartM); 
       p.getInventory().addItem(new ItemStack(kart)); 

      } else { 
       p.sendMessage(ChatColor.DARK_RED + "Yetersiz Yetki!!!!!"); 
      } 
     } 
     return false; 
    } 
} 

マイセカンドクラス:

@EventHandler 
public void onPInteract(PlayerInteractEvent e) { 
    Player p = e.getPlayer(); 
    if (e.getAction() == Action.RIGHT_CLICK_AIR) { 
     if (p.getItemInHand().getType() == Material.PAPER && p.getItemInHand().hasItemMeta()) { 
      p.sendMessage(ChatColor.DARK_AQUA + "Yetkiyi aldin."); 
     } 
    } 
} 

私は"p.getItemInHand"

+0

オブジェクト指向プログラミングの仕組みをご存じですか? –

答えて

0

それはあなたのカートクラスの外でのArrayListを使用してストアには、その後、あなたのEventHandler内のデータを取得する第二クラスで最初のクラスitemmetaを使いたいです。

+0

あなたは私のプラグインの例を挙げることができますか?私はよく分からなかった。 – drhopeness

0

最初のクラスでは、グローバル変数(関数外)を作成し、値kart.getItemMeta()を保存します。

まだこのファーストクラスでは、この変数を返す関数を作成してください。

2番目のクラスでは、別のグローバル変数Kart kartを作成し、関数public *nameOfYourClass*(Kart kart){this.kart = kart}を作成します。 kart.*functionOfFirstStep*を実行できるはずです。

私が十分明確でないかどうか教えてください。

関連する問題