Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Визуальная часть CometRenderer — премиальный >= 1.21.8 fabric рендеринг

они реально на каждый ап поливают говном без обоснований и говорят что проект - жпт)))) они реально по комментам СЧИТАЮТ что проект сделан через нейронку, хотя чат жпт мега тупой, и что-то похожее на данный проект он не сможет написать. Я угарнул когда увидел 3 скрина сделанные с мобилы, которые у меня за монитор вылезают, это попросту нечитабельно, типы вместо того чтобы кинуть респект проекту, или просто пропустить данный пост, они заходят на него и пишут ГНЕВНЫЕ КОММЕНТАРИИ на каждый ап, и продолжают его поливать говном)))). Человек сделал пиздатый проект, уникальный, и самое главное мега простой к использованию, а если говнари с югейма не разобрались с мега простым рендером, то это следущая стадия аутизма.
Мы не в 2023, сейчас гпт напишет, и даже лучше сделает, главное промты правильные давать
 
они реально на каждый ап поливают говном без обоснований и говорят что проект - жпт)))) они реально по комментам СЧИТАЮТ что проект сделан через нейронку, хотя чат жпт мега тупой, и что-то похожее на данный проект он не сможет написать. Я угарнул когда увидел 3 скрина сделанные с мобилы, которые у меня за монитор вылезают, это попросту нечитабельно, типы вместо того чтобы кинуть респект проекту, или просто пропустить данный пост, они заходят на него и пишут ГНЕВНЫЕ КОММЕНТАРИИ на каждый ап, и продолжают его поливать говном)))). Человек сделал пиздатый проект, уникальный, и самое главное мега простой к использованию, а если говнари с югейма не разобрались с мега простым рендером, то это следущая стадия аутизма.
гпт не напишет, а какой нибудь клауд опус или гемини про напишет)
 
Здарова всем. Мне стало достаточно скучно в последнее время, поэтому я решил выпустить на свет мое творение, которое я делал ещё с конца лета — CometRenderer.

Что за CometRenderer?


Данный проект представляет из себя достаточно мощную по производительности и возможному функционалу рендер библиотеку, которая будет гораздо лучше, чем обычный рендер майнкрафта. Предназначена же она на данный момент для майнкрафта 1.21.8-1.21.11 fabric, а так же может использоваться за пределами майна.

