Я только хочу проверить:
if (lore.contains("§eSigned of ")) {
, но не понимаю, что он действительно содержит «§eSigned of»
Я написал команду Minecraft /sign
вы можете добавить сведения к предмету («Подписано рейтинг игрока | имя игрока »). Затем я хотел добавить команду /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;
Все работает нормально, пока вы, например, не измените свое имя. чем вы не можете удалить знак, потому что getChatName(p)
изменилось. Чтобы исправить это, я хочу только проверить
if (lore.contains("§eSigned of ")) {
, но он не получает его и возвращает false. (он говорит, что лор не содержит «§eSigned of») Я много пробовал, но он работает только со строкой «§eSigned of» и getChatName(p)
. Поскольку документация «содержит» выполняет поиск указанной строки c, она должна работать так, как я думал, правильно?
Добавить: getChatName(p)
возвращает рейтинг игрока и имя игрока, например: «Член | domi» sendMessage(p, "")
отправляет простое сообщение в чат Minecraft