;-)をappreaciatedされ、それが与えられたものを含まれている場合は、すべての伝承の文字列をチェックすることです。 だから基本的に、あなたが何をする必要があるか、以下のようになります。
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ループを再利用可能な余分なメソッドに抽出します。 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
}
}
}
希望します。
編集:getItemInHand()
以来がdeprectaedされ、私は今、有効なコードに私の例を更新しました。また、Krijn Tojetsの提案が追加されました。あなたがアイテムにnullチェックを追加する必要があり、それがメタだ
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