Как создать Свой мод для Майнкрафт Java? Полный гайд до результата

Как создать Свой мод для Майнкрафт Java? Полный гайд до результата

Наверняка вы также как и я когда-то задавались вопросом «а как же создать свой мод в майнкрафт? Возможно, у вас появилась идея добавить в игру новый предмет, блок, моба или целую игровую механику, но вы не знали, с чего начать. В этой статье мы как раз это и разберём!

В этой статье мы разберём весь путь создания первого мода для майнкрафт: познакомимся с основами моддинга, узнаем, какие инструменты понадобятся для разработки, выберем удобную среду создания и попробуем написать свой первый рабочий мод.

Мы разберём основные принципы работы модов, установим необходимые программы, познакомимся с кодом и структурой проекта, а также создадим простые изменения, которые можно будет запустить прямо в игре.

Создание модов может показаться сложным занятием, особенно если раньше вы не сталкивались с программированием, однако с правильным подходом начать намного проще. Шаг за шагом вы сможете понять, как майнкрафт устроен внутри, научиться работать с Java и постепенно создавать всё более сложные проекты.

Приготовьтесь — в конце статьи у вас будет не просто теория, а первый собственный мод, созданный своими руками!

Какой язык программирования выбрать для создания своего Майнкрафт Мода

Любой мод (как и сама игра майнкрафт) создаётся с использованием довольно популярного языка программирования **java** (программисты часто называют его просто «ява»).

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

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

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

Выбор редактора для создания Майнкрафт мода

[MCreator]

— Простое создание модов без кода, но мы ведь не за этим сюда явились? Не за простыми путями, да и статей на эту тему в интернете уже полным полно.

[IntelliJ IDEA]

— Популярная среда разработки для Java. Используется для создания полноценных модов с использованием кода.

[Eclipse IDE]

— Среда разработки Java, которая часто используется для создания майнкрафт модов. Примерно тоже самое, что и IntelliJ IDEA.

[Visual Studio Code]

— Лёгкий редактор кода, подходящий для работы с java и файлами проекта, но нет спец.функций упрощающих жизнь при создании майнкрафт модов, в целом универсален.

Модовое АПИ Майнкрафт

Теперь разберёмся с понятием **API**.

API (Application Programming Interface) — это набор инструментов и готовых функций, которые упрощают взаимодействие с программой. В случае с майнкрафт API позволяет разработчикам удобнее добавлять новые возможности в игру, не изменяя её полностью с нуля.

Но есть одна важная особенность: **у майнкрафт нет официального встроенного API для создания модов**. Более того, изначально игра вообще не была рассчитана на поддержку модификаций.

Однако так как Minecraft не имеет официального API для моддинга, сообщество создало собственные инструменты, которые упрощают изменение игры. Так появились различные моддинг-API и платформы, такие как **Forge**, **Fabric**, **Sponge** и другие.

Самым известным и долгое время самым популярным решением является **Forge**. Именно его используют тысячи разработчиков для создания модов майнкрафт, добавления новых предметов, блоков, механик и других изменений игры. В свою очередь **Fabric** более лёгкая и современная платформа моддинга, которая отличается быстрым обновлением под новые версии Minecraft.

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

Сам процесс

Я предпочту остановиться на выборе IntelliJ IDEA в качестве среды разработки, итак, начнём.

JDK

Нам понадобится скачать и установить [JDK 8].

Версия JDK зависит от версии Minecraft и Forge.

Для большинства современных версий Minecraft используется JDK 17.

**(Java Development Kit, или JDK)** — это набор инструментов, необходимых для разработки программ на языке Java.

MDK

Для разработки модов с использованием Forge понадобится специальный набор инструментов — **Forge MDK (Mod Development Kit)**. Он содержит все необходимые файлы и настройки для создания собственного мода.

Выбираем необходимую нам версию и выполняем процесс установки.

Forge MDK (Mod Development Kit)