Возможности CometRender'a и чем же он лучше обычного майнкрафт рендера

  • Оптимизация работы с униформами:
    В майнкрафте униформы загружаются в GPU при каждой отрисовке. В CometRenderer униформы загружаются на GPU только после того, как их значение было изменено.
  • Оптимизация отрисовки:
    Отрисовка происходит без каких-либо мусорных действий. Так же библиотека поддерживает отрисовку не только своего меша, но еще и BuiltBuffer майнкрафта.
  • Более удобная загрузка данных:
    В майнкрафте загрузка кода шейдеров происходит через Identifier, что не очень удобно, когда ты хочешь загрузить шейдер с необычного места расположения.
    В CometRenderer есть реализация CometLoader, при помощи которой можно создать кастомный загрузчик данных, тем самым загружая код шейдера тем способом, которым вы захотите. По умолчанию есть следующие загрузчики, распологающиеся в классе CometLoaders:
    IN_JAR, INPUT_STREAM, URI.
  • Создание кастомных форматов вершин (VertexFormat):
    Хотя в майнкрафте есть тоже что-то похожее, однако в CometRenderer это сделано на более высоком уровне.

    В майнкрафте форматы вершин создаются при помощи элементов вершин, которые создаются и хранятся отдельно от форматов, тем более их можно создать не больше 32. В данной библиотеке элементы вершин создаются внутри формата, тем самым можно делать самые разнообразные форматы вершин. (с этой реализацией можно создать шейдер и формат вершин, что бы за 1 draw метод отрисовывать множество ректов с разным размером, цветом, закруглением, с включенным оутлайном или нет и его размером).

    Например, вот код для создание формата вершины, который я использую в своем клиенте для отрисовки закругленных ректов:
    ROUNDED_RECT VertexFormat:
    Expand Collapse Copy
    public static final VertexFormat ROUNDED_RECT = VertexFormat.builder()
                                               .element("Color", VertexElementType.FLOAT, 4) //Цвет вершины ректа
                                               .element("Rect Position", VertexElementType.FLOAT, 2) //Позиция ректа
                                               .element("Size", VertexElementType.FLOAT, 2) //Размер ректа
                                               .element("Radius", VertexElementType.FLOAT, 1) //Радиус закругления вершины ректа
                                               .build();
    И пример кода вершинного шейдера для данного формата:
    example.vsh:
    Expand Collapse Copy
    #version 330 core
     
     in vec4 position;
     in vec4 _vertexColor;
     in vec2 _rectPosition;
     in vec2 _size;
     in float _radius;
     
     #include<matrixUniforms> //В CometRenderer также есть система шейдерных библиотек, которые могут внедряться в шейдерны на этапе компиляции. Пример их использования можно будет посмотреть в примере использования библиотеки, о котором будет оговорено позже.
     
     out vec4 vertexColor;
     out vec2 rectPosition;
     out vec2 size;
     out float radius;
     
     void main() {
                                       gl_Position = projMat * modelViewMat * position;
                                       vertexColor = _vertexColor;
                                       rectPosition = _rectPosition;
                                       size = _size;
                                       radius = _radius;
     }

    По умолчанию есть следующие форматы вершин, распологающиеся в классе CometVertexFormats:
    POSITION, POSITION_COLOR, POSITION_TEXTURE, POSITION_COLOR_TEXTURE, POSITION_TEXTURE_COLOR.
  • Создание кастомных режимов отрисовки вершин (DrawMode):
    По умолчанию в библиотеке есть примитивные дравмоды: LINES, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN, QUADS.
    Хотя для некоторых данных дравмодов будет достаточно, однако можно спокойно создавать свои дравмоды.
    Например, создадим дравмод для 3д куба, который принимает 8 вершин, которые будут в последующем разложены на треугольники и обработаны при отрисовке:
    Cube DrawMode:
    Expand Collapse Copy
    public static final DrawMode CUBE = new DrawMode(
                                               GL11.GL_TRIANGLES, //Режим отрисовки в OpenGL
                                               true, //Будет ли дравмод использовать буффер индексов или нет. В нашем случае это true.
                                               //8 — количество вершин для одного куба до триангуляции. 36 — количество вершин для одного куба после триангуляции.
                                               new IndexBufferGenerator(8, 36, (indexConsumer, firstVertexIndex) -> {
                                                   //1-я сторона куба
                                                   indexConsumer.accept(firstVertexIndex);
                                                   indexConsumer.accept(firstVertexIndex + 1);
                                                   indexConsumer.accept(firstVertexIndex + 2);
                                                   indexConsumer.accept(firstVertexIndex + 2);
                                                   indexConsumer.accept(firstVertexIndex + 3);
                                                   indexConsumer.accept(firstVertexIndex);
     
                                                   //2
                                                   indexConsumer.accept(firstVertexIndex + 4);
                                                   indexConsumer.accept(firstVertexIndex + 5);
                                                   indexConsumer.accept(firstVertexIndex + 6);
                                                   indexConsumer.accept(firstVertexIndex + 6);
                                                   indexConsumer.accept(firstVertexIndex + 7);
                                                   indexConsumer.accept(firstVertexIndex + 4);
     
                                                   //3-я сторона куба
                                                   indexConsumer.accept(firstVertexIndex);
                                                   indexConsumer.accept(firstVertexIndex + 3);
                                                   indexConsumer.accept(firstVertexIndex + 4);
                                                   indexConsumer.accept(firstVertexIndex + 4);
                                                   indexConsumer.accept(firstVertexIndex + 7);
                                                   indexConsumer.accept(firstVertexIndex);
     
                                                   //4-я сторона куба
                                                   indexConsumer.accept(firstVertexIndex + 2);
                                                   indexConsumer.accept(firstVertexIndex + 1);
                                                   indexConsumer.accept(firstVertexIndex + 6);
                                                   indexConsumer.accept(firstVertexIndex + 6);
                                                   indexConsumer.accept(firstVertexIndex + 5);
                                                   indexConsumer.accept(firstVertexIndex + 2);
     
                                                   //5-я сторона куба
                                                   indexConsumer.accept(firstVertexIndex + 3);
                                                   indexConsumer.accept(firstVertexIndex + 2);
                                                   indexConsumer.accept(firstVertexIndex + 5);
                                                   indexConsumer.accept(firstVertexIndex + 5);
                                                   indexConsumer.accept(firstVertexIndex + 4);
                                                   indexConsumer.accept(firstVertexIndex + 3);
     
                                                   //6-я сторона куба
                                                   indexConsumer.accept(firstVertexIndex + 1);
                                                   indexConsumer.accept(firstVertexIndex);
                                                   indexConsumer.accept(firstVertexIndex + 7);
                                                   indexConsumer.accept(firstVertexIndex + 7);
                                                   indexConsumer.accept(firstVertexIndex + 6);
                                                   indexConsumer.accept(firstVertexIndex + 1);
                                               }),
                                               //Функция, возвращающая данное количество вершин в меше после триангуляции.
                                               vertices -> vertices / 8 * 36
                                       );
    drawBox method:
    Expand Collapse Copy
    public static void drawBox(MeshBuilder meshBuilder, Matrix4f matrix4f) {
                                           meshBuilder.vertex(matrix4f, 1, 0, 0);
                                           meshBuilder.vertex(matrix4f, 1, 0, 1);
                                           meshBuilder.vertex(matrix4f, 0, 0, 1);
                                           meshBuilder.vertex(matrix4f, 0, 0, 0);
     
                                           meshBuilder.vertex(matrix4f, 0, 1, 0);
                                           meshBuilder.vertex(matrix4f, 0, 1, 1);
                                           meshBuilder.vertex(matrix4f, 1, 1, 1);
                                           meshBuilder.vertex(matrix4f, 1, 1, 0);
                                       }

