

VS Lumber
VS Lumber deepens Vintage Story's tree-chopping with per-log voxel wedges.
Description
<p><em>VS Lumber deepens Vintage Story's tree-chopping with per-log voxel wedges. Carve a notch one swing at a time until the trunk gives way.</em></p> <blockquote> <p><strong>Heads up - this mod is early in development.</strong> Vanilla and modded trees that extend the vanilla log via <code>inheritFrom</code> *should* work. <strong>Back up your world before adding any mod to an existing save.</strong></p> </blockquote> <h2><img style="font-size: 16px;" src="https://i.imgur.com/uCHe9M7.gif" width="378" height="523" alt="image"><img src="https://i.imgur.com/SQuFf4r.gif" width="583" height="524" alt="image"></h2> <h2>Why this exists</h2> <p>I play on a server with some mates, where I'm the designated lumberjack. After chopping hundreds of trees, I got a bit jealous that the blacksmith got to play with voxels, so I decided to give wood-cutting it's own particle frenzy. Overall, doesn't change the behaviour from vanilla too much.</p> <h2>Features</h2> <h4 style="padding-left: 40px;"><strong>Per-log voxel wedges</strong></h4> <p style="padding-left: 40px;">Each axe swing carves a notch based on the face and height you swing at. Aiming higher will start the chops higher, aiming lower will chop lower.</p> <h4 style="padding-left: 40px;"><strong>Structural collapse</strong></h4> <p style="padding-left: 40px;">Cut through enough of any slice and the trunk gives way, the vanilla tree fall behaviour still remains</p> <h4 style="padding-left: 40px;"><strong>Tree-size scaling</strong></h4> <p style="padding-left: 40px;">Bigger trees take a longer time per swing.</p> <h4 style="padding-left: 40px;"><strong>Tree regrowth</strong></h4> <p style="padding-left: 40px;">Walk away from a half-chopped tree and the wood slowly fills back in over a couple of in-game days.</p> <h4 style="padding-left: 40px;"><strong>Axe-tier scaling</strong></h4> <p style="padding-left: 40px;">Better axes carve wider wedges and bigger chunks per swing.</p> <h4 style="padding-left: 40px;"><strong>Dull-axe ragged cuts</strong></h4> <p style="padding-left: 40px;"> A worn-down axe leaves a noisy, rough cut surface. A fresh edge produces a cleaner V.</p> <h2>Compatibility</h2> <ul> <li><strong>Universal mod:</strong> install on both client and server for multiplayer.</li> <li>Hooks into the vanilla log blocktype, so modded woods that use <code>inheritFrom: log</code> <em>should</em> be picked up automatically. However, we don't play with any modded trees atm, so I havent tested with any.</li> <li>Currently no required library dependencies.</li> </ul> <p> </p> <h2>Issues</h2> <ul> <li>Sometimes swinging speed and actual chops will get desynced, especially on servers. Letting go of swinging will fix temporarily. Not sure of a good solution right now, or if it would be worthwhile spending the time to do so at this moment.</li> <li>Having more than one person hitting a tree at once, may feel a bit odd.</li> </ul> <h2>Configuration</h2> <p>Generated on first server start at <code>%appdata%\VintagestoryData\ModConfig\vslumber.json</code>. Tune things and restart.</p> <details> <summary><strong>Full configuration reference (click to expand)</strong></summary> <h3>Core</h3> <table> <thead> <tr> <th style="width: 251px;">Key</th> <th style="width: 83px;">Default</th> <th style="width: 863px;">Notes</th> </tr> </thead> <tbody> <tr> <td style="width: 251px;"><code>VoxelResolution</code></td> <td style="width: 83px;">16</td> <td style="width: 863px;">Voxels per log edge. Range [2..64]. Each chopped log keeps its creation resolution. Higher = finer cuts, more memory per log.</td> </tr> <tr> <td style="width: 251px;"><code>IntegrityCollapseThreshold</code></td> <td style="width: 83px;">0.10</td> <td style="width: 863px;">The trunk collapses when any horizontal slice drops below this solidity fraction. 0.10 = "collapse when 90% of a slice is gone".</td> </tr> <tr> <td style="width: 251px;"><code>MaxTreeNodes</code></td> <td style="width: 83px;">4096</td> <td style="width: 863px;">Cap on connected log blocks traversed when finding the tree for calculating swing speed.</td> </tr> <tr> <td style="width: 251px;"><code>TickIntervalMs</code></td> <td style="width: 83px;">1000</td> <td style="width: 863px;">Server heal-tick cadence in real-time ms (min 1000).</td> </tr> <tr> <td style="width: 251px;"><code>MeshDirtyDebounceMs</code></td> <td style="width: 83px;">200</td> <td style="width: 863px;">Combines re-tesselation jobs per log so rapid swings don't thrash chunk meshes.</td> </tr> </tbody> </table> <h3>Regrowth / healing</h3> <table style="height: 89px; width: 1197px;"> <thead> <tr> <th style="width: 252.203px;">Key</th> <th style="width: 82.0625px;">Default</th> <th style="width: 861.734px;">Notes</th> </tr> </thead> <tbody> <tr> <td style="width: 252.203px;"><code>HealCooldownDays</code></td> <td style="width: 82.0625px;">1.0</td> <td style="width: 861.734px;">In-game days after the last hit before regrowth starts.</td> </tr> <tr> <td style="width: 252.203px;"><code>HealPercentPerDay</code></td> <td style="width: 82.0625px;">20.0</td> <td style="width: 861.734px;">Percent of removed voxels restored per in-game day, regrows from existing voxels first..</td> </tr> <tr> <td style="width: 252.203px;"><code>HealSaturationDaysCap</code></td> <td style="width: 82.0625px;">2.0</td> <td style="width: 861.734px;">A cap on how many in-game days of heal can credit in a single tick. Prevents a half-chopped tree from instantly healing when its chunk reloads after being unloaded for a while. Dunno if I'll keep this as on by default in the future.</td> </tr> </tbody> </table> <h3>Axe tier and chop power</h3> <table style="width: 1193px;"> <thead> <tr> <th style="width: 252.203px;">Key</th> <th style="width: 73.0469px;">Default</th> <th style="width: 866.75px;">Notes</th> </tr> </thead> <tbody> <tr> <td style="width: 252.203px;"><code>TierLeniencySteps</code></td> <td style="width: 73.0469px;">3</td> <td style="width: 866.75px;">The "-3" in van
Ratings & reviews
Sign in to leave a rating or comment.