Создайте новую папку в удобном для вас месте и распакуйте в неё скачанный архив Forge MDK. После распаковки внутри окажется большое количество файлов, однако большинство из них на данном этапе не понадобятся.

Не удаляйте файлы сразу. Большая часть содержимого понадобится позже.

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

— папки `gradle`

— `gradlew.bat`

— `build.gradle`

Первичная настройка

Теперь необходимо открыть вашу среду разработки в папке, куда был распакован архив Forge MDK.

При первом запуске IDE автоматически начнёт подготовку проекта и создание рабочего пространства. Дождитесь завершения этого процесса — он может занять некоторое время.

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

Для **IntelliJ IDEA**:

«`bash

gradlew genIntellijRuns

«`

Для **Eclipse IDE**:

«`bash

gradlew genEclipseRuns

«`

## Настройка запуска

Остался последний этап — настроить IDE для запуска майнкрафт через созданный проект.

Для этого откройте настройки конфигураций запуска и найдите кнопку «Add Configuration..». Здесь мы укажем, какие параметры и профиль необходимо использовать для запуска игры.

Добавить конфигурацию для создания Майнкрафт мода

После нажатия на эту кнопку откроется окно настройки конфигурации запуска. В нём необходимо выбрать тип **»Application»**, а затем в выпадающем списке указать профиль **»RunClient»**.

Для теста выберите конфигурацию RunClient, затем нажмите кнопку Run или воспользуйтесь сочетанием клавиш Shift + F10.

Запустится майнкрафт с установленным Forge. Ваш мод тоже должен быть там.

Создание мода на Майнкрафт

## Mods.toml

`modLoader=»javafml» #mandatory` – отображает какой загрузчик модов мы будем использовать. Это поле трогать не требуется.

`loaderVersion=»[37,)»` это промежуток совместимых версий загрузчика модов.

