diff options
| author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-03-26 14:48:47 +0200 |
|---|---|---|
| committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-03-26 14:48:47 +0200 |
| commit | 827fadd0b3c0f5458a448a659873cc8ebe075fd6 (patch) | |
| tree | 34440dc04087d21bfd34857b0f8a1d0f3f8b58a2 | |
| parent | e0c26abce6b7f415a8f50dbab69efd3229af36bf (diff) | |
| download | SkyHanni-827fadd0b3c0f5458a448a659873cc8ebe075fd6.tar.gz SkyHanni-827fadd0b3c0f5458a448a659873cc8ebe075fd6.tar.bz2 SkyHanni-827fadd0b3c0f5458a448a659873cc8ebe075fd6.zip | |
Fixed wrong Jacob/Anita npc get highlighted as visitor
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt index 5ecdad087..ecb3c541d 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt @@ -379,7 +379,9 @@ class GardenVisitorFeatures { for ((visitorName, visitor) in visitors) { val entity = visitor.getEntity() if (entity == null) { - findEntityByNametag(visitorName, visitor) + findNametag(visitorName.removeColor())?.let { + findEntity(it, visitor) + } } val status = visitor.status @@ -405,18 +407,45 @@ class GardenVisitorFeatures { private fun Visitor.getEntity() = Minecraft.getMinecraft().theWorld.getEntityByID(entityId) - private fun findEntityByNametag(visitorName: String, visitor: Visitor) { - Minecraft.getMinecraft().theWorld.loadedEntityList - .filter { it is EntityArmorStand && it.name.removeColor() == visitorName.removeColor() } - .forEach { entity -> - Minecraft.getMinecraft().theWorld.loadedEntityList - .filter { it !is EntityArmorStand } - .filter { entity.getLorenzVec().distanceIgnoreY(it.getLorenzVec()) == 0.0 } - .forEach { - visitor.entityId = it?.entityId ?: 0 - visitor.nameTagEntityId = entity.entityId + private fun findEntity(nameTag: EntityArmorStand, visitor: Visitor) { + for (entity in Minecraft.getMinecraft().theWorld.loadedEntityList) { + if (entity is EntityArmorStand) continue + if (entity.getLorenzVec().distanceIgnoreY(nameTag.getLorenzVec()) != 0.0) continue + + visitor.entityId = entity?.entityId ?: 0 + visitor.nameTagEntityId = nameTag.entityId + } + } + + private fun findNametag(visitorName: String): EntityArmorStand? { + val foundVisitorNameTags = mutableListOf<EntityArmorStand>() + for (entity in Minecraft.getMinecraft().theWorld.loadedEntityList) { + if (entity !is EntityArmorStand) continue + + if (entity.name.removeColor() == visitorName) { + foundVisitorNameTags.add(entity) + } + } + + if (visitorName in listOf("Jacob", "Anita")) { + + // Only detect jacob/anita npc if the "wrong" npc got found as well + if (foundVisitorNameTags.size != 2) return null + + for (tag in foundVisitorNameTags.toMutableList()) { + for (entity in Minecraft.getMinecraft().theWorld.loadedEntityList) { + if (entity !is EntityArmorStand) continue + if (entity in foundVisitorNameTags) continue + val distance = entity.getLorenzVec().distance(tag.getLorenzVec()) + if (distance < 1.5 && entity.name == "§bSam") { + foundVisitorNameTags.remove(tag) } + } } + } + + if (foundVisitorNameTags.size != 1) return null + return foundVisitorNameTags[0] } private fun isReady(visitor: Visitor): Boolean { |
