如何将 bukkit item-meta Color 值作为字符串传递?

How to pass on a bukkit item-meta Color value as a String?

我在尝试使我的代码动态化时遇到了一个问题。我不想为每个颜色代码硬编码(一个包含 "WHITE"、一个 "RED" 等)制作一个 class(如 "cal",如下所示)我想通过作为一个包含我想在函数中使用的颜色名称的字符串的参数。

代码最好用代码解释。我正在为玩家物品栏设置头盔,如下所示:

PlayerInventory inven = player.getInventory();
inven.setHelmet(cal());

在我的代码中,我调用此函数 "cal",以定义 material 和我将要设置到玩家物品栏的头盔的元数据:

public static ItemStack cal(String colorinput)
{
    ItemStack is = new ItemStack(Material.LEATHER_HELMET);
    LeatherArmorMeta lam = (LeatherArmorMeta)is.getItemMeta();
    lam.setColor(Color.colorinput);
    is.setItemMeta(lam);
    ItemMeta im = is.getItemMeta();
    im.setDisplayName("§f§9Blue Helmet");
    is.setItemMeta(im);
    return is;
}

现在,假设我这样做了,那么这段代码就可以工作了:

lam.setColor(Color.WHITE);

但是如果我这样做,就像我在上面自己的代码中所做的那样,那么它会在 IDE 中向我抛出错误 'cannot resolve symbol colorinput':

lam.setColor(Color.colorinput);

如何正确传递要在 bukkit.org 的 "Color" 旁边使用的字符串,以便我可以让用户在命令参数中传递颜色名称而不是硬传递-编码所有颜色?

您无法从 String 对象中获取 Color 值,因为 class 不是枚举。 您必须使用提供的方法从它们的红色、绿色和蓝色组件构建它们。

选择Color.fromRGB(int, int, int) and Color.fromBGR(int, int, int)。 关于第一个,you can pick each number here.