`license=»All rights reserved»` – отображает лицензию, под которой распространяется мод. [Здесь](https://choosealicense.com/) можно найти все существующие варианты.

Строка `#issueTrackerURL=»change.me.to.your.issue.tracker.example.invalid/»` (отмеченная как комментарий) является необязательной. В ней указывается ссылка на ресурс, где пользователи смогут сообщать об ошибках и проблемах с модом.

Если у вас нет такого сервиса или страницы для отслеживания багов, эту строку можно просто удалить.

Далее находится обязательный блок `[[mods]]`. Его оставляем без изменений, а сразу после него располагаются основные параметры вашего мода.

`modId=»examplemod»` — уникальный идентификатор мода. Именно по нему Forge будет определять ваш мод и связывать его с этим файлом конфигурации. Выбирайте значение внимательно: в дальнейшем **MODID** будет использоваться во многих местах проекта, поэтому он не должен совпадать с другими модами.

`version=»${file.jarVersion}»` — обязательный параметр, который лучше оставить без изменений. Эта запись означает, что версия мода будет автоматически браться из файла `build.gradle`. Такой подход удобнее, поскольку при обновлении версии не придётся менять её вручную в нескольких местах.

`displayName=»Example Mod»` — название мода, которое будет отображаться в игре и в списке установленных модификаций.

`#updateJSONURL=»change.me.example.invalid/updates.json»` — необязательная строка, содержащая ссылку на JSON-файл для проверки обновлений мода. Если вы не используете систему автоматического обновления, её можно оставить закомментированной.

`#displayURL=»change.me.to.your.mods.homepage.example.invalid/»` — ещё один необязательный параметр. Здесь указывается ссылка на официальный сайт, страницу проекта или любой другой ресурс, связанный с вашим модом.

Оба этих параметра можно пока удалить, так как они являются необязательными и на данном этапе разработки не понадобятся.

`logoFile=»examplemod.png»` — имя файла, который будет использоваться в качестве логотипа мода в меню майнкрафт. Этот параметр необязательный, но рекомендуется добавить изображение для более удобного отображения мода. Сам файл картинки необходимо поместить в папку `resources`.

`credits=»Thanks for this example mod goes to Java»` — строка для указания благодарностей или дополнительной информации о проекте. Не является обязательной.

`authors=»Love, Cheese and small house plants»` — список авторов мода. Также необязательное поле, которое можно использовать для указания разработчиков.

«`toml

description=’

This is a long form description of the mod.

You can write whatever you want here.

Have ещё текст…

«`

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

Измените необходимые поля под свои параметры и предпочтения. Однако не забудьте заменить `[[dependencies.examplemod]]` на `[[dependencies.ваш_modid]]`, где вместо `ваш_modid` укажите идентификатор, который вы выбрали для своего мода.

![Mods.toml](modsToml.jpg)

Настройка `build.gradle

Теперь перейдём к файлу `build.gradle`. В нём содержатся параметры сборки проекта, информация о зависимостях и различные настройки Gradle.

Большая часть файла уже настроена и не требует изменений, поэтому нас интересуют лишь несколько строк.

Найдите следующий фрагмент:

«`gradle

version = ‘1.0’

group = ‘com.yourname.modid’

archivesBaseName = ‘modid’

«`

И измените его под свой проект. Например:

«`gradle

version = ‘1.0.1’

group = ‘dev.dalrex.testmod’

archivesBaseName = ‘testmod’

«`

— `version` — текущая версия вашего мода.

— `group` — уникальный идентификатор проекта в обратной доменной записи. Обычно используется формат `домен.автор.название_мода`.

— `archivesBaseName` — имя итогового `.jar` файла, который будет собран.

После этого выполните глобальную замену (`Ctrl + R` или `Ctrl + Shift + R`, в зависимости от IDE) и замените все вхождения `examplemod` на свой `modId`.

Последний шаг — открыть файл `ExampleMod.java`. Здесь также потребуется заменить название класса, `MODID` и другие значения, связанные с шаблонным модом, на собственные.

После этого первоначальная настройка проекта завершена — теперь можно запустить майнкрафт и проверить результат.

Создание первого предмета

После первоначальной настройки проекта можно переходить к самому интересному — созданию первого предмета. Именно сейчас наш мод перестанет быть пустым шаблоном и начнёт получать собственный контент.

Подготавливаем основной класс мода

Сначала приведём шаблонный класс в порядок. По умолчанию он называется `ExampleMod`, однако такое название нам не подходит.

Переименуйте:

— класс `ExampleMod`;

— файл `ExampleMod.java`;

— пакет, если это необходимо.

Название должно соответствовать тем значениям, которые вы указали ранее в `build.gradle`.

Теперь добавьте в класс константу с идентификатором мода:

«`java

public static final String MODID = «ваш_modid»;

«`

После этого замените строку

«`java

@Mod(«ваш_modid»)

«`

на

«`java

@Mod(MODID)

«`

Так вам не придётся менять `modId` сразу в нескольких местах проекта.

Также добавьте аннотацию:

«`java

@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)

«`

Она понадобится для регистрации игровых объектов.

В итоге основной класс станет значительно проще и будет содержать только необходимые элементы.

Создаём класс регистрации предметов

Теперь создайте пакет `items`, а внутри него — класс `ModItems.java`.

Для регистрации предметов используется специальный регистр:

«`java

public static final DeferredRegister<Item> ITEMS =

        DeferredRegister.create(ForgeRegistries.ITEMS, MODID);

«`

`DeferredRegister` — рекомендуемый Forge способ регистрации игровых объектов. В дальнейшем аналогичным образом будут регистрироваться блоки, сущности, звуки, эффекты и другие элементы игры.

Теперь зарегистрируем свой первый предмет:

«`java

public static final RegistryObject<Item> diamond_apple =

        ITEMS.register(«diamond_apple»,

                () -> new Item(new Item.Properties()));

