Моддинг:Базовое Руководство по Блокам

From Vintage Story Wiki
This page is a translated version of the page Modding:Content Tutorial Simple Block and the translation is 100% complete.
Other languages:

Эта страница проверялась в последний раз для версии Vintage Story 1.20.7.


Введение

Цель

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

Ассеты

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

Это руководство начинается со следующими ассетами:

  • Настройка Мода и Структура Папки
  • Пустой файл блока
  • Шаблон языкового пакета
  • Файл текстуры блока

Требования

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

Не обязательно, но рекомендуется освоить следующие руководства:

Навигация в Ассетах

Скачав рабочее пространство, посмотрите на файлы которые там представлены.

  • modinfo.json - Файл modinfo, который задаёт вашему моду уникальный идентификатор 'simpleblock'.
  • modicon.png - Файл с иконкой мода, которая отобразится в менеджере модов.
  • assets/simpleitem/blocktypes/simpleshinyblock.json - Пустой файл, который вы заполните кодом для вашего блока.
  • assets/simpleitem/lang/en.json - Языковой пакет, куда вы добавите значения для перевода.
  • assets/simpleitem/textures/block/shinygoldtexture.png - Файл текстуры для блока.

Создание Блока

Чтобы создать блок, необходимо создать файл внутри директории blocktypes. Если вы используете скачанное рабочее окружение, то там уже существует предмет, под названием simpleshinyblock. Откройте этот файл в вашей среде разработки.

Самое важный ключ при создании ассета это ключ code, ещё его называют ID. Поэтому для начала, скопируйте это в открытый файл simpleshinyblock.

{
  "code": "simplegoldblock"
}

Помните что файлы json это пары ключей и значений. В нашем случае ключ это "code ", а значение это "simplegoldblock". Заметьте что файл начинается и кончается фигурными скобками ({ }), обозначая что это один единый объект. Теперь, когда наш блок правильно заполнен кодом, игра создаст и зарегистрирует такой блок. Тем не менее, нам надо указать способ получения предмета. Чтобы это сделать, добавьте новое свойство:

{
  "code": "simplegoldblock",
  "creativeinventory": {
	"general": [ "*" ],
	"examplemod": [ "*" ]
  },
}

Обратите внимание что каждое свойство разделяется запятой. Новое свойство "creativeinventory " говорит игре в какие вкладки творческого инвентаря поместить этот предмет. Синтаксис в этом конкретном свойстве немного сложный, но пока не думайте об этом. Всё что он делает, это добавляет наш предмет во вкладки "general" и "examplemod".

Теперь, если запустить Vintage Story с нашим модом, то вы увидите этот блок в творческом инвентаре!

SimpleBlockTutorialNoShapeOrTextureCreativeMenu.png

Вы также можете поместить ваш блок в мир!

SimpleBlockTutorialNoShapeNoTexture.png

Как видим, текстура у блока некорректная.

Добавление Модели и Текстуры

Текстура уже есть в ассете, почему же блок не отрисовывается как надо?

Чтобы блок использовал конкретную текстуру, её надо объявить в его json файле. Замените ваш текущий код в blocktype на следующее:

{
  "code": "simplegoldblock",
  "creativeinventory": {
	"general": [ "*" ],
	"examplemod": [ "*" ]
  },
  "drawtype": "Cube",
  "texture": {
		"base": "block/shinygoldtexture"
	}
}

Добавилось два новых свойства - drawtype и texture.

Хотя drawtype не является обязательным чтобы корректно определять форму блока, всё таки будет хорошей идеей использовать это свойство т.к. возможно, вы захотите изменить его в будущем. Установив значение на Cube мы указываем что блок должен отрисовываться в форме полного куба.

Texture назначает и размечает текстуру блока - Ничего особенного.

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

SimpleBlockTutorialGoldBlockWithShapeAndTexture.png

Свойства Блока и Звуки

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

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

"blockmaterial": "Stone",
"resistance": 3.5

Свойство blockmaterial определяет какой инструмент будет максимально эффективен при добыче этого блока. Установив значение на Stone мы указываем что самый эффективный инструмент - кирка. Для полного списка материалов смотрите секцию EnumBlockMaterial на GitHub.

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

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

