Hi Folks;

https://github.com/AnExiledDev/StackSizeController/pull/28

PR'd a 4.1.4 version update that includes the following fixes:

# StackSizeController — 4.1.4 patch

Fixes stateful items being made stackable, and items missing from the (stale) repo
`vanilla-defaults.json` being mis-anchored or crashing commands.

## Problems

1. **Liquid containers stack and dupe/lose contents.** `_ignoreList` only protected the
   liquid *unit* items (`water`, `water.salt`), not the containers that hold a variable
   amount of liquid as sub-state. Any global/category multiplier therefore resized
   `waterjug`, `botabag`, `smallwaterbottle`, `bucket.water`, and the water guns.

2. **New items have no fixed vanilla anchor.** `DownloadVanillaDefaults()` re-downloads the
   repo `vanilla-defaults.json` and overwrites the local datafile on **every load**. The
   repo file is stale, so items added by newer Rust updates (e.g. `hazmatsuit.pilot`) are
   absent. For any missing item, `GetVanillaStackSize()` falls back to the item's *live*
   `stackable`, which on a reload is the already-modified value — so it gets multiplied
   again and compounds, and the inflated value gets persisted into
   `IndividualItemStackSize` in the config.

3. **Commands crash on unknown items.** `ItemSearchCommand` and `ListCategoryItemsCommand`
   indexed `_vanillaDefaults[shortname]` directly, throwing `KeyNotFoundException` for any
   item not present in the defaults file.

## Changes

- Added `waterjug`, `botabag`, `smallwaterbottle`, `bucket.water`, `gun.water`,
  `pistol.water` to `_ignoreList`.
- Added config option `UpdateVanillaDefaultsFromRepo` (default `false`). When false, the
  locally-maintained `<plugin>_vanilla-defaults` datafile is used and never overwritten by
  the repo copy. The repo is still fetched once on first install (no local file) as a
  bootstrap, or always when the option is set to `true`.
- Replaced the raw `_vanillaDefaults[...]` indexer with `GetVanillaStackSize()` in both
  listing commands so missing items no longer crash them.
- Folded in **PR #27** by IsaiahPetrichor: null-guard `displayName`/`displayDescription`
  in `ItemSearchCommand` (null on some item definitions → `NullReferenceException`), and
  guard the `CategoryStackMultipliers` lookup with `ContainsKey` in
  `ListCategoryItemsCommand`. Same 4.1.4 version bump.
- Bumped version to `4.1.4` with an explanatory header comment.

## Docs

- Updated `README.md` to match 4.1.4: new "Protected Items" section; corrected the stale
  "datafiles are no longer used" note (this fork *does* use the local vanilla-defaults
  datafile, now authoritative); documented `UpdateVanillaDefaultsFromRepo` in both config
  blocks and the field list; documented the `stacksizecontroller.vd` command and a
  post-update regeneration workflow; expanded the `AllowStackingItemsWithDurability`
  guidance; added a changelog. Version bumped to 4/1/4 in the sample configs.

## Server-owner steps (not code — recommended alongside this patch)

1. Set `AllowStackingItemsWithDurability` to `false` in the config so armor/weapons/tools
   (anything with durability, i.e. attachment/condition sub-state) revert to vanilla stacks
   and stop duping.
2. Regenerate a complete defaults file for your server: temporarily set `GlobalStackMultiplier`
   and every `CategoryStackMultipliers` entry to `1`, reload, run `stacksizecontroller.vd`,
   then restore your multipliers. With `UpdateVanillaDefaultsFromRepo` false, that generated
   file is now authoritative and won't be clobbered.
3. Check `IndividualItemStackSize` in the config for any newer items already sitting at an
   inflated number (e.g. `hazmatsuit.pilot`) and correct or delete those entries — `Populate`
   only *adds* missing keys, it never re-reads existing ones.
4. Re-run `stacksizecontroller.vd` (multipliers at 1) after each wipe/game update to pick up
   newly added items.