LAB/05 — S³

Built by S³

Everything in the store written by S³.

Plugins are sold by independent developers, who handle their own refunds and support. Terms · Privacy

← ALL PRODUCTS
RUST PLUGIN

TerritoryWars

Facepunch shipped the hex territory grid and no game to play on it. This is the game: claim cells, plant a capital, keep your supply lines intact, and hold ground that other factions want. ## The problem The September wipe put a hex territory grid in vanilla Rust — a hex overlay on the map, 32 faction slots with names and colours, per-cell ownership, contiguous-region counting, save and load. All of it already renders on your players' map screen. None of it does anything. Cells can only be painted by an admin typing console commands. There is no way to claim, no protection, no scoring, no decay — nothing a player can do with it. Facepunch built the board and shipped no rules. ## The basics **A faction is your clan, else your vanilla team, else you on your own.** Nothing to sign up for, and each of those three sources is a switch you can turn off. **Stand in a hex to take it.** A capture starts when the cell is neutral or enemy-held, no living enemy is inside it, and it borders a cell you already own. A faction with no land anywhere gets one free beachhead so it can get started. **More people is faster**, up to a cap you set. Walk away and progress drains back down. **An enemy walking in stops you.** By default their arrival wipes your progress; one setting makes it freeze instead. **Holding pays.** Every owned cell earns points every minute, and taking one pays a bonus. **Neglect costs.** A cell nobody from the owning faction stands in for the decay window reverts to neutral. ## Capitals Every faction plants a capital with `/tw capital`. It is the anchor of everything else: - A capital costs **three times** the normal capture time to take, so it is the fight worth having - It carries a map marker and a label on everyone's map, so your enemies know where it is - Moving it has a cooldown, so nobody dodges an attack by relocating mid-siege - **Lose it and your whole empire is cut off.** You get a grace window to declare a new one before your cells start rotting ## Supply lines Owned cells must chain back to your capital. Cut a faction's territory in half and the half that no longer connects is orphaned — it reverts to neutral on a timer, without anyone having to stand there capturing it. That turns the map into a real front line. Punching through the middle of an empire is worth more than nibbling at its edge, and a defender has something to defend that is not just "every cell at once". ## You cannot hold the whole map Cells are capped by faction size: a base allowance every faction gets, plus extra per member, up to a hard ceiling. A five-man clan cannot paint the island. At the cap, taking new ground means giving some up — `/tw abandon` releases the cell you are standing in, on a cooldown so it is a decision rather than a toggle. Scoring pushes the same way. Cells past your full-value count pay a reduced rate, so sprawl earns less and less, while a cell bordering an enemy faction pays a **frontline multiplier**. The points are where the fighting is. ## Sieges you find out about When an attacker gets a quarter of the way through taking one of your cells, your faction is told — with a cooldown so a griefer cannot spam your chat by tapping cells. Repel them and they are locked out of that cell for a while. Take a cell and it is shielded from immediate recapture, so a contested border does not flip every thirty seconds. ## And a reason to own the ground Harvesting inside your own supplied territory pays a yield multiplier. Territory stops being a scoreboard and starts being where your faction farms. ## Features - Claim, contest and lose hex cells on the vanilla territory map - Clans, vanilla teams and solo factions, each independently switchable - Adjacency rule, beachhead rule, and excluded cells that can never be taken - Capture blocked in safe zones, and optionally while building blocked - Multi-player capture speed bonus, with drain when you leave - Capitals with map markers, labels, a capture multiplier and a move cooldown - Supply chains, with orphaned cells decaying back to neutral - Cell caps by faction size, with `/tw abandon` and an abandon cooldown - Diminishing returns on sprawl, and a frontline multiplier on contested cells - Gather yield bonus inside your own supplied cells - Siege alerts, attacker repel lockouts and post-capture shields - Capture progress bar, position and size configurable - Standings panel with paging, and optional Steam avatars - Capture broadcasts, server-wide or only to the factions involved - Automatic v1 → v2 migration: existing claims get a capital and a claim time - `tw.selftest` — a full self-check covering capitals, supply, caps, scoring, sieges and the migration, using scratch records it removes afterwards - Public API for other plugin authors - Oxide and Carbon - Clans used when present, not required ## Commands **Players** | Command | Does | |---|---| | `/tw` | Standings panel — rank, faction, cells, score, your own line and the cell you are in | | `/tw top` | The same top ten in chat | | `/tw here` | Cell id, owner, capital status, neighbours you hold, capture cost | | `/tw capital` | Declare the cell you are standing in as your capital | | `/tw abandon` | Give up the cell you are standing in | | `/tw colour #RRGGBB` | Recolour your faction on everyone's map | **Admin** — console, or in-game with `territorywars.admin` | Command | Does | |---|---| | `tw.createfaction <key> <name> [#RRGGBB]` | Create a faction up front, for event servers | | `tw.delfaction <key>` | Remove a faction and return its land to neutral | | `tw.setcell <cell> <faction\|none>` | Paint one cell by hand | | `tw.setcapital <faction> <cell>` | Set a faction's capital | | `tw.reset` | Every cell neutral, every faction cleared | | `tw.selftest` | Run the full self-check | ## Permissions | Permission | Effect | |---|---| | `territorywars.admin` | The `tw.*` console commands from in-game | | `territorywars.play` | Only checked when the play-permission setting is on. Off by default, so everyone plays | ## Settings worth tuning first **Hex size in metres** (default 100). Decide this before you open the server: changing it rebuilds the grid and clears every claim. On a 4250 map, 100m gives roughly 1300 cells. **Seconds one player needs to take a cell** (default 30). Multiply by your hex size to sanity-check it. Push it to 60–120 on a slower server. **Cell caps** (default 4 base, +2 per member, 24 hard ceiling). This is the setting that decides whether your map is carved up by everyone or owned by one clan. **Supply chain** (default on). Turning it off removes the front-line mechanic entirely and makes claims independent again. **Hours a cell survives with no owner inside it** (default 24). Zero disables decay, and the map will fill and stay full. **Frontline multiplier** (default 2) and **diminishing returns** (full value for 6 cells, 0.4 after). Together these decide whether your server rewards fighting or farming. ## Configuration ```json { "Grid: hex size in metres (centre to corner) - changing this rebuilds the grid and clears every claim": 100.0, "Grid: east/west offset in metres": 0.0, "Grid: north/south offset in metres": 0.0, "Capture: seconds one player needs to take a cell": 30.0, "Capture: extra members that still speed up a capture (1 = no group bonus)": 3, "Capture: how fast unattended progress drains, as a multiple of the fill rate": 0.5, "Capture: a cell must border one you already own": true, "Capture: a faction with no cells may take any one cell as a beachhead": true, "Capture: an enemy stepping in wipes progress instead of freezing it": true, "Capture: block capturing inside safe zones": true, "Capture: block capturing while building blocked": false, "Capture: cell ids that can never be captured": [], "Capture: only players with the territorywars.play permission may capture": false, "Scoring: points awarded for taking a cell": 50, "Scoring: points per owned cell per minute": 1.0, "Scoring: seconds between scoring ticks": 60.0, "Scoring: cells that pay the full rate before diminishing returns start": 6, "Scoring: what every cell past the full-value count pays, as a fraction": 0.4, "Scoring: multiplier for a cell bordering an enemy faction (1 = off)": 2.0, "Decay: hours a cell survives with no owner inside it (0 disables decay)": 24.0, "Decay: minutes between decay checks": 15.0, "Capital: how much longer a capital takes to capture than a normal cell": 3.0, "Capital: hours before the capital may be moved again": 6.0, "Capital: minutes to declare a new capital after losing one before the empire starts rotting": 15.0, "Capital: show a map marker on each faction capital": true, "Capital: map label text, {0} is the faction name (empty = no label)": "{0} CAPITAL", "Supply: owned cells must chain back to the capital (false disables supply entirely)": true, "Supply: minutes a cut-off cell survives before reverting to neutral": 30.0, "Cap: cells every faction may hold regardless of size": 4, "Cap: extra cells allowed per faction member": 2, "Cap: cells no faction may exceed, however large": 24, "Cap: minutes before a faction may abandon another cell (0 = off)": 10.0, "Gather: yield multiplier while harvesting inside your own supplied cell (1 = off)": 1.25, "Siege: capture progress (0-1) at which the owning faction is warned": 0.25, "Siege: minutes before the same cell may raise another alert (0 = off)": 3.0, "Siege: seconds an attacker is locked out of a cell after being repelled (0 = off)": 60.0, "Siege: minutes a freshly captured cell cannot be captured again (0 = off)": 10.0, "Factions: use the Clans plugin when it is loaded": true, "Factions: fall back to the vanilla team": true, "Factions: fall back to the individual player": true, "Announce: broadcast captures in chat": true, "Announce: only tell the factions involved, not the whole server": false, "UI: show the capture progress bar": true, "UI: capture bar anchor, 'x y' in screen fractions": "0.5 0.18", "UI: capture bar size in pixels, 'width height'": "320 46", "UI: standings rows per page": 12, "UI: show Steam avatars in the standings": false, "UI: colours": { }, "Admin: reuse the slot of a faction holding no cells and no score when all 31 are taken": true } ``` Anything that would divide by zero or spin the grid into nonsense is clamped on load, so a bad edit warns rather than breaking a live server. ## The 31-faction limit Vanilla allows 31 factions plus neutral. That is an engine limit, not a plugin choice. Faction slots are only allocated the moment a capture genuinely starts progressing, so players wandering the map never burn one. When all 31 are held, TerritoryWars reuses the slot of a faction that holds no cells and has no score — it **never** evicts a faction that still owns ground; the new claimant is told the board is full instead. On a server with more than 31 active groups, use clans so the slots go further. ## Steam avatars are off by default A standings row with a Steam avatar makes the client fetch that image, and a slow fetch delays the whole panel opening. Turn them on once you have confirmed the panel opens instantly without them. ## For other plugin authors `TerritoryZoneController` is public and this plugin does not wrap it, so you can read the grid directly: ```csharp var grid = PointEntity<TerritoryZoneController>.ServerInstance; int cell = HexGridLayout.WorldToCell(player.transform.position, grid.HexSize, grid.GridOffset); int owner = grid.GetFaction(cell); string who = grid.FactionNames[owner]; ``` ## Requirements Rust server on the September 2026 build (25011799) or newer — the build that added the territory grid. Oxide or Carbon. No other plugin required; a Clans plugin is used if you have one. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$29.99 · v2.0.0