Как добавить в проект?


CometRenderer в данный момент находится в репозитории на гитхабе (
Пожалуйста, авторизуйтесь для просмотра ссылки.
).
Вот пример добавления CometRenderer'a в ваш проект:
Gradle:
Expand Collapse Copy
repositories {
    maven {
        name = "ferra13671-maven"
        url = "https://ferra13671.github.io/maven/"
    }
}

dependencies {
    implementation "com.ferra13671:comet-renderer:2.1"
    implementation "com.ferra13671:gl-texture-utils:1.7.1"
    implementation "com.ferra13671:comet-renderer-minecraft:version"//выбери нужную тебе версию в https://github.com/Ferra13671/maven/tree/main/com/ferra13671/comet-renderer-minecraft
    
   //Плагины (необязательно)
   implementation "com.ferra13671:comet-renderer-better-exceptions:2.1"
   implementation "com.ferra13671:comet-renderer-post-effects:2.1"
   implementation "com.ferra13671:comet-renderer-shader-libraries:2.1"
}

Пример использования библиотеки можно найти в репо по пути minecraft-(version)/src/example


Насчет будущего проекта


CometRenderer является на данный момент моим активным проектом. Идей пока что у меня достаточно, поэтому обновлений будет достаточно много. Из документации пока только JavaDoc у классов и методов, однако в будущем я планирую сделать сайт с подробной документацией по пользованию библиотекой.
Если у вас есть какие-либо идеи либо вы нашли баг, вы всегда можете написать об этом в репозитории CometRenderer'a, либо в моём дискорд сервере (
Пожалуйста, авторизуйтесь для просмотра ссылки.
).



Желаю всем удачи! :CoolCat:

Update 08.12.2025
Добавил документацию по CometRenderer на мой сайт:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Update 18(17).12.2025
Обновил CometRenderer до версии 1.9.

Изменения:
  • UniformType.MATRIX был переименован в UniformType.MATRIX4.
  • Добавлена система теговых реестров.
  • Добавлена система расширений компилятора (плагинов).
  • Добавлена конфиг система.
  • пост-эффекты были перенесены в отдельный плагин ('post-effects').
  • Добавлен глобальный реестр, хранящий как постоянную, так и изменяемую информацию.
  • Вывод исключений с подробным описанием, списком возможных проблем и решений перенесен в плагин 'better-exceptions'.
  • Шейдерные библиотеки были перенесены в отдельный плагин ('shader-libraries').
  • Небольшой рефакторинг.
Update 20.12.2025
Обновил CometRenderer до версии 2.0

Изменения:
  • Обновлена зависимость GLTextureUtils до версии 1.7.1
  • Полное отделение рендера от майнкрафта
  • Добавлен 'minecraft' плагин (1.21.8-fabric-yarn-2.0 и 1.21.11-fabric-yarn-2.0)
Update 24.12.2025
Добавлен 'minecraft' плагин для версии майна 26.1-snapshot-1
Также ранее плагин был добавлен для версий 1.21.8 и 1.21.11 с mojang маппингами.

Update 30.12.2025
Обновил CometRenderer до версии 2.1

Изменения:
  • Добавлена sampler object система
  • Убраны SamplerUniformUploader и BufferUniformUploader классы
  • Обновлены примеры использования 'minecraft' плагина
  • Использование lombok'а в проекте
  • Добавлен параметр оффсета для субэлементов в VertexElementType
