Skip to content

TimberCommons

Igor Zavoychinskiy edited this page Jun 20, 2026 · 5 revisions

Обзор

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

Большинству авторов блюпринтов нужны только следующие разделы. Низкоуровневые точки расширения для C# описаны в конце страницы.

Создание ирригационной башни

Есть два готовых компонента башен:

  • GoodConsumingIrrigationTower для простой башни, работающей на одном потребляемом товаре, обычно воде.
  • ManufactoryIrrigationTower для башни на основе рецептов, которая потребляет ингредиенты через стандартную логику manufactory.

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

Общие поля башни

Обе спецификации башен используют эти поля:

  • IrrigationRange - максимальная дальность орошения от фундамента здания.
  • IrrigateFromGroundTilesOnly - необязательное поле, по умолчанию true. Если включено, башня начинает поиск зоны только от блоков фундамента, помеченных как ground-only.

Полезные детали зоны для авторов блюпринтов:

  • Дальность считается от фундамента здания, а не от одной центральной клетки.
  • Затрагиваемые клетки должны быть связаны с башней и находиться на уровне земли башни.
  • Препятствия местности и full-moisture barriers могут блокировать зону.
  • Эффективность здания может уменьшать активную дальность.

Простая башня с потреблением товара

Используйте GoodConsumingIrrigationTower, когда здание должно потреблять ровно один товар.

Обязательные компоненты:

  • GoodConsumingBuilding
  • GoodConsumingBuildingSpec с ровно одним ConsumedGoodSpec
  • GoodConsumingIrrigationTowerSpec

Поля GoodConsumingIrrigationTowerSpec:

  • IrrigationRange
  • IrrigateFromGroundTilesOnly

Башня потребляет товары только пока у нее есть достижимые клетки. Если на здании также есть компоненты range-effect, все они активны, когда башня орошает.

Пример блюпринта (Timberborn 1.1)

Полный JSON-документ в форме blueprint можно посмотреть здесь: ExampleIrrigationTower.Folktails.blueprint.json.

Полный пример рассчитан на Timberborn 1.1 и подходит для TimberCommons 1.16.0 и 1.16.1 (TBD). Замените template name, ключи локализации, icon, путь к модели, стоимость, tool group и числовые значения на свои, а затем проверьте blueprint в целевой версии игры.

Специфичная для TimberCommons часть маленькая:

{
  "GoodConsumingBuildingSpec": {
    "FullInventoryWorkHours": 24,
    "ConsumedGoods": [
      {
        "GoodId": "Water",
        "GoodPerHour": 1.0
      }
    ]
  },
  "GoodConsumingIrrigationTowerSpec": {
    "IrrigationRange": 8,
    "IrrigateFromGroundTilesOnly": true
  }
}
  • GoodConsumingBuildingSpec говорит игре, какой товар потребляет здание.
  • GoodConsumingIrrigationTowerSpec превращает здание в ирригационную башню и задает ее дальность.

Остальная часть полного blueprint - обычная структура здания Timberborn: размещение, форма блоков, подпись, driveway, точка доступа, визуальная модель и коллайдеры.

Для Timberborn 1.1 DrivewayModelsSpec является root spec для моделей driveway, а отдельные записи driveway помещаются в массив Driveways. Не используйте DrivewayModelSpec как root spec в блюпринтах Timberborn 1.1.

Для Timberborn 1.0 проверяйте эту же идею по игровым ассетам Timberborn 1.0 перед публикацией. Root specs блюпринтов могут отличаться между версиями игры, и ключ, допустимый в одной версии, может падать в другой.

Башня на основе рецептов

Используйте ManufactoryIrrigationTower, когда здание должно потреблять разные наборы ингредиентов через рецепты.

Обязательные компоненты:

  • Manufactory
  • ManufactorySpec
  • ManufactoryIrrigationTowerSpec

Не настраивайте другой production executor, например workplace или production increaser. Башня сама управляет производством manufactory.

Поля ManufactoryIrrigationTowerSpec:

  • IrrigationRange
  • IrrigateFromGroundTilesOnly
  • Effects - необязательные сопоставления рецептов и групп эффектов в формате <recipe id>=<effect group>.

Пример:

Water=NormalIrrigation
Fertilizer=GrowthBoost

Башня орошает, пока manufactory не заблокирована и готова производить. Если настроены Effects, активны только range effects, соответствующие группе эффекта текущего рецепта.

Встроенные range effects

Range effects - это необязательные компоненты, которые можно добавить на prefab ирригационной башни.

Изменение роста растений

ModifyGrowableGrowthRangeEffect изменяет скорость роста растений в активной зоне.

Поля ModifyGrowableGrowthRangeEffectSpec:

  • EffectGroup - имя группы, используемое ManufactoryIrrigationTower. GoodConsumingIrrigationTower его игнорирует.
  • GrowthRateModifier - относительный модификатор в процентах. Например, 15.5 означает +15.5%, а -8.5 означает -8.5%.
  • ComponentsFilter - необязательные полные имена типов компонентов. Если список задан, растение подходит, когда у него есть любой из перечисленных компонентов.
  • TemplateNamesFilter - необязательные точные имена template из TemplateSpec.TemplateName растения.

PrefabNamesFilter устарел в TimberCommons 1.16.1 (TBD). Он пока остается только для временной совместимости со старыми блюпринтами, но в новых спеках его использовать не следует.

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

Блокировка загрязнения

BlockContaminationRangeEffect блокирует загрязнение в активной зоне.

Поля BlockContaminationRangeEffectSpec:

  • EffectGroup - имя группы, используемое ManufactoryIrrigationTower. GoodConsumingIrrigationTower его игнорирует.

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

Чеклист

Для нового блюпринта башни:

  • Выберите GoodConsumingIrrigationTower для одного потребляемого товара или ManufactoryIrrigationTower для рецептов.
  • Добавьте соответствующий компонент здания Timberborn и его спецификацию.
  • Задайте IrrigationRange.
  • Настройте потребление или рецепты для полного покрытия.
  • Добавьте встроенные range effects, если башня должна делать что-то кроме орошения.
  • Для башен на основе рецептов сопоставьте id рецептов с группами эффектов через Effects.

Точки расширения C#

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

public interface IRangeEffect {
  public string EffectGroup { get; }
  public void ApplyEffect(HashSet<Vector3Int> tiles);
  public void ResetEffect();
}

ApplyEffect получает текущие достижимые клетки. ResetEffect должен отменить все, что сделал последний вызов ApplyEffect. Компоненты башни могут вызывать эти методы повторно при изменении покрытия, рецепта, местности, барьеров или состояния здания.

Для более глубокой интеграции наследуйтесь от IrrigationTower только если готовые компоненты башен не подходят к модели здания.

Clone this wiki locally