RUST PLUGIN

SatelliteCrashManager

Vanilla only spawns a satellite when someone powers a control computer at powergrid stage 4. Run them on a schedule instead — announced, marked on the map, and locked to the crew that gets there first. ## The problem The Satellite Crash is the best thing in the Power Trip update and most of your players will never see one. Vanilla has no satellite event scheduler. The only way a satellite comes down is a player powering up the control computer at Launch Site, which requires the powergrid at **stage 4** — eighteen Heavy Fuses burning at once. On the average server that happens never. And when it does happen, nobody else knows it happened until they stumble on a burnt-out wreck someone already emptied. ## What SatelliteCrashManager does **Schedules them.** Random interval between a minimum and maximum you set, gated on a minimum player count, skipping its slot if one is already on the way. Your server gets satellite crashes whether or not anyone has touched the Power Plant. **Announces them.** Chat message when the satellite starts falling, another when it lands with the map grid reference, another when the fires burn out and the crates open. A map marker sits on the crash site so latecomers can find it. **Locks the wreck.** The first player to open a crate or hit the remains claims the site, and their whole team inherits access. Everyone else gets told how long they have to wait. No more third parties sniping loot from the crew that flew the thing down. **Collects the settings.** Every satellite server variable that actually matters — including the in-game hour cooldown on the control computer — gathered into one config block with plain-English labels, applied on load and restored on unload. ## Uses Facepunch's own crash-site search Launches go through vanilla's `satellite.random`, so the site validation is Facepunch's code: topology, water, ground slope, unevenness, safezone clearance and building-privilege standoff. No reimplemented targeting to drift out of sync next update, and no satellites landing in the middle of someone's base. ## Built for PVE too Two settings turn this into a PVE event: drop the powergrid requirement so crashes work without a stage 4 grid, and set the impact kill radius to `0` so a landing stops killing players and flattening buildings. Combined with the loot lock, you get a co-operative event that rewards the crew that showed up. ## Features - Automatic crashes on a random interval, with a minimum player gate - Skips its slot if a satellite is already descending - `/satellite call` to trigger one on demand - Descent, impact and crates-ready chat announcements with map grid references - Map marker at the crash site for a configurable duration - Loot lock — first crew to arrive owns the crates and the wreck - Optional lock on damaging the wreck, not just looting it - Bypass permission for staff - `/satellite` lists live crash sites, their age and their owner - Nine vanilla satellite settings in one labelled config block, restored on unload - Full language file - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/satellite` | admin | List active crash sites, age and owner | | `/satellite call` | admin | Launch a satellite now | ## Permissions - `satellitecrashmanager.admin` — `/satellite` and `/satellite call` - `satellitecrashmanager.bypasslock` — ignore loot locks ## Configuration ```json { "Automatically launch crashes": true, "Minimum minutes between automatic crashes": 90.0, "Maximum minutes between automatic crashes": 150.0, "Minimum players online for an automatic crash": 2, "Announce when a satellite starts descending": true, "Announce where a satellite landed": true, "Announce when the crash crates stop burning": true, "Show a map marker at the crash site": true, "Map marker radius": 0.4, "Map marker minutes": 30.0, "Loot lock mode (off, firstcome)": "firstcome", "Loot lock seconds after impact": 900.0, "Loot lock also blocks damaging the wreck": true, "Apply the vanilla convar overrides below on load": false, "Vanilla convar overrides": { "satellite.require_powerplant (needs powergrid stage 4 to launch)": true, "satellite.free_power (power up the computer with no items)": false, "satellite.free_fuel (thrusters cost no fuel)": false, "satellite.kill_radius (metres cleared on impact, 0 to harm nothing)": 10.0, "satellite.crate_fire_duration (seconds crates burn before they unlock)": 300.0, "satellite.wreck_fire_duration (seconds the wreck is too hot to harvest)": 480.0, "satellite.control_window (seconds of thruster control)": 180.0, "satellite.cooldown_hours_min (in-game hours before the computer can be used again)": 18.0, "satellite.cooldown_hours_max (in-game hours before the computer can be used again)": 18.0 } } ``` The convar block is passthrough — those are Facepunch's own server variables, gathered into one labelled place and set for you on load. ## Known limits, stated up front Loot cannot be locked to whoever launched the satellite. The game does not record that — `SatelliteControlComputer` has no owner field. First crew on site is the lock this plugin can honestly offer. ## Requirements Rust server on the Power Trip build (2026-08-06) or newer. ## Pairs with **GridControl** — hold the grid at stage 4 and let players launch satellites from the control computer the way Facepunch intended, alongside the scheduled ones. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$24.99 · v1.0.0

RUST PLUGIN

CrudeOilLogistics

The crude oil chain is the deepest progression loop Rust has, and it exists in one spot on the map behind a stage 3 grid and two Oil Rig puzzles. Speed it up, open it up, and put pumps wherever you want them — metered, if you want players to pay. ## The problem Power Trip built a genuinely great resource chain and then hid it. To get one drop of crude, your players need the powergrid at **stage 3**, then someone has to run the red puzzle rooms at Small or Large Oil Rig to flip the switches, then get to Dome, then bring a modular vehicle with a Tanker Module, then connect it with a Hose Tool, then drive it back and extract it on a car lift. On a vanilla PVP server with a clan running the map, that is a great Tuesday. On a PVE server, a low-pop server, or anything with a casual playerbase, it means nobody ever touches crude oil. The pumps are slow, they are in exactly one place, and the puzzle in front of them is longer than most of your players are willing to sit through. ## What CrudeOilLogistics does **Makes the pumps worth using.** One output multiplier and one tick interval. Turn a 20-minute trickle into something a player actually drives out to collect. **Puts pumps where your players are.** Stand at a gas station, outside Outpost, at a roadside stop, anywhere at all — type `/crudepump add` and a real, working crude pump spawns there and saves itself to your config. They come back automatically every restart. **Charges for them, if you want.** Extra pumps can be metered like real fuel pumps. Players pay scrap, Economics currency or ServerRewards points for a window of access. Your Dome pumps stay free and vanilla; only the ones you placed cost money. **Drops the puzzle for PVE.** Two settings and the pumps just run — no Oil Rig red rooms, no stage 3 requirement, at whatever output rate you pick. The chain becomes "drive a tanker to a pump", which is a thing your players will actually do. ## Built on the real thing Every pump this plugin places is Facepunch's own pump entity, spawned from the same prefab as the ones at Dome. The tuning writes the same public fields vanilla writes. Production is driven by calling the game's own oil-switch handler. No Harmony patch, no reflection, no reimplemented pump. Vanilla's hose connections, tanker filling, car lift extraction and crude stacking all keep working, because none of it was replaced. Pumps this plugin spawns are flagged to never enter your server save, so a crash can't leave orphans scattered across your map. They're removed on unload and rebuilt from config on load. ## Features - Output multiplier and tick interval for every crude pump on the map - Change or remove the powergrid stage requirement - Run pumps without the Oil Rig switches, at a forced output level — the PVE setting - Place unlimited extra pumps anywhere with one chat command - Optional metering on placed pumps: items, Economics or ServerRewards, per-access time window - Free-access permission for staff and VIP ranks - Configurable crude oil stack size for pumps and tankers - `/crude` shows any player the pump status, estimated output per minute and their access time - Developer API for shop and quest plugins - Clean unload — vanilla pumps restored, placed pumps removed - Full language file - Oxide and Carbon - No hard dependencies ## Commands | Command | Access | Description | |---|---|---| | `/crude` | everyone | Pump count, grid stage, crude per minute, running state, access left | | `/crude pay` | everyone | Buy access to metered pumps | | `/crudepump list` | admin | List your placed pumps | | `/crudepump add [name]` | admin | Place a pump where you stand | | `/crudepump remove <n>` | admin | Remove a placed pump | ## Permissions - `crudeoillogistics.admin` — place and remove pumps - `crudeoillogistics.free` — never charged at metered pumps ## API ```csharp [PluginReference] private Plugin CrudeOilLogistics; bool allowed = CrudeOilLogistics?.Call<bool>("HasPumpAccess", player) ?? false; ``` ## Configuration ```json { "Output multiplier for every crude pump (1 leaves vanilla)": 1.0, "Seconds between pump ticks (0 leaves vanilla, vanilla is 60)": 0.0, "Powergrid stage the pumps need (-1 leaves vanilla, 0 removes the requirement)": -1, "Run pumps without the Oil Rig switches (PVE servers)": false, "Forced oil switch multiplier when bypassing (1 equals both rigs running)": 1.0, "Crude oil stack size in tankers and pumps (0 leaves vanilla, vanilla is 2000)": 0, "Seconds between upkeep checks": 30.0, "Extra pumps": { "Charge players to draw from extra pumps": false, "Payment mode (items, economics, serverrewards)": "economics", "Item cost per access (shortname: amount)": { "scrap": 50 }, "Currency cost per access (economics / serverrewards)": 250.0, "Minutes of access bought": 30.0, "Prefab to clone for extra pumps (blank copies whatever pump the map already has)": "", "Pump locations (use /crudepump add in game to fill this in)": [] } } ``` `/crudepump add` fills the pump list in for you; an entry is just a name and a place: ```json { "Name": "Gas station north", "X": 412.5, "Z": -1183.0, "Rotation": 90.0 } ``` ## Two things worth knowing before you ask **Pump locations ship empty on purpose.** A hardcoded offset spawns pumps inside walls on custom maps. Placing them with one chat command where you are standing is the only version of this that works everywhere. **A tanker will not take crude while it sits on a lift.** That is vanilla `Vehicle.inEditableLocation`, not this plugin. ## Requirements Rust server on the Power Trip build (2026-08-06) or newer. ## Pairs with **GridControl** — hold the grid at stage 3 so the Dome pumps stay online without anyone feeding fuses. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.1

RUST PLUGIN

GridControl