Update 10.01.2026
Обновил CometRenderer до версии 2.2

Основные Изменения:
  • Добавлен загрузчик CometLoaders.STRING
  • Добавлена возможность устанавливать null текстуры в фреймбуффер
  • Добавлен 'minecraft' плагин для версии 26.1-snapshot-2
  • Обновлена зависимость GLTextureUtils до версии 1.7.4-HOTFIX-1
  • Некоторые изменения кода
Изменения 'minecraft' плагина:
  • Изменена структура плагина
  • Внедрена настройка UI матрицы проекции (для которой устанавливается скейл, возвращаемый функцией, которую вы передаёте в инициализации) (до этого было в примере работы с плагином)
  • Добавлен стандартный пакет програм (аля шейдеров в простонародье) (до этого было в примере работы с плагином)
  • Добавлены базовые отрисовщики (BasicRect, ColoredRect, RoundedRect, BasicTexture, ColoredTexture, RoundedTexture)
  • Теперь плагин требует 'shader-libraries' плагин для работы (думаю, достойная цена за готовый набор базовых программ и отрисовщиков)
Напоминаю, что у меня есть сайт с документацией (
Пожалуйста, авторизуйтесь для просмотра ссылки.
) в которой я достаточно подробно расписал всё нужное о рендере и его плагинах, а если этого недостаточно, то для каждой версии 'minecraft' плагина есть свой пример работы с ним.
 
Последнее редактирование:
Update 10.01.2026
Обновил CometRenderer до версии 2.2

Основные Изменения:
  • Добавлен загрузчик CometLoaders.STRING
  • Добавлена возможность устанавливать null текстуры в фреймбуффер
  • Добавлен 'minecraft' плагин для версии 26.1-snapshot-2
  • Обновлена зависимость GLTextureUtils до версии 1.7.4-HOTFIX-1
  • Некоторые изменения кода
Изменения 'minecraft' плагина:
  • Изменена структура плагина
  • Внедрена настройка UI матрицы проекции (для которой устанавливается скейл, возвращаемый функцией, которую вы передаёте в инициализации) (до этого было в примере работы с плагином)
  • Добавлен стандартный пакет програм (аля шейдеров в простонародье) (до этого было в примере работы с плагином)
  • Добавлены базовые отрисовщики (BasicRect, ColoredRect, RoundedRect, BasicTexture, ColoredTexture, RoundedTexture)
  • Теперь плагин требует 'shader-libraries' плагин для работы (думаю, достойная цена за готовый набор базовых программ и отрисовщиков)
Напоминаю, что у меня есть сайт с документацией (
Пожалуйста, авторизуйтесь для просмотра ссылки.
) в которой я достаточно подробно расписал всё нужное о рендере и его плагинах, а если этого недостаточно, то для каждой версии 'minecraft' плагина есть свой пример работы с ним.
Хватит брат, остановись
 
Архитектура - кал, рендер - кал, автор - ну вы поняли xDD.
Ой, сурсы не в одной папке лежат. А как читать? Блин, я не умею) :roflanBuldiga:

Поясни ка за архитектуру проекта, интересно, что ты мне настрочишь тут: про большое количество модулей, разделение gradle скрипта по отдельным файлам, о, или же про разделение main сурсета на несколько папок в главном модуле? Или же у тебя есть свой вариант пустого вброса?

Ещё более интересно то, что ты пишешь что рендер — калл, хотя по тебе понятно, что ты скорее всего даже ни разу пример работы не запускал, либо ума не хватило найти нужный таск в IDE?

Все вы, кто пишете даные вбросы, даже в проекте нормально разобраться не можете. Это один из самых лучших в плане функционала и скорее всего единственный кастом рендер на самую новую версию майна.

Те из вас, кто пишет, что такой же рендер может ИИ написать, так почему сейчас нету ни одного достойного рендера, написанного ИИ, который будет на самые последнии версии майна и будет иметь хотя бы такой же функционал, как мой?
 
Ой, сурсы не в одной папке лежат. А как читать? Блин, я не умею) :roflanBuldiga:

Поясни ка за архитектуру проекта, интересно, что ты мне настрочишь тут: про большое количество модулей, разделение gradle скрипта по отдельным файлам, о, или же про разделение main сурсета на несколько папок в главном модуле? Или же у тебя есть свой вариант пустого вброса?

Ещё более интересно то, что ты пишешь что рендер — калл, хотя по тебе понятно, что ты скорее всего даже ни разу пример работы не запускал, либо ума не хватило найти нужный таск в IDE?