«`

Здесь:

— `diamond_apple` — внутренний идентификатор предмета;

— `new Item(…)` — создание самого предмета;

— `RegistryObject` — объект, который хранит зарегистрированный предмет.

Регистрируем предметы

Теперь необходимо подключить созданный регистр в основном классе мода.

В конструктор класса добавьте:

«`java

IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();

ITEMS.register(bus);

«`

После этого Forge автоматически зарегистрирует все предметы, которые находятся в `ModItems`.

Проверяем результат

На этом программная часть создания первого предмета завершена.

Теперь можно запустить майнкрафт. Если всё было сделано правильно, предмет уже существует внутри игры.

Однако пока он не имеет собственного внешнего вида. Чтобы предмет отображался корректно, потребуется добавить:

— текстуру;

— модель предмета;

— локализацию (название).

🔥 Вам сложно? Попробуйте Сайт для Создания Модов Майнкрафт без знаний программирования

Добавляем модель и текстуру предмета в Майнкрафт

После регистрации предмет уже существует в игре, однако пока он отображается некорректно. Чтобы майнкрафт смог его отрисовать, необходимо добавить два ресурса:

**текстуру** (`.png`);

**модель** (`.json`).

Текстура определяет внешний вид предмета, а модель сообщает игре, как именно использовать эту текстуру.

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

Все ресурсы вашего мода располагаются в каталоге `resources`.

Создайте следующие папки (если они отсутствуют):

«`text

src/main/resources/assets/ВАШ_MODID/models/item/

src/main/resources/assets/ВАШ_MODID/textures/item/

«`

Вместо `ВАШ_MODID` необходимо использовать идентификатор вашего мода.

Создаём текстуру и модель

Предположим, мы зарегистрировали предмет с идентификатором `diamond_apple`.

Тогда необходимо создать два файла:

«`text

models/item/diamond_apple.json

textures/item/diamond_apple.png

«`

> Имя файла модели **обязательно** должно совпадать с идентификатором предмета, указанным при регистрации (`diamond_apple`).

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

Заполняем модель

Самая распространённая модель для обычных предметов выглядит следующим образом:

«`json

{

  «parent»: «item/generated»,

  «textures»: {

    «layer0»: «ваш_modid:item/diamond_apple»

  }

}

«`

Здесь:

— `parent` определяет тип модели;

— `layer0` указывает путь к текстуре без расширения `.png`.

Если необходимо использовать текстуру из самого майнкрафт, вместо своего `modid` можно написать `майнкрафт`.

Например:

«`json

«layer0»: «minecraft:item/diamond_apple»

«`

Почему предмет выглядит странно в руке?

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

Это происходит потому, что используется модель:

«`json

«parent»: «item/generated»

«`

Она предназначена для большинства обычных предметов.

## Делаем предмет похожим на инструмент

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

«`json

«parent»: «item/handheld»

«`

После этого майнкрафт будет использовать другую анимацию и положение предмета в руке.

## Если предмет представляет собой блок

Для предметов-блоков можно использовать модель самого блока.

В этом случае содержимое файла будет выглядеть так:

«`json

{

  «parent»: «ваш_modid:block/имя_блока»

}

«`

После добавления модели и текстуры предмет полностью готов к использованию и будет корректно отображаться в игре.

Добавляем локализацию в свой Майнкрафт мод

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

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

Создаём папку с переводами

В папке ресурсов создайте каталог:

«`text

src/main/resources/assets/ВАШ_MODID/lang/

«`

Вместо `ВАШ_MODID` укажите идентификатор своего мода.

Создаём файлы локализации

Для примера создадим переводы для двух языков:

— `en_us.json` — американский английский;

— `ru_ru.json` — русский.

При желании можно добавить и другие языки, создав файлы с соответствующими кодами.

Добавляем переводы

Внутри файла локализации все записи имеют формат:

«`json

{

    «item.ваш_modid.diamond_apple»: «Алмазное яблоко»,

    «itemGroup.test_tab»: «Лучший мод»,

    «block.ваш_modid.fortified_stone»: «Укреплённый камень»

}

