【问题标题】:ItemMeta - command and listenerItemMeta - 命令和监听器
【发布时间】:2016-07-17 09:13:58
【问题描述】:

如何在另一个类中使用 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"使用一等舱itemmeta

【问题讨论】:

  • 你知道面向对象编程的工作原理吗?

标签: java bukkit


【解决方案1】:

使用 Kart 类之外的 ArrayList 存储它,然后在 EventHandler 中检索数据。

【讨论】:

  • 你能给我的插件举个例子吗?没听懂。
【解决方案2】:

在您的第一个类中,创建一个全局变量(在任何函数之外)并存储kart.getItemMeta() 的值。

仍然在您的第一个类中,创建一个返回此变量的函数。

在你的第二个类中,创建另一个全局变量Kart kart 并创建一个函数public *nameOfYourClass*(Kart kart){this.kart = kart}。然后你应该可以kart.*functionOfFirstStep*

如果我不够清楚,请告诉我。

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2023-02-05
    • 2021-12-01
    • 2013-12-24
    • 2014-12-13
    相关资源
    最近更新 更多