Shifting Wares
Активный0.0
Установок
Последнее обновление
Версии
Shifting Wares
Этот модификатор преображает взаимоотношения с сельскими жителями в Minecraft, вводя систему периодического обновления их торговых предложений. Жители деревни теперь самостоятельно заменяют свои товары до трёх раз в течение дня, что делает взаимодействие с ними более динамичным и интересным.
Особенно ощутимы изменения у тех профессий, которые торгуют зачарованными предметами или окрашенными вещами — теперь один такой торговец сможет со временем предложить гораздо более разнообразный ассортимент.
Основные преимущества
Модификация снижает эффективность эксплуататорских стратегий игры, одновременно делая случайные находки и спонтанные открытия более ценными. Теперь идеальные сделки у жителей не сохраняются вечно, а неудачные предложения со временем становятся лучше. Хотя теоретически один житель может предоставить всё необходимое, наличие нескольких представителей одной профессии всё равно полезно для повышения шансов на получение конкретного товара.
Поскольку все торговые предложения со временем устаревают, жителей становится проще заменить в случае их гибели. Теперь можно позволить им свободно перемещаться по территории без серьёзного риска для вашей экономики.
Механизмы обновления торговли
Модификация предоставляет две настраиваемые игровые правила, которые контролируют процесс обновления предложений (обе функции активны по умолчанию).
- shiftingWares.dailyReroll: Заставляет жителей полностью обновлять все свои предложения один раз в день при первом посещении рабочего места.
- shiftingWares.depleteReroll: Вызывает обновление любых полностью исчерпанных торговых предложений при каждом посещении рабочей станции. Также предотвращает пополнение запасов у предложений, у которых остались доступные использования.
Особенности карт исследователя
Minecraft постоянно сохраняет все созданные карты и блокирует появление их структур на других картах исследователя. Чтобы предотвратить ежедневное обновление бесконечного количества непроданных карт, эти сделки обрабатываются особым образом.
По умолчанию предложения с картами никогда не обновляются. Они могут быть заменены только при включении правила shiftingWares.allowMapReroll и если сделка была использована хотя бы один раз.
Защита рабочих станций
Разрушение и замена рабочей станции жителя больше не заставляет его заменять свои торговые предложения. Первоначальные сделки генерируются с использованием детерминированного случайного алгоритма, где UUID жителя служит исходным значением.
Это поведение регулируется правилом shiftingWares.workstationProtection.
Технические детали
Если житель не может сгенерировать предложение для слота, он заменяется пустой сделкой. В ванильной версии это должно происходить только с картографами, которые не способны создавать карты исследователей в мирах без структур.
Эти пустые заполнители необходимы для обеспечения обновления предложений эквивалентного уровня, поскольку позиция сделки в списке — единственный показатель её уровня. Заполняющие сделки никогда не занимают место действительных предложений — они появляются только тогда, когда все другие варианты исчерпаны.
Как побочный эффект этой модификации, механизм «Бонуса спроса» значительно ослабляется, поскольку данные о бонусе спроса удаляются вместе с обновляемыми предложениями.
Обновление исчерпанных сделок имеет шанс привести к дублирующим предложениям.
Для разработчиков
По умолчанию Shifting Wares предполагает 2 сделки на уровень и берёт свои пулы предложений из того же источника, что и ванильная версия. Другие модификации могут переопределить это поведение, используя точку входа shifting-wares и реализуя интерфейс ITradeLayoutProvider.
Если ваша модификация содержит пользовательские реализации фабрик торговли картами или производит другие предметы с постоянными данными, вы можете сообщить Shifting Wares, что они должны быть постоянными, реализовав методы, определённые в интерфейсе IShiftingTradeFactory. Для этого не требуется зависимость от Shifting Wares — достаточно предоставить методы с соответствующими именами и прототипами.