«`

Каждая строка представляет собой пару **ключ — отображаемое название**.

Правила именования

Для разных игровых объектов используются разные префиксы.

Предмет

«`text

item.MODID.ID_ПРЕДМЕТА

«`

Например:

«`text

item.my_mod.diamond_apple

«`

### Блок

«`text

block.MODID.ID_БЛОКА

«`

Например:

«`text

block.my_mod.fortified_stone

«`

### Вкладка творческого режима

«`text

itemGroup.ID_ВКЛАДКИ

«`

Например:

«`text

itemGroup.test_tab

«`

Изменение названий ванильных объектов и предметов в Майнкрафте

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

Для этого вместо своего `MODID` необходимо использовать пространство имён `майнкрафт` и указывать идентификаторы оригинальных объектов игры.

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

Добавляем рецепты крафта в свой Майнкрафт мод

Теперь, когда у нас есть собственный предмет, осталось сделать его полноценной частью игры. Получать предмет только через творческий режим не слишком удобно, поэтому добавим возможность создавать его в выживании.

В Minecraft существует несколько способов получения предметов: добыча, выпадение с мобов, различные игровые механики и, конечно же, крафт через верстак.

В этом разделе разберём создание собственных рецептов крафта с помощью JSON-файлов.

Рецепты работают одинаково для модов на **Forge**, **Fabric**, а также для обычных дата-паков. Главное — правильно указывать идентификаторы предметов:

— предметы из вашего мода указываются через собственный `MODID`;

— стандартные предметы Minecraft — через `minecraft`.

Как задать Ресурсы для рецептов крафта в своём моде

Как и многие другие данные Minecraft, рецепты хранятся отдельно от кода в виде JSON-файлов.

Однако есть важное отличие: рецепты находятся не в папке `assets`, а в папке `data`.

Стандартный путь:

`resources/data/ВАШ_MODID/recipes`

Если такой папки ещё нет, необходимо создать её самостоятельно. Например : `resources/data/testmod/recipes`

Названия файлов рецептов не имеют строгой привязки к предметам, как это было с моделями или локализацией. Главное — соблюдать правила именования Minecraft:

— использовать только разрешённые символы;

— не использовать пробелы;

— использовать маленькие буквы.

Например: `diamond_apple.json`

При запуске игры Minecraft автоматически найдёт все подходящие рецепты внутри папки `recipes` и загрузит их.

Типы рецептов

Для верстака существует два основных типа рецептов:

**Shaped-рецепты** — рецепты с определённым расположением предметов;

**Shapeless-рецепты** — рецепты без фиксированной формы.

Разберём оба варианта.

Для примера создадим рецепт для предмета

`testmod:diamond_apple`

Это алмазное яблоко из одного из предыдущих примеров.

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

Строгий рецепт (Shaped)

Создаём новый файл:

`resources/data/gsmod/recipes/diamond_apple.json`

«`json

{

  «type»: «minecraft:crafting_shaped»,

  «pattern»: [

    «X»

  ],

  «key»: {

    «X»: {

      «item»: «minecraft:diamond_block»

    },

    «Y»: {

      «item»: «minecraft:diamond_block»

    }

  },

  «result»: {

    «item»: «testmod:diamond_apple»,

    «count»: 1

  }

}

«`

Теперь разберём этот файл.

Тип рецепта

Первая строка: `»type»: «minecraft:crafting_shaped»`

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

То есть расположение предметов в верстаке должно полностью совпадать с указанным шаблоном.

Шаблон крафта

За форму отвечает параметр: `»pattern»`

В нашем случае:

«`json

[

  «X»,

  «Y»

]

«`

Это означает: `X, Y`

«`toml

Где:

X — один предмет;

Y — другой предмет.

