如何通过config从字符串名称中获取特定值

时间:2015-09-06 19:49:13

标签: java bukkit

绿色是绝杀 而黄色是显示名称 http://puu.sh/k2iI7/62619f9536.jpg

我正试图将它们分隔在合适的地方,原因有些奇怪,两者都出现在这两个地方。

items.java

public ItemStack applyLore(ItemStack stack, String name, String lore1){
    ItemMeta meta = stack.getItemMeta();
    meta.setDisplayName(name.replaceAll("&([0-9a-f])", "\u00A7$1"));
    ArrayList<String> lore = new ArrayList<String>();
    lore.add(lore1.replaceAll("&([0-9a-f])", "\u00A7$1"));
    meta.setLore(lore);
    stack.setItemMeta(meta);
    return stack;
}

// p.getInventory().addItem(new ItemStack(Integer.parseInt(s), 1));

public void giveItemfromConfig(Player p)
{
    String name ="name:";
    String lore ="lore:";
    for ( String s : plugin.file.getFile().getStringList(plugin.file.path) ) {
        try {

            s.split(" ");
            if ( s.contains(name) || s.contains(lore) )
            {
                String namelength = s.substring(name.length());
                String lorelength = s.substring(lore.length());

                p.getInventory().addItem(applyLore(new ItemStack(Integer.parseInt(s.split(" ")[0])),
                        namelength.replace("_", " ").replace("ame:", "").replace("e:", "").replace("lor", "").replace("ore", ""),
                        lorelength.replace("_", " ").replace("lor:", "").replace("e:", "").replace("am", "").replace("lor", "").replace("ore", "")));
                p.sendMessage("debug");


            } else {
                ///nope.exe
                p.getInventory().addItem(new ItemStack(Integer.parseInt(s)));

            }

        } catch(Exception e)
        {
            e.printStackTrace();
            Bukkit.getConsoleSender().sendMessage(ChatColor.AQUA + "Error in Config, Your id must be a integer ERROR:" + e);
        }
    }

}

config.yml

    ChestPopulater:
  items:
  - 276 name:cookie

1 个答案:

答案 0 :(得分:0)

首先是问题是因为“Integer.parseInt(s)”。 我不知道你为什么添加这个,因为我们没有完整的源代码或想法你想用String“s”做什么,这样你就会得到结果。 如果你这样做是为了得到“276”,我会建议你做以下事情:

String s2 = s.replaceAll(“[A-Za-z]”,“”)。replace(“:”,“”)。trim(); 整数i = Integer.parseInt(s2);