Pin or floor the powergrid stage so your monuments stay powered — no fuse babysitting, no dead Power Plant, no players who never see the new content. ## The problem The Power Trip update put half the island behind the Power Plant. Airfield's airdrop dispatcher, Oxum's car lift, Supermarket freezers, Water Treatment, the Oil Rig crude pumps, the Red Recycler, Chinook resupply, satellite control — all of it needs Heavy Fuses burning in the Power Plant, and every fuse dies after 2 hours 40 minutes. On a busy vanilla PVP server, fine. Everywhere else it collapses. Nobody farms VeryRare fuses to power a monument for the whole server. Your grid sits at stage 0, your players never see the content you paid for, and your Discord fills up with "is the power plant broken?" ## What GridControl does Sets a stage and holds it. **Floor mode** — your grid never drops below the stage you pick. Players can still insert real fuses and push it higher. Set it to 1 and Water Treatment, the car lift and the freezers are always on. Set it to 4 and the Red Recycler runs all wipe. **Pin mode** — the grid sits at exactly the stage you name and does not move, whatever anyone inserts. **Off** — vanilla, untouched. ## Built the right way No Harmony patch and no reflection into private state. The plugin tracks the real fuse count and tops up the difference, so a player's own fuses always count for something. Unload it and your server is vanilla again on the next tick. ## Features - Floor, pin or off — three modes, one field - Optional fuse lifespan override: extend it, or make fuses burn forever - Stage-change announcements in chat, so players know the moment something came online - `/grid` shows any player the current stage, fuse count and what the next stage needs - Full language file, every message editable - Clean unload — your server returns to vanilla behaviour - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/grid` | everyone | Current stage, fuses vs sockets, fuses to next stage | | `gridcontrol.set <off\|floor\|pin> [stage]` | admin | Change mode live, saves to config | ## Permissions - `gridcontrol.admin` — use `gridcontrol.set` ## Configuration ```json { "Mode (off, floor, pin)": "floor", "Target stage": 1, "Fuse lifespan seconds (-1 leaves vanilla, 0 means fuses never burn out)": -1.0, "Announce stage changes in chat": true, "Seconds between grid checks": 5.0 } ``` ## Requirements Rust server on the Power Trip build (2026-08-06) or newer. ## Pairs with **FuseEconomy** — let your players buy Heavy Fuses and push the grid past your floor themselves. **RecyclerControl** — the grid stage GridControl holds is exactly what decides your recycler efficiency. Set both and stop guessing. **CrudeOilLogistics** — stage 3 brings the Dome crude pumps online. Hold the stage here, tune the pumps there. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.0

RUST PLUGIN

LagSnitch

Your server is at 12 FPS and the console tells you nothing useful. LagSnitch names the grid square, the player and the entity type responsible — in chat, on a HUD, and in your Discord. ## The problem Rust gives you a tick rate number and nothing else. When it drops, you are left guessing: is it entities, is it turrets, is it one player's industrial spaghetti, is it a plugin, is it the save? So the usual fix is a restart, then another restart, then a wipe, and you never find out what it was. Meanwhile your players feel every second of it. ## What LagSnitch does Watches the server continuously and attributes the cost. **By grid square.** The top offending grids, ranked, so you can fly to the problem instead of guessing at it. **By player.** `/lagsnitch player <name>` gives you one person's entity footprint — what they have built, how much of it costs, and their ping. **By entity type.** IO entities, industrial, turrets, storage, vehicles, NPCs, building blocks — counted, ranked, and shown against the thresholds you set. **By subsystem.** Server manager update, net cycle, physics sync, player cycle — the millisecond cost of each, so "the server is lagging" becomes "the net cycle is eating 40ms". **By spike.** The lag spike profiler records RPCs, commands and RCON calls that blew past your millisecond thresholds, so a one-second freeze leaves evidence instead of a memory. ## It tells you before your players do Set a warning and a critical tick rate. When the server crosses critical, LagSnitch can take an automatic snapshot — the full picture at the moment it went bad — and post to your Discord webhook. You read the diagnosis in the morning instead of reconstructing the night. ## A HUD, not just chat spam `/lagsnitch ui` opens a live performance HUD you can drag where you want it and expand for detail. Admins get it by default; give your moderators `lagsnitch.view` and they get it too, without the commands that change anything. ## Features - Continuous monitoring on an interval you set - Top grids, top owners and top entity types, all ranked - Per-player entity footprint and ping report - Subsystem millisecond breakdown — server manager, net cycle, physics, player cycle - Lag spike profiler for RPC, command and RCON calls over your thresholds - Work queue profiler - Network profiler with per-connection stats and optional packet capture - Memory and GC report, save timing report - Manual and automatic snapshots, with history you can page back through - Discord webhook alerts on critical events - Draggable, resettable live HUD with per-player positions - Three permissions, so read-only staff never get the destructive commands - Oxide and Carbon - No dependencies ## Commands `/lagsnitch` on its own prints the help. Available to `lagsnitch.view` and `lagsnitch.admin`. | Command | Access | Description | |---|---|---| | `/lagsnitch health` | view | Tick rate, frame rate, entity counts against your thresholds | | `/lagsnitch grid` | view | Top offending grid squares | | `/lagsnitch player <name\|steamid>` | view | One player's entity footprint and ping | | `/lagsnitch entities` | view | Entity types ranked by cost | | `/lagsnitch subsystems` | view | Millisecond cost per server subsystem | | `/lagsnitch spikes` | view | Recent lag spikes and what caused them | | `/lagsnitch network` | view | Network and per-connection stats | | `/lagsnitch memory` | view | Memory use and GC collections | | `/lagsnitch saves` | view | Save duration history | | `/lagsnitch ui` | view | Toggle the live HUD | | `/lagsnitch reset` | view | Reset your HUD position | | `/lagsnitch snapshot` | admin | Take a full snapshot now | ## Permissions | Permission | Effect | |---|---| | `lagsnitch.admin` | Everything, including snapshots and profiler controls | | `lagsnitch.view` | Read-only reports and the HUD | | `lagsnitch.alerts` | Receives in-game alerts when thresholds are crossed | ## Configuration ```json { "Monitoring": { "CheckIntervalSeconds": 10.0, "TopGridCount": 10, "TopOwnerCount": 10, "TopEntityTypeCount": 10 }, "LagThresholds": { "TickRateWarning": 20.0, "TickRateCritical": 15.0, "FrameRateWarning": 30.0, "AutoSnapshotOnCritical": true, "HighPingThresholdMs": 150, "EntityCountWarning": 400000 }, "SnapshotSettings": { "EnableHistory": true, "MaxSnapshotsStored": 50 }, "DiscordWebhook": { "Enabled": false, "Url": "" }, "ProfilingFeatures": { "EnableLagSpikeProfiler": true, "EnableWorkQueueProfiler": true, "MaxSpikeEventsShown": 20 }, "RuntimeProfiler": { "Preset": 1, "RpcLagSpikeThresholdMs": 40, "CommandLagSpikeThresholdMs": 40, "RconLagSpikeThresholdMs": 40 }, "NetworkProfiler": { "EnablePerConnectionStats": false, "ConnectionsPerFrame": 30, "EnablePacketCapture": true, "PacketCaptureDefaultSecs": 10 }, "Hud": { "RefreshIntervalSeconds": 3.0, "AllowViewPermission": true, "AnchorMin": "0.35 0.85", "AnchorMax": "0.65 0.85" } } ``` ## One thing to decide deliberately `RuntimeProfiler.Preset` is `1` out of the box, which turns on Facepunch's own profiler recorders and gives you the GC and allocation detail. Presets 1 and 2 upload performance telemetry to Facepunch's servers. Set it to `0` if that is not something you want, and the rest of the plugin still works. ## Requirements Oxide or Carbon. No dependencies. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.4

RUST PLUGIN

MagicVendies

Rewrite what the monument vendors sell, from inside the game. Point at a machine, change the orders, rename it, reskin it — no config editing, no restart. ## The problem The NPC vending machines at Outpost and Bandit Camp are the only shop most players ever use, and their stock is whatever Facepunch decided. If your server is 5x, or PVE, or running a custom economy, those prices are wrong on day one — and the only way to change them is a config file full of item ids and a server restart to see whether you got it right. ## What MagicVendies does `/magicvendies` opens an admin UI listing every NPC vending machine at the monuments you configure. From there you can: - **See every machine** at a monument, and teleport straight to one to check your work - **Edit its orders** — what it sells, what it costs, how many - **Search a real item browser** instead of typing shortnames, with paging and search - **Set skins** on the items it sells, and on the machine itself - **Give an order a custom display name** - **Toggle blueprint mode** on an order - **Edit an order that is already live**, or remove it - **Rename the machine** so players know what it is Changes are saved and restored, so the machines come back the way you left them after a restart or a plugin reload. ## Purchase cap Vanilla lets a player pull a machine's entire stock in one transaction. `Max Purchase Amount` caps how much can be bought at once, so a single buyer cannot empty a shop you set up for the whole server. ## Features - In-game UI for every NPC vending machine at the monuments you list - Add, edit and remove sell orders without touching a config file - Item browser with search and paging — no shortname hunting - Skin ids on sold items, custom display names, blueprint toggle - Rename machines and set machine skins - Teleport to any listed machine from the UI - Edit orders that are already live - Per-transaction purchase cap - Settings persist across restarts and reloads - One permission gates the whole tool - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/magicvendies` | `magicvendies.use` | Open the vending machine editor | Everything else happens in the UI. ## Permissions - `magicvendies.use` — open and use the editor ## Configuration ```json { "Monument Names": [ "Outpost" ], "Max Purchase Amount (minimum 1, default 10)": 10 } ``` Add the monuments you want to manage to the list — Bandit Camp, Fishing Village, and any custom monument by name. ## Requirements Oxide or Carbon. No dependencies. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.4

RUST PLUGIN

PetBradley