Все вы, кто пишете даные вбросы, даже в проекте нормально разобраться не можете. Это один из самых лучших в плане функционала и скорее всего единственный кастом рендер на самую новую версию майна.

Те из вас, кто пишет, что такой же рендер может ИИ написать, так почему сейчас нету ни одного достойного рендера, написанного ИИ, который будет на самые последнии версии майна и будет иметь хотя бы такой же функционал, как мой?
Тебе нейросеть внушает что надо продолжить писать рендер?
 
Ебать ну если я решил сделать JavaDoc на русском т.к. раньше этот проект был ПРИВАТНЫМ и использовался двумя людьми + делаю незначительные изменения в структуре проекта это значит, что это gpt проект? :roflanBuldiga:
он доёбывается изза комментов которые по такому же стилю пишет нейронка :roflanBuldiga: :roflanBuldiga:
 
да жирный, тут нет никакого гпт, успокойся уже, бездаренок)
ты в жизни ничего не добился, самый пиздатый рендер из ликнутых
самый худший к слову, там даже закругления нет
 
Ой, сурсы не в одной папке лежат. А как читать? Блин, я не умею) :roflanBuldiga:

Поясни ка за архитектуру проекта, интересно, что ты мне настрочишь тут: про большое количество модулей, разделение gradle скрипта по отдельным файлам, о, или же про разделение main сурсета на несколько папок в главном модуле? Или же у тебя есть свой вариант пустого вброса?

Ещё более интересно то, что ты пишешь что рендер — калл, хотя по тебе понятно, что ты скорее всего даже ни разу пример работы не запускал, либо ума не хватило найти нужный таск в IDE?

Все вы, кто пишете даные вбросы, даже в проекте нормально разобраться не можете. Это один из самых лучших в плане функционала и скорее всего единственный кастом рендер на самую новую версию майна.

Те из вас, кто пишет, что такой же рендер может ИИ написать, так почему сейчас нету ни одного достойного рендера, написанного ИИ, который будет на самые последнии версии майна и будет иметь хотя бы такой же функционал, как мой?
Хорошо, давай посмотрим на твою божественную архитектуру xDDDDDDDDDDD.
1768056631398.png

Это я вот просто методом тыка зашёл. И что же мы тут видим...
1768056771053.png

Ого да это же иммутбл тэг энтри, который наследует метод setValue. ХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХ. Надо же еще экезепшен туда впихнул. Ну просто Роберт Мартин ёбаный не меньше. Это каким альтернативно одарённым надо быть чтобы спроектировать архитектуру так чтобы у тебя класс с префиксом Immutable наследовал сеттер)))))))))). Это не говоря о том, что у тебя тут в принципе принцип инверсии зависимостей нарушен.
1768057020350.png

А щас ваще нахуй готовьтесь - мастерпис архитектурного гения. У чувака класс с постфиксом Entry принимает блять буквально в конструктор обьект класса энти которым он и является. ХАХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХХАХАХАХАХА НУ ВСЁ БЛЯТЬ ЭТО ТОЧНО НАХУЙ КЛИНИКА. Т.е у чувака буквально DTO принимает в конструктор объект репозиторием для которого и является. Блять чувак, так даже нейросеть сраная обосраться не может, ты это блять чем писал deep ai нейросеть без регистрации??? И такое дерьмище буквально в каждом пакете. То ты блять венгерскую нотацию используешь для именования интерфейсов, то не используешь, то ты блять DTO через ломбок делаешь, то рекордами. Отсутствие какого-то ни было кодстайла просто выдает в этом llm'ную парашу. Это уже не говоря о том, что тут вообще отсутствуют такие обязательные оптимизации, как отложенный рендер(Так называемый батчинг). У тебя буквально 1 мэш = 1 дравкол. Хотя можно сделать как минимум, как у блейзовского рендера - под дравколу на шейдер, расчитывать вершины на проце, потом за один вызов для шейдера(пайплайн в yarn маппингах) отрисовывать. Кароче калище полное. Sasi
будет иметь хотя бы такой же функционал, как мой
ЧУВААК, это ваще бред полный вы дебилы зачем-то ринулись все свои говнорендеры писать. Хотя у вас в майн встроен вполне адекватный рендер. Что для 2д, что для 3д. У него есть полностью весь функционал, который впринципе может понадобится для разработки софта и прочей примитивной дрисни.
1768058417647.png

