Порт Thaumcraft 4 — Microsoft Internet Explorer
« НазадАдрес:/projects/thaumcraft/

Проект в работе — ещё не окончен

Для себя · с 7 октября 2026 · в работе AI-Created

Thaumcraft 4

Порт большого магического мода на современный Minecraft — с поведением оригинала 1:1

1.7.10Forge · 2014
26.1.2NeoForge

Цель — точная копия Thaumcraft 4 для своей сборки All the Mods 11.

  • 859файлов .java в оригинале, 142 579 строк
  • 21 392строки Java в порте, 179 файлов
  • 52коммита за 16 дней
  • 67 / 226блоков и предметов оригинала
  • 819 / 111текстур и звуков — без изменений
  • 22языка переводов
  • 39автотестов GameTest, все проходят
  • 3 из ~10подсистем перенесено и слито

За двенадцать лет между версиями игры изменилось почти всё API. Поэтому это переписывание систем, а не перекомпиляция: каждая подсистема собирается заново поверх нового движка и сверяется с оригиналом.

Моя роль

Автор и руководитель проекта. Цель — точная копия для ATM11; ограничения — версии строго под сборку, только локально, без публикации. Ключевые решения: Curios вместо Baubles, перенос подсистем параллельно в отдельных ветках git со слиянием в основную. Проверка результата — в игре.

Глава IСправочник оригинала

  • jar 4.2.3.5 декомпилирован Vineflower с читаемыми именами MCP — только для сверки, в мод не входит
  • пакеты и имена классов как в оригинале: каждый класс порта сопоставляется с исходным
  • каждое отступление от оригинала записано в документ своей подсистемы

Глава IIАрхитектура

  • общие отложенные реестры для всех подсистем
  • загрузка данных по фазам, как в оригинале: предметы → рецепты → аспекты
  • свои сетевые пакеты: таблица аспектов и знания игрока
  • генераторы на Python: 1 973 файла моделей, состояний, переводов, добычи и тегов — из таблицы «старый id → новый id»
  • подсистемы — в отдельных ветках git (worktree), затем слияние в основную

Глава IIIЧто уже работает

  • 67 блоков и 226 предметов, своя вкладка творческого режима с порядком как в оригинале
  • аспекты: у предметов и мобов, расчёт по рецептам на сервере, иконки в подсказке
  • знания игрока: изученные аспекты, сканы, варп
  • броня (таумиевая, пустотная, робы, крепость, сапоги путешественника, ховер-пояс) и инструменты, включая стихийные и багровый клинок
  • аксессуары через Curios, рунический щит, 5 зачарований
  • мир: руды, кристаллы, великое и серебряное дерево, мана-стручки, курганы, постройки в деревнях и 4 биома

Глава IVКачество

  • 39 автотестов GameTest на выделенном тестовом сервере игры, все проходят на основной ветке
  • проверяют добычу всех блоков, руды и янтарь, расчёт аспектов по рецептам, броню, инструменты и зачарования, слоты Curios
  • и мир: растения, кристаллы, мана-стручки, шансы биомов, жилы руд, курганы, деревенские постройки

Глава VТрудности перевода

  1. С Minecraft 1.21.2 рецепты не приходят на клиент, а оригинал считал аспекты по рецептам прямо там.

    Расчёт перенесён на сервер, готовая таблица аспектов уходит клиенту своим пакетом при входе и при перезагрузке данных.

  2. В 1.7.10 один блок или предмет хранил до 16 вариантов в числе meta — в современной игре такого нет.

    Каждый вариант стал отдельным блоком или предметом с понятным id; по таблице соответствий генерируются модели, переводы, теги и добыча.

  3. Нет OreDictionary и ISpecialArmor из Forge 1.7.10.

    OreDictionary заменён прослойкой с теми же именами поверх общих тегов c:. Для пустотной робы и брони крепости воспроизведён расчёт брони Forge 1.7.10 — защита и износ как в оригинале.

  4. У генератора мира 1.7.10 нет прямого аналога, а современная feature может трогать только свой чанк и соседние.

    Генератор разбит на три feature с исходными шансами и высотами, биомы встроены через Mixin в многошумовой источник биомов — без TerraBlender.

  5. Версии NeoForge, Curios, JEI и Java должны совпадать со сборкой ATM11.

    Версии сверены со списком модов сборки и зафиксированы; Baubles заменён на Curios, который в сборке уже есть.

Глава VIНайденные баги

Магические растения не сажались на траву

Проверка почвы шла через ванильный тег minecraft:dirt, а в 26.1 трава в него больше не входит — в том числе при генерации мира.

Исправлено: Явная проверка травы и подзола, как в Forge 1.7.10; автотесты генерации мира доведены до прохождения.

Сапоги путешественника и шаг на блок

В 1.7.10 высота шага ставилась только на клиенте, а в 26.1 сервер сверяет движение со своей высотой шага.

Исправлено: Эффект применяется на обеих сторонах; заодно «тик брони» на клиенте больше не срабатывает для чужих игроков.

Генерация мира выходила за допустимую область

Код 1.7.10 свободно трогал блоки соседних чанков, а в 26.1 feature может трогать только свой чанк и 8 соседних.

Исправлено: Чтение и запись генератора ограничены этой областью.

Глава VIIДрево исследований

Изучено и слито в основную ветку

  • Основарегистрация, ресурсы, переводы
  • Аспектымагические свойства предметов
  • Снаряжениеброня, инструменты, аксессуары, рунический щит
  • Генерация мираруды, деревья, растения, биомы, постройки

Впереди

  • Исследования и Таумономикон
  • Жезлы, вис и узлы ауры
  • Алхимия и инфузия
  • Существа и големы
  • Порча и варп
  • Визуальные эффекты
  • Интеграция с JEI

ИллюстрацииИз игры

вкладка thaumcraft в творческом режиме
вкладка thaumcraft в творческом режиме
зал блоков мода
зал блоков мода
аспекты предмета в подсказке
аспекты предмета в подсказке
броня крепости и стихийный меч
броня крепости и стихийный меч
пещера с кристаллами и рудами
пещера с кристаллами и рудами

Текстуры, модели и звуки на скриншотах — оригинальные ресурсы Thaumcraft 4 (автор Azanor).

ПриложениеСтек и навыки

Стек

Java 25 · Minecraft 26.1.2 · NeoForge 26.1.2.109 · Gradle + ModDevGradle · Curios API · Mixin · GameTest · Python 3 · Vineflower + MCP · Git: worktree, ветки, слияния

Что показывает проект

перенос legacy-кода · архитектура крупного проекта · декомпозиция задач · организация параллельной разработки · автоматизация · тестирование · работа с ограничениями платформы

Оригинальный Thaumcraft — мод Azanor под лицензией All Rights Reserved. Порт личный и не публикуется, поэтому здесь только описание: без кода, сборок и ссылок на репозиторий.