Bukkit通过split()|添加多个lores每次玩家在配置中都有\ n

时间:2015-09-07 17:42:03

标签: java bukkit

每当玩家做错时:\ n \ n \ n \ n 应该添加一个新的loreline所以如果播放器确实如此,那么它应该添加2个第一个是dog1,第二个是dog2。

问题在于,它甚至没有返回正确的传说,它总是将底部项目遗漏50次50次,我的意思是,对于配置中的两个项目,将会有50行遗存

下午9点46分 2015年9月7日 问题重述: 我想要做的是每当玩家在那里[1]中有一个\ n时添加一个新的绝杀线,所以如果一个玩家有一个绝杀:dog \ ndog它会产生新的绝杀线,因为 “\ n”假设给你一个新的行!

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

function test(World world, Player p)
      String labels = "name: lore:";
      String[] parts = labels.split(" ");
      String name = parts[0];
      String lore = parts[1];
      if (b instanceof Chest) {

          if (chest.getInventory().getSize() == 27) {
              if (s.contains("restrict:singlechest")) {
                  if (chance < Integer.parseInt(s.substring(itemchance.length()).split(" ")[2].replace("chance", "").replace("chan", "").replace("ance", "").replace(":", ""))) {

                      chest.getBlockInventory().addItem(applyLore(new ItemStack(Integer.parseInt(s.split(" ")[0]), amountgot),
                          s.substring(name.length()).split(" ")[0].replace("_", " ").replace("ame:", "").replace("e:", ""),
                          s.substring(lore.length()).split(" ")[1].replace("_", " ").replace("lore:", "")));
                      for (int i = lore.length(); i < lore.length(); i++) {
                          lorelist.add(lore.substring(lore.length()).split("\n")[i].replaceAll("&([0-9a-f])", "\u00A7$1").replaceAll("lore", ":"));

                          break;

                      }
                      break;
                  }
              }
          }
}

配置

    ChestPopulater:
  items:
  - 126 name:&9Thor_Godly_Axe lore:1st_lore_line\n&7second_lore_line chance:99 maxamount:1 restrict:doublechest
  - 276 name:&9testblade lore:dog1\ndog2\ndog3 chance:99 maxamount:1 restrict:singlechest

更新: 2015年9月27日下午9点40分 我试过以下仍然无法正常工作

         for ( int i = 0; i < lore.length(); i++ )
            {
               if ( Integer.toString(i).contains("\n") )
               {
                    lorelist.add(Integer.toString(i).replaceAll("&([0-9a-f])", "\u00A7$1"));
                    Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "Debug");
               }
            }

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的代码正确发生了什么,很多变量都是冒出来的......然而,我要做的是,lore是带有知识的字符串它,像这样:lore:apple\ndog\nHow_are_you。此外,item是要添加项目的项目堆栈,name是要添加的项目名称,endItem是已添加项目的已完成项目。然后,如果我理解正确,这段代码应该有用。

ArrayList<String> lorelist = new ArrayList<String>();
String[] lores = lore.split("\n");
for (String addlore : lores) {
    lorelist.add((addlore.replaceAll("&([0-9a-f])", "\u00A7$1")).replaceAll("_", " ");
}
endItem = addInfo(item, name, lorelist);

这是addInfo函数。

public ItemStack addInfo(ItemStack item, String name, ArrayList<String> lorelist) {
    ItemMeta meta = item.getItemMeta();
    meta.setDisplayName((name.replaceAll("&([0-9a-f])", "\u00A7$1")).replaceAll("_", " "));
    meta.setLore(lorelist);
    item.setItemMeta(meta);
}