Перейти к содержимому

GamesAI

Этот мод для Minecraft позволяет использовать ИИ на сервере и в играх

Fabric
Загрузчики
Fabric
Скачиваний на Modrinth
569
Подписчиков на Modrinth
1
версий
28
Обновлён
14 августа 202614 авг.
Опубликован
в 2026

Коротко о моде

Работает на Fabric
Для Minecraft 1.21–26.2
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 0.2.0-Fabric-26.2 от 14 августа 2026
Лицензия MIT — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

Работает и в игре, и на сервере — ставьте, где нужен

Версии игры1.21–26.2
Описание переведено автоматическиПоказать оригинал (EN)

Группа QQ по плагину/моду GamesAI: 849544707 — присоединяйтесь, чтобы обсуждать проблемы, делиться отзывами и обмениваться промптами, навыками и настройками инструментов!

Добро пожаловать в GamesAI for Fabric! Этот мод добавляет ИИ-ассистентов в Minecraft — задавайте вопросы, управляйте данными и настраивайте ИИ-бэкенды прямо из игры.

Из-за ограниченных сил автора мы не будем поддерживать версии ниже 1.21 и загрузчики, отличные от Fabric.

Содержание (нажмите, чтобы развернуть)

Установка

Требования

  • Minecraft 1.21+ (или совместимая с Fabric версия — см. Совместимость версий)
  • Fabric Loader ≥ 0.16.10
  • Fabric API (последняя для вашей версии MC)
  • Java 21 или новее

Установка

  1. Скачай последний .jar с Modrinth
  2. Положи его в папку .minecraft/mods/
  3. Запусти игру с Fabric Loader
  4. При первом запуске создаётся файл конфигурации по умолчанию: config/games_ai/config.json
  5. Отредактируй конфиг, указав свои API-данные, затем перезагрузи командой /gamesai reload

Как вариант, скачай .jar со страницы GitHub Releases и положи его в папку .minecraft/mods/ тем же способом.


Использование

Команды ask

КомандаОписание
`/ask `Спросить у ИИ, используя модель по умолчанию
`/ask -m `Спросить у ИИ, используя конкретный профиль модели
`/ask -n `Спросить у ИИ без истории диалога
`/ask -n -m `Конкретная модель, без истории

Поддерживаются только короткие флаги (-m, -n). Длинные формы (--model, --no-history) недоступны, чтобы не дублировать подсказки встроенных команд Minecraft.

Команды управления

Общие
КомандаПраваОписание
/gamesai helpВсемПоказать контекстную справку
/gamesai reloadВладелец (Lv4)Перезагрузить конфиг, инструменты и переводы
История
КомандаПраваОписание
/gamesai history clearВсемОчистить свою историю диалога
/gamesai history clearallВладелец (Lv4)Очистить историю всех игроков
Конфиг
КомандаПраваОписание
`/gamesai config lang `Владелец (Lv4)Задать язык сервера (en_us / zh_cn)
`/gamesai config defaultAi `Владелец (Lv4)Задать модель ИИ по умолчанию
`/gamesai config maxHistory `Владелец (Lv4)Задать максимум раундов диалога (≥ 1)
Данные
КомандаПраваОписание
`/gamesai data write `Владелец (Lv4)Записать данные в базу (перезапись)
`/gamesai data add `Владелец (Lv4)Добавить данные в базу
`/gamesai data del `Владелец (Lv4)Удалить запись из базы
`/gamesai data read `Владелец (Lv4)Прочитать значение по ключу
/gamesai data listВладелец (Lv4)Показать все пары ключ-значение
/gamesai data list keysВладелец (Lv4)Показать все ключи

Клиентские команды

КомандаОписание
`/c-ask `Спросить у ИИ со стороны клиента (права на серверную команду не нужны)
`/c-ask -m `Клиентский запрос с конкретной моделью
`/c-ask -n `Клиентский запрос без истории
`/c-ask -n -m `Клиентский запрос, конкретная модель, без истории

Экран конфигурации в игре

