You are viewing a potentially older version of this package. View all versions.
AETeam-VStacks-1.0.0 icon

VStacks

Managed-only V Rising stack multiplier mod. Defaults to x1000, configurable through VStack.cfg, with extended inventory counts beyond 4095.

Date uploaded 2 weeks ago
Version 1.0.0
Download link AETeam-VStacks-1.0.0.zip
Downloads 22
Dependency string AETeam-VStacks-1.0.0

This mod requires the following mods to function

BepInEx-BepInExPack_V_Rising-1.733.2 icon
BepInEx-BepInExPack_V_Rising

BepInEx pack for V Rising. Preconfigured and includes Unity Base DLLs.

Preferred version: 1.733.2

README

VStacks

VStacks is an open-source, managed-only BepInEx 6 IL2CPP plugin for V Rising that increases InventoryStacksModifier beyond the normal x3 limitation and fixes the vanilla 4095 inventory replication/display ceiling for extended stacks.

The stack multiplier is configurable. The default is x1000.

Package naming: the Thunderstore package is VStacks. The proven internal runtime identifiers remain VStack for compatibility, including VStack.dll, VStack.cfg, the namespace, and plugin GUID.

Configuration

On first launch, the internal VStack plugin creates:

BepInEx/config/VStack.cfg

Edit it with any text editor:

[Stacks]
Multiplier = 1000

Examples:

Multiplier = 10
Multiplier = 100
Multiplier = 500
Multiplier = 1000
Multiplier = 5000

VStacks accepts positive multiplier values from 0.01 to 65504. 65504 is the largest finite half-precision value supported by the game setting path used by the stack-setting hook. Invalid, zero, negative, NaN, or infinite values fall back to the default x1000; values above 65504 are safely reduced to 65504.

Restart V Rising / the server after editing the config file.

What VStack changes

VStacks changes only:

InventoryStacksModifier

It does not uncap or modify unrelated server settings such as drop rates, refinement rates, resource yield, durability, castle settings, or crafting rates.

V Rising's active inventory replication path encodes InventoryBuffer.Amount and MaxAmountOverride as 12-bit values, which limits the replicated count to 4095. VStacks widens only the validated inventory-specific Burst AOT fields to 31 bits, allowing the real stack amount to reach the client inventory UI.

Important: install on server and clients

The extended-count fix changes the InventoryBuffer network bit width. The same VStacks release (which contains VStack.dll) must be installed on the server/host and every connecting client.

Do not mix a VStacks-enabled server with vanilla clients, or a VStacks-enabled client with a vanilla server, while the extended-count patch is active.

For Host & Play, install VStacks in the BepInEx environment used by the host game. For a dedicated server, install the same VStacks release on the dedicated server and on all connecting players.

Managed-only implementation

VStacks ships only one runtime mod assembly:

BepInEx/plugins/VStack/VStack.dll

There is no custom VStack.Native.dll, no MinHook binary, and no version.dll proxy.

The stack-setting hook uses BepInEx's own BepInEx.Unity.IL2CPP.Hook.INativeDetour.CreateAndApply API from managed C#.

The extended-count fix is implemented inside the internal runtime assembly VStack.dll. Production signature matching locates the required code in the already-loaded lib_burst_generated.dll, validates the expected vanilla bytes and match counts, changes only those verified inventory fields in process memory, and restores them on plugin unload.

No game DLL is modified on disk.

Requirements

  • V Rising (Windows x64)
  • BepInExPack V Rising / BepInEx 6 IL2CPP
  • VStack installed on the server/host and every connecting client
  • For Host & Play, the usual ServerLaunchFix setup if required by the server-side BepInEx environment

Installation

Install through Thunderstore/r2modman, or copy:

VStack.dll

to:

BepInEx/plugins/VStack/

Install the same build on the server/host and every client.

Start the game/server once to generate BepInEx/config/VStack.cfg.

Build

dotnet restore src/VStack/VStack.csproj --configfile nuget.config
dotnet build src/VStack/VStack.csproj -c Release --no-restore

GitHub Actions builds both the managed DLL and a Thunderstore-ready ZIP.

Safety / compatibility

The SettingsClamp::Half target is accepted only when its production signature is found exactly once.

The Burst inventory patch is also fail-closed. On the current supported dedicated-server Burst layout it requires exactly 6 matches of each validated server clamp shape, representing 12 inventory fields. On the client layout it requires exactly 6 paired decoder functions, also representing 12 inventory fields. Every target byte must still contain the expected vanilla 12-bit or 4095 value before VStack writes anything.

If a V Rising update changes these layouts, VStack refuses the affected patch instead of modifying an unknown address.

Do not combine VStack with another mod that modifies the same SettingsClamp::Half function or the same Burst InventoryBuffer serialization path unless compatibility has been verified.

Source transparency

The Thunderstore package includes the exact Plugin.cs and VStack.csproj used by CI plus Source/BUILD_COMMIT.txt, which contains the Git commit hash that produced the packaged DLL.

License

MIT. See LICENSE.

Acknowledgements

See ACKNOWLEDGEMENTS.md.

CHANGELOG

Changelog

1.0.1

  • Added cooperative SettingsClamp::Half compatibility for VRates and future compatible OriginEra settings mods.
  • VStacks remains the single native hook owner when compatible mods are installed together.
  • Added a small public registration API for additional named setting overrides.
  • No changes to the proven stack multiplier or Burst 31-bit inventory replication fix.

1.0.0

  • Thunderstore package name is VStacks; internal runtime identifiers remain VStack for compatibility.

  • Initial public release of VStacks.

  • Managed-only BepInEx 6 IL2CPP plugin; no custom native helper DLL, MinHook, or version.dll proxy.

  • Uses BepInEx INativeDetour.CreateAndApply for the stack-setting hook.

  • Changes only InventoryStacksModifier; unrelated server settings pass through unchanged.

  • Adds BepInEx/config/VStack.cfg with a configurable stack multiplier.

  • Default multiplier is x1000.

  • Supports positive multiplier values from 0.01 to 65504.

  • Fixes the vanilla 4095 inventory replication/display ceiling for extended stacks by widening the validated active Burst AOT InventoryBuffer wire fields from 12 bits to 31 bits.

  • Requires the same VStacks release on the server/host and all connecting clients because the inventory network bit width is changed.

  • Uses fail-closed production signature validation and verifies original bytes before changing process memory.

  • Restores Burst memory edits on plugin unload.

  • Removed all development diagnostics, raw wire tracing, UI probes, and the temporary amount-formatter detour from the release source.

  • Includes complete reviewer-facing C# source and BUILD_COMMIT.txt in the Thunderstore package.