Также вы могли заметить, что ваш блок не имеет металлических звуков - Так что давайте это исправим. Финальная версия блока в json должна выглядеть вот так:

{
  "code": "simplegoldblock",
  "creativeinventory": {
	"general": [ "*" ],
	"examplemod": [ "*" ]
  },
  "drawtype": "Cube",
  "texture": {
		"base": "block/shinygoldtexture"
	},
  "blockmaterial": "Stone",
  "resistance": 3.5,
  "sounds": {
		"place": "game:block/anvil",
		"walk": "game:walk/stone"
	}
}

Свойство sounds довольно очевидно, но важно заметить, что префикс должен начинаться с "game:". Это из-за того, что звуки расположены в файлах базовой игры, а не в вашей папке мода. Здесь, мы просто назначили звуки для place (установка блока) и walk (ходьба по блоку). Самые популярные ключи для звуков это place, walk, break, and hit.

Переименование Блока

На данный момент наш блок везде называется 'simpleblock:block-simplegoldblock'. Чтобы это исправить надо добавить новую строчку в файл языкового пакета. Откройте предоставленный языковой пакет en.json, который лежит в assets/simpleblock/lang. Файл будет выглядеть вот так:

{
	"": ""
}

Слева ключ перевода, а справа строчка (string) с переводом. В данном случае ключ перевода будет 'block-simplegoldblock'. Обратите внимание что это то, как игра отображает название блока в данный момент, за вычетом домена. Строчка перевода будет 'Simple Gold Block'.

You will also need to add a lang entry for the creative tab. This is slightly more specific, as creative tabs must start with the 'game:' prefix.

{
	"game:tabname-examplemod": "Example Mod",
	"block-simplegoldblock": "(Example Mod) Simple Gold Block"
}

Чтобы ускорить процесс проверки изменений, если ваша Vintage Story ещё открыта, вы можете исполнить команду .reload lang чтобы перезагрузить языковые пакеты. Теперь при наведении на предмет, или при просмотре в творческом инвентаре, вы должны увидеть что ваш языковой пакет теперь работает.

SimpleGoldBlockTutorialInCreativeMenu.png

Заключение

Поздравляем, вы создали свой первый блок! Это руководство должно было дать вам большее понимание о блоках, текстурах, звуках и языковых пакетах и, разумеется, об основах моддинга Vintage Story!

Что Дальше?

Если хотите проверить свои знания, попробуйте выполнить задания из раздела "Дополнительные Задания" ниже.

Когда будете готовы, попробуйте следующее руководство: Базовое Руководство по Рецептам . Оно расскажет вам о том, как создавать рецепты для ассетов, которые вы создали.

Дополнительные Задания

Хотите внести пару дополнительных изменений в этот мод? Попробуйте достичь следующих вещей!

Измените цвет блока

Показать решение
Необходимо изменить цвет текстуры shinygoldtexture.png.

Сделайте так, чтобы блок добывался только с помощью инструмента уровня 1 или выше. Вам потребуется добавить новое свойство: "requiredMiningTier "

Показать решение
Добавьте "requiredMiningTier":1 в файл blocktype.

Измените ваш modid и домен на что-нибудь другое

Показать решение
Измените запись об идентификаторе в modinfo.json, и измените имя папки 'simpleblock' в директории 'assets'.

Переименуйте ваш 'Simple Gold Block'

Показать решение
Измените запись для вашей simplegoldblock в языковом пакете en.json

Создайте другой блок с отличными текстурой и свойствами

Показать решение
Создайте новую текстуру для блока с новым именем, продублируйте файл blocktypе. В этом новом файле измените код для блока и путь до текстуры. Измените свойства чтобы сменить тип блока. Не забудьте добавить новую запись в языковой пакет!


Моддинг
"" Основы Контентные Моды Программные Моды Типы Ассетов Model Creator Устранение Неполадок Движок VS
"" Основы Контентных Модов Руководства Справочники и Концепции Все Страницы о Контентных Модах
"" Руководства для Начинающих Руководства для Любителей Руководства для Продвинутых Прочие Руководства
"" Введение в Контентный Моддинг Базовое Руководство по Предметам Базовое Руководство по Блокам Базовое руководство по Рецептам