Это вообще пиздешь наглый, в майнкрафте есть 2 типа передачи параметров в шейдер. Это можно сделать либо создав ubo и точно так же грузить его в шейдер при каком то изменении, либо ты можешь создать кастомный вершинный формат и передавать параметры просто как вершинные атрибуты через обысный BufferBuilder.
Поскорее бы вам Пыпа инет оффнул ей-богу.
 
Последнее редактирование:
самый худший к слову, там даже закругления нет
Update 10.01.2026
Обновил CometRenderer до версии 2.2

Основные Изменения:
  • Добавлен загрузчик CometLoaders.STRING
  • Добавлена возможность устанавливать null текстуры в фреймбуффер
  • Добавлен 'minecraft' плагин для версии 26.1-snapshot-2
  • Обновлена зависимость GLTextureUtils до версии 1.7.4-HOTFIX-1
  • Некоторые изменения кода
Изменения 'minecraft' плагина:
  • Изменена структура плагина
  • Внедрена настройка UI матрицы проекции (для которой устанавливается скейл, возвращаемый функцией, которую вы передаёте в инициализации) (до этого было в примере работы с плагином)
  • Добавлен стандартный пакет програм (аля шейдеров в простонародье) (до этого было в примере работы с плагином)
  • Добавлены базовые отрисовщики (BasicRect, ColoredRect, RoundedRect, BasicTexture, ColoredTexture, RoundedTexture)
  • Теперь плагин требует 'shader-libraries' плагин для работы (думаю, достойная цена за готовый набор базовых программ и отрисовщиков)
Напоминаю, что у меня есть сайт с документацией (
Пожалуйста, авторизуйтесь для просмотра ссылки.
) в которой я достаточно подробно расписал всё нужное о рендере и его плагинах, а если этого недостаточно, то для каждой версии 'minecraft' плагина есть свой пример работы с ним.
Для таких тупых людей, которые сами шейдеры писать не умеют, добавил в новой версии и готовые шейдеры, и отрисовщики к ним
 
Для таких тупых людей, которые сами шейдеры писать не умеют, добавил в новой версии и готовые шейдеры, и отрисовщики к ним
Это оскорбительно. Если человек не умеет что-то делать не делает его тупым автоматически.
Это-же касается того, как ты библиотеки в проект подключаешь:
1768059544799.png
 
Это оскорбительно. Если человек не умеет что-то делать не делает его тупым автоматически.
Это-же касается того, как ты библиотеки в проект подключаешь:
Посмотреть вложение 324454
Но всё же факт того что ты не можешь создать атомную бомбу из куска пластика и спички обьективно делает тебя тупым, тут без вариантов брат :C
Хорошо, давай посмотрим на твою божественную архитектуру xDDDDDDDDDDD.
Посмотреть вложение 324448
Это я вот просто методом тыка зашёл. И что же мы тут видим...
Посмотреть вложение 324449
Ого да это же иммутбл тэг энтри, который наследует метод setValue. ХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХ. Надо же еще экезепшен туда впихнул. Ну просто Роберт Мартин ёбаный не меньше. Это каким альтернативно одарённым надо быть чтобы спроектировать архитектуру так чтобы у тебя класс с префиксом Immutable наследовал сеттер)))))))))). Это не говоря о том, что у тебя тут в принципе принцип инверсии зависимостей нарушен.
Посмотреть вложение 324450
А щас ваще нахуй готовьтесь - мастерпис архитектурного гения. У чувака класс с постфиксом Entry принимает блять буквально в конструктор обьект класса энти которым он и является. ХАХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХХАХАХАХАХА НУ ВСЁ БЛЯТЬ ЭТО ТОЧНО НАХУЙ КЛИНИКА. Т.е у чувака буквально DTO принимает в конструктор объект репозиторием для которого и является. Блять чувак, так даже нейросеть сраная обосраться не может, ты это блять чем писал deep ai нейросеть без регистрации??? И такое дерьмище буквально в каждом пакете. То ты блять венгерскую нотацию используешь для именования интерфейсов, то не используешь, то ты блять DTO через ломбок делаешь, то рекордами. Отсутствие какого-то ни было кодстайла просто выдает в этом llm'ную парашу. Это уже не говоря о том, что тут вообще отсутствуют такие обязательные оптимизации, как отложенный рендер(Так называемый батчинг). У тебя буквально 1 мэш = 1 дравкол. Хотя можно сделать как минимум, как у блейзовского рендера - под дравколу на шейдер, расчитывать вершины на проце, потом за один вызов для шейдера(пайплайн в yarn маппингах) отрисовывать. Кароче калище полное. Sasi

