Первая жидкость
Жидкости представляют собой растекающиеся по плоскости блоки, которые обычно затрудняют перемещение существ по ним и образуют течения. К внутреигровым жидкостям относятся вода и лава.
Течения и потоки
Прежде чем создать блок, а точнее пару блоков, давайте рассмотрим как жидкости работают на практике. Любая жидкость от начала своего потока образует течение в радиусе 15 блоков (включая сам поток).
За указанный промежуток времени жидкость равномерно растекается во всех направлениях ровно на блок. Мы называем жидкостью пару блоков — стоячую и текучую. Основной для игры является именно последняя, первая же обозначает источник (поток), и используется при генерации и прочих сценариях, оставаясь сугубо технической.
Зарегистрируем блок
За регистрацию жидкостей отвечает лишь одна комплексная функция:
Block.createLiquidBlock("ink", {
name: "Ink",
tickDelay: 30,
still: {
texture: ["ink", 0]
},
flowing: {
texture: ["ink", 0]
},
bucket: {
texture: { name: "bucket_ink", meta: 0 }
},
uiTextures: ["liquid_ink"]
});
Это создаст текучий и стоячий блоки жидкостей, а также добавит полнофункциональное ведро для использования игроком и разлитием с помощью раздатчиков. Для последнего задействованы функции Item.setLiquidClip и Item.registerDispenseFunction.
Стандарты для создания локализации
Переводы жидкостей создаются как для самого блока жидкости, так и для ведра, размещающего его. Общий формат переводов ничем не отличается от остальных:
Translation.addTranslation("Ink", {
en: "Ink",
ru: "Чернила"
});
Translation.addTranslation("Bucket of Ink", {
en: "Bucket of Ink",
ru: "Ведро чернил"
});
Помимо перевода самого блока, это задаст еще и перевод в интерфейсе, к примеру в моде Recipe Viewer. Не забывайте про переводы, они также важны как и весь добавляемый контент.
Прочие возможности
Любые взаимодействия с жидкостями должны быть обработаны разработчиком, конкретных событий или рекомендаций здесь нет. Рассмотрите LiquidRegistry для получения подробностей.
Дополнительные свойства
Начнем с дополнительных свойств. Прежде всего, жидкости образуют собственные настройки специального типа, изменяя все тот же послед ний аргумент регистрации блока. Если быть конкретнее, жидкости имеют следующие стандартные настройки:
{
renderlayer: EBlockRenderLayer.BLEND,
rendertype: 4,
material: 5 // если не задан base
}
Эти свойства устанавливаются если не заданы в объекте описания дополнительных свойств, их использование необязательно. Отличительной особенностью регистрации жидкостей является отсутствие возможности использования дополнительных свойств по идентификатору. Они должны быть напрямую переданы в виде объекта.