EclexToolkit 1.0.2
dotnet add package EclexToolkit --version 1.0.2
NuGet\Install-Package EclexToolkit -Version 1.0.2
<PackageReference Include="EclexToolkit" Version="1.0.2" />
<PackageVersion Include="EclexToolkit" Version="1.0.2" />
<PackageReference Include="EclexToolkit" />
paket add EclexToolkit --version 1.0.2
#r "nuget: EclexToolkit, 1.0.2"
#:package EclexToolkit@1.0.2
#addin nuget:?package=EclexToolkit&version=1.0.2
#tool nuget:?package=EclexToolkit&version=1.0.2
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
Server plugin — via OpenMod (recommended)
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:
- Downloads and installs the latest OpenMod for Unturned into your U3DS (skipped if already present)
- Builds the plugin, packages it as a
.nupkg, and registers it in OpenMod'spackages.yaml - 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 reloaddoes 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.
Build
Client/EclexToolkit.Client.csprojor takeEclexToolkit.Client.dllfromClient/bin/Debug/net461/.Create a folder inside your Unturned
Modules/directory (same folder asUnturned.exe):Unturned/Modules/EclexToolkit/Copy both files into that folder:
EclexToolkit.Client.dllClient/EclexToolkit.module
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
- Quick Stack —
The buttons send the corresponding chat command to the server when clicked. They only appear while the inventory screen is open. The
/repaircommand is still available via chat (type/repairmanually) 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 positionsServers/<name>/OpenMod/plugins/EclexToolkit/warps.json— named warp pointsServers/<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
- ILSpy (cross-platform) — github.com/icsharpcode/ILSpy
- dnSpy (Windows) — github.com/dnSpy/dnSpy
- JetBrains dotPeek — jetbrains.com/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 | Versions 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. |
-
.NETFramework 4.6.1
- OpenMod.API (>= 3.0.0)
- OpenMod.Core (>= 3.0.0)
- OpenMod.Unturned (>= 3.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.