Нажми F6 (по умолчанию), чтобы открыть визуальный экран настройки

  • Общие настройки — редактируй prefix, max_history, lang, default_ai с помощью слайдеров, текстовых полей и кнопок переключения
  • Профили ИИ — добавляй, редактируй или удаляй конфигурации бэкендов ИИ в визуальном редакторе
  • Изменения сохраняются в config.json и применяются сразу

Чтобы переназначить клавишу экрана конфигурации: Настройки → Управление → Назначения клавиш → Разное → Open GamesAI Config


Конфигурация

При первом запуске создаётся конфиг по умолчанию:

.minecraft/config/games_ai/config.json

Структура по умолчанию

{
  "prefix": "[GamesAI]",
  "max_history": 10,
  "lang": "en_us",
  "all_ai": {
    "example_ai": {
      "prompt": "You are a helpful assistant in Minecraft.",
      "ai_name": "[GamesAI]",
      "base_url": "<Your Base URL>",
      "ai_model": "<Your AI Model>",
      "api_key": "<Your API Key>",
      "extra_body": {}
    }
  },
  "default_ai": "example_ai"
}

---

### 1. prefix

| Свойство | Значение |
|----------|-------|
| **Тип** | `String` |
| **По умолчанию** | `[GamesAI]` |

Имя плагина, используемое как префикс в ответах. Может содержать коды форматирования Minecraft.

---

### 2. max_history

| Свойство | Значение |
|----------|-------|
| **Тип** | `int` |
| **По умолчанию** | `10` |

Максимальное количество реплик диалога, сохраняемых для каждого игрока по каждой модели. Установите `0`, чтобы отключить историю. История хранится в памяти и очищается при перезапуске сервера.

---

### 3. lang

| Свойство | Значение |
|----------|-------|
| **Тип** | `String` |
| **По умолчанию** | `en_us` |
| **Варианты** | `en_us`, `zh_cn` |

Язык отображения для всего сервера. Изменения вступают в силу после `/gamesai reload`.

---

### 4. all_ai

| Свойство | Значение |
|----------|-------|
| **Тип** | `dict` |

Все записи конфигурации ИИ. Каждая запись — это словарь (ключ — внутренний AI_ID):

| Поле | Описание |
|-------|-------------|
| **prompt** | Системный промпт для этого ИИ. Используйте `> filename.md`, чтобы загрузить из `config/games_ai/prompt/`. |
| **ai_name** | Отображаемое имя в чате (может содержать коды форматирования Minecraft). |
| **base_url** | URL эндпоинта API (например, `https://api.openai.com/v1`). |
| **ai_model** | Название модели (например, `gpt-4o`, `deepseek-chat`). |
| **api_key** | Ключ аутентификации API. |
| **extra_body** | Дополнительные параметры, передаваемые в API (например, `{"thinking": {"type": "enabled"}}` для DeepSeek). По умолчанию: `{}`. |

#### Пример с несколькими профилями

