Вопрос WorldToScreen

ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
390
Реакции[?]
23
Поинты[?]
6K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Код:
public static double[] worldToScreen(double x, double y, double z) {
        if (Minecraft.getInstance().screen != null) {
            return null;
        } else {
            try {
                Vector3d camera_pos = Minecraft.getInstance().getEntityRenderDispatcher().camera.getPosition();
                Quaternion camera_rotation_conj = Minecraft.getInstance().getEntityRenderDispatcher().camera.rotation().copy();
                camera_rotation_conj.conj();
                Vector3f result3f = new Vector3f((float) (camera_pos.x - x), (float) (camera_pos.y - y), (float) (camera_pos.z - z));
                result3f.transform(camera_rotation_conj);
                GameRenderer gameRenderer = Minecraft.getInstance().gameRenderer;
                Method method = null;
                Method[] var11 = gameRenderer.getClass().getDeclaredMethods();
                int var12 = var11.length;

                for (int var13 = 0; var13 < var12; ++var13) {
                    Method m = var11[var13];
                    if (m.getParameterCount() == 3 && m.getParameterTypes()[2] == Boolean.TYPE && m.getParameterTypes()[1] == Float.TYPE && m.getParameterTypes()[0] == ActiveRenderInfo.class && m.getReturnType() == Double.TYPE) {
                        method = m;
                    }
                }

                method.setAccessible(true);

                float fov = ((Double) method.invoke(gameRenderer, Minecraft.getInstance().getEntityRenderDispatcher().camera, 1, true)).floatValue();
                lfov = fov;
                float half_height = (float) Minecraft.getInstance().getWindow().getGuiScaledHeight() / 2.0F;
                float scale_factor = half_height / (result3f.z() * (float) Math.tan(Math.toRadians((double) (fov / 2.0F))));
                if (result3f.z() < 0.0F) {
                    return new double[]{(double) (-result3f.x() * scale_factor + (float) (Minecraft.getInstance().getWindow().getGuiScaledWidth() / 2)), (double) ((float) (Minecraft.getInstance().getWindow().getGuiScaledHeight() / 2) - result3f.y() * scale_factor)};
                }
            } catch (Exception var15) {
                var15.printStackTrace();
            }

            return null;
        }
    }
Адаптировал ворлд ту скрин под можо мапинги 1.16.5, но работает хуево, именно условие if (result3f.z() < 0.0F)

изза него оч часто возвращается нул и большая часть ников не рендерится

result3f.z() должен выдавать отрицательное число когда энтити в зоне видимости(по крайней мере в обычном 1.16.5) и положительное когда не видно

у меня же часто возвращает положительное число но энтити я всеравно могу увидеьть

что делать

мб я неправильно адаптировал?
 
АМБАССАДОР ЩИТПОСТА
Пользователь
Статус
Оффлайн
Регистрация
24 Мар 2022
Сообщения
178
Реакции[?]
42
Поинты[?]
3K
ты че ебанутый зачем тебе вектор3 блять в 2д залупе в2с = 2д
 

Вложения

ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
390
Реакции[?]
23
Поинты[?]
6K
ты че ебанутый зачем тебе вектор3 блять в 2д залупе в2с = 2д
позиция камеры в пространстве если ты про camera_pos, код даже блять не мой я просто адаптировал под другие маппинги
 
Сверху Снизу