Skip to content

0.7.0 — Inventory feature & hardening batch

Choose a tag to compare

@AritoUser AritoUser released this 07 Jul 17:26

Inventory feature & hardening release closing the #213–#245 batch

Security & reliability (core contract v14)

  • Item registry & native hash filter (#242/#245): once a server registers its item
    catalog (items.json), the core rejects any unregistered item hash before allocating —
    killing cheat-spawned items and hash-spam memory exhaustion at the native boundary. Opt-in:
    without a catalog the previous behaviour is unchanged.
  • Atomic weight/slot limits (#213) enforced under the same lock as the mutation (no
    check-then-act race), plus busy/locked container flags (#240/#224) with a 30 s crash
    failsafe.
  • Persistence hardening (#240/#244): per-container serialization + a busy flag around
    every load/save closes the item-loss window in the async gap; each save runs in one SQL
    transaction.
  • Quantity sanity cap (#243): a negative int cast to uint is rejected instead of
    minting ~4 billion items. Rejections now surface a reason (InvResult); the classic
    bool/void APIs stay source-compatible.

Inventory features (core contract v15)

  • Atomic batch primitive (#233): one all-or-nothing takes+gives transaction — the
    foundation for crafting (#223), atomic trades (#225) and the InventoryTransaction
    unit-of-work scope.
  • Unique item instances + metadata (#214): weapons/keys/bags as server-generated u64
    instances (the id doubles as the serial), with an inventory_instances table; the core
    owns the atomic location truth, metadata lives in C#/DB.
  • Category filters (#218), change events (#220), and nested containers (#216).

Gameplay & security layer (flash-core)

  • Container access pipeline (#224/#238/#239): session → rate-limit → distance → ACL/keys
    for every player-driven interaction, blocking remote-looting and macro-spam; violations
    raise flashfw:invViolation (flag-and-log, no auto-ban).
  • Audit logging (#227), loot tables (#228), ground drops in a memory-only band
    (#221/#219), duplication alerts (#241), and opt-in state-bag sync (#215).
  • Lazy item decay (#222) for unique items, container sessions (#236, server half),
    and DX helpers: rejection messages (#235), snapshot queries (#231), a fluent container
    builder (#230), category [ItemHandler]s with metadata injection (#232), and a
    /dumpitems constants generator (#234).

Not applicable: #226 (no slot/stack model to consolidate), #229 (a split is already the
atomic move).


Compatibility: Core contract v15 · FXServer artifact 31689 (Windows) · Flash.Sdk 0.7.0 (NuGet).

Install: download flash-payload-0.7.0.zip, then ./install-flash.ps1 -ServerDir <FXServer> -PayloadDir <extracted>. Resource devs: dotnet add package Flash.Sdk --version 0.7.0.

Full details in CHANGELOG.md.