

Offline No Spoil
Preserves perishable food in offline inventories and configured containers.
Description
<div style="border-left: 4px solid #3182ce; padding: 8px 12px; margin: 12px 0; background-color: #ebf8ff;"><p><strong data-start="21" data-end="67" data-is-last-node="">Recommended: Download version 1.6.1-pre.3.</strong></p> <p>中文玩家文档:<a href="https://vscn.studio/docs/offlinenospoil" target="_blank" rel="noopener">https://vscn.studio/docs/offlinenospoil</a></p> <p><span style="color: #e03e2d;">This mod is not intended to be actively maintained. I will only update it when serious issues arise for players on Chinese servers. If you need more frequent updates and maintenance, you can consider using another similar mod instead.</span></p> <p><span style="color: #169179;">Recommended mods:<a style="color: #169179;" href="https://mods.vintagestory.at/noofflinecontainerfoodspoil"> No Offline Container Food Spoil</a><a class="decorated-link" href="https://mods.vintagestory.at/offlinefoodnospoil" target="_new" rel="noopener" data-start="111" data-end="183" data-is-last-node="">、</a><a style="color: #169179;" href="https://mods.vintagestory.at/offlinefoodnospoil">No offline food spoil</a></span></p> </div> <div style="border-left: 4px solid #e03e2d; padding: 8px 12px; margin: 12px 0; background-color: #fff5f5;"> <p class="PDq2pG_selectionAnchorContainer" data-start="0" data-end="140"><span style="color: #e03e2d;">Starting with <strong data-start="171" data-end="188">version 1.4.1</strong>, the mod is now a <strong data-start="207" data-end="242">Universal mod (client + server)</strong>, fixing an issue where clients generated a large number of “OfflineNoSpoil behavior not found” warnings when joining a server.</span><br data-start="369" data-end="372"><span style="color: #e03e2d;"><strong data-start="372" data-end="389">Version 1.4.0</strong> remains a <strong data-start="400" data-end="424">server-side-only mod</strong> with the same functionality.</span></p> </div> <p class="isSelectedEnd">The author is currently busy with studies, graduation, and the anxiety surrounding future employment — an important stage of life that requires a significant amount of time and energy. Because of this, it is simply not practical to manually write a complete tutorial for every feature. These mods also provide no direct financial benefit; they are mainly developed to improve the experience of servers and players.</p> <p class="isSelectedEnd">If you have any questions about the documentation or features, or if you encounter a bug, feel free to @mention me in the comments. I will try to respond as soon as possible and fix confirmed issues.</p> <p class="isSelectedEnd">Due to limited time and resources, <strong>issues affecting Chinese servers and serious bugs will be given priority</strong>. Thank you for your understanding and support.</p> <p> </p> <p><strong><a href="https://offlinenospoil-vintagestory.netlify.app/">Configuration generator</a> with an ECharts spoilage timeline and editable JSON loading.</strong></p> <h2 id="rules">1. How protection is decided</h2> <h3>A container must first be eligible</h3> <p>The mod handles a container only when all of the following are true:</p> <ol> <li><code>Enabled</code> and <code>ProtectPlacedContainers</code> are both <code>true</code>.</li> <li>The block code matches at least one entry in <code>ContainerBlockCodePatterns</code>.</li> <li>The container does not trigger a slot, work, policy, or claim-lookup safety fallback. While work is merely queued or deferred, its live spoilage multiplier still follows the current state.</li> </ol> <p>Otherwise the game uses normal spoilage rules from Vanilla or other mods. Offline No Spoil changes only spoilage; drying, curing, ripening, melting, hardening, and machine processing are unaffected.</p> <h3>Player hotbar and backpack</h3> <p>By default, only <code>hotbar</code> and <code>backpack</code> inventories are handled. After a player disconnects, the mod records in-game calendar time. When that player fully joins again, non-empty slots are processed in batches. A <code>PlayerInventorySpoilMultiplier</code> of <code>0</code> skips all offline spoilage, <code>0.5</code> skips half, and <code>1</code> uses normal spoilage. Set <code>MaxPlayerPerishHours</code> to cap actual perish time per login; for example, <code>168</code> allows at most seven in-game days of actual spoilage. Nested food in an item's <code>contents</code> attribute is also processed recursively. Separate slot and nested-work budgets prevent complex items from consuming one server tick.</p> <p>The task captures item references at login, so items acquired or replaced afterward never inherit an older offline interval. If the server restarts before that inventory task finishes, those in-memory references cannot be verified safely; the unfinished interval falls back to normal spoilage. Later offline sessions are still recorded and protected normally. With <code>ShowOfflineNoSpoilInfo</code> enabled, player food tooltips append a fixed short block:</p> <pre><code>Offline No Spoil Offline spoilage rate: 20% Actual cap: 7d</code></pre> <div style="border-left: 4px solid #e03e2d; padding: 8px 12px; margin: 12px 0; background-color: #fff5f5;"><strong>No historical reconstruction:</strong> the mod can compensate only time it successfully recorded. It cannot reliably restore spoilage from before installation or before a disconnect/protection baseline was recorded.</div> <h3>Container categories and subjects</h3> <table style="border-collapse: collapse; width: 100%;" border="1"> <thead> <tr> <th style="padding: 6px 8px; text-align: left;">Container location</th> <th style="padding: 6px 8px; text-align: left;">Protection subject</th> <th style="padding: 6px 8px; text-align: left;">Switch</th> <th style="padding: 6px 8px; text-align: left;">Default</th> </tr> </thead> <tbody> <tr> <td style="padding: 6px 8px; vertical-align: top;">One unambiguous private land claim</td> <td style="padding: 6px 8px; vertical-align: top;">Claim owner, owner group, and players/groups explic
Ratings & reviews
Sign in to leave a rating or comment.