ЧУВААК, это ваще бред полный вы дебилы зачем-то ринулись все свои говнорендеры писать. Хотя у вас в майн встроен вполне адекватный рендер. Что для 2д, что для 3д. У него есть полностью весь функционал, который впринципе может понадобится для разработки софта и прочей примитивной дрисни.
Посмотреть вложение 324452
Это вообще пиздешь наглый, в майнкрафте есть 2 типа передачи параметров в шейдер. Это можно сделать либо создав ubo и точно так же грузить его в шейдер при каком то изменении, либо ты можешь создать кастомный вершинный формат и передавать параметры просто как вершинные атрибуты через обысный BufferBuilder.
Поскорее бы вам Пыпа инет оффнул ей-богу.
Фактанул, жаль он не знает и половины слов что ты использовал, надо было попроще текст написать, для особо умных :)
 
Хорошо, давай посмотрим на твою божественную архитектуру xDDDDDDDDDDD.
Посмотреть вложение 324448
Это я вот просто методом тыка зашёл. И что же мы тут видим...
Посмотреть вложение 324449
Ого да это же иммутбл тэг энтри, который наследует метод setValue. ХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХ. Надо же еще экезепшен туда впихнул. Ну просто Роберт Мартин ёбаный не меньше. Это каким альтернативно одарённым надо быть чтобы спроектировать архитектуру так чтобы у тебя класс с префиксом Immutable наследовал сеттер)))))))))). Это не говоря о том, что у тебя тут в принципе принцип инверсии зависимостей нарушен.
1768060316041.png

ШОК, У НАС ДЖАВА ДЕВЫ ГОВНОКОДЕРЫ И В НЕИЗМЕНЯЕМОМ ЛИСТЕ РАСШИРЯЮТ СЕТТЕР И КИДАЮТ ИСКЛЮЧЕНИЕ ПРИ ПОПЫТКЕ ИЗМЕНИТЬ ЛИСТ!!!!!!!!!!!!
1768057020350.png

А щас ваще нахуй готовьтесь - мастерпис архитектурного гения. У чувака класс с постфиксом Entry принимает блять буквально в конструктор обьект класса энти которым он и является. ХАХАХАХАХАХАХХАХАХАХАХАХАХАХАХАХАХХАХАХАХАХА НУ ВСЁ БЛЯТЬ ЭТО ТОЧНО НАХУЙ КЛИНИКА. Т.е у чувака буквально DTO принимает в конструктор объект репозиторием для которого и является. Блять чувак, так даже нейросеть сраная обосраться не может, ты это блять чем писал deep ai нейросеть без регистрации???

1768061048016.png

Иди джаву тоже говном полей, ты же такой 'умный'. Хотя мой косяк тут тоже есть, т.к. я использую эти энтри немного по другому, чем в мапе джавы, надо будет заняться этим.
то ты блять DTO через ломбок делаешь, то рекордами
Потому что в одних случаях класс должен быть расширяемым (для этого юзается ломбок), а других — нет (для этого юзается рекорд).
У тебя буквально 1 мэш = 1 дравкол.
Тебе кто интересно такое сказал, что в моём рендере 1 меш можно юзать строго для 1 дравкола?
Это уже не говоря о том, что тут вообще отсутствуют такие обязательные оптимизации, как отложенный рендер(Так называемый батчинг). У тебя буквально 1 мэш = 1 дравкол. Хотя можно сделать как минимум, как у блейзовского рендера - под дравколу на шейдер, расчитывать вершины на проце, потом за один вызов для шейдера(пайплайн в yarn маппингах) отрисовывать.
Если тебе нужен батчинг, то ты его можешь смело написать сам, всё инструменты для этого есть. CometRenderer в себе содержит все базовые инструменты для удобного написания отрисовки. В базовой сборке рендера я не делаю готовые шейдеры, батчинг и тому подобное чисто из-за соображения того, что рендер может и уже используется за пределами майнкрафта, из-за чего эти плюшки , которые будут использоваться в майнкрафте, не будут использоваться для проектов вне майнкрафта.