«`

Если попробовать поменять ингредиенты местами, рецепт работать не будет.

Например, такой вариант:

Y, X

Minecraft не примет, потому что это уже другой шаблон.

Именно в этом заключается особенность **Shaped-рецептов** — расположение предметов имеет значение.

Свободный рецепт (Shapeless)

Теперь создадим ещё один рецепт, но уже без фиксированного расположения предметов.

Создаём новый JSON-файл и добавляем:

«`json

{

  «type»: «minecraft:crafting_shapeless»,

  «ingredients»: [

    {

      «item»: «minecraft:diamond_block»

    },

    {

      «item»: «minecraft:diamond_block»

    },

    {

      «item»: «minecraft:diamond_block»

    }

  ],

  «result»: {

    «item»: «testmod:diamond_apple»,

    «count»: 3

  }

}

В этот раз у нас нет параметра pattern, как в предыдущем примере. Вместо этого используется список ингредиентов, которые должны присутствовать в сетке крафта.

Minecraft проверяет только наличие необходимых предметов, а их расположение больше не имеет значения.

Например:

Камень | Камень | Палка

и:

Палка | Камень | Камень

будут одинаково подходить для этого рецепта.

Запускаем игру и проверяем результат.

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

Теги

При создании рецептов можно заметить, что некоторые предметы являются взаимозаменяемыми.

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

Теги позволяют объединять несколько предметов или блоков в одну группу. В рецепте указывается не конкретный предмет, а целая категория, из которой Minecraft сможет выбрать подходящий вариант.

Рассмотрим пример стандартного рецепта из игры:

«`json

{

  «type»: «minecraft:crafting_shaped»,

  «pattern»: [

    » S «,

    «SCS»,

    «LLL»

  ],

  «key»: {

    «L»: {

      «tag»: «minecraft:logs»

    },

    «S»: {

      «item»: «minecraft:stick»

    },

    «C»: {

      «tag»: «minecraft:coals»

    }

  },

  «result»: {

    «item»: «minecraft:campfire»

  }

}


Обязательно накидайте в комментарии то, как у Вас получилось создать свой мод на Майнкрафт и какой он получился! 🙂


‼️ Было полезно? Пожалуйста, помогите сайту за 1 клик, поделившись информацией с друзьями и другими людьми! Мы гарантируем Вам предоставление только качественной информации и специальных подарков, в случае если Вы будете создавать свой сервер Майнкрафт. Спасибо Вам огромное! 💜

🌟 Поделиться:


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

🔒 Оставляя комментарий Вы подтверждаете, что прочли Политику Конфиденциальности и принимаете её условия, а так же даёте согласие на обработку Персональных Данных. Не оставляйте в комментариях о себе никакой личной информации, будьте культурны и вежливы к другим Людям. Вписывая своё имя / псевдоним / никнейм Вы даёте согласие на то, что они будут видны всем.


Обратная Связь

Опишите Проблему, Жалобу, или Вашу Идею. Мы изучаем каждое обращение и среагируем по существу.

Нажимая на кнопку «Отправить в Поддержку», Вы подтверждаете, что прочли Политику Конфиденциальности и даёте согласие на обработку Персональных Данных.

Автор Статьи:


♾️ Бесконечная Лента Контента по Майнкрафту:

⚡ создать свой майнкрафт сервер прямо сейчас

Создать Сервер Майнкрафт на https://bungee.host
Серверов Создано за сегодня через BungeeHost: 000

🎁 получить подарки

⭐ Оставьте свой EMAIL и получайте Подарки для успешного создания своего Майнкрафт сервера, а так же САМЫЕ ВАЖНЫЕ Новости Майнкрафт и Игр! ТОЛЬКО ПОЛЕЗНЫЕ ПИСЬМА, нам доверяют 102 000+ Клиентов!

Нажимая на кнопку " Подписаться " Вы подтверждаете, что прочли Политику Конфиденциальности и принимаете её условия, а так же даёте согласие на обработку Персональных Данных


ℹ️ Рубрики Контента