A pocket-sized Bradley APC that follows its owner, guns down whatever attacks them, and cannot hurt a friend. ## The problem Bradley is the best thing Facepunch ever put on the island, and your players meet it twice a wipe — once at Launch Site and once as a corpse. The rest of the wipe it sits in the compound doing nothing for you: no reward to hand out, no VIP perk anyone actually wants, no reason to open another crate. Every "pet" plugin answers that with a scientist in a hat or a re-skinned bear. PetBradley hands the player the tank. ## What PetBradley does Spawns a real BradleyAPC — the game's own vehicle, its own AI, its own turret — at a quarter scale, with its gun turned down to something a base fight can survive. It follows its owner around, scans for enemies every 0.45 seconds, and fires on players, NPCs or animals depending on what you allow. It never targets its owner. It never targets the owner's team. Damage to either is zeroed before it lands, so no friendly-fire ticket ever reaches your Discord. Walk away and it drives after you. Climb a lighthouse and it stops trying to drive up the wall, sits still for three seconds, then reappears at your side. Fall off a cliff and it eases down instead of teleporting. ## Bodyguard, not a hunter By default the pet is defensive. It only fires on things that hit its owner, a teammate, or the pet itself, and it forgets an attacker 20 seconds after their last hit. Your players can walk past a boar, a scientist camp or another player without the tank starting a war. Flip `DefensiveOnly` off and it attacks any allowed target in range, the way it did in 1.0.1. ## Steps aside when it should The pet hides itself when its owner mounts anything (horse, car, heli, any seat), enters a Raidable Bases event, noclips, or vanishes. It comes back on its own when the reason is gone. No tank left under a minicopter, no tank inside somebody's raid bubble. Each trigger is a switch in the config. ## Three ways to hand one out Turn on any combination: **Chat command** — `/pb`, gated behind a permission. The straightforward VIP perk. **A thrown flare** — the pet ships as a skinned flare item. Throw it, the tank appears. Store the pet and the flare comes back to your inventory. Sell it in your shop, hand it out as an event prize, put it in a kit. **Crate loot** — off by default. Turn it on and the flare drops from any crate list you name, at any chance you name. Elite crates, heli crates, Bradley's own crate — your call. ## Built the right way No Harmony patch, no reflection into private state. Every server-wide hook — damage, targeting, loot spawn, item use — stays unsubscribed while no pet is out, and the 0.15s movement tick does not even exist until the first one spawns. A server with the plugin loaded and nobody using it pays nothing for it. Pets are cleaned up on owner death, on disconnect and on unload. Nothing survives a restart to haunt your map. ## Features - Real Bradley AI at a configurable scale, from 0.1 up to full size - Bullet damage and max health set by config, live-editable in game - Main cannon off by default — turn it on if your server wants the noise - Defensive by default: only shoots what hit the owner, a teammate, or the pet - Owner and owner's team are immune, and never targeted - Targeting toggles for players, NPCs and animals - Auto-hide when mounted, in a Raidable Bases event, in noclip, or vanished — returns by itself - Follows through steps and slopes, eases down drops, warps back when stuck or left behind - Deploy by command, by thrown flare, by crate loot — any combination - Storing the pet returns the flare item - Zero hook cost while no pet is out - Full language file, every message editable - Developer API and hooks, shared with PetHeli and PetScientist - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/pb` | `petbradley.spawn` | Toggle: spawn a pet, or store the one you have | | `/pb spawn` | `petbradley.spawn` | Spawn a pet | | `/pb dismiss` / `store` / `pickup` | `petbradley.spawn` | Store the pet, returning the flare item | | `/pb give <player>` | `petbradley.give` | Give a player a deploy flare | | `/pb scale <0.1-1>` | `petbradley.admin` | Set the pet scale, live, and save it to config | | `/pb dmg <number>` | `petbradley.admin` | Set bullet damage, live, and save it to config | ## Permissions - `petbradley.spawn` — use `/pb` to spawn and store - `petbradley.flare` — deploy by throwing the flare item - `petbradley.give` — use `/pb give` - `petbradley.admin` — use `/pb scale` and `/pb dmg` ## Configuration ```json { "Scale": 0.25, "BulletDamage": 2.5, "StoppingDist": 3.0, "SearchRange": 60.0, "MaxStepHeight": 0.75, "MaxFollowDistance": 30.0, "MaxVerticalGap": 4.0, "UseCannon": false, "MaxHealth": 300.0, "Modes": { "Command": true, "Flare": true, "LootCrates": false }, "Targets": { "Players": true, "NPCs": true, "Animals": true }, "DefensiveOnly (only attack what hits the owner, a teammate, or the pet)": true, "AggroSeconds (how long an attacker stays a target)": 20.0, "AutoHide": { "WhenMounted (car, heli, horse, any seat)": true, "InRaidableBase": true, "WhenNoclip": true, "WhenVanished (needs the Vanish plugin)": true }, "PickupReturnsItem": true, "DeployItemShortname": "flare", "DeployItemName": "Pet Bradley", "DeploySkin": 1357924680, "LootChance": 0.08, "LootCratePrefabs": [ "crate_normal", "crate_normal_2", "crate_elite", "crate_mine", "heli_crate", "bradley_crate" ] } ``` Scale and BulletDamage apply to a pet already out the moment you change them with `/pb scale` or `/pb dmg`. MaxFollowDistance is the leash: past it the pet stops driving and reappears beside its owner. ## Developer API Same surface on PetBradley, PetHeli and PetScientist, so one integration covers all three: - `API_IsPet(BaseEntity)`, `API_GetPetOwner(BaseEntity)`, `API_HasPet(ulong)`, `API_StorePet(ulong)`, `API_SuspendPet(ulong, bool hide)` - Hooks: `CanSpawnPet(BasePlayer)` (return non-null to block), `OnPetSpawned(BaseEntity, BasePlayer)`, `OnPetRemoved(BaseEntity, ulong)` ## Requirements Any current Rust server on Oxide or Carbon. No other plugins needed. Optional: Raidable Bases and Vanish, for those two auto-hide triggers. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.4

RUST PLUGIN

PetHeli

A miniature attack helicopter that circles its owner, guns down whatever attacks them, and cannot hurt a friend. ## The problem The patrol helicopter is the loudest event on your server, and it only ever happens *to* your players. It shows up, it burns a base down, it leaves. There is no version of it your players get to keep, no reward that hands them the thing that has been bullying them all wipe. PetHeli gives it to them — shrunk to a quarter size, parked over their shoulder, and pointed at whatever comes for them. ## What PetHeli does Spawns a real PatrolHelicopter — the game's own airframe, its own AI, its own door guns — at a quarter scale, with the guns turned down to something a base fight can survive. It orbits its owner at a fixed radius and height, turning door-side so the guns actually bear, and follows wherever the owner walks. It fires on players, NPCs or animals depending on what you allow. It never targets its owner. It never targets the owner's team. Damage to either is zeroed before it lands, so no friendly-fire ticket ever reaches your Discord. The rockets are gone. Strafing runs and napalm are the only two things a patrol helicopter does that flatten a base, and a pet is refused both, at every path into the strafe state. What is left is the door guns. It also carries no map marker, so the whole server does not see your VIP's pet. It never retires off the map on the vanilla lifetime timer. It ignores no-go zones instead of fleeing 130m from its owner. It drops no crates when it dies. Walk out of range and it reappears at its orbit point. Die, disconnect, or unload the plugin and it is gone. ## Bodyguard, not a hunter By default the pet is defensive. It only fires on things that hit its owner, a teammate, or the pet itself, and it forgets an attacker 20 seconds after their last hit. Your players can walk past a boar, a scientist camp or another player without the heli starting a war. Flip `DefensiveOnly` off and it attacks any allowed target in range, the way it did in 1.0.1. ## Steps aside when it should The pet hides itself when its owner mounts anything (horse, car, heli, any seat), enters a Raidable Bases event, noclips, or vanishes. It comes back on its own when the reason is gone. No heli circling somebody's raid bubble, no heli chasing a minicopter across the map. Each trigger is a switch in the config. ## Three ways to hand one out Turn on any combination: **Chat command** — `/ph`, gated behind a permission. The straightforward VIP perk. **A thrown flare** — the pet ships as a skinned flare item. Throw it, the helicopter appears. Store the pet and the flare comes back to your inventory. Sell it in your shop, hand it out as an event prize, put it in a kit. **Crate loot** — off by default. Turn it on and the flare drops from any crate list you name, at any chance you name. Elite crates, heli crates, Bradley's own crate — your call. ## Targeting, done properly Players are acquired by the helicopter's own vanilla AI, filtered on the way through, so the plugin runs no scan loop for them and priority stays where the game puts it. Animals and Gen2 NPCs can never reach a vanilla heli's guns at all — the target list only holds players — so the pet scans for one itself, checks line of sight, and hands the nearest to both guns. A live player target always wins; the animal is dropped the moment one appears. ## Built the right way No Harmony patch. Every server-wide hook — damage, targeting, strafing, loot spawn, item use — stays unsubscribed while no pet is out, and the 0.15s tick does not even exist until the first one spawns. A server with the plugin loaded and nobody using it pays nothing for it. ## Features - Real patrol helicopter AI at a configurable scale, from 0.1 up to full size - Rockets and napalm refused — door guns only - Bullet damage and max health set by config, live-editable in game - Defensive by default: only shoots what hit the owner, a teammate, or the pet - Owner and owner's team are immune, and never targeted - Targeting toggles for players, NPCs and animals - Auto-hide when mounted, in a Raidable Bases event, in noclip, or vanished — returns by itself - Orbits the owner at a configurable radius, height and speed - No map marker, no retire timer, no fleeing, no death crates - Warps back to its orbit when left behind - Deploy by command, by thrown flare, by crate loot — any combination - Storing the pet returns the flare item - Zero hook cost while no pet is out - Cleaned up on owner death, disconnect and unload - Full language file, every message editable - Developer API and hooks, shared with PetBradley and PetScientist - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/ph` | `petheli.spawn` | Toggle: spawn a pet, or store the one you have | | `/ph spawn` | `petheli.spawn` | Spawn a pet | | `/ph dismiss` / `store` / `pickup` | `petheli.spawn` | Store the pet, returning the flare item | | `/ph give <player>` | `petheli.give` | Give a player a deploy flare | | `/ph scale <0.1-1>` | `petheli.admin` | Set the pet scale, live, and save it to config | | `/ph dmg <number>` | `petheli.admin` | Set bullet damage, live, and save it to config | ## Permissions - `petheli.spawn` — use `/ph` to spawn and store - `petheli.flare` — deploy by throwing the flare item - `petheli.give` — use `/ph give` - `petheli.admin` — use `/ph scale` and `/ph dmg` ## Configuration ```json { "Scale": 0.25, "BulletDamage": 2.5, "SearchRange": 60.0, "HoverHeight": 18.0, "OrbitRadius": 12.0, "OrbitSpeed": 25.0, "MaxFollowDistance": 80.0, "MaxHealth": 600.0, "Modes": { "Command": true, "Flare": true, "LootCrates": false }, "Targets": { "Players": true, "NPCs": true, "Animals": true }, "DefensiveOnly (only attack what hits the owner, a teammate, or the pet)": true, "AggroSeconds (how long an attacker stays a target)": 20.0, "AutoHide": { "WhenMounted (car, heli, horse, any seat)": true, "InRaidableBase": true, "WhenNoclip": true, "WhenVanished (needs the Vanish plugin)": true }, "PickupReturnsItem": true, "DeployItemShortname": "flare", "DeployItemName": "Pet Heli", "DeploySkin": 1357924681, "LootChance": 0.08, "LootCratePrefabs": [ "crate_normal", "crate_normal_2", "crate_elite", "crate_mine", "heli_crate", "bradley_crate" ] } ``` Scale and BulletDamage apply to a pet already out the moment you change them with `/ph scale` or `/ph dmg`. MaxFollowDistance is the leash: past it the pet reappears at its orbit point beside its owner, and it is never allowed below OrbitRadius + 20. ## Developer API Same surface on PetBradley, PetHeli and PetScientist, so one integration covers all three: - `API_IsPet(BaseEntity)`, `API_GetPetOwner(BaseEntity)`, `API_HasPet(ulong)`, `API_StorePet(ulong)`, `API_SuspendPet(ulong, bool hide)` - Hooks: `CanSpawnPet(BasePlayer)` (return non-null to block), `OnPetSpawned(BaseEntity, BasePlayer)`, `OnPetRemoved(BaseEntity, ulong)` ## Requirements Any current Rust server on Oxide or Carbon. No other plugins needed. Optional: Raidable Bases and Vanish, for those two auto-hide triggers. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.4

