Получение энтити

Версия Minecraft
1.12.2
1,471
19
190
Как получить энтити на которое направлено перекрестие игрока?
 
Тебе уже все сказали? Что ты еще хочешь? Чтобы за тебя код написали и принесли с тортиком?
Хотя его уже и написали... без тортика разве что.
 
Kotlin:
fun getMouseOver(partialTicks: Float, distance: Double, canBeCollidedWith: Boolean): Entity? {
        val mc = Minecraft.getMinecraft()
        var pointedEntity: Entity? = null
        var rayTrace: RayTraceResult?

        if(mc.renderViewEntity != null) {
            if(mc.world != null) {
                rayTrace = mc.renderViewEntity!!.rayTrace(distance, partialTicks)
                val positionVec = mc.renderViewEntity!!.positionVector
                var distanceToVec3 = distance

                if(rayTrace != null) {
                    distanceToVec3 = rayTrace.hitVec.distanceTo(positionVec)
                }

                val lookVec = mc.renderViewEntity!!.getLook(partialTicks)
                val posDistVec = positionVec.addVector(lookVec.x * distance, lookVec.y * distance, lookVec.z * distance)
                var tempVec: Vec3d? = null
                val boxExpand = 1.0
                val entities = mc.world.getEntitiesWithinAABBExcludingEntity(mc.renderViewEntity, mc.renderViewEntity!!.renderBoundingBox.expand(lookVec.x * distance, lookVec.y * distance, lookVec.z * distance).expand(boxExpand, boxExpand, boxExpand))
                var vecInsideDist = distanceToVec3

                for(i in entities.indices) {
                    val entity = entities[i]

                    if(!canBeCollidedWith || entity.canBeCollidedWith()) {
                        val borderSize = entity.collisionBorderSize.toDouble()
                        val expEntityBox = entity.renderBoundingBox.expand(borderSize, borderSize, borderSize)
                        val calculateInterceptPos = expEntityBox.calculateIntercept(positionVec, posDistVec)

                        if(expEntityBox.contains(positionVec)) {
                            if(0.0 < vecInsideDist || vecInsideDist == 0.0) {
                                pointedEntity = entity
                                tempVec = if(calculateInterceptPos == null) positionVec else calculateInterceptPos.hitVec
                                vecInsideDist = 0.0
                            }
                        } else if(calculateInterceptPos != null) {
                            val calcInterceptPosDist = positionVec.distanceTo(calculateInterceptPos.hitVec)

                            if(calcInterceptPosDist < vecInsideDist || vecInsideDist == 0.0) {
                                if(entity === mc.renderViewEntity!!.ridingEntity && !entity.canRiderInteract()) {
                                    if(vecInsideDist == 0.0) {
                                        pointedEntity = entity
                                        tempVec = calculateInterceptPos.hitVec
                                    }
                                } else {
                                    pointedEntity = entity
                                    tempVec = calculateInterceptPos.hitVec
                                    vecInsideDist = calcInterceptPosDist
                                }
                            }
                        }
                    }
                }

                if(pointedEntity != null && (vecInsideDist < distanceToVec3 || rayTrace == null)) {
                    return pointedEntity
                }
            }
        }
        return null
    }
Выдает всегда нул
 
Назад
Сверху