如何将bukkit item-meta Color值作为String传递?

时间:2015-03-16 03:33:18

标签: java plugins methods minecraft bukkit

我在尝试使代码动态时偶然发现了一个问题。而不是为每个硬编码的颜色代码创建一个类(如" cal",如下所示)(一个包含" WHITE",一个" RED"等等。 )我想传递一个参数作为一个String,其中包含我想在函数中使用的颜色的名称。

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

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

在我的代码中,我正在调用此功能" cal",以定义我将设置为玩家库存的头盔的材料和元数据:

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中我会抛出错误,说“无法解析符号颜色输入':

lam.setColor(Color.colorinput);

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

1 个答案:

答案 0 :(得分:0)

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

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