RUST PLUGIN

PetScientist

A scientist NPC that follows its owner through bases, doors and monuments, shoots whatever attacks them, and deals reduced damage. Spawn it with a command, a thrown flare, or find one in a crate. ## What it is A scientist that belongs to a player. It walks on the game's own navmesh, so it follows you through your base, up your stairs, into monuments and across the map. Lose it off a cliff or behind a closed door and it warps to you after 3 seconds. It never gets stuck for long. By default it is a bodyguard, not a hunter. It only shoots things that hit you, your teammates, or the pet itself. Shoot a boar and it stands there. Let a wolf bite you and it opens fire. ## 11 variants, one config list Pick which scientists your players can have. Each one is a real Facepunch scientist prefab with its own gun and outfit: `full` (random loadout), `lr300`, `mp5`, `pistol`, `shotgun`, `heavy`, `arctic`, `peacekeeper`, `nvg`, `roam`, `junkpile` Turn any variant off. Set the default. Add your own prefab paths if you want. ## Three ways to get one - **Command** — `/ps` or `/ps heavy`. Permission-gated. - **Flare item** — a skinned flare named `Pet Scientist (heavy)`. Throw it, the pet spawns where it lands. Sell it in your shop, give it as a reward, hand it out with `/psgive`. - **Loot crates** — off by default. Turn it on and set a chance; the flare shows up in normal, military, elite, mine, heli and Bradley crates. ## Made for servers, not just for fun - **Damage scale.** Default 0.1, so the pet is a distraction and a helper, not a free kill machine. Set it to 0 for a pure decoy or 1 for full damage. - **Defensive only.** On by default. Turn it off and the pet attacks any valid target within `SearchRange`. - **Target filters.** Players, NPCs, animals. Each one a switch. - **Team-safe.** Never shoots the owner or teammates. Never damages them. Ignores shots from them. - **Safe zones.** Never fires inside one. - **Auto-hide.** The pet steps away when you mount anything (horse, car, heli, chair), noclip, or vanish. It comes back by itself when you stop. No lost pets under vehicles. - **Clean death.** Pet dies: no corpse, no loot bag, no free gun on the ground. Owner dies or disconnects: pet is gone. - **Nothing persists.** Pets never save to the map file. Restart the server, no orphan scientists. - **Plays nice with PetBradley and PetHeli.** It knows the other two pets and never fires on them. ## Commands | Command | Permission | Description | |---|---|---| | `/ps` | `petscientist.spawn` | Spawn the default variant, or store your live pet and get the flare back | | `/ps <variant>` | `petscientist.spawn` | Spawn that variant | | `/ps variants` | none | List enabled variants | | `/ps store` | none | Store your pet (also `dismiss`, `pickup`) | | `/ps scale <0.25-2>` | `petscientist.admin` | Set pet size, saves to config | | `/ps dmg <number>` | `petscientist.admin` | Set damage scale, saves to config | | `/psgive <player> [variant]` | `petscientist.give` | Give a player a Pet Scientist flare | ## Permissions - `petscientist.spawn` — use `/ps` - `petscientist.flare` — throw the flare item - `petscientist.give` — use `/psgive` - `petscientist.admin` — change scale and damage ## Configuration ```json { "Scale": 1.0, "DamageScale (multiplier on every hit the pet lands)": 0.1, "MaxHealth": 200.0, "StoppingDist": 3.0, "SearchRange": 40.0, "MaxFollowDistance": 30.0, "MaxVerticalGap": 4.0, "StuckSeconds (how long the pet may be stuck before it warps to you)": 3.0, "OwnerCanHurtPet": false, "DefaultVariant": "full", "Variants": [ { "Name": "full", "Prefab": "assets/rust.ai/agents/npcplayer/humannpc/scientist/scientistnpc_full_any.prefab", "Enabled": true }, "..." ], "Modes": { "Command": true, "Flare": true, "LootCrates": false }, "Targets": { "Players": true, "NPCs": true, "Animals": true }, "DefensiveOnly (only attack what hits the owner, a teammate, or the pet)": true, "AggroSeconds (how long an attacker stays a target)": 20.0, "AutoHide": { "WhenMounted (car, heli, horse, any seat)": true, "WhenNoclip": true, "WhenVanished (needs the Vanish plugin)": true }, "PickupReturnsItem": true, "DeployItemShortname": "flare", "DeployItemName": "Pet Scientist", "DeploySkin": 1357924682, "LootChance": 0.08, "LootCratePrefabs": [ "crate_normal", "crate_normal_2", "crate_elite", "crate_mine", "heli_crate", "bradley_crate" ] } ``` Every chat message is in the language file. ## Developer API Same surface as PetBradley and PetHeli, so one integration covers all three: - `API_IsPet(BaseEntity)`, `API_GetPetOwner(BaseEntity)`, `API_HasPet(ulong)`, `API_StorePet(ulong)`, `API_SuspendPet(ulong, bool)` - Hooks: `CanSpawnPet(BasePlayer)` (return non-null to block), `OnPetSpawned(BaseEntity, BasePlayer)`, `OnPetRemoved(BaseEntity, ulong)` ## Requirements - Oxide or Carbon. One file, no extensions, no Harmony. - Optional: Vanish (for the vanished auto-hide). ## Pairs with **PetBradley** — a mini Bradley that rolls beside you. **PetHeli** — a mini attack heli that circles overhead. All three share the same commands, config shape and API. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$19.99 · v1.0.0

RUST PLUGIN

Arcade

Six real arcade games inside Rust, with per-game leaderboards and rewards paid out at wipe. Something for your players to do while they wait for a raid timer or afk mates to come back. ## The problem Dead hours kill servers. Off-peak, mid-wipe, waiting on a base to decay, waiting for the clan to log on — players idle in a bag and then they idle somewhere else instead. ## What Arcade does `/arcade` opens a menu with six games, all built in Rust's own UI. No external site, no browser, no downloads. - **Snake** — classic snake with power-ups - **Breakout** — break all the bricks - **Tetris** — stack blocks, clear lines - **Minesweeper** — find all the mines - **Battleship** — sink the enemy fleet, with auto-place if you cannot be bothered - **Space Invaders** — shoot the alien invaders Every game keeps a high score per player and a server leaderboard. Each has its own how-to-play and scoring panel, so nobody has to ask how it works. ## Wipe rewards are the hook At wipe, the top three on each game's leaderboard get paid. First, second and third are configured per game, and a reward can be Economics currency, ServerRewards points, a plain item, a skinned item, a fully custom item with its own name and skin, or a console command run on the winner. Winners are told what they placed and what they won the next time they log in — the reward follows them, it does not expire in a queue they never see. Point a Discord webhook at it and the wipe results are posted for you. ## Features - Six complete games in Rust's own UI, no external service - Per-game leaderboards and per-player high scores - Configurable first, second and third place rewards for every game - Reward types: item, skinned item, custom item, Economics, ServerRewards, or a console command run on the winner - Wipe payout with a login notification for winners - Discord webhook for results - Full language file — 78 strings, every label and instruction editable - Sessions close cleanly on disconnect, respawn and wounding, so nobody plays while being shot - One permission to gate the whole thing - Oxide and Carbon - Economics, ServerRewards and Backpacks used when present, none required ## Commands | Command | Access | Description | |---|---|---| | `/arcade` | `arcade.use` | Open the game menu | Everything else — game selection, play, leaderboards, close — happens in the UI. ## Permissions - `arcade.use` — open and play the arcade ## Configuration ```json { "Discord Webhook URL": "", "Game Rewards": { "snake": { "First Place": [ ... ], "Second Place": [ ... ], "Third Place": [ ... ] }, "breakout": { }, "tetris": { }, "minesweeper": { }, "battleship": { }, "spaceinvaders": { } } } ``` Each place is a list, so one winner can receive several things. A reward entry looks like this: ```json { "Reward Type": "item", "Amount": 1000, "Item Short Name": "scrap", "Item Skin ID": 0, "Item Display Name": "" } ``` Defaults ship at 1000 / 500 / 250 scrap per game. `Reward Type` takes `item`, `skinned_item`, `custom_item`, `economics`, `serverrewards` or `command` — the last one runs a console command on the winner, which is how a rank or a kit gets granted. ## Requirements Oxide or Carbon. Economics or ServerRewards only if you want to pay out in those. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$14.99 · v1.1.3

