Скачать Minecraft

Gravitation Suite: как исправить кривое положение инструментов в Minecraft

Модификация Gravitation Suite (GraviSuite) – это классика IndustrialCraft 2, культовое дополнение, подарившее нам легендарный Гравитационный ранец, ультимативный электробур и алмазную дрель, способную перемалывать камень быстрее всяких квантовых ускорителей. Но у каждого, кто берет в руки инструменты из этого мода, рано или поздно возникает эстетический зуд – предметы сидят в руке криво. Бур торчит не из ладони, а откуда-то из костяшек, ключ выглядит так, будто Стив держит его не за рукоять, а за рабочую часть. Погружение ломается.

Сегодня разберем, как исправить рендер положения предметов из GraviSuite, чтобы инструменты лежали в руке естественно, как ванильные меч или кирка.

Почему так происходит

Проблема кроется в коде рендеринга. В стандартном Minecraft и Forge положение предмета от первого и третьего лица задается через JSON-модели или через прямой вызов GL11.glTranslatef и GL11.glRotatef в классе рендерера.

Разработчики GraviSuite (изначально SeNtiMeL, позже поддерживаемая сообществом версия) использовали кастомные рендеры IItemRenderer, основанные на магии Techgun’а (библиотека IC2). Координаты трансформации прописаны хардкодом и не всегда совпадают с «якорной точкой» модели.

Если у вас установлены моды Better Combat, First-person Model или банальный OptiFine с динамическим освещением, конфликт трансформаций усугубляется. GraviSuite пытается повернуть предмет относительно мировых координат, а мод на анимации – относительно костей игрока. В результате дрель может уехать вправо и вверх, а при беге с включенным гаджетом начать дико трястись.

Gravitation Suite: как исправить кривое положение инструментов в Minecraft

Решение №1: Исправление через ресурс-пак и JSON-модели (актуально для GraviSuite Reloaded)

Если вы играете на относительно свежей версии сборки (1.12.2 и новее, где используется GraviSuite Reloaded), многие предметы переехали на систему обычных моделей. Это значит, что мы можем отредактировать «дисплейные» параметры через ресурс-пак.

Заходим в архив мода (gravisuite-*.jar) или ищем в файлах игры уже распакованные ассеты. Нас интересует директория assets/gravisuite/models/item/. Находим нужный инструмент, например, advanced_diamond_drill.json.

Внутри нас интересует блок «display». Сейчас он может выглядеть так (ключ для примера):

"display": {
    "firstperson_righthand": {
        "rotation": [ 0, -90, 55 ],
        "translation": [ 0, 4.0, 0.5 ],
        "scale": [ 0.8, 0.8, 0.8 ]
    }
}

Цифры в translation (смещение по X, Y, Z) и rotation отвечают за положение. Если инструмент смотрит вверх, меняем первый параметр rotation (поворот вокруг X). Если утоплен в руку – увеличиваем Z-координату translation (обычно это «вперед-назад» от ладони).

Оптимальные настройки для дрели, чтобы она лежала как кирка:

  • третье лицо – опустить translation по Y до 2.5, rotation по X довести до 0, чтобы не задиралась вверх;
  • первое лицо: Translation: [1.2, 2.8, -1.0], Rotation: [0, -45, 15].

Упаковываем исправленные JSON обратно в ресурс-пак, наложив поверх мода – и порядок.

Решение №2: Грубое вмешательство в классы (CoreMod/Mixin)

Этот способ для тех, кто не боится лезть в код. У GraviSuite есть класс-рендерер, часто называемый ItemToolGravitoolRenderer или подобный (в IC2_API это IItemRenderer с методом handleRenderType). Внутри метода renderItem ищем вызовы OpenGL.

Логика проста: перед рендером модели мы делаем GL11.glTranslatef(x, y, z). Координаты там прописаны для «стандартной руки». Чтобы сдвинуть предмет влево (к большому пальцу), меняем X. Чтобы опустить ниже в ладонь, меняем Y. Чтобы «утопить» в руку или выдвинуть вперед – Z.

Пример коррекции (псевдокод, реальные названия полей зависят от версии):

// Было
GL11.glTranslatef(0.4F, 0.8F, -0.3F);

// Стало (предмет плотнее в руке и чуть ниже)
GL11.glTranslatef(0.5F, 0.65F, -0.5F);

Если вы умеете писать Mixin’ы, достаточно затаргетить метод renderItem и подменить значения сдвигов перед оригинальным вызовом. Это безопаснее прямого редактирования мода и не слетает при обновлении, если сигнатура метода не меняется.

Gravitation Suite: как исправить кривое положение инструментов в Minecraft

Борьба с тряской при использовании

Особая боль – включенный бур или алмазная дрель начинают дергаться при ходьбе в первом лице. Это происходит из-за того, что GraviSuite переопределяет анимацию качания (bobbing), а игра поверх накладывает свою.

Лечится в клиентском конфиге GraviSuite. Ищем строчку enableCustomBobbing=true и переключаем на false. После этого инструменты из мода будут использовать стандартную механику покачивания, как обычные предметы, и дребезг прекратится.

Также проверьте, нет ли в ic2.ini или gravisuite.cfg параметра B:OverrideItemAnimations. Если есть – смело отключайте.

Готовый патч для ленивых

Если не хочется возиться самому, поищите на CurseForge микро-аддон «Gravitation Suite Item Position Fix» (название может варьироваться). Такие фиксы, как правило, весят пару килобайт и представляют собой один Mixin, исправляющий трансформацию рендера под стандартный FastTESR.

А для версий на Fabric есть неофициальные порты GraviSuite, где эта проблема изначально исправлена – там использованы нормальные Transforms, совпадающие с ванильными инструментами.

Gravitation Suite: как исправить кривое положение инструментов в Minecraft

Быстрое исправление положения инструментов (чек-лист)

Если не хочется разбираться в коде, попробуйте по порядку:

  1. Установите RenderPlayerAPI (для старых версий 1.7.10).
  2. Проверьте конфиг GraviSuite.cfg и отключите enableCustomBobbing.
  3. Уберите конфликтующие моды (Better Combat, Mo’ Bends).
  4. Попробуйте сменить скин (особенно Slim-модель рук).
  5. Отредактируйте JSON-модель (если версия поддерживает).

В 80% случаев этого достаточно, чтобы инструмент стал отображаться нормально.

Корректное положение инструментов – это не только эстетика, но и комфорт. Когда бур ровно продолжает линию руки, проще целиться в блок, плюс на скриншотах сборка выглядит завершенной. Настройте трансформы один раз под свое поле зрения (угол FOV тоже влияет), и GraviSuite заиграет новыми красками.