Healthy DietFEATURE GUIDE Русский
04 / SHELF LIFE

От настроек до расчёта: понимание срока годности еды.

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

Восемь подстраницРасчёт сервераКонтейнеры и мультиОфлайн-реестр
Сначала различите три величины: базовое время хранения — настройка, текущая температура и оставшееся время — состояние выполнения. Датапаки сервера и фактическое состояние предмета у игрока могут различаться.

01Что происходит за один расчёт

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

Базовое времяЦелые минуты
Среда меняет температуруПрирода / холодильник / морозильник
Множители и холодная свежестьКривые / измерения / сохранность
ИстечениеИсчезновение или продукт

Температурные кривые регулируют скорость порчи; подстраница «Эффекты» регулирует эффекты при употреблении. Это независимые списки: настройка эффекта не меняет срок годности автоматически.

Игровой день и реальный день различаются: 1 игровой день = 20 минут, 1 день = 1440 минут; при сохранении в durationMinutes берутся целые минуты. Встроенные предметы могут переопределять начальную температуру класса 10℃; не считайте значение класса начальной температурой всей еды.
Источник: ShelfDurationUnit, S2ShelfConfig, ShelfTemperatureCurve.effectiveRate.

02Восемь подвкладок редактора

Восемь вкладок ниже совпадают с порядком редактора «Срок годности» в игре. Выберите вкладку, чтобы увидеть поля, назначение и границы; веб-страница не сохраняет настройки.

01 / Время и поведение при истечении

Срок годности

Задаёт базовое время хранения нового предмета и базовый множитель порчи. Кнопки единиц переключают минуты, часы, дни и игровые дни; ввод может содержать дробь, при сохранении переводится в целые минуты. Без множителя для измерения используется ×1.

ПолеНазначение
Срок годности / базовый множитель порчиОпределяют начальное время и базовую скорость порчи; 0 означает отсутствие базового снижения.
Продукт истечения / наследование температурыЗаменяет предмет при истечении; minecraft:air означает исчезновение. При наследовании продукт получает только температуру момента истечения, его срок годности начинается заново.
Команда истеченияВыполняется от контекста держателя, когда предмет истекает в руке; пустое значение отключает. В контейнере или у выпавшего предмета не срабатывает.
Множители по измерениямМножитель порчи по ID измерения, например Нижний мир может отличаться от Верхнего мира; это не смещение температуры.
Источник: ItemConfigEditScreenV2.buildShelfEditor, S2ShelfConfig.durationMinutes, ShelfDimensionMultiplier.

03Время вне инвентаря и защита в мультиплеере

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

Два вида часов и авторитет сервера

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

Порча, температура и свежесть рассчитываются сервером; клиент видит только снимок. Числа в подсказке идут по текущей скорости, присланной сервером, но истинное значение всегда на сервере; изменение клиента не создаёт свежую еду. Текст и цвета подсказки также определяются файлами схем сервера.

Смена владельца, вход и смена измерения

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

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

Кто владелец предмета

Еда со сроком годности получает метку владельца в момент помещения в контейнер. Другие игроки видят красную рамку и не могут забрать; защищённую еду на земле тоже нельзя подобрать. Холодильники и терминалы Tom подчиняются тем же правилам.

Только «помещение в контейнер» создаёт владельца: если взять половину из сундука в мире, остаток не становится вашим от прикосновения, другие могут забрать его. Наоборот, еда, никогда не бывшая в контейнере, не имеет владельца: только что созданную или подобранную еду можно свободно отдать. После метки владелец следует за предметом, и возврат из своего сундука в инвентарь сохраняет владельца.

Удерживайте S: если владелец не вы, внизу появится строка «Владелец предмета». Одинаковая еда разных владельцев не стакается и делится на два стака, чтобы метки не перезаписывались.

Список доверия и передача владения

/hdtrust управляет списком доверия для ваших защищённых предметов, OP не нужен:

КомандаДействие
/hdtrust add <игрок>Добавляет игрока в сети в текущий список; он может брать вашу защищённую еду.
/hdtrust remove <игрок>Убирает из текущего списка, но сохраняет историю «ранее доверял»; уже взятые и не возвращённые предметы переходят ему.
/hdtrust forget <игрок>Удаляет текущий список и историю, далее считается, что доверия не было.
/hdtrust listПоказывает текущий и прошлый списки; нажатие на имя удаляет или снова доверяет.

Доверие всегда относится к первоначальному владельцу: если друг забрал вашу еду и положил в свой сундук, владельцем остаётесь вы. Если вы сами выбросили еду, это считается подарком и метка снимается; если друг забрал и выбросил — тоже.

Смерть не считается подарком: еда без владельца получает вашу метку в момент смерти, уже помеченная сохраняет прежнего владельца; посторонние не подберут, вы и доверенные друзья можете подобрать после возрождения. Если на сервере включено removeOwnerOnDeathDrop (для PvP), защита смерти снимается и подобрать может любой.

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

Когда все в офлайне, еда в контейнерах не портится

Пока владелец защищённой еды и все текущие доверенные игроки не в сети, время в сундуках, холодильниках и других контейнерах не учитывается; если хоть один имеющий право игрок в сети, расчёт идёт обычном порядке.

Пример: A доверяет B. A выходит в 20:00, B — в 22:00, на следующий день в 08:00 A открывает сундук. С 20:00 до 22:00 B в сети, эти 2 часа считаются; с 22:00 до 08:00 оба не в сети, эти 10 часов не считаются.

Сервер записывает периоды «все не в сети» в офлайн-реестр; сундук рассчитывается при открытии, поэтому списание происходит, когда кто-то возвращается. Реестр хранит только периоды после включения; более раннее офлайн-время не восстанавливается. Защищённая еда на земле не получает эту защиту и портится.

Контейнеры, добыча и выпавшие предметы

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

Открытие сундука, нажатие на предмет или S сразу выполняет расчёт. Еда, ещё не начавшая отсчёт (вставленная командой или другим модом, старая до настройки срока), получает метку и начинает отсчёт при открытии или S. При разрушении сундука время сначала выравнивается, состояние холодильника очищается, затем предметы выпадают; воронки и трубы подчиняются правилам объединения, при слиянии берётся худшая часть.

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

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

Размещённая еда вроде торта использует мировое время: при загрузке чанка расчёт один раз, один чанк не чаще раза в 3 минуты; принудительно загруженные чанки (FTB Chunks) — раз в минуту. Испорченный торт исчезает или выдаёт продукт; уже испорченный торт при установке сразу становится продуктом. Нетронутый торт можно сломать и получить с прежним сроком, надкушенный — нельзя.

С Jade при наведении на выпавшую еду в HUD добавляется строка срока с точностью до секунды и процентом с одним знаком; данные также с сервера. Еда в сундуках и руке по-прежнему использует подсказку предмета.

Пороги стака и объединения

УсловиеПорог по умолчанию
Разница оставшегося срокаНе более 5 минут
Разница температурыНе более 10℃
Разница холодной свежестиНе более 20 (шкала 0–100)

Нужны все три условия; после объединения берётся худшая часть, свежая еда не «отмывает» испорченную. Пороги настраиваются в разделе shelfMerge файла config/healthy_diet/server.json. Выпавшие предметы стакаются только при полном совпадении данных; два предмета с разным пределом холодоёмкости тоже не объединяются.

Команда и продукт истечения

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

Источник: S2Engine, S2Handler, S2OfflineLedger, S2StackMerge, TrustManager, HDTrustCommand, PlacedFoodRefresh.
Далее об отображенииСтроки срока в обычной подсказке и подробностях S управляются макетом и правилами подсказки.
Открыть подсказки →