Java 检查项目lore是否包含字符串(loren.contains(“设计自”)中) 我只想检查一下: 但它不知道它确实包含“§designed of”

Java 检查项目lore是否包含字符串(loren.contains(“设计自”)中) 我只想检查一下: 但它不知道它确实包含“§designed of”,java,minecraft,bukkit,Java,Minecraft,Bukkit,我写了一个Minecraft命令/sign你可以在一个物品上添加一个知识(“PlayerAnk的签名| playername”)。 然后我想添加一个/unsign命令来删除这个知识 ItemStack is = p.getItemInHand(); ItemMeta im = is.getItemMeta(); List<String> lore = im.hasLore() ? im.getLore() : new ArrayList<String>();

我写了一个Minecraft命令
/sign
你可以在一个物品上添加一个知识(“PlayerAnk的签名| playername”)。 然后我想添加一个
/unsign
命令来删除这个知识

ItemStack is = p.getItemInHand();
ItemMeta im = is.getItemMeta();
List<String> lore = im.hasLore() ? im.getLore() : new ArrayList<String>();
        
if (lore.contains("§eSigned of " + getChatName(p))) { // this line is important!
   for (int i = 0; i < 3; i++) {
        int size = lore.size();
        lore.remove(size - 1);                    
    }

    im.setLore(lore);
    is.setItemMeta(im);

    p.setItemInHand(is);
    sendMessage(p, "§aThis item is no longer signed");
} else {
    sendMessage(p, "§aThis item is not signed!");
}
return CommandResult.None;
但是它没有得到它,并且返回false。(它说知识不包含“§designed of”) 我尝试了很多,但它只适用于字符串“§eSigned of”和
getChatName(p)
。 因为文档“包含”搜索特定字符串,所以它应该按照我的想法工作,对吗

加:
getChatName(p)
返回玩家和玩家名称的等级,如:“Member | domi”
sendMessage(p,”)
在Minecraft聊天中发送一条简单的消息

您遇到的问题是
包含(字符串)
查找匹配的字符串。您搜索的是检查列表中是否有以“§eSigned of”开头的字符串

我建议添加一个函数
isSignedItem
,如下所示:

private boolean isSignedItem(列表知识){
对于(字符串st:lore)
如果(st.startsWith(“§设计”))
返回true;
返回false;
}
然后使用此功能检查项目是否已签名:

[…]
List lore=im.hasLore()?im.getLore():新的ArrayList();
如果(isSignedItem(lore)){//这一行很重要!
对于(int i=0;i<3;i++){
int size=lore.size();
移除(尺寸-1);
}
[...]
谢谢!使用startsWith()确实解决了我的问题:)
ItemStack is = p.getItemInHand();
ItemMeta im = is.getItemMeta();
List<String> lore = im.hasLore() ? im.getLore() : new ArrayList<String>();
        
if (lore.contains("§eSigned of " + getChatName(p))) { // this line is important!
   for (int i = 0; i < 3; i++) {
        int size = lore.size();
        lore.remove(size - 1);                    
    }

    im.setLore(lore);
    is.setItemMeta(im);

    p.setItemInHand(is);
    sendMessage(p, "§aThis item is no longer signed");
} else {
    sendMessage(p, "§aThis item is not signed!");
}
return CommandResult.None;
if (lore.contains("§eSigned of ")) {