```json
{
  "all_ai": {
    "gpt4o": {
      "prompt": "You are a Minecraft expert.",
      "ai_name": "[GPT-4o]",
      "base_url": "https://api.openai.com/v1",
      "ai_model": "gpt-4o",
      "api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "extra_body": {}
    },
    "deepseek": {
      "prompt": "You are a helpful Minecraft assistant.",
      "ai_name": "[DeepSeek]",
      "base_url": "https://api.deepseek.com",
      "ai_model": "deepseek-chat",
      "api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "extra_body": {}
    },
    "local_llama": {
      "prompt": "You are a friendly Minecraft assistant.",
      "ai_name": "[Llama3]",
      "base_url": "http://localhost:11434/v1",
      "ai_model": "llama3",
      "api_key": "ollama",
      "extra_body": {}
    }
  },
  "default_ai": "gpt4o"
}

Для Ollama / локальных моделей укажите api_key как "ollama" в качестве заглушки.


5. default_ai

СвойствоЗначение
ТипString

Модель, используемая, когда игрок просто вводит /ask. Должна быть одним из ключей в all_ai.


Ссылка на файл промпта

Вместо того чтобы встраивать длинные промпты в config.json, можно ссылаться на внешние файлы:

  1. Поместите файл промпта в config/games_ai/prompt/ (например, my_prompt.md)
  2. Установите "prompt": "> my_prompt.md" в профиле ИИ

Мод автоматически читает содержимое файла во время запроса. Поддерживается любой текстовый формат (.md, .txt и т. д.).


Система базы данных

GamesAI включает публичную базу данных на основе SQLite по пути config/games_ai/database/database.db.

КомандаОписание
`/gamesai data write `Записать пару ключ-значение (перезаписывает существующую)
`/gamesai data add `Добавить значение к существующему ключу (создаёт автоматически)
`/gamesai data del `Удалить запись
`/gamesai data read `Прочитать значение по ключу
/gamesai data listПоказать все пары ключ-значение
/gamesai data list keysПоказать все ключи

ИИ также может читать и записывать в базу данных через встроенные инструменты (ai_read_data, ai_write_data, ai_add_data, ai_del_data).


Инструменты ИИ

ИИ может вызывать функции для взаимодействия с Minecraft и базой данных.

Встроенные инструменты

ИнструментПараметрыОписание
get_online_playersнетПолучить текущий список игроков онлайн
get_whitelist_nameнетПолучить вайтлист сервера
add_to_whitelistplayerДобавить игрока в вайтлист
remove_from_whitelistplayerУдалить игрока из вайтлиста
search_minecraft_wikiqueryПоиск по Minecraft Wiki
calculatorexpressionВычислить математическое выражение
item_calculatorexpression, single_limitПодсчитать количество предметов в единицах Minecraft (стаки/шалкеры)
ai_read_datakeyПрочитать запись из базы данных
ai_read_all_keysнетПолучить все ключи базы данных
ai_read_all_dataнетПрочитать все записи базы данных
ai_write_datakey, valueЗаписать в базу данных (с перезаписью)
ai_add_datakey, valueДобавить в базу данных
ai_del_datakeyУдалить запись из базы данных
read_skillsskillsПрочитать файл навыка
setting_timerdurationПодождать N секунд перед продолжением
reload_pluginнетВыполнить /gamesai reload

Пользовательские инструменты через Groovy

Вы можете расширить возможности ИИ, написав скрипты на Groovy:

  1. Поместите файлы .groovy в config/games_ai/tools/
  2. Пометьте методы аннотацией @RegisterTool:
import java.util.function.Consumer;
import io.github.pengzixuan30.gamesai.tools.GamesAIToolsRegister;

@GamesAIToolsRegister.RegisterTool(
    name = "my_custom_tool",
    description = "Does something useful",
    parameters = """
        {
          "type": "object",
          "properties": {
            "param": {
              "type": "string",
              "description": "The value to process"
            }
          },
          "required": ["param"]
        }
        """
)
String myCustomTool(Consumer<String> feedback, String aiName, String param) {
    feedback.accept("Executing custom tool...")
    return "Result: ${param} processed"
}

В сигнатуре метода инструмента обязательно должны идти `Consumer feedbackпервым параметром иString aiNameвторым, а после них — любые пользовательские параметры, объявленные в JSON-схемеparameters`.

  1. Перезагрузите командой /gamesai reload — инструменты обнаруживаются и регистрируются автоматически.

Навыки

Навыки — это Markdown-файлы, которые дают ИИ знания и инструкции по конкретной области. ИИ может читать их через инструмент read_skills.

Добавление навыков

  1. Поместите файлы .md в config/games_ai/skills/
  2. Зарегистрируйте их в config/games_ai/skills/skills.json:
[
  {
    "skills": "my_guide.md",
    "summary": "A guide for building redstone machines"
  }
]
  1. Перезагрузите командой /gamesai reload

Зарегистрированные навыки появляются в системном промпте ИИ, чтобы он знал, какие знания доступны.


Горячая перезагрузка

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

Запуск горячей перезагрузки

Горячую перезагрузку можно запустить следующими способами:

СпособОписание
/gamesai reloadЗапускается админом (Lv4) для перезагрузки всей конфигурации, инструментов, навыков и переводов.
`/gamesai config lang `Немедленно применяет смену языка.
`/gamesai config defaultAi `Немедленно применяет смену модели по умолчанию.
`/gamesai config maxHistory `Немедленно применяет изменение длины истории.
Инструмент ИИ reload_pluginВызывается ИИ после изменения кода инструментов или файлов навыков, чтобы сразу применить изменения.
Экран конфигурации в игре (F6)Нажатие «Save» записывает изменения в config.json и сразу применяет их.

Что происходит при горячей перезагрузке

При выполнении горячей перезагрузки мод последовательно выполняет следующие шаги:

  1. Повторное чтение файла конфигурации (config/games_ai/config.json) — применяются все изменения prefix, max_history, lang, all_ai, default_ai и т. д.
  2. Перезагрузка переводов — применяется выбранный lang (en_us / zh_cn) без перезапуска.
  3. Перезагрузка Skills (config/games_ai/skills/skills.json) — обновляется индекс навыков; список доступных навыков в системном промпте AI обновляется синхронно.
  4. Перезагрузка пользовательских инструментов (config/games_ai/tools/*.groovy) — горячая загрузка кода пользовательских инструментов Groovy без перезапуска сервера.

Горячая перезагрузка не очищает историю чата игроков. История хранится в памяти и очищается только при перезапуске сервера.


Структура проекта

src/
├── main/java/io/github/pengzixuan30/gamesai/
│   ├── GamesAI.java                  # Точка входа мода — инициализация и загрузка конфигурации
│   ├── command/
│   │   └── GamesAICommands.java      # Регистрация и выполнение команд
│   ├── config/
│   │   ├── GamesAIConfig.java        # Модель данных конфигурации (профили AI, extra_body)
│   │   └── GamesAIConfigManager.java # Чтение/запись файла конфигурации (JSON, UTF-8)
│   ├── database/
│   │   └── GamesAIDatabase.java      # Публичная база данных SQLite
│   ├── help/
│   │   └── GamesAIHelp.java          # Контекстно-зависимая система справки
│   ├── openai/
│   │   └── GamesAIRequestAI.java     # Клиент OpenAI API и обработка ответов
│   ├── tools/
│   │   ├── GamesAIToolsRegister.java # Сканер аннотаций инструментов
│   │   ├── GamesAIBuiltinTools.java  # Реализации встроенных инструментов
│   │   └── GamesAIExternalToolsLoader.java # Загрузчик инструментов Groovy
│   └── translations/
│       └── GamesAITranslations.java  # Движок переводов I18n
├── main/resources/
│   ├── fabric.mod.json               # Метаданные мода Fabric
│   └── assets/games_ai/lang/         # Файлы переводов (en_us, zh_cn)
├── client/java/io/github/pengzixuan30/gamesai/client/
│   ├── GamesAIClient.java            # Клиентская точка входа — привязка клавиш, /c-ask
│   └── screen/
│       ├── GamesAIConfigScreen.java           # Главный экран конфигурации
│       ├── GeneralConfigEditScreen.java       # Редактор общих настроек
│       ├── AiProfileConfigEditScreen.java     # Редактор списка профилей AI
│       └── AiProfileDetailConfigEditScreen.java # Редактор деталей профиля AI
├── build.gradle
├── gradle.properties
└── settings.gradle

Архитектура

flowchart LR
    Config[json] -->|load| Manager[GamesAIConfigManager]
    Manager --> Model[GamesAIConfig]
    Model --> Main[GamesAI]
    Main --> Cmd[GamesAICommands]
    Cmd -->|/ask| API[GamesAIRequestAI]
    API -->|HTTP| OpenAI[OpenAI API]
    Main --> History[(allHistory)]
    History --> API
    API --> History
    API -->|response| Cmd
    Cmd -->|sendMessage| Player[Minecraft Player]
    Main --> DB[(GamesAIDatabase)]
    DB --> API
    Main --> Tools[GamesAIToolsRegister]
    Tools --> API
    GUI[Config Screen] --> Manager
КлассОтветственность
GamesAIЖизненный цикл мода, конфигурация, CRUD allHistory, safeTrimHistory, режим отладки, разрешение промптов
GamesAICommandsДерево команд (/ask, /gamesai), асинхронная отправка через CompletableFuture
GamesAIConfigМодель данных: prefix, max_history, lang, профили all_ai (с extra_body), default_ai
GamesAIConfigManagerСериализация GSON, файловый ввод-вывод в config/games_ai/config.json (UTF-8)
GamesAIDatabaseХранилище ключ-значение SQLite для публичных данных
GamesAIHelpКонтекстно-зависимая справка: /gamesai → верхний уровень, /gamesai config → только подкоманды
GamesAIRequestAIКлиент OpenAI SDK, формирует сообщения (system → history → user), управляет историей
GamesAITranslationsДвижок I18n: загружает JSON из assets/games_ai/lang/, UTF-8, живая перезагрузка
GamesAIToolsRegisterСканер аннотаций @RegisterTool для встроенных и Groovy-инструментов
GamesAIBuiltinTools15+ встроенных функций AI (вики, калькулятор, вайтлист, база данных, навыки)
GamesAIExternalToolsLoaderЗагрузчик скриптов Groovy из config/games_ai/tools/*.groovy
GamesAIClientКлиентская точка входа: горячая клавиша F6 для GUI конфигурации, команда /c-ask
Config ScreensВнутриигровой визуальный редактор конфигурации с отменой/сохранением, слайдерами, кнопками переключения

Сборка

Требования

  • JDK 21 (или новее)
  • Gradle Wrapper (входит в комплект — используйте gradlew / gradlew.bat)

Сборка

git clone https://github.com/PengZixuan30/GamesAI.git
cd GamesAI
./gradlew build

Скомпилированный .jar будет здесь: build/libs/games_ai-*.jar

Среда разработки

./gradlew runClient    # Запустить клиент Minecraft с модом
./gradlew runServer    # Запустить локальный тестовый сервер

Решение проблем

/ask возвращает ошибки

ОшибкаВероятная причинаРешение
401Неверный API-ключПроверьте api_key в профиле AI
404Неверный base URL или имя моделиПроверьте base_url и ai_model
429Превышен лимит запросовПодождите и повторите; снизьте частоту запросов
TimeoutСервер недоступенПроверьте сеть и base_url
Пустой ответМодель ничего не вернулаПроверьте промпт и совместимость модели

Инструменты AI не работают

  • Убедитесь, что инструменты зарегистрированы: проверьте лог сервера на [GamesAIToolsRegister] Registered tool: ...
  • Для кастомных Groovy-инструментов проверьте config/games_ai/tools/ на синтаксические ошибки
  • Включите режим отладки: /gamesai debug, чтобы увидеть полные промпты и результаты вызовов инструментов

Проблемы с экраном конфигурации

  • Нажмите F6, чтобы открыть (проверьте привязку клавиш в Управление → Разное)
  • Изменения конфигурации в GUI сохраняются только при нажатии "Save"
  • Используйте "Undo", чтобы вернуться к последнему сохранённому состоянию

Что нового

Версия 0.2.0

🎯 Главное
  • 🖥️ Экран конфигурации на стороне клиента — Визуальный GUI настройки прямо в игре (нажмите F6).
  • 💬 Клиентская команда /c-ask — Спросите AI с клиента без прав на серверные команды.
  • 🗄️ База данных, внешние промпты, навыки и кастомные инструменты — Публичная база данных SQLite, ссылки на промпты через > file.md, система навыков и кастомные инструменты на Groovy.
  • 🧹 Режим без истории — /ask -n спрашивает AI без истории диалога (в соответствии с версией для MCDReforged).
  • 🛠️ Вызов инструментов AI — AI теперь может вызывать встроенные и кастомные инструменты для взаимодействия с Minecraft и базой данных.
  • ⚙️ Конфиг extra_body — Передавайте дополнительные параметры, специфичные для провайдера, в API для большей гибкости.
1. Экран конфигурации на стороне клиента

Нажмите F6 (по умолчанию), чтобы открыть визуальный экран конфигурации. Редактируйте общие настройки и профили AI с помощью слайдеров, текстовых полей и кнопок переключения — изменения сохраняются в config.json и применяются сразу. См. Экран конфигурации в игре.

2. Клиентская команда /c-ask

Новая клиентская команда /c-ask позволяет игрокам спрашивать AI с клиента без необходимости в правах на серверные команды. Поддерживает флаги -m (модель) и -n (без истории), как и /ask. См. Клиентские команды.

3. База данных, внешние промпты, навыки и кастомные инструменты
  • Публичная база данных — Хранилище ключ-значение на SQLite, доступное для инструментов AI и команд. См. Система базы данных.
  • Файлы внешних промптов — Ссылайтесь на внешние .md-файлы как на системные промпты через > filename. См. Ссылка на файл промпта.
  • Навыки — Markdown-файлы, дающие AI знания в конкретной области. См. Навыки.
  • Кастомные инструменты — Расширяйте возможности AI с помощью Groovy-скриптов. См. Кастомные инструменты на Groovy.
4. Режим /ask без истории

Используйте `/ask -n , чтобы спросить AI без использования истории диалога (в соответствии с !!ask -n` в версии для MCDReforged). См. Команды Ask.

5. Вызов инструментов AI

AI теперь может вызывать встроенные инструменты (поиск по Minecraft Wiki, калькулятор, вайтлист, база данных, навыки и т.д.) и кастомные Groovy-инструменты для выполнения действий в Minecraft. См. Инструменты AI.

6. Конфиг extra_body

Теперь каждый профиль ИИ поддерживает поле extra_body для передачи дополнительных параметров, специфичных для провайдера (например, {"thinking": {"type": "enabled"}} у DeepSeek). См. 4. all_ai.


Совместимость версий

MinecraftFabric Loader (мин.)Yarn Mappings (мин.)Fabric API (мин.)
26.20.18.4-0.152.1+26.2
26.1.20.18.4-0.145.4+26.1.2
26.1.10.18.4-0.145.2+26.1.1
26.10.18.4-0.144.0+26.1
1.21.110.17.31.21.11+build.60.139.4+1.21.11
1.21.100.17.01.21.10+build.30.134.1+1.21.10
1.21.90.17.01.21.9+build.10.133.14+1.21.9
1.21.80.16.131.21.8+build.10.129.0+1.21.8
1.21.70.16.131.21.7+build.80.128.1+1.21.7
1.21.60.16.131.21.6+build.10.127.0+1.21.6
1.21.50.16.101.21.5+build.10.119.5+1.21.5
1.21.40.16.91.21.4+build.80.110.5+1.21.4
1.21.30.16.71.21.3+build.20.106.1+1.21.3
1.21.20.16.71.21.2+build.10.106.1+1.21.2
1.21.10.15.111.21.1+build.30.102.0+1.21.1
1.210.15.111.21+build.90.100.1+1.21

Из-за ограниченных сил автора мы не будем поддерживать версии ниже 1.21 и загрузчики, отличные от Fabric.


Благодарности и отказ от ответственности

  • DA100 — дизайн логотипа для этого мода
  • FabricMC — фреймворк для моддинга
  • openai/openai-java — официальная Java-библиотека OpenAI
  • Minecraft — торговая марка Mojang / Microsoft. Этот мод не связан с Mojang.

Весь контент, сгенерированный моделями ИИ (LLM), не имеет отношения к этому моду.

Все последствия, возникающие из-за пользовательских инструментов, не имеют отношения к этому моду.


Спонсорство и участники

Адрес для спонсорства: Afdian

Те, кто спонсирует GamesAI, появятся в следующем списке спонсоров (на данный момент спонсоров нет):

#СпонсорСуммаДата
----

Лицензия

  • Исходный код распространяется под лицензией MIT — подробности см. в файле LICENSE.
  • Логотип и визуальные материалы являются собственностью 冬天衣服不错, все права защищены. Вы можете просматривать и делиться ими для личного, некоммерческого использования, но любая модификация или коммерческое использование требует предварительного письменного разрешения.

Частые вопросы

Как установить GamesAI?

Установите Fabric под свою версию Minecraft, скачайте GamesAI под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть GamesAI?

У GamesAI есть сборки для Minecraft 1.21–26.2.

Нужен ли GamesAI на сервере?

Работает и в игре, и на сервере — ставьте, где нужен

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее