EclexToolkit 1.0.2

dotnet add package EclexToolkit --version 1.0.2
                    
NuGet\Install-Package EclexToolkit -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EclexToolkit" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EclexToolkit" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="EclexToolkit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EclexToolkit --version 1.0.2
                    
#r "nuget: EclexToolkit, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EclexToolkit@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EclexToolkit&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=EclexToolkit&version=1.0.2
                    
Install as a Cake Tool

ec'lex's Toolkit

A two-part mod for Unturned (3.x) that adds quick-stacking, restocking, and inventory sorting:

  • Server plugin (OpenMod) — 20 commands covering inventory management, survival utilities, and admin tools; plus automatic features like death feed, auto-sort/stack on open, item magnet, and persistent career stats
  • Client module (native Unturned module) — adds four buttons to the inventory screen so you can run the most-used commands without typing

Inspired by Terraria's quick-stack, sort, and pocket-storage features.


Features

Command What it does
/quickstack (alias /qs) Scans nearby storage containers. For each item in your non-equipped inventory, if a container already holds that item type, move as many as will fit into it.
/restock (alias /rs) The inverse of /quickstack — pulls items from nearby containers into your inventory, but only for item types you are already carrying.
/repair Restores durability to 100 on all items in your inventory (including equipped slots).
/repair container Same, but for the storage container you currently have open. Also accepts /repair chest or /repair storage.
/repair vehicle Repairs the hull of the vehicle you are currently inside. Also accepts /repair car or /repair truck.
/heal Restores health, food, water, and virus resistance to full, and clears bleeding and broken bones.
/stats Prints all vitals in chat: HP, food, water, virus, stamina, and bleeding/broken status.
/compass Shows your current facing direction (N/NE/E/…) and world coordinates.
/maxskills (alias /ms) Max out all of your skills instantly.
/experience <amount> (alias /xp) Award yourself experience points.
/item <name\|id> [amount] (alias /i) Give yourself any item by name or numeric ID.
/time [day\|night\|dawn\|dusk\|<value>] Check or set the time of day.
/weather [clear\|rain\|storm] Set the weather for all players on the server.
/clear [all] Drop all items from your storage pages onto the ground. all also clears equipped slots.
/die Kill yourself for a quick respawn.
/god [status] Toggle invincibility, or check current state with /god status. Blocks all incoming damage while active.
/home [set|clear] Set your home at current position or teleport back to it. /home set to save, /home to teleport, /home clear to remove.
/warp <name> Teleport to a named warp point. /warp set <name> to save, /warp delete <name> to remove, /warp list to see all.
/ping Show your current server ping in milliseconds.
/magnet Toggle item magnet — auto-collects ground items within a configurable radius every second.
/pocket set Designate the container you currently have open as your personal pocket storage.
/pocket or /pocket out Pull all items from your pocket container directly into your inventory, regardless of distance.
/pocket in Push your inventory items into your pocket container.
/sort Sorts your inventory (all non-equipment pages) by category, then alphabetically by name, then compacts.
/sort container Same, but for the storage container you currently have open. Also accepts /sort chest or /sort storage.

Sort order: Guns → Melee → Throwables → Attachments & ammo → Medical → Food & water → Clothing → Tools → Buildables → Misc

Automatic features

Feature What it does
Death feed Broadcasts a randomly picked message to all players when someone dies. Fully configurable — edit the message pool in config.yaml. Uses {player} and {cause} placeholders.
Auto-sort / auto-quick-stack on open Optionally sort or quick-stack a container the moment you open it. Off by default — enable per-feature in config.
Item magnet When /magnet is active, automatically hoovers nearby ground items into your inventory every second. Radius configurable in config.
Persistent career stats Tracks player kills, deaths, and total playtime across restarts. Saved to openmod/plugins/EclexToolkit/player_stats.json. Shown in /stats.
Pocket storage Each player can designate one container as their personal pocket. Items transfer instantly between inventory and pocket with /pocket, regardless of distance. Pocket assignments survive server restarts.

Project structure

QuickStack/
  Plugin/                          ← OpenMod server plugin
    Commands/
      QuickStackCommand.cs         ← /quickstack (alias /qs)
      RestockCommand.cs            ← /restock (alias /rs)
      RepairCommand.cs             ← /repair [container|vehicle]
      HealCommand.cs               ← /heal
      StatsCommand.cs              ← /stats
      CompassCommand.cs            ← /compass
      MaxSkillsCommand.cs          ← /maxskills (alias /ms)
      ExperienceCommand.cs         ← /experience (alias /xp)
      ItemCommand.cs               ← /item (alias /i)
      TimeCommand.cs               ← /time
      WeatherCommand.cs            ← /weather
      ClearCommand.cs              ← /clear
      DieCommand.cs                ← /die
      GodCommand.cs                ← /god
      PingCommand.cs               ← /ping
      SortCommand.cs               ← /sort
      MagnetCommand.cs             ← /magnet
      PocketCommand.cs             ← /pocket [set|in|out]
      HomeCommand.cs               ← /home [set|clear]
      WarpCommand.cs               ← /warp <name> [set|delete|list]
    Events/
      PlayerEventListener.cs       ← death feed + kill/death stats + session tracking
      StorageOpenListener.cs       ← auto-sort/stack on container open
    Services/
      IQuickStackService.cs
      QuickStackService.cs
      IRestockService.cs
      RestockService.cs
      IRepairService.cs
      RepairService.cs
      ISortService.cs
      SortService.cs
      IGodModeService.cs
      GodModeService.cs
      IPlayerStatsService.cs
      PlayerStatsService.cs
      IItemMagnetService.cs
      ItemMagnetService.cs
      MagnetTicker.cs
      IPocketStorageService.cs
      PocketStorageService.cs
      IHomeService.cs
      HomeService.cs
      IWarpService.cs
      WarpService.cs
    EclexToolkitPlugin.cs
    openmod.yaml
    config.default.yaml
  Client/                          ← Unturned client module (optional UI)
    UI/
      InventoryButtons.cs          ← IMGUI buttons injected into inventory screen
    EclexToolkitNexus.cs           ← IModuleNexus entry point
    EclexToolkit.module            ← module manifest
    EclexToolkit.Client.csproj

Installation

Requirements: Unturned dedicated server (3.x) with OpenMod for Unturned installed.

Run this command in your server console or RCON:

om install EclexToolkit@1.0.1

Then fully restart the server (not just om reload — OpenMod cannot hot-swap plugin code). On next startup, OpenMod will create Servers/<name>/OpenMod/plugins/EclexToolkit/config.yaml with defaults.


Automated (building from source)

install.bat in the repo root walks you through the options interactively — just double-click it. It calls install.ps1 automatically with the right flags and keeps the window open so you can read the output.

install.bat      ← double-click this

Alternatively, run the PowerShell script directly:

.\install.ps1

What it does:

  1. Downloads and installs the latest OpenMod for Unturned into your U3DS (skipped if already present)
  2. Builds the plugin, packages it as a .nupkg, and registers it in OpenMod's packages.yaml
  3. Auto-detects your Unturned game client and deploys the UI module to <Unturned>/Modules/EclexToolkit/

Common flags:

Flag Description
-U3DSPath <path> Path to U3DS root if not auto-detected
-ServerName <name> Server folder name under U3DS/Servers/ if not auto-detected
-UnturnedClientPath <path> Path to Unturned client root if not auto-detected
-NoBuild Skip dotnet build — use pre-compiled DLLs already in the bin/ directories
-SkipOpenMod Skip the OpenMod installation check
-SkipClient Skip the client module install (server only)

Note: After running install.ps1, do a full server restart. om reload does not reload plugin code.


Manual — client module (optional UI buttons)

Each player who wants the inventory buttons installs this on their own machine. Neither side requires the other to have it.

  1. Build Client/EclexToolkit.Client.csproj or take EclexToolkit.Client.dll from Client/bin/Debug/net461/.

  2. Create a folder inside your Unturned Modules/ directory (same folder as Unturned.exe):

    Unturned/Modules/EclexToolkit/
    
  3. Copy both files into that folder:

    • EclexToolkit.Client.dll
    • Client/EclexToolkit.module
  4. Launch Unturned. When you open your inventory in-game, four buttons appear in the bottom-right corner of the screen (above the hotbar):

    • Quick Stack/quickstack — consolidate inventory into nearby containers
    • Restock/restock — pull items from nearby containers
    • Sort Inventory/sort — organize your backpack
    • Sort Container/sort container — organize open container

The buttons send the corresponding chat command to the server when clicked. They only appear while the inventory screen is open. The /repair command is still available via chat (type /repair manually) but not on the UI buttons.


Configuration

After the first server start, edit Servers/<name>/OpenMod/plugins/EclexToolkit/config.yaml:

radius: 10.0

autoOnOpen:
  enabled: false
  sort: false
  quickStack: false

deathFeed:
  enabled: true
  messages:
    - "{player} failed the vibe check. Administered by: {cause}."
    # ... edit the full pool in config.yaml

magnet:
  defaultRadius: 5.0
Key Type Default Description
radius float 10.0 Search radius in metres for /qs and /restock
autoOnOpen.enabled bool false Master switch for auto-sort/stack on container open
autoOnOpen.sort bool false Sort the container contents when it is opened
autoOnOpen.quickStack bool false Push matching items from your inventory when a container is opened
deathFeed.enabled bool true Broadcast a death message to all players when someone dies
deathFeed.messages list (50 defaults) Pool of message templates; {player} and {cause} are replaced at runtime
magnet.defaultRadius float 5.0 Collection radius in metres for the item magnet

Persistent data files (auto-created on first use):

  • Servers/<name>/OpenMod/plugins/EclexToolkit/player_stats.json — career stats (kills, deaths, playtime)
  • Servers/<name>/OpenMod/plugins/EclexToolkit/homes.json — player home positions
  • Servers/<name>/OpenMod/plugins/EclexToolkit/warps.json — named warp points
  • Servers/<name>/OpenMod/plugins/EclexToolkit/pocket_storage.json — designated pocket container positions

Reload without restarting:

/openmod reload EclexToolkit

Building from source

Requirements

  • .NET SDK (supports .NET Framework 4.6.1 targets)
  • Unturned dedicated server or game client installed

Getting the game DLLs

Both projects reference DLLs from the Unturned managed directory. Update the HintPath values in each .csproj to your install:

Install type Path
Steam (game client) Steam\steamapps\common\Unturned\Unturned_Data\Managed\
SteamCMD (dedicated server) steamapps\common\U3DS\Unturned_Data\Managed\

Build server plugin

dotnet build Plugin/EclexToolkit.csproj

Output: Plugin/bin/Debug/net461/EclexToolkit.dll

Build client module

dotnet build Client/EclexToolkit.Client.csproj

Output: Client/bin/Debug/net461/EclexToolkit.Client.dll


Contributing

Exploring the Unturned API

The projects compile against Assembly-CSharp.dll directly. To read or verify API signatures you need to decompile it. Do not commit decompiled output.

Step 1 — Install a decompiler

Step 2 — Open the DLL

Open Unturned_Data\Managed\Assembly-CSharp.dll. The namespaces you'll use are SDG.Unturned (inventory, barricades, UI) and UnityEngine.

Step 3 — Export for IDE browsing (optional)

In ILSpy: File → Save Code… — export to a folder outside this repo and open it as a read-only reference project.

Guidelines

  • Verify SDG API calls against the decompiled source before using them — method signatures are not stable across game updates.
  • Keep services stateless where possible.
  • Test on a local dedicated server before committing.
Product Compatible and additional computed target framework versions.
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 81 6/1/2026
1.0.1 95 5/31/2026
1.0.0 81 5/31/2026