RUST PLUGIN

DecayBooster

Players quit mid-wipe and leave their bases standing. This strips cupboard authorisation from the ones who never came back, and then — only if you say so — clears out the bases nobody holds any more. ## The problem Vanilla upkeep drags abandoned bases out for days. They hold ground, block building, eat entities and make your map look busier than your server actually is. The group upkeep bonus is the reason: a cupboard with eight authorised names decays slowly even when seven of those names quit a week ago. ## What DecayBooster does Removes cupboard authorisation from players who have not logged in for a while. That alone cuts the group bonus and lets vanilla decay do its job properly. Optionally — off by default — once nobody at all is authorised on a base, it can clear the base out entirely. ## Read this before you set the threshold **Rust does not persist a per-player "last connected" timestamp anywhere a plugin can read.** `sleepStartTime` is `Time.time` based and resets on restart. The blueprint table's `updated` column only moves when blueprints change. So the first time DecayBooster sees an authorised player it has never tracked, it starts their clock at that moment. **On a fresh install nobody is deauthorised for a full threshold period.** That is deliberate. The alternative — assuming every unknown player is ancient — would strip authorisation off half your server on the first scan, and you would not get it back. The first scan tells you what it picked up: ``` DecayBooster scan: 412 buildings, 380 cupboards, 1104 auth entries. 1104 newly tracked, ... ``` Practical consequence: install it at the start of a wipe, not the end. ## Work up to base removal, don't flip it on 1. **Watch first.** Leave removal off for a few days. `db.status` lists the bases sitting empty and how long they have been that way. If that list looks wrong, do not proceed. 2. **Preview.** `db.preview` prints exactly which buildings would go and how big they are. It writes nothing and touches no entity. 3. **Set a grace period.** Hours a base sits with nobody authorised before removal defaults to 24 — a full day of visible abandonment before anything happens. 4. **Set a floor.** Smallest base worth removing defaults to 1 building block. Raise it to 10 if you only want real bases cleaned up and are happy to leave stray foundations to vanilla decay. 5. **Then enable it.** Every deauthorisation and removal is written to `oxide/logs/DecayBooster/`, one file per day: ``` [2026-08-30 06:24:39] deauth building=2 cupboard=205176 player=76561190000000001 offlineDays=8.3 [2026-08-30 06:24:39] marked-empty building=2 blocks=2 [2026-08-30 06:24:39] remove-base building=2 blocks=2 entities=3 ``` Keep those. When somebody insists their base vanished for no reason, this is the answer. ## Paced, not a frame spike Removal is throttled. Entities killed per frame defaults to 5 and the scan yields every 10 buildings, so a large base takes a few seconds of wall time to disappear instead of freezing the server. Lower it if your server is already struggling; raise it while clearing a backlog during a restart window. ## Features - Strips cupboard auth from players offline past a threshold you set - Optional base removal once nobody is authorised at all — **off by default** - Global dry-run mode, plus a `db.preview` that simulates the whole chain - Exempt permission for staff and VIP ranks - Optional rule: one active player on the cupboard protects the whole base - Optional sweep of bases that have no tool cupboard at all - Minimum base size floor, so stray foundations are left to vanilla - Tells returning players their auth was removed - Per-day audit log of every deauth and every removal - Paced entity removal with a configurable per-frame budget - `db.selftest` — eleven checks, including a signature check against the vanilla auth API - Hooks and API for other plugin authors - Oxide and Carbon - No dependencies ## Commands Console, or in-game with `decaybooster.admin`. | Command | Does | |---|---| | `db.preview` | Dry-run scan. Reports everything it would do, changes nothing | | `db.scan` | Run a scan now, for real | | `db.status` | Config summary, tracked players, last scan result, oldest empty bases | | `db.forget <steamid>` | Reset one player's offline clock, e.g. after a support ticket | | `db.selftest` | Eleven checks against the live server | ``` DecayBooster status auth removed after : 7 days offline scan interval : 60 minutes dry run : False base removal : off tracked players : 0 bases sitting empty: 0 scan in progress : False last scan : 0 min ago ``` ## Permissions | Permission | Effect | |---|---| | `decaybooster.exempt` | This player is never deauthorised. Grant it to a group for VIPs or staff | | `decaybooster.admin` | The `db.*` commands from in-game | ``` oxide.grant group vip decaybooster.exempt oxide.grant user 76561198000000000 decaybooster.admin ``` ## Settings ```json { "Days a player must be offline before their cupboard auth is removed": 7.0, "Minutes between scans": 60.0, "Scan once on server start as well": true, "Dry run - log what would happen and change nothing": false, "Keep everyone authorised if at least one player on the cupboard is still active": false, "Remove bases once no player is authorised on them (destructive, off by default)": false, "Hours a base sits with nobody authorised before it is removed": 24.0, "Also remove bases that have no tool cupboard at all": false, "Smallest base worth removing, in building blocks (ignores twig spam and single foundations)": 1, "Entities killed per frame while removing a base - lower is gentler on the server": 5, "Tell players when they return that their auth was removed": true, "Announce base removals in the server console": true, "Write every deauth and removal to oxide/logs/DecayBooster": true } ``` The two that change what your server does are `Remove bases once no player is authorised on them` and `Keep everyone authorised if at least one player on the cupboard is still active` — the second one means an active clanmate protects the whole cupboard. ## For other plugin authors ```csharp void OnDecayBoosterDeauth(BuildingPrivlidge tc, ulong userId) { } // Return non-null to spare this base. object OnDecayBoosterBaseRemove(BuildingManager.Building building) { return true; } void OnDecayBoosterBaseRemoved(uint buildingId) { } ``` ```csharp bool exempt = DecayBooster.Call<bool>("IsPlayerExempt", userId); double lastSeen = DecayBooster.Call<double>("GetLastSeen", userId); // unix seconds, 0 if untracked DecayBooster.Call("ResetOfflineTimer", userId); ``` ## Requirements Oxide or Carbon. No other plugin required. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$14.99 · v2.0.0

RUST PLUGIN

EventStats

One leaderboard for every event on your server. Raidable Bases, boss fights, dungeons, NPC raid waves, and every monument event PveMode runs — tracked in one place, ranked, and visible to your players. ## The problem You run a dozen event plugins. Each keeps its own numbers, or none at all, and none of them talk to each other. So nobody — not you, not your players — can answer "who is actually playing the content I installed?" Events end up feeling invisible. Nobody competes over something that keeps no score. ## What EventStats does Listens to the event plugins you already run and records participation, time spent and wins in one place. **Six plugins by direct hook, no polling:** | Plugin | What gets recorded | |---|---| | **RaidableBases** | Every raid entered, and how long each player spent inside | | **BossMonster** | One row per boss, by that boss's own name, with damage attribution | | **Triangulation** | Time in the event zone, and the winner | | **DungeonEvents** | One row per dungeon tier, owner and winners | | **NpcRaiders** | One row per raid wave type | | **ExtraEvents** | One row per event, with participation by command, item or kit — and winners the same way | **Everything PveMode runs, polled on a timer.** PveMode is the hub most PVE servers already use to own their events, and EventStats reads straight out of it. That covers, by name: `AirEvent` · `ArmoredTrain` · `ArcticBaseEvent` · `BossMonster` · `Convoy` · `DefendableBases` · `FerryTerminalEvent` · `GasStationEvent` · `HarborEvent` · `JunkyardEvent` · `OperationFortress` · `PowerPlantEvent` · `SatDishEvent` · `SuperMarketEvent` · `TrainYardEvent` · `WaterEvent` It is not limited to that list. Alongside the named events, EventStats asks PveMode what each online player is currently in, so any event PveMode reports gets a row — including ones released after this plugin was. Because boss names, dungeon tiers, raid wave types and ExtraEvents identifiers all become rows of their own, a busy PVE server ends up with dozens of tracked events rather than a handful of headings. ## What your players see **`/eventstats`** opens the leaderboard UI. Sort it, page it, switch modes, drill into any event, drill into any player. **`/playerstats <name|steamid>`** pulls one person's record — what they joined, what they finished, how they rank. Events with no activity for a threshold you set drop off the board, so a plugin you unloaded three wipes ago is not still taking up a row. ## Features - Participation, session time and wins across every event system above - Direct hooks for six plugins, plus everything PveMode manages - Per-boss, per-tier, per-wave and per-event rows, not one lumped total - Boss damage attribution, so a kill credits everyone who actually fought - Full leaderboard UI with sorting, paging and per-event drill-down - Per-player stats lookup by name or SteamID - `/bossstatus` for a live read on boss events - `/pveapi` prints a PveMode API diagnostic to console when something looks wrong - Picks up PveMode automatically if it loads after EventStats does - Configurable poll interval, page size and inactive-event threshold - Data written on server save, so a crash does not cost the board - Oxide and Carbon - Every supported plugin is optional — EventStats tracks whichever ones it finds ## Commands | Command | Description | |---|---| | `/eventstats` | Open the leaderboard UI | | `/playerstats <name\|steamid>` | One player's event record | | `/bossstatus` | Current boss event state | | `/forcepoll` | Poll PveMode now instead of waiting for the timer (admin) | | `/pveapi` | PveMode API diagnostic to console (admin) | | `/migratedata` | Migrate stored stats | ## Configuration ```json { "Poll Interval (seconds)": 60.0, "Inactive Event Threshold (days)": 3, "Leaderboard Page Size": 15 } ``` Three settings, because everything else is discovered from whatever event plugins are loaded. ## Requirements Oxide or Carbon. No hard dependency: the six hook integrations work on their own, and PveMode is what unlocks the monument and roaming event coverage. Install none of them and the board is simply empty. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$14.99 · v1.0.2

RUST PLUGIN

FuseEconomy