Да и в новой версии 'minecraft' плагина были добавлены базовые шейдеры и отрисовкищи, в которых уже реализована возможность батчинга, плюсом к этому эти сборщики после сборки и до их закрытия можно использовать сколько угодно раз, не пересоздавая меш внутри их.
ЧУВААК, это ваще бред полный вы дебилы зачем-то ринулись все свои говнорендеры писать. Хотя у вас в майн встроен вполне адекватный рендер. Что для 2д, что для 3д. У него есть полностью весь функционал, который впринципе может понадобится для разработки софта и прочей примитивной дрисни.
Ну удачи написать что-то годное на майнкрафт рендере кроме 'примитивной дрисни'. Если ты захочешь написать что-то реально интересное на майнкрафт рендере, то тебе рано или поздно прийдется столкнуться с ограничениями, и тебе прийдется писать костыли.
Это вообще пиздешь наглый, в майнкрафте есть 2 типа передачи параметров в шейдер. Это можно сделать либо создав ubo и точно так же грузить его в шейдер при каком то изменении
Ну кстати да, в новых версиях моджанги немного образумелись и попытались немного оптимизировать рендер, загружая на GPU каждый дравкол униформы не по отдельности, а буффером, но тебе будет удобно пересоздавать буффер с униформами чисто для того, что бы изменить только одно значение в униформе?
либо ты можешь создать кастомный вершинный формат и передавать параметры просто как вершинные атрибуты через обысный BufferBuilder.
В майнкрафте есть ограничение на количество уникальных элементов вершинных форматов, которые ты можешь создать, если у тебя проект будет создавать свои вершинные форматы с уникальными элементами, тебя майнкрафт рано или поздно пошлёт нахуй.
1768064257018.png
 
Иди джаву тоже говном полей
То что в каком то легаси куске джавы наговнокоженно, никак не невелирует твое говнише.
что рендер может и уже используется за пределами майнкрафта
Ну во-первых кому твоя llm'ная дрисня нужна за пределами кубикоговна, а второе, как собственно то что в мире может найтись дегенерат который твоё говно юзать будет вне кубиков оправдывает отсуствие этой техники, которая давно уже стала базовым минимумом для любого рендера UI. Про 3д я вообще молчу, твоему рендеру в адекватный 3д, как радиопетуху до балерины.
но тебе будет удобно пересоздавать буффер с униформами чисто для того, что бы изменить только одно значение в униформе?
Да, чувак будет, это буквально делается в 1 строчку кода.
В майнкрафте есть ограничение на количество уникальных элементов вершинных форматов, которые ты можешь создать, если у тебя проект будет создавать свои вершинные форматы с уникальными элементами, тебя майнкрафт рано или поздно пошлёт нахуй.
Я тебе щас секрет открою, но их блять можно переиспользовать)
 
Это оскорбительно. Если человек не умеет что-то делать не делает его тупым автоматически.
самый худший к слову, там даже закругления нет
Человек не может даже моё последнее сообщение с апдейтом посмотреть, которое у него под носом было.
Это-же касается того, как ты библиотеки в проект подключаешь:
1768066201975.png

Это самый примитивный способ, которым я мог бы подключить библиотеку для аннотаций моего обфускатора. Мне смысла держать эту джарку в maven репозитории нету.
 
И это мы еще работу с матрицами не затронули и то что блейзовский рендер кучу бойлерного дерьма из под капоту в шейдер передает, ту же матрицу трансформации, цвета и прочее дристало.
 
отсуствие этой техники, которая давно уже стала базовым минимумом для любого рендера UI
Да и в новой версии 'minecraft' плагина были добавлены базовые шейдеры и отрисовкищи, в которых уже реализована возможность батчинга, плюсом к этому эти сборщики после сборки и до их закрытия можно использовать сколько угодно раз, не пересоздавая меш внутри их.
Ты даже сообщение до конца дочитать не можешь лол.
Про 3д я вообще молчу, твоему рендеру в адекватный 3д, как радиопетуху до балерины.
Открою секрет, рендер 2д и рендер 3д никак не отличается. Если для тебя 2д и 3д это земля и небо, то ты попуск.
Да, чувак будет, это буквально делается в 1 строчку кода.
Одна строчка кода не будет оправдывать затраты на пересоздание целого буффера. Я с тем же успехом одной строчкой кода обновлю униформу, а не целый буффер, плюсом мне никто не запрещает использовать как и буфферы, так и обычные униформы, а не сидеть и жевать один хлеб без сахара, как это будешь делать ты.
Я тебе щас секрет открою, но их блять можно переиспользовать)
ДАНУ НАХУЙ, А Я НЕ ЗНАЮ))))))
Я про то, что если твой клиент будет создавать именно СВОИ элементы формата, и найдутся другие такие-же приколисты, которые будут создавать СВОИ элементы, то рано или поздно майнкрафт может воткнуть нож в спину. Хотя на это шанс и маленький, но я бы не держал такой прикол у себя за спиной)
 
Назад
Сверху Снизу