То, что я предполагаю, что вы хотите сделать, это проверить каждую строку Lore, если он содержит данную один. Поэтому в основном то, что вам нужно сделать, будет следующее:
ItemStack itemInMainHand = player.getInventory().getItemInMainHand();
if (itemInMainHand != null && itemInMainHand.hasItemMeta()) {
ItemMeta metaOfItemInHand = itemInMainHand.getItemMeta();
if (metaOfItemInHand.hasLore()) {
List<String> loreInHand = metaOfItemInHand.getLore();
for(String loreLine : loreInHand) {
if(loreLine.contains("lore") {
//do stuff
}
}
}
}
, но имейте в виду, что это может запустить ваш код несколько раз, в зависимости от того, сколько раз «уздечка» входит в действительном знания. Вы можете обойти эту проблему, поместив возврат в тело if (пока вы находитесь в методе) или извлеките for-loop в дополнительный метод для повторного использования. В Java8 вы могли бы сделать что-то с потоками:
ItemStack itemInMainHand = player.getInventory().getItemInMainHand();
if (itemInMainHand != null && itemInMainHand.hasItemMeta()) {
ItemMeta metaOfItemInHand = itemInMainHand.getItemMeta();
if (metaOfItemInHand.hasLore()) {
List<String> loreInHand = metaOfItemInHand.getLore();
if(!loreInHand.stream().filter(s -> s.contains("lore"))
.collect(Collectors.toList()).isEmpty()) {
//do stuff
}
}
}
Надеется, что это помогает!
Edit: так getItemInHand()
является deprectaed, я обновил свои примеры теперь действительного кода. Также добавлено предложение Krijn Tojets.
Просто была еще одна идея для совместимого метода Java7, который не нуждается для цикла:
ItemStack itemInMainHand = player.getInventory().getItemInMainHand();
if (itemInMainHand != null && itemInMainHand.hasItemMeta()) {
ItemMeta metaOfItemInHand = itemInMainHand.getItemMeta();
if (metaOfItemInHand.hasLore() &&
String.join(" ", metaOfItemInHand.getLore()).contains("lore")) {
//do stuff
}
}
Можете ли вы напечатать 'LoreInHand' и поделиться им с нами? – Mureinik