Heavy Fuses have no craft recipe and drop at VeryRare. Give your players a way to buy them — with resources, Economics or ServerRewards. ## The problem Open the Rust item data for `fuse.highgrade`. Category: Component. Rarity: VeryRare. Repairable: false. Craftable: **it isn't**. There is no blueprint, no workbench recipe, no way to make one. So on your server, the only Heavy Fuses that exist are the ones the loot tables happen to hand out. If your population is small, or your loot is tuned for something other than components, the Power Plant simply never turns on. ## What FuseEconomy does Puts Heavy Fuses on sale. `/fuse buy` — pay in resources, Economics balance or ServerRewards points, get fuses. `/fuse sell` — sell spares back at a refund rate you set. `/fuse` — shows the price and how many they can still buy today. You control the cost, the currency, the condition of what they get, the cooldown between purchases and a daily cap per player. Give trusted ranks `fuseeconomy.nolimit` to skip the cap entirely. ## Three payment modes **Items** — any combination of shortnames and amounts. Default is 20 High Quality Metal and 2 Tech Trash. Make it 5000 stone if you want, or a single scrap. **Economics** — a flat currency price per fuse. **ServerRewards** — a flat RP price per fuse. ## Done carefully Small plugin, but the details are the part that bites: - **Fuses come out as separate items, never a stack.** Heavy Fuses carry condition. Merging them into one stack destroys it. Buy three, get three. - **Resources are only deducted once every ingredient is confirmed present.** A player who is one Tech Trash short loses nothing. - **Inventory space is checked before payment is taken.** No paying for fuses that land on the floor. - **Daily limits roll over on the UTC date**, and survive restarts. ## Features - Buy and sell Heavy Fuses by chat command - Items, Economics or ServerRewards - Configurable purchase condition — sell part-used fuses if you want a cheaper tier - Configurable refund percentage, or disable selling entirely - Per-player cooldown and daily cap, with a bypass permission - Optional permission gates on buying and on selling - Developer API so your shop or kit plugin can hand out fuses correctly - Full language file - Oxide and Carbon - No hard dependencies ## Commands | Command | Description | |---|---| | `/fuse` | Price and remaining daily allowance | | `/fuse buy [amount]` | Buy Heavy Fuses | | `/fuse sell [amount]` | Sell Heavy Fuses back | ## Permissions - `fuseeconomy.buy` — required to buy, if you enable the gate - `fuseeconomy.sell` — required to sell, if you enable the gate - `fuseeconomy.nolimit` — ignore cooldown and daily cap ## API ```csharp [PluginReference] private Plugin FuseEconomy; FuseEconomy?.Call("GiveHeavyFuse", player, 1); ``` ## Configuration ```json { "Payment mode (items, economics, serverrewards)": "items", "Item cost per fuse (shortname: amount)": { "metal.refined": 20, "techparts": 2 }, "Currency cost per fuse (economics / serverrewards)": 500.0, "Condition of a purchased fuse (percent of max)": 100.0, "Refund percent when selling a fuse back": 50.0, "Seconds between purchases (0 disables)": 60.0, "Max fuses bought per player per day (0 is unlimited)": 6, "Require the fuseeconomy.buy permission": false, "Require the fuseeconomy.sell permission": false } ``` ## Requirements Rust server on the Power Trip build (2026-08-06) or newer. ## Pairs with **GridControl** — guarantee a baseline powergrid stage, then let players buy fuses to push past it. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$9.99 · v1.0.0

RUST PLUGIN

GivingTree

A custom seed item your players plant, guard and come back to. The longer the tree grows, the more loot crates it drops when they finally chop it. ## The problem Most reward plugins hand out loot the moment a condition is met. Nothing on a Rust server asks a player to plant something, leave it, and come back — and that waiting is exactly what makes a reward feel earned, and worth defending. ## What GivingTree does Give your players a custom skinned item — through a shop, a kit, a loot table, an event prize, wherever you already hand things out. Holding it and pressing fire plants a real tree where they stand. It ages on the server. Chop it down later and it drops loot crates: how many depends on how old it was when it fell. Ten seconds gets one crate. Leave it a day and it is worth going home to guard. ## Growth stages you set Growth is a plain list of stages, each an age in seconds and a crate count. Add as many rows as you like, stretch the timing to hours or days, and the crate count scales however you want it to. Crates come from a list of container prefabs you control, so the reward tier is yours to set. ## Kept from being farmed - **Trees per player per 24 hours** — a hard cap - **Tree lifetime in days** — abandoned trees do not stay on your map forever - **Crate despawn time** — loot from a chopped tree does not sit there all wipe - **Teammates can chop, or not.** Teammates can loot the crates, or not. Two separate switches, so you decide whether this is a solo reward or a group project. Vanilla teams count, and Clans and Friends are used as well when either plugin is loaded. ## Features - Plant a tree from a custom item, by item id and skin id you choose - Age-based drop table with as many growth stages as you want - Configurable tree prefabs — pine, beech, douglas fir, or your own list - Configurable crate prefabs, so the loot tier is yours - Teammate chop and teammate loot toggles — Clans- and Friends-aware - Per-player daily planting cap - Tree lifetime and crate despawn timers - `/mytrees` — a UI showing a player their trees and where they are - Admin planting, plus locate, draw, dump and debug tools for support - Trees and history survive restarts, and are cleared on a new save - Oxide and Carbon - Clans and Friends used when present, neither required ## Commands | Command | Access | Description | |---|---|---| | Press fire holding the tree item | `givingtree.use` | Plant a tree where you stand | | `/mytrees` | `givingtree.use` | Your trees, their age and where they are | | `/planttree` | `givingtree.admin` | Plant a tree without consuming an item | | `/gtwhereami` | `givingtree.admin` | Your position, for placing things | | `/gtdraw` | `givingtree.admin` | Draw tree positions in the world | | `/gtdump` | `givingtree.admin` | Dump tree data for a support ticket | | `/gtdebug` | `givingtree.admin` | Verbose logging toggle | ## Permissions | Permission | Effect | |---|---| | `givingtree.use` | Plant trees and open `/mytrees` | | `givingtree.admin` | The admin and debug commands | ## Configuration ```json { "UI: colours": { }, "Tree Item ID": -1779183908, "Tree Skin ID": 3605386175, "Tree Prefabs": [ "assets/bundled/prefabs/autospawn/resource/v3_temp_forest_pine/pine_a.prefab", "assets/bundled/prefabs/autospawn/resource/v3_temp_forest/american_beech_a.prefab", "assets/bundled/prefabs/autospawn/resource/v3_temp_forest_pine/douglas_fir_a.prefab" ], "Growth Stages": [ { "AgeSeconds": 10, "Drops": 1 }, { "AgeSeconds": 20, "Drops": 2 }, { "AgeSeconds": 30, "Drops": 3 } ], "Possible Container Prefabs": [ ], "Allow Teammates To Chop": true, "Allow Teammates To Loot Crates": true, "Max Trees Per 24h": 3, "Tree Lifetime (days)": 7, "Crate Despawn Time (seconds)": 300 } ``` The default growth stages are deliberately fast so you can test it in a minute. Stretch them before you go live. ## Requirements Oxide or Carbon. Clans and Friends are used if you have them; neither is required. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$9.99 · v1.3.0

RUST PLUGIN

PocketBox

Link one box at home, then send loot to it from anywhere on the map with a button. No teleporting, no running back, no dropping half your farm on a rock. ## The problem Your players fill up two kilometres from base. Their options are to walk home, die on the way home, or leave it behind. On a high-pop server that walk is where most of the farming time goes, and on a low-pop server it is just tedium. ## What PocketBox does Look at a storage box you placed, run the link command, and that box is now your pocket box. From then on, press the deposit button anywhere on the map and pick what goes: select individual slots, select all, or clear the selection and start again. The items land in the linked box. If the box is full you are told, and nothing is lost. The button is a draggable UI element — put it where it does not cover your crosshair, and it stays there. ## Kept fair on purpose - **Building privilege is required to link**, by default. The box has to be inside your own cupboard, not someone else's base. - **Deposit limits per rank.** `pocketbox.use` gets one limit, `pocketbox.vip` gets a higher one. - **A cooldown between deposits**, configurable, or off. - **It can cost something.** Scrap, any item, Economics currency or ServerRewards points — with an optional skin and display-name check if you want the cost to be a specific custom item. - **If the box is destroyed, the link breaks and the player is told.** No silent void. ## Features - Link any player-placed storage box and deposit to it from anywhere - Slot-by-slot selection, select-all, and clear-all in one UI - Draggable deposit button with per-player saved position - Separate deposit limits for normal and VIP permissions - Configurable cooldown, or none - Cost per deposit: none, item, Economics or ServerRewards - Optional skin id and display name check on the cost item - Building privilege requirement for linking - Unlink command, and clean handling when the box is destroyed - Configurable chat command name, prefix and chat icon - Full language file — 17 messages - Oxide and Carbon - Economics, ServerRewards and Backpacks used when present, none required ## Commands The command name is configurable; it is `/pocketbox` out of the box. | Command | Description | |---|---| | `/pocketbox` | Help | | `/pocketbox link` | Link the box you are looking at | | `/pocketbox unlink` | Drop the link | | `/pocketbox move` | Drag the deposit button, then click to save its position | | `/pocketbox reset` | Put the UI back to default positions | ## Permissions | Permission | Effect | |---|---| | `pocketbox.use` | Link a box and deposit, at the normal limit | | `pocketbox.vip` | The higher deposit limit | | `pocketbox.admin` | Admin commands | ## Configuration ```json { "Chat prefix": "Pocket Box", "Chat icon Steam ID": 0, "Command": "pocketbox", "Require building privilege to link box": true, "Normal deposit limit (pocketbox.use)": 6, "VIP deposit limit (pocketbox.vip)": 12, "Deposit cooldown (seconds, 0 = disabled)": 10, "Cost": { "Type (None / Economics / ServerRewards / Item)": "Item", "Amount": 10, "Item shortname": "scrap", "Item display name (leave empty to skip name check)": "", "Item skin ID (0 = any skin)": 0 } } ``` ## Requirements Oxide or Carbon. Economics or ServerRewards only if you charge in them. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$9.99 · v1.1.3

RUST PLUGIN

RecyclerControl

