мне лень название делать, простите

Как сделать, что бы персонаж мог наводиться не на 3-4 блока, что бы он подсвечивался, а на большее например 20-30
 

Icedragon

Голубой Петушок
4,978
46
755
мне лень писать тебе ответ, прости
 
Хотя, можно ответь пожалуйста, я просто не понимаю какое название сделаtь :С
 
1,020
48
201
смотри в сурсах ботании, там есть кольцо, которое увеличивает дистанцию
 
709
9
105
Правила читал? Сделай нормальное название у темы, пример: "Дистанция взгляда игрока"
Вот тебе мой лично переделанный метод из ванилки:
EntityLook:
public class EntityLook
{
    /***/
    public static RayTraceResult getMouseOver(EntityLivingBase entity_base, float fasc, double dist, boolean interact)
    {
        if (entity_base == null || entity_base.world == null) return null;
        Entity pointedEntity = null;
        double d0 = dist;
        double d1 = d0;
        Vec3d vec3 = new Vec3d(entity_base.posX,
                (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? entity_base.posY : entity_base.posY + entity_base.getEyeHeight()),
                entity_base.posZ);
        Vec3d vec31 = entity_base.getLook(fasc);
        Vec3d vec32 = vec3.addVector(vec31.x * d0, vec31.y * d0, vec31.z * d0);
        Vec3d vec33 = null;
        RayTraceResult objectMouseOver = rayTrace(entity_base, dist, fasc);

        if (objectMouseOver != null)
            d1 = objectMouseOver.hitVec.distanceTo(vec3);

        float f1 = 1.0F;
        List list = entity_base.world.getEntitiesWithinAABBExcludingEntity(entity_base, entity_base.getEntityBoundingBox().expand(vec31.x * d0, vec31.y * d0, vec31.z * d0).grow((double)f1));
        double d2 = d1;

        for (int i = 0; i < list.size(); ++i) {
            Entity entity = (Entity)list.get(i);

            if (entity.canBeCollidedWith() || interact) {
                float f2 = entity.getCollisionBorderSize();
                AxisAlignedBB axisalignedbb = entity.getEntityBoundingBox().expand((double)f2, (double)f2, (double)f2);
                RayTraceResult movingobjectposition = axisalignedbb.calculateIntercept(vec3, vec32);

                if (axisalignedbb.contains(vec3)) {
                    if (0.0D < d2 || d2 == 0.0D) {
                        pointedEntity = entity;
                        vec33 = movingobjectposition == null ? vec3 : movingobjectposition.hitVec;
                        d2 = 0.0D;
                    }
                } else if (movingobjectposition != null) {
                    double d3 = vec3.distanceTo(movingobjectposition.hitVec);

                    if (d3 < d2 || d2 == 0.0D) {
                        if (entity == entity_base.getRidingEntity() && !entity.canRiderInteract()) {
                            if (d2 == 0.0D) {
                                pointedEntity = entity;
                                vec33 = movingobjectposition.hitVec;
                            }
                        } else {
                            pointedEntity = entity;
                            vec33 = movingobjectposition.hitVec;
                            d2 = d3;
                        }
                    }
                }
            }
        }

        if (pointedEntity != null && (d2 < d1 || objectMouseOver == null))
            return new RayTraceResult(pointedEntity, vec33);
        return null;
    }

    public static RayTraceResult rayTrace(EntityLivingBase entity, double dist, float fasc) {
        Vec3d vec3 = new Vec3d(entity.posX,
                (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? entity.posY : entity.posY + entity.getEyeHeight()),
                entity.posZ);
        Vec3d vec31 = entity.getLook(fasc);
        Vec3d vec32 = vec3.addVector(vec31.x * dist, vec31.y * dist, vec31.z * dist);
        return entity.world.rayTraceBlocks(vec3, vec32, false, false, true);
    }
  
}
использование:
Java:
20D - дистанция в блоках
RayTraceResult mop = EntityLook.getMouseOver(playerIn, 1F, 20D, false);
if(mop != null) // проверяет на то, что обьект не равен нулю
{
    if(mop.typeOfHit == RayTraceResult.Type.ENTITY) // Проверяет на то, что это ентити
    {
        Entity target = mop.entityHit; // перемення с энтити, на который ты навёл
        
        // тут твой code.
    }
}
Это пример из моего кода. Думаю, сможешь под себя сделать.
что бы он подсвечивался
здесь не совсем не понял о чём ты.
 

Eifel

Модератор
1,571
77
551
Нужно уважать правила форума, на котором задаешь вопрос. Лень писать название - делайте другую, нормальну тему. Иначе последует наказание.
Закрыто.
 
Сверху