Power Trip nerfed your recyclers to 50%, removed the green ones from Outpost, and locked the best recycler in the game behind stage 4. Set every one of those numbers yourself. ## The problem On 2026-08-06 your recycler economy changed and nobody asked you. Normal recyclers went from 60% to **50%** return, and only climb back to 60% once your powergrid reaches stage 2. The green recyclers were **removed from Outpost**. The best recycler on the island — 75% return on a four-second cycle — is the new Red Recycler, sitting inside the green card room at Power Plant, available only at **stage 4**. If you had spent a wipe balancing gather rates, loot tables and recycler output against each other, that balance is now something else. And on any server where the grid never reaches stage 2, your players are permanently recycling at a rate Facepunch intended as the *punished* state. ## What RecyclerControl does Gives you every number. For each of the three recycler types — Green, Yellow (safe zone) and Red (Power Plant) — you set the efficiency, the seconds per recycle tick, the powergrid stage it needs to run at all, and the stage and values for its powered buff. Want 60% back? One field. Want the Red Recycler to work without a stage 4 grid? One field. Want the grid to stop affecting recyclers entirely on your PVE server? Three fields. Want a 1-second recycler on your 10x? Also one field. ## Nothing changes until you say so Every setting defaults to `-1`, which means "leave vanilla alone". Install it, load it, and your server behaves exactly as it did — then change only what you want changed. The plugin snapshots the game's own recycler config on load and restores it on unload. There is no permanent edit and nothing written to a game file. ## Built the right way Rust keeps all recycler behaviour in one config asset. This plugin writes that asset in memory and then tells every recycler on the map to re-read it — no Harmony patch, no reflection into private state, no per-recycler hook running on every item. Recyclers that are mid-cycle cache their numbers, so the plugin optionally bounces running ones to pick up the change immediately. That is a toggle, in case you would rather not interrupt anyone. ## Features - Efficiency, tick speed and powergrid gating for Green, Yellow and Red recyclers independently - Set the stage each buff unlocks at, or disable grid buffs entirely - Override which stage green recyclers hit full efficiency at - Everything defaults to vanilla — nothing changes until you edit it - `/recycler` shows any player the live efficiency, speed and lock state of all three types - Live reload with one console command, no restart - Optional restart of running recyclers when settings change - Clean unload — vanilla values restored - Full language file - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/recycler` | everyone | Efficiency, tick rate and lock state for all three types | | `recyclercontrol.apply` | admin | Reload config and push it at every recycler on the map | ## Permissions - `recyclercontrol.admin` — `recyclercontrol.apply` ## Configuration ```json { "Green recyclers (Outpost, Bandit, deployed)": { "Efficiency 0-1 (-1 leaves vanilla)": -1.0, "Seconds per recycle tick (-1 leaves vanilla)": -1.0, "Powergrid stage required to work at all (-1 leaves vanilla, 0 removes the requirement)": -1, "Powergrid stage that buffs efficiency (-1 leaves vanilla, 0 disables the buff)": -1, "Buffed efficiency 0-1 (-1 leaves vanilla)": -1.0, "Powergrid stage that buffs speed (-1 leaves vanilla, 0 disables the buff)": -1, "Buffed seconds per recycle tick (-1 leaves vanilla)": -1.0 }, "Yellow recyclers (safe zone)": { }, "Red recycler (Power Plant, stage 4)": { }, "powergrid.greenRecyclerFullEfficiencyStage (-1 leaves vanilla)": -1, "Restart running recyclers when settings are applied": true } ``` The Yellow and Red blocks carry the same seven fields as Green. ## One thing that looks like a bug Yellow recyclers report as Green outside a safe zone. That is vanilla `GetRecyclerType()`, not this plugin. ## Requirements Rust server on the Power Trip build (2026-08-06) or newer. ## Pairs with **GridControl** — hold the grid at stage 4 and the Red Recycler runs all wipe without anyone feeding fuses. ## Support Every purchase comes with the private updates channel in our Discord and updates for the life of the plugin. Your licence key and download live on your purchases page the moment payment clears.

$9.99 · v1.0.0

RUST PLUGIN

EntMessage

Tell players what a thing does the moment they place it. Build the messages in game, with an item browser — no config file, no restart. ## The problem Every server has rules and features its players only find out about by breaking them. Place a turret in a safe zone, place a large box past the entity limit, place a research table when your server has a custom crafting system — the plugin that governs it usually says nothing until it says no. ## What EntMessage does `/entmessage` opens an editor. Pick an entity from a searchable item browser, write the message, save. From then on, any player who places that entity gets your message in chat. Nothing else to it — which is the point. The message is set where you can see the entity list, not in a JSON file with prefab paths in it. ## Features - In-game editor with a searchable, paged item browser - Any number of entity-to-message rules - Multi-select, so one message can cover a group of entities - Configurable chat prefix, message colour and Steam avatar icon - Long messages split automatically at a character count you set - Settings persist across restarts and reloads - One permission for the whole editor - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/entmessage` | `entmessage.admin` | Open the editor | Everything else happens in the UI. ## Permissions - `entmessage.admin` — open and use the editor ## Configuration ```json { "Chat Prefix": "<color=#e67e22>[Info]</color>", "Message Color": "#f5c542", "Steam Icon ID (Steam64, 0 = disabled)": 0, "Max chars per chat message (message splits if longer)": 200 } ``` The messages themselves are stored with your server data, not in this file — they are made in the UI. ## Requirements Oxide or Carbon. No dependencies. ## Support Free, and supported like everything else here — the private updates channel in our Discord comes with it.

$0.00 · v1.0.3

RUST PLUGIN

FlowerPower

Picking a wild plant gives a short speed boost. Small idea, and it changes how your players move across the map. ## What it does Berries, hemp, corn, mushrooms, pumpkins, potatoes, orchids, roses — every wild collectable is on a list you control. Pick one and you run faster for a few seconds, with a toast on screen telling you it is active. There is also a straight `/speed` toggle, gated behind its own permission, for staff or for a VIP perk. ## Why bother Roadside plants are scenery on most servers. This makes the route past them the route worth taking, and gives your gatherers something back on the long walk home. It costs nothing to run and takes one config edit to tune. ## Features - Speed boost on wild plant pickup, on a plant list you control - Configurable multiplier and duration - On-screen toast when the boost starts - Separate `/speed` toggle permission - Boost cleared on disconnect, so nothing leaks between sessions - Oxide and Carbon - No dependencies ## Commands | Command | Access | Description | |---|---|---| | `/speed` | `speedboost.command` | Toggle the speed boost | ## Permissions | Permission | Effect | |---|---| | `speedboost.use` | Gets the boost from picking wild plants | | `speedboost.command` | Can use `/speed` | ## Configuration ```json { "Default Speed Multiplier": 1.5, "Boost Duration (Seconds)": 5.0, "Wild Plant Prefabs (ShortPrefabNames)": [ "berry-black-collectable", "berry-blue-collectable", "berry-green-collectable", "berry-red-collectable", "berry-white-collectable", "berry-yellow-collectable", "corn-collectable", "hemp-collectable", "mushroom-cluster-5", "mushroom-cluster-6", "orchid-collectable", "potato-collectable", "pumpkin-collectable", "rose-collectable" ] } ``` Cut the list down to hemp only if you want the boost to mean something specific, or add your own collectables. ## Requirements Oxide or Carbon. No dependencies. ## Support Free, and supported like everything else here — the private updates channel in our Discord comes with it.

$0.00 · v1.0.8

RUST PLUGIN

GiveawayPlus

Run giveaways your whole server is entered into automatically, on a timer or on demand, with the result posted to Discord. ## What it does Start a giveaway and every player online is entered — no command to remember, no reaction to click, nothing for them to miss while they are being shot at. Reminders go out while it runs. When it ends, the winners are announced in chat with the prize named. Set it to run itself: a duration, an interval, and it repeats all wipe. ## Prizes Four kinds, and you can combine them: - **Items** — a list, so one draw can pay several things: shortname, amount and skin id each - **Economics** — currency straight into their balance - **ServerRewards** — RP - **Skill Tree** — XP The VIP giveaway is a second, separate draw with its own command, so you can run a normal giveaway for everyone and a bigger one when it suits you. It can run console commands on the winner, which is how a VIP rank gets granted: ```json "VIP commands": [ "oxide.grant user {winner} vip" ] ``` ## Discord Point it at a webhook and the result is posted when the giveaway ends, in an embed with a colour you set. Your Discord finds out at the same time your server does. ## Features - Everyone online entered automatically — no signup step - Manual and fully automatic giveaways - Separate VIP giveaway draw - Configurable winner count, with a graceful message when fewer players are eligible - Rewards: items with skins, Economics, ServerRewards, Skill Tree XP - Console commands run on the winner, for rank grants - Reminder messages while a giveaway is open - Discord webhook with configurable embed colour - Reward settings validated before a giveaway can start, so a broken prize cannot silently pay nothing - Config reload without a restart - Full language file — 14 messages - Oxide and Carbon - Economics, ServerRewards and Skill Tree used when present, none required ## Commands | Command | Access | Description | |---|---|---| | `/startgiveaway` | `giveawayplus.use` | Start a giveaway now | | `/startvipgiveaway` | `giveawayplus.use` | Start the VIP draw | | `/endgiveaway` | `giveawayplus.use` | End the running giveaway early | | `giveawayplus.reload` | console | Reload the config | ## Permissions - `giveawayplus.use` — start and end giveaways ## Configuration ```json { "General": { "Giveaway enabled": true, "VIP giveaway enabled": true, "Winner count": 1, "Reminder interval (seconds)": 60 }, "Auto Giveaway": { "Enabled": false, "Duration (seconds)": 300, "Interval (minutes)": 60 }, "Rewards": { "Items": [ { "Shortname": "wood", "Amount": 1000, "Skin ID": 0 } ], "VIP commands": [ "oxide.grant user {winner} vip" ], "Economics": { "Enabled": false, "Amount": 100.0 }, "Server Rewards": { "Enabled": false, "Amount": 100 }, "Skill Tree": { "Enabled": false, "XP amount": 500.0 } }, "Discord": { "Webhook URL": "", "Embed color (hex)": "#7289DA", "Send result to Discord on giveaway end": true } } ``` ## Requirements Oxide or Carbon. The Economics, ServerRewards and SkillTree plugins are optional — each reward type is simply skipped if its plugin is missing. ## Support Free, and supported like everything else here — the private updates channel in our Discord comes with it.

$0.00 · v2.0.1