diff --git a/README.md b/README.md
index 2830a51..605ddcb 100644
--- a/README.md
+++ b/README.md
@@ -56,6 +56,7 @@ particular game; a module is what makes it a site *for* one.
| [uo/API.md](modules/uo/API.md) · [uo/SCHEMA.md](modules/uo/SCHEMA.md) | module-uo's own route surface and the tables it owns |
| [kit-acceptance.md](modules/kit-acceptance.md) | The Integration Kit acceptance run — building a module by following the kit alone, and what it found |
| [rust-dryrun.md](modules/rust-dryrun.md) | A written, deliberately unimplemented `module-rust` — the test that the module contract generalises past the game it was extracted from |
+| [rust/](modules/rust/README.md) | **Reference for the upcoming `module-rust`** — a mirror of uMod's Rust Oxide API, scraped from upstream: [HOOKS.md](modules/rust/HOOKS.md) (all 477 hooks) and [DEFINITIONS.md](modules/rust/DEFINITIONS.md) (678 items, 2,590 skins) |
### `link/`
| Doc | What it covers |
diff --git a/modules/rust/DEFINITIONS.md b/modules/rust/DEFINITIONS.md
new file mode 100644
index 0000000..19e8830
--- /dev/null
+++ b/modules/rust/DEFINITIONS.md
@@ -0,0 +1,3830 @@
+# Rust item and skin definitions
+
+The item table a plugin needs to name anything — **678 items** — and the workshop skin ids uMod
+publishes for them (**2590 skins** across 104 items).
+
+> **Scraped verbatim from [`umod.org/documentation/games/rust/definitions`](https://umod.org/documentation/games/rust/definitions) on 2026-09-15.**
+> Facepunch adds and renames items on most monthly wipes, so **treat this as a snapshot, not a**
+> **constant.** A plugin should resolve items through the game's own
+> `ItemManager.FindItemDefinition(shortname)` at runtime and use this table for authoring and
+> lookup only. See [`README.md`](README.md) to refresh it.
+
+---
+
+## Which key to use
+
+Three identifiers appear for the same item and they are not interchangeable:
+
+- **Short name** (`rifle.ak`) — stable across wipes and the only one safe to persist or put in
+ a config file. Prefer it everywhere.
+- **Item ID** (`1545779598`) — the numeric id on the wire and in save files. Facepunch has
+ renumbered these before; do not hard-code them.
+- **Display name** (`Assault Rifle`) — localised and cosmetic. Never a key.
+
+---
+
+## Items
+
+Sorted by short name.
+
+| Short name | Item ID | Display name |
+|---|---:|---|
+| `abovegroundpool` | 1840570710 | Above Ground Pool |
+| `ammo.grenadelauncher.buckshot` | 1055319033 | 40mm Shotgun Round |
+| `ammo.grenadelauncher.he` | 349762871 | 40mm HE Grenade |
+| `ammo.grenadelauncher.smoke` | 915408809 | 40mm Smoke Grenade |
+| `ammo.handmade.shell` | 588596902 | Handmade Shell |
+| `ammo.nailgun.nails` | -2097376851 | Nailgun Nails |
+| `ammo.pistol` | 785728077 | Pistol Bullet |
+| `ammo.pistol.fire` | 51984655 | Incendiary Pistol Bullet |
+| `ammo.pistol.hv` | -1691396643 | HV Pistol Ammo |
+| `ammo.rifle` | -1211166256 | 5.56 Rifle Ammo |
+| `ammo.rifle.explosive` | -1321651331 | Explosive 5.56 Rifle Ammo |
+| `ammo.rifle.hv` | 1712070256 | HV 5.56 Rifle Ammo |
+| `ammo.rifle.incendiary` | 605467368 | Incendiary 5.56 Rifle Ammo |
+| `ammo.rocket.basic` | -742865266 | Rocket |
+| `ammo.rocket.fire` | 1638322904 | Incendiary Rocket |
+| `ammo.rocket.hv` | -1841918730 | High Velocity Rocket |
+| `ammo.rocket.sam` | -384243979 | SAM Ammo |
+| `ammo.rocket.smoke` | -17123659 | Smoke Rocket WIP!!!! |
+| `ammo.shotgun` | -1685290200 | 12 Gauge Buckshot |
+| `ammo.shotgun.fire` | -1036635990 | 12 Gauge Incendiary Shell |
+| `ammo.shotgun.slug` | -727717969 | 12 Gauge Slug |
+| `ammo.snowballgun` | 550753330 | |
+| `antiradpills` | -1432674913 | Anti-Radiation Pills |
+| `apple` | 1548091822 | Apple |
+| `apple.spoiled` | 352130972 | Rotten Apple |
+| `arcade.machine.chippy` | 359723196 | Chippy Arcade Game |
+| `arrow.bone` | 215754713 | Bone Arrow |
+| `arrow.fire` | 14241751 | Fire Arrow |
+| `arrow.hv` | -1023065463 | High Velocity Arrow |
+| `arrow.wooden` | -1234735557 | Wooden Arrow |
+| `attire.banditguard` | -1622110948 | Bandit Guard Gear |
+| `attire.bunny.onesie` | -1266045928 | Bunny Onesie |
+| `attire.bunnyears` | -1004426654 | Bunny Ears |
+| `attire.hide.boots` | 794356786 | Hide Boots |
+| `attire.hide.helterneck` | 3222790 | Hide Halterneck |
+| `attire.hide.pants` | 1722154847 | Hide Pants |
+| `attire.hide.poncho` | 980333378 | Hide Poncho |
+| `attire.hide.skirt` | -1773144852 | Hide Skirt |
+| `attire.hide.vest` | 196700171 | Hide Vest |
+| `attire.nesthat` | 1081315464 | Nest Hat |
+| `attire.reindeer.headband` | -324675402 | Reindeer Antlers |
+| `autoturret` | -2139580305 | Auto Turret |
+| `axe.salvaged` | -262590403 | Salvaged Axe |
+| `bandage` | -2072273936 | Bandage |
+| `barrelcostume` | -1215166612 | A Barrel Costume |
+| `barricade.concrete` | -1950721390 | Concrete Barricade |
+| `barricade.metal` | 1655650836 | Metal Barricade |
+| `barricade.sandbags` | -559599960 | Sandbag Barricade |
+| `barricade.stone` | 15388698 | Stone Barricade |
+| `barricade.wood` | 866889860 | Wooden Barricade |
+| `barricade.wood.cover` | 1373240771 | Wooden Barricade Cover |
+| `barricade.woodwire` | 1382263453 | Barbed Wooden Barricade |
+| `battery.small` | 609049394 | Battery - Small |
+| `bbq` | 1099314009 | Barbeque |
+| `beachchair` | -321431890 | Beach Chair |
+| `beachparasol` | -1621539785 | Beach Parasol |
+| `beachtable` | 657352755 | Beach Table |
+| `beachtowel` | -8312704 | Beach Towel |
+| `bearmeat` | -1520560807 | Raw Bear Meat |
+| `bearmeat.burned` | -989755543 | Burnt Bear Meat |
+| `bearmeat.cooked` | 1873897110 | Cooked Bear Meat |
+| `bed` | -1273339005 | Bed |
+| `black.berry` | 1771755747 | Black Berry |
+| `black.raspberries` | 1931713481 | Black Raspberries |
+| `bleach` | 1553078977 | Bleach |
+| `blood` | 1776460938 | Blood |
+| `blue.berry` | 1112162468 | Blue Berry |
+| `blueberries` | -586342290 | Blueberries |
+| `blueprintbase` | -996920608 | Blueprint |
+| `bone.armor.suit` | 1746956556 | Bone Armor |
+| `bone.club` | 1711033574 | Bone Club |
+| `bone.fragments` | 1719978075 | Bone Fragments |
+| `boogieboard` | -1478094705 | Boogie Board |
+| `boots.frog` | -1000573653 | Frog Boots |
+| `botabag` | 613961768 | Bota Bag |
+| `bow.compound` | 884424049 | Compound Bow |
+| `bow.hunting` | 1443579727 | Hunting Bow |
+| `box.repair.bench` | 803222026 | Repair Bench |
+| `box.wooden` | -180129657 | Wood Storage Box |
+| `box.wooden.large` | 833533164 | Large Wood Box |
+| `bucket.helmet` | 850280505 | Bucket Helmet |
+| `bucket.water` | 1424075905 | Water Bucket |
+| `building.planner` | 1525520776 | Building Plan |
+| `burlap.gloves` | 1366282552 | Leather Gloves |
+| `burlap.gloves.new` | 21402876 | Burlap Gloves |
+| `burlap.headwrap` | 1877339384 | Burlap Headwrap |
+| `burlap.shirt` | 602741290 | Burlap Shirt |
+| `burlap.shoes` | -761829530 | Burlap Shoes |
+| `burlap.trousers` | 1992974553 | Burlap Trousers |
+| `cactusflesh` | 1783512007 | Cactus Flesh |
+| `cakefiveyear` | 1973165031 | Birthday Cake |
+| `campfire` | 1946219319 | Camp Fire |
+| `can.beans` | -700591459 | Can of Beans |
+| `can.beans.empty` | 1655979682 | Empty Can Of Beans |
+| `can.tuna` | -1941646328 | Can of Tuna |
+| `can.tuna.empty` | -1557377697 | Empty Tuna Can |
+| `candycane` | 1121925526 | Candy Cane |
+| `candycaneclub` | 1789825282 | Candy Cane Club |
+| `car.key` | 946662961 | Car Key |
+| `carburetor1` | 656371028 | Low Quality Carburetor |
+| `carburetor2` | 656371027 | Medium Quality Carburetor |
+| `carburetor3` | 656371026 | High Quality Carburetor |
+| `cctv.camera` | 634478325 | CCTV Camera |
+| `ceilinglight` | 1142993169 | Ceiling Light |
+| `chainsaw` | 1104520648 | Chainsaw |
+| `chair` | 1534542921 | Chair |
+| `charcoal` | -1938052175 | Charcoal |
+| `chicken.burned` | 1973684065 | Burnt Chicken |
+| `chicken.cooked` | -1848736516 | Cooked Chicken |
+| `chicken.raw` | -1440987069 | Raw Chicken Breast |
+| `chicken.spoiled` | -751151717 | Spoiled Chicken |
+| `chineselantern` | -1916473915 | Chinese Lantern |
+| `chocholate` | 363467698 | Chocolate Bar |
+| `clatter.helmet` | 968019378 | Clatter Helmet |
+| `clone.black.berry` | 122783240 | Black Berry Clone |
+| `clone.blue.berry` | 838831151 | Blue Berry Clone |
+| `clone.corn` | -778875547 | Corn Clone |
+| `clone.green.berry` | -1305326964 | Green Berry Clone |
+| `clone.hemp` | -886280491 | Hemp Clone |
+| `clone.potato` | 1512054436 | Potato Clone |
+| `clone.pumpkin` | 1898094925 | Pumpkin Plant Clone |
+| `clone.red.berry` | 2133269020 | Red Berry Clone |
+| `clone.white.berry` | 1533551194 | White Berry Clone |
+| `clone.yellow.berry` | 390728933 | Yellow Berry Clone |
+| `cloth` | -858312878 | Cloth |
+| `coal` | 204391461 | Coal :( |
+| `coffeecan.helmet` | -803263829 | Coffee Can Helmet |
+| `coffin.storage` | 573676040 | Coffin |
+| `composter` | -1488398114 | Composter |
+| `computerstation` | -1588628467 | Computer Station |
+| `corn` | 1367190888 | Corn |
+| `crankshaft1` | 1158340334 | Low Quality Crankshaft |
+| `crankshaft2` | 1158340331 | Medium Quality Crankshaft |
+| `crankshaft3` | 1158340332 | High Quality Crankshaft |
+| `cratecostume` | 1189981699 | Crate Costume |
+| `crossbow` | 1965232394 | Crossbow |
+| `crude.oil` | -321733511 | Crude Oil |
+| `cupboard.tool` | -97956382 | Tool Cupboard |
+| `cursedcauldron` | 1242522330 | Cursed Cauldron |
+| `deer.skull.mask` | -1903165497 | Bone Helmet |
+| `deermeat.burned` | -78533081 | Burnt Deer Meat |
+| `deermeat.cooked` | -1509851560 | Cooked Deer Meat |
+| `deermeat.raw` | 1422530437 | Raw Deer Meat |
+| `diesel_barrel` | 1568388703 | Diesel Fuel |
+| `diving.fins` | 296519935 | Diving Fins |
+| `diving.mask` | -113413047 | Diving Mask |
+| `diving.tank` | -2022172587 | Diving Tank |
+| `diving.wetsuit` | -1101924344 | Wetsuit |
+| `door.closer` | 1409529282 | Door Closer |
+| `door.double.hinged.metal` | 1390353317 | Sheet Metal Double Door |
+| `door.double.hinged.toptier` | 1221063409 | Armored Double Door |
+| `door.double.hinged.wood` | -1336109173 | Wood Double Door |
+| `door.hinged.industrial.a` | 818733919 | Industrial Door |
+| `door.hinged.metal` | -2067472972 | Sheet Metal Door |
+| `door.hinged.toptier` | 1353298668 | Armored Door |
+| `door.hinged.wood` | 1729120840 | Wooden Door |
+| `door.key` | -1112793865 | Door Key |
+| `dragondoorknocker` | -854270928 | Dragon Door Knocker |
+| `dropbox` | -1519126340 | Drop Box |
+| `drumkit` | -1330640246 | Junkyard Drum Kit |
+| `ducttape` | 1401987718 | Duct Tape |
+| `easter.bronzeegg` | 844440409 | Bronze Egg |
+| `easter.goldegg` | -1002156085 | Gold Egg |
+| `easter.paintedeggs` | -126305173 | Painted Egg |
+| `easter.silveregg` | 1757265204 | Silver Egg |
+| `easterbasket` | 1856217390 | Egg Basket |
+| `easterdoorwreath` | -979302481 | Easter Door Wreath |
+| `electric.andswitch` | 1171735914 | AND Switch |
+| `electric.audioalarm` | 2100007442 | Audio Alarm |
+| `electric.battery.rechargable.large` | 553270375 | Large Rechargable Battery |
+| `electric.battery.rechargable.medium` | 2023888403 | Medium Rechargable Battery |
+| `electric.battery.rechargable.small` | -692338819 | Small Rechargable Battery |
+| `electric.blocker` | -690968985 | Blocker |
+| `electric.button` | -1778897469 | Button |
+| `electric.cabletunnel` | 1835946060 | Cable Tunnel |
+| `electric.counter` | -216999575 | Counter |
+| `electric.doorcontroller` | -502177121 | Door Controller |
+| `electric.flasherlight` | -939424778 | Flasher Light |
+| `electric.fuelgenerator.small` | 1849887541 | Small Generator |
+| `electric.generator.small` | -295829489 | Test Generator |
+| `electric.hbhfsensor` | -1507239837 | HBHF Sensor |
+| `electric.heater` | -784870360 | Electric Heater |
+| `electric.igniter` | -44876289 | Igniter |
+| `electric.laserdetector` | -798293154 | Laser Detector |
+| `electric.orswitch` | -1286302544 | OR Switch |
+| `electric.pressurepad` | -2049214035 | Pressure Pad |
+| `electric.random.switch` | 492357192 | RAND Switch |
+| `electric.rf.broadcaster` | -1044468317 | RF Broadcaster |
+| `electric.rf.receiver` | 888415708 | RF Receiver |
+| `electric.simplelight` | -282113991 | Simple Light |
+| `electric.sirenlight` | 762289806 | Siren Light |
+| `electric.solarpanel.large` | 2090395347 | Large Solar Panel |
+| `electric.splitter` | -563624462 | Splitter |
+| `electric.sprinkler` | -781014061 | Sprinkler |
+| `electric.switch` | 1951603367 | Switch |
+| `electric.teslacoil` | 1371909803 | Tesla Coil |
+| `electric.timer` | 665332906 | Timer |
+| `electric.xorswitch` | 1293102274 | XOR Switch |
+| `electrical.branch` | -1448252298 | Electrical Branch |
+| `electrical.combiner` | -458565393 | Root Combiner |
+| `electrical.memorycell` | -746647361 | Memory Cell |
+| `elevator` | 1177596584 | Elevator |
+| `explosive.satchel` | -1878475007 | Satchel Charge |
+| `explosive.timed` | 1248356124 | Timed Explosive Charge |
+| `explosives` | -592016202 | Explosives |
+| `fat.animal` | -1018587433 | Animal Fat |
+| `fertilizer` | -930193596 | Fertilizer |
+| `fireplace.stone` | -1535621066 | Stone Fireplace |
+| `firework.boomer.blue` | 1744298439 | Blue Boomer |
+| `firework.boomer.champagne` | 1324203999 | Champagne Boomer |
+| `firework.boomer.green` | -656349006 | Green Boomer |
+| `firework.boomer.orange` | -7270019 | Orange Boomer |
+| `firework.boomer.red` | -1553999294 | Red Boomer |
+| `firework.boomer.violet` | -280223496 | Violet Boomer |
+| `firework.romancandle.blue` | -515830359 | Blue Roman Candle |
+| `firework.romancandle.green` | -1306288356 | Green Roman Candle |
+| `firework.romancandle.red` | -1486461488 | Red Roman Candle |
+| `firework.romancandle.violet` | -99886070 | Violet Roman Candle |
+| `firework.volcano` | 261913429 | White Volcano Firework |
+| `firework.volcano.red` | -454370658 | Red Volcano Firework |
+| `firework.volcano.violet` | -1538109120 | Violet Volcano Firework |
+| `fish.cooked` | 1668129151 | Cooked Fish |
+| `fish.minnows` | -542577259 | Minnows |
+| `fish.raw` | 989925924 | Raw Fish |
+| `fish.troutsmall` | -1878764039 | Small Trout |
+| `fishingrod.handmade` | 1569882109 | Handmade Fishing Rod |
+| `fishtrap.small` | 559147458 | Survival Fish Trap |
+| `flamethrower` | -1215753368 | Flame Thrower |
+| `flameturret` | 528668503 | Flame Turret |
+| `flare` | 304481038 | Flare |
+| `flashlight.held` | -196667575 | Flashlight |
+| `floor.grill` | 936496778 | Floor grill |
+| `floor.ladder.hatch` | 1948067030 | Ladder Hatch |
+| `floor.triangle.grill` | 1983621560 | Floor triangle grill |
+| `floor.triangle.ladder.hatch` | 2041899972 | Triangle Ladder Hatch |
+| `fluid.combiner` | -265292885 | Fluid Combiner |
+| `fluid.splitter` | -1166712463 | Fluid Splitter |
+| `fluid.switch` | 443432036 | Fluid Switch & Pump |
+| `fogmachine` | -1973785141 | Fogger-3000 |
+| `fridge` | 1413014235 | Fridge |
+| `fun.bass` | -2107018088 | Shovel Bass |
+| `fun.cowbell` | -1049881973 | Cowbell |
+| `fun.flute` | -2040817543 | Pan Flute |
+| `fun.guitar` | -2124352573 | Acoustic Guitar |
+| `fun.jerrycanguitar` | -979951147 | Jerry Can Guitar |
+| `fun.tambourine` | -1379036069 | Canbourine |
+| `fun.trumpet` | 273172220 | Plumber's Trumpet |
+| `fun.tuba` | 1784406797 | Sousaphone |
+| `furnace` | -1999722522 | Furnace |
+| `furnace.large` | -1992717673 | Large Furnace |
+| `fuse` | -629028935 | Electric Fuse |
+| `gates.external.high.stone` | -691113464 | High External Stone Gate |
+| `gates.external.high.wood` | -335089230 | High External Wooden Gate |
+| `gears` | 479143914 | Gears |
+| `geiger.counter` | 999690781 | Geiger Counter |
+| `generator.wind.scrap` | -1819763926 | Wind Turbine |
+| `ghostsheet` | -1043618880 | Ghost Costume |
+| `giantcandycanedecor` | -695124222 | Giant Candy Decor |
+| `giantlollipops` | 282103175 | Giant Lollipop Decor |
+| `gloweyes` | -690276911 | Glowing Eyes |
+| `glue` | -1899491405 | Glue |
+| `granolabar` | -746030907 | Granola Bar |
+| `gravestone` | 809199956 | Gravestone |
+| `green.berry` | 858486327 | Green Berry |
+| `grenade.beancan` | 1840822026 | Beancan Grenade |
+| `grenade.f1` | 143803535 | F1 Grenade |
+| `grenade.smoke` | 1263920163 | Smoke Grenade |
+| `gun.water` | 722955039 | Water Gun |
+| `gunpowder` | -265876753 | Gun Powder |
+| `guntrap` | 352499047 | Shotgun Trap |
+| `habrepair` | -1759188988 | Hab Repair |
+| `halloween.candy` | -888153050 | Halloween Candy |
+| `halloween.lootbag.large` | 479292118 | Large Loot Bag |
+| `halloween.lootbag.medium` | 1899610628 | Medium Loot Bag |
+| `halloween.lootbag.small` | 1319617282 | Small Loot Bag |
+| `halloween.mummysuit` | 277730763 | Mummy Suit |
+| `halloween.surgeonsuit` | -1785231475 | Surgeon Scrubs |
+| `hammer` | 200773292 | Hammer |
+| `hammer.salvaged` | -1506397857 | Salvaged Hammer |
+| `hat.beenie` | 1675639563 | Beenie Hat |
+| `hat.boonie` | -23994173 | Boonie Hat |
+| `hat.candle` | 1714496074 | Candle Hat |
+| `hat.cap` | -1022661119 | Baseball Cap |
+| `hat.dragonmask` | -22883916 | Dragon Mask |
+| `hat.miner` | -1539025626 | Miners Hat |
+| `hat.ratmask` | 271048478 | Rat Mask |
+| `hat.wolf` | -1478212975 | Wolf Headdress |
+| `hatchet` | -1252059217 | Hatchet |
+| `hazmatsuit` | 1266491000 | Hazmat Suit |
+| `hazmatsuit.spacesuit` | -560304835 | Space Suit |
+| `hazmatsuit_scientist` | -253079493 | Scientist Suit |
+| `hazmatsuit_scientist_peacekeeper` | -1958316066 | Scientist Suit |
+| `healingtea` | -929092070 | Basic Healing Tea |
+| `healingtea.advanced` | -2123125470 | Advanced Healing Tea |
+| `healingtea.pure` | -1677315902 | Pure Healing Tea |
+| `heavy.plate.helmet` | 1181207482 | Heavy Plate Helmet |
+| `heavy.plate.jacket` | -1102429027 | Heavy Plate Jacket |
+| `heavy.plate.pants` | -1778159885 | Heavy Plate Pants |
+| `hitchtroughcombo` | 1160881421 | Hitch & Trough |
+| `hobobarrel` | -1442559428 | Hobo Barrel |
+| `hoodie` | 1751045826 | Hoodie |
+| `horse.armor.roadsign` | 60528587 | Roadsign Horse Armor |
+| `horse.armor.wood` | 1659447559 | Wooden Horse Armor |
+| `horse.saddle` | -1997543660 | Horse Saddle |
+| `horse.saddlebag` | 1400460850 | Saddle bag |
+| `horse.shoes.advanced` | 1989785143 | High Quality Horse Shoes |
+| `horse.shoes.basic` | -1211268013 | Basic Horse Shoes |
+| `horsedung` | -1579932985 | Horse Dung |
+| `horsemeat.burned` | 1917703890 | Burnt Horse Meat |
+| `horsemeat.cooked` | -1162759543 | Cooked Horse Meat |
+| `horsemeat.raw` | -1130350864 | Raw Horse Meat |
+| `hosetool` | 363163265 | Hose Tool |
+| `hq.metal.ore` | -1982036270 | High Quality Metal Ore |
+| `humanmeat.burned` | -682687162 | Burnt Human Meat |
+| `humanmeat.cooked` | 1536610005 | Cooked Human Meat |
+| `humanmeat.raw` | -1709878924 | Raw Human Meat |
+| `humanmeat.spoiled` | 1272768630 | Spoiled Human Meat |
+| `icepick.salvaged` | -1780802565 | Salvaged Icepick |
+| `innertube` | -697981032 | Inner Tube |
+| `innertube.horse` | 185586769 | Inner Tube |
+| `innertube.unicorn` | 2052270186 | Inner Tube |
+| `jacket` | -1163532624 | Jacket |
+| `jacket.snow` | -48090175 | Snow Jacket |
+| `jackhammer` | 1488979457 | Jackhammer |
+| `jackolantern.angry` | 1242482355 | Jack O Lantern Angry |
+| `jackolantern.happy` | -1824943010 | Jack O Lantern Happy |
+| `jar.pickle` | 286193827 | Pickles |
+| `kayak` | 190184021 | Kayak |
+| `keycard_blue` | -484206264 | Blue Keycard |
+| `keycard_green` | 37122747 | Green Keycard |
+| `keycard_red` | -1880870149 | Red Keycard |
+| `knife.bone` | 1814288539 | Bone Knife |
+| `knife.butcher` | -194509282 | Butcher Knife |
+| `knife.combat` | 2040726127 | Combat Knife |
+| `ladder.wooden.wall` | -316250604 | Wooden Ladder |
+| `lantern` | 1658229558 | Lantern |
+| `largecandles` | -489848205 | Large Candle Set |
+| `largemedkit` | 254522515 | Large Medkit |
+| `leather` | 1381010055 | Leather |
+| `lmg.m249` | -2069578888 | M249 |
+| `lock.code` | 1159991980 | Code Lock |
+| `lock.key` | -850982208 | Key Lock |
+| `locker` | -110921842 | Locker |
+| `longsword` | -1469578201 | Longsword |
+| `lowgradefuel` | -946369541 | Low Grade Fuel |
+| `lunar.firecrackers` | -1961560162 | Firecracker String |
+| `mace` | -1966748496 | Mace |
+| `machete` | -1137865085 | Machete |
+| `mailbox` | -586784898 | Mail Box |
+| `map` | 696029452 | Paper Map |
+| `mask.balaclava` | -2012470695 | Improvised Balaclava |
+| `mask.bandana` | -702051347 | Bandana Mask |
+| `maxhealthtea` | -1184406448 | Basic Max Health Tea |
+| `maxhealthtea.advanced` | 603811464 | Advanced Max Health Tea |
+| `maxhealthtea.pure` | 1712261904 | Pure Max Health Tea |
+| `meat.boar` | 621915341 | Raw Pork |
+| `meat.pork.burned` | 1391703481 | Burnt Pork |
+| `meat.pork.cooked` | -242084766 | Cooked Pork |
+| `metal.facemask` | -194953424 | Metal Facemask |
+| `metal.fragments` | 69511070 | Metal Fragments |
+| `metal.ore` | -4031221 | Metal Ore |
+| `metal.plate.torso` | 1110385766 | Metal Chest Plate |
+| `metal.refined` | 317398316 | High Quality Metal |
+| `metalblade` | 1882709339 | Metal Blade |
+| `metalpipe` | 95950017 | Metal Pipe |
+| `metalspring` | -1021495308 | Metal Spring |
+| `minihelicopter.repair` | 1426574435 | MC repair |
+| `mining.pumpjack` | -1130709577 | Pump Jack |
+| `mining.quarry` | 1052926200 | Mining Quarry |
+| `mixingtable` | 1259919256 | Mixing Table |
+| `modularcarlift` | 1696050067 | Modular Car Lift |
+| `movembermoustache` | -2047081330 | Movember Moustache |
+| `movembermoustachecard` | 3380160 | Card Movember Moustache |
+| `multiplegrenadelauncher` | -1123473824 | Multiple Grenade Launcher |
+| `mushroom` | -1962971928 | Mushroom |
+| `newyeargong` | -961457160 | New Year Gong |
+| `nightvisiongoggles` | -1518883088 | Night Vision Goggles |
+| `note` | 1414245162 | Note |
+| `oretea` | 1480022580 | Basic Ore Tea |
+| `oretea.advanced` | 2063916636 | Advanced Ore Tea |
+| `oretea.pure` | 1729374708 | Pure Ore Tea |
+| `paddle` | 1491189398 | Paddle |
+| `paddlingpool` | -733625651 | Paddling Pool |
+| `pants` | 237239288 | Pants |
+| `pants.shorts` | -1695367501 | Shorts |
+| `paper` | -1779183908 | Paper |
+| `partyhat` | -575744869 | Party Hat |
+| `photo` | 62577426 | Photograph |
+| `photoframe.landscape` | 1697996440 | Landscape Photo Frame |
+| `photoframe.large` | 1205084994 | Large Photo Frame |
+| `photoframe.portrait` | 1729712564 | Portrait Photo Frame |
+| `piano` | 1272430949 | Wheelbarrow Piano |
+| `pickaxe` | -1302129395 | Pickaxe |
+| `pistol.eoka` | -75944661 | Eoka Pistol |
+| `pistol.m92` | -852563019 | M92 Pistol |
+| `pistol.nailgun` | 1953903201 | Nailgun |
+| `pistol.python` | 1373971859 | Python Revolver |
+| `pistol.revolver` | 649912614 | Revolver |
+| `pistol.semiauto` | 818877484 | Semi-Automatic Pistol |
+| `pistol.water` | -1815301988 | Water Pistol |
+| `piston1` | 1883981798 | Low Quality Pistons |
+| `piston2` | 1883981801 | Medium Quality Pistons |
+| `piston3` | 1883981800 | High Quality Pistons |
+| `pitchfork` | 1090916276 | Pitchfork |
+| `planter.large` | 1581210395 | Large Planter Box |
+| `planter.small` | 1903654061 | Small Planter Box |
+| `plantfiber` | -804769727 | Plant Fiber |
+| `pookie.bear` | -1651220691 | Pookie Bear |
+| `potato` | -2086926071 | Potato |
+| `powered.water.purifier` | -365097295 | Powered Water Purifier |
+| `propanetank` | -1673693549 | Empty Propane Tank |
+| `pumpkin` | -567909622 | Pumpkin |
+| `pumpkinbasket` | 1346158228 | Pumpkin Bucket |
+| `radiationremovetea` | -496584751 | Rad. Removal Tea |
+| `radiationremovetea.advanced` | 2021351233 | Advanced Rad. Removal Tea |
+| `radiationremovetea.pure` | 1905387657 | Pure Rad. Removal Tea |
+| `radiationresisttea` | -487356515 | Anti-Rad Tea |
+| `radiationresisttea.advanced` | -1729415579 | Adv. Anti-Rad Tea |
+| `radiationresisttea.pure` | -33009419 | Pure Anti-Rad Tea |
+| `red.berry` | 1272194103 | Red Berry |
+| `research.table` | -1861522751 | Research Table |
+| `researchpaper` | -544317637 | Research Paper |
+| `rf.detonator` | 596469572 | RF Transmitter |
+| `rf_pager` | -566907190 | RF Pager |
+| `rifle.ak` | 1545779598 | Assault Rifle |
+| `rifle.bolt` | 1588298435 | Bolt Action Rifle |
+| `rifle.l96` | -778367295 | L96 Rifle |
+| `rifle.lr300` | -1812555177 | LR-300 Assault Rifle |
+| `rifle.m39` | 28201841 | M39 Rifle |
+| `rifle.semiauto` | -904863145 | Semi-Automatic Rifle |
+| `riflebody` | 176787552 | Rifle Body |
+| `riot.helmet` | 671063303 | Riot Helmet |
+| `roadsign.gloves` | -699558439 | Roadsign Gloves |
+| `roadsign.jacket` | -2002277461 | Road Sign Jacket |
+| `roadsign.kilt` | 1850456855 | Road Sign Kilt |
+| `roadsigns` | 1199391518 | Road Signs |
+| `rock` | 963906841 | Rock |
+| `rocket.launcher` | 442886268 | Rocket Launcher |
+| `rope` | 1414245522 | Rope |
+| `rug` | -1985799200 | Rug |
+| `rug.bear` | -1104881824 | Rug Bear Skin |
+| `rustige_egg_a` | -173268129 | Rustigé Egg - Red |
+| `rustige_egg_b` | -173268132 | Rustigé Egg - Blue |
+| `rustige_egg_c` | -173268131 | Rustigé Egg - Purple |
+| `rustige_egg_d` | -173268126 | Rustigé Egg - Ivory |
+| `salvaged.cleaver` | -1978999529 | Salvaged Cleaver |
+| `salvaged.sword` | 1326180354 | Salvaged Sword |
+| `samsite` | -1009359066 | SAM Site |
+| `santabeard` | 2126889441 | Santa Beard |
+| `santahat` | -575483084 | Santa Hat |
+| `scarecrow` | 177226991 | Scarecrow |
+| `scarecrow.suit` | 273951840 | Scarecrow Suit |
+| `scarecrowhead` | 809942731 | Scarecrow Wrap |
+| `scientistsuit_heavy` | -1772746857 | Heavy Scientist Suit |
+| `scrap` | -932201673 | Scrap |
+| `scraptea` | 263834859 | Basic Scrap Tea |
+| `scraptea.advanced` | 524678627 | Advanced Scrap Tea |
+| `scraptea.pure` | 2024467711 | Pure Scrap Tea |
+| `scraptransportheli.repair` | -1884328185 | ScrapTransportHeliRepair |
+| `searchlight` | 2087678962 | Search Light |
+| `secretlabchair` | 567871954 | Secret Lab Chair |
+| `seed.black.berry` | 1911552868 | Black Berry Seed |
+| `seed.blue.berry` | 803954639 | Blue Berry Seed |
+| `seed.corn` | 998894949 | Corn Seed |
+| `seed.green.berry` | -1776128552 | Green Berry Seed |
+| `seed.hemp` | -237809779 | Hemp Seed |
+| `seed.potato` | -2084071424 | Potato Seed |
+| `seed.pumpkin` | -1511285251 | Pumpkin Seed |
+| `seed.red.berry` | 830839496 | Red Berry Seed |
+| `seed.white.berry` | -992286106 | White Berry Seed |
+| `seed.yellow.berry` | -520133715 | Yellow Berry Seed |
+| `semibody` | 573926264 | Semi Automatic Body |
+| `sewingkit` | 1234880403 | Sewing Kit |
+| `sheetmetal` | -1994909036 | Sheet Metal |
+| `shelves` | 1950721418 | Salvaged Shelves |
+| `shirt.collared` | -2025184684 | Shirt |
+| `shirt.tanktop` | 1608640313 | Tank Top |
+| `shoes.boots` | -1549739227 | Boots |
+| `shotgun.double` | -765183617 | Double Barrel Shotgun |
+| `shotgun.pump` | 795371088 | Pump Shotgun |
+| `shotgun.spas12` | -41440462 | Spas-12 Shotgun |
+| `shotgun.waterpipe` | -1367281941 | Waterpipe Shotgun |
+| `shutter.metal.embrasure.a` | -1199897169 | Metal horizontal embrasure |
+| `shutter.metal.embrasure.b` | -1199897172 | Metal Vertical embrasure |
+| `shutter.wood.a` | -1023374709 | Wood Shutters |
+| `sickle` | -1368584029 | Sickle |
+| `sign.hanging` | 1205607945 | Two Sided Hanging Sign |
+| `sign.hanging.banner.large` | 23352662 | Large Banner Hanging |
+| `sign.hanging.ornate` | -1647846966 | Two Sided Ornate Hanging Sign |
+| `sign.neon.125x125` | 1305578813 | Small Neon Sign |
+| `sign.neon.125x215` | -1423304443 | Medium Neon Sign |
+| `sign.neon.125x215.animated` | 42535890 | Medium Animated Neon Sign |
+| `sign.neon.xl` | 866332017 | Large Neon Sign |
+| `sign.neon.xl.animated` | 1643667218 | Large Animated Neon Sign |
+| `sign.pictureframe.landscape` | -845557339 | Landscape Picture Frame |
+| `sign.pictureframe.portrait` | -1370759135 | Portrait Picture Frame |
+| `sign.pictureframe.tall` | 121049755 | Tall Picture Frame |
+| `sign.pictureframe.xl` | -996185386 | XL Picture Frame |
+| `sign.pictureframe.xxl` | 98508942 | XXL Picture Frame |
+| `sign.pole.banner.large` | 2070189026 | Large Banner on pole |
+| `sign.post.double` | 1521286012 | Double Sign Post |
+| `sign.post.single` | 1542290441 | Single Sign Post |
+| `sign.post.town` | -1832422579 | One Sided Town Sign Post |
+| `sign.post.town.roof` | 826309791 | Two Sided Town Sign Post |
+| `sign.wooden.huge` | -143132326 | Huge Wooden Sign |
+| `sign.wooden.large` | 1153652756 | Large Wooden Sign |
+| `sign.wooden.medium` | -1819233322 | Medium Wooden Sign |
+| `sign.wooden.small` | -1138208076 | Small Wooden Sign |
+| `skull.human` | 996293980 | Human Skull |
+| `skull.trophy` | -769647921 | Skull Trophy |
+| `skull.trophy.jar` | 971362526 | Skull Trophy |
+| `skull.trophy.jar2` | -924959988 | Skull Trophy |
+| `skull.trophy.table` | -156748077 | Skull Trophy |
+| `skull.wolf` | 2048317869 | Wolf Skull |
+| `skull_fire_pit` | 553887414 | Skull Fire Pit |
+| `skulldoorknocker` | -216116642 | Skull Door Knocker |
+| `skullspikes` | -1073015016 | Skull Spikes |
+| `skullspikes.candles` | -25740268 | Skull Spikes |
+| `skullspikes.pumpkin` | -1078639462 | Skull Spikes |
+| `sled` | -333406828 | Sled |
+| `sled.xmas` | -135252633 | Sled |
+| `sleepingbag` | -1754948969 | Sleeping Bag |
+| `small.oil.refinery` | -1293296287 | Small Oil Refinery |
+| `smallcandles` | -2058362263 | Small Candle Set |
+| `smallwaterbottle` | -1039528932 | Small Water Bottle |
+| `smart.alarm` | -695978112 | Smart Alarm |
+| `smart.switch` | 988652725 | Smart Switch |
+| `smg.2` | 1796682209 | Custom SMG |
+| `smg.mp5` | 1318558775 | MP5A4 |
+| `smg.thompson` | -1758372725 | Thompson |
+| `smgbody` | 1230323789 | SMG Body |
+| `snowball` | -363689972 | Snowball |
+| `snowballgun` | 1103488722 | Snowball Gun |
+| `snowmachine` | 1358643074 | Snow Machine |
+| `snowman` | 1629293099 | Snowman |
+| `sofa` | -555122905 | Sofa |
+| `sparkplug1` | -89874794 | Low Quality Spark Plugs |
+| `sparkplug2` | -493159321 | Medium Quality Spark Plugs |
+| `sparkplug3` | 1072924620 | High Quality Spark Plugs |
+| `spear.stone` | 1602646136 | Stone Spear |
+| `spear.wooden` | 1540934679 | Wooden Spear |
+| `spiderweb` | 882559853 | Spider Webs |
+| `spikes.floor` | -92759291 | Wooden Floor Spikes |
+| `spinner.wheel` | -1100422738 | Spinning wheel |
+| `spookyspeaker` | 1885488976 | Spooky Speaker |
+| `stash.small` | -369760990 | Small Stash |
+| `sticks` | 642482233 | Sticks |
+| `stocking.large` | -465682601 | SUPER Stocking |
+| `stocking.small` | 1668858301 | Small Stocking |
+| `stone.pickaxe` | 171931394 | Stone Pickaxe |
+| `stonehatchet` | -1583967946 | Stone Hatchet |
+| `stones` | -2099697608 | Stones |
+| `storage.monitor` | 1149964039 | Storage Monitor |
+| `strobelight` | 2104517339 | Strobe Light |
+| `sulfur` | -1581843485 | Sulfur |
+| `sulfur.ore` | -1157596551 | Sulfur Ore |
+| `sunglasses` | 352321488 | Sunglasses |
+| `sunglasses02black` | 1258768145 | Sunglasses |
+| `sunglasses02camo` | -2103694546 | Sunglasses |
+| `sunglasses02red` | 1557173737 | Sunglasses |
+| `sunglasses03black` | -176608084 | Sunglasses |
+| `sunglasses03chrome` | -1997698639 | Sunglasses |
+| `sunglasses03gold` | -1408336705 | Sunglasses |
+| `supply.signal` | 1397052267 | Supply Signal |
+| `surveycharge` | 1975934948 | Survey Charge |
+| `syringe.medical` | 1079279582 | Medical Syringe |
+| `table` | 593465182 | Table |
+| `tactical.gloves` | -1108136649 | Tactical Gloves |
+| `target.reactive` | -1736356576 | Reactive Target |
+| `targeting.computer` | 1523195708 | Targeting Computer |
+| `tarp` | 2019042823 | Tarp |
+| `techparts` | 73681876 | Tech Trash |
+| `telephone` | 1234878710 | Telephone |
+| `tool.binoculars` | -1262185308 | Binoculars |
+| `tool.camera` | -1316706473 | Camera |
+| `tool.instant_camera` | -2001260025 | Instant Camera |
+| `toolgun` | 1803831286 | Garry's Mod Tool Gun |
+| `torch` | 795236088 | Torch |
+| `trap.bear` | -582782051 | Snap Trap |
+| `trap.landmine` | -1663759755 | Land Mine |
+| `tshirt` | 223891266 | T-Shirt |
+| `tshirt.long` | 935692442 | Longsleeve T-Shirt |
+| `tunalight` | -1478445584 | Tuna Can Lamp |
+| `twitch.headset` | -1569700847 | Headset |
+| `twitchsunglasses` | 20489901 | Purple Sunglasses |
+| `valve1` | 1330084809 | Low Quality Valves |
+| `valve2` | 926800282 | Medium Quality Valves |
+| `valve3` | -1802083073 | High Quality Valves |
+| `vehicle.1mod.cockpit` | -1501451746 | Cockpit Vehicle Module |
+| `vehicle.1mod.cockpit.armored` | 1874610722 | Armored Cockpit Vehicle Module |
+| `vehicle.1mod.cockpit.with.engine` | 170758448 | Cockpit With Engine Vehicle Module |
+| `vehicle.1mod.engine` | 1559779253 | Engine Vehicle Module |
+| `vehicle.1mod.flatbed` | -1880231361 | Flatbed Vehicle Module |
+| `vehicle.1mod.passengers.armored` | -1615281216 | Armored Passenger Vehicle Module |
+| `vehicle.1mod.rear.seats` | 1376065505 | Rear Seats Vehicle Module |
+| `vehicle.1mod.storage` | 268565518 | Storage Vehicle Module |
+| `vehicle.1mod.taxi` | -626174997 | Taxi Vehicle Module |
+| `vehicle.2mod.flatbed` | -1693832478 | Large Flatbed Vehicle Module |
+| `vehicle.2mod.fuel.tank` | 1186655046 | Fuel Tank Vehicle Module |
+| `vehicle.2mod.passengers` | 895374329 | Passenger Vehicle Module |
+| `vehicle.chassis` | 1770744540 | Generic vehicle chassis |
+| `vehicle.chassis.2mod` | -44066600 | Small Chassis |
+| `vehicle.chassis.3mod` | -44066823 | Medium Chassis |
+| `vehicle.chassis.4mod` | -44066790 | Large Chassis |
+| `vehicle.module` | 878301596 | Generic vehicle module |
+| `vending.machine` | 198438816 | Vending Machine |
+| `wall.external.high` | 99588025 | High External Wooden Wall |
+| `wall.external.high.ice` | -985781766 | High Ice Wall |
+| `wall.external.high.stone` | -967648160 | High External Stone Wall |
+| `wall.frame.cell` | -1429456799 | Prison Cell Wall |
+| `wall.frame.cell.gate` | -956706906 | Prison Cell Gate |
+| `wall.frame.fence` | -1117626326 | Chainlink Fence |
+| `wall.frame.fence.gate` | 1451568081 | Chainlink Fence Gate |
+| `wall.frame.garagedoor` | -148794216 | Garage Door |
+| `wall.frame.netting` | 1516985844 | Netting |
+| `wall.frame.shopfront` | -796583652 | Shop Front |
+| `wall.frame.shopfront.metal` | -148229307 | Metal Shop Front |
+| `wall.graveyard.fence` | -1679267738 | Graveyard Fence |
+| `wall.ice.wall` | 1327005675 | Short Ice Wall |
+| `wall.window.bars.metal` | -819720157 | Metal Window Bars |
+| `wall.window.bars.toptier` | 671706427 | Reinforced Glass Window |
+| `wall.window.bars.wood` | -1183726687 | Wooden Window Bars |
+| `wall.window.glass.reinforced` | -1614955425 | Strengthened Glass Window |
+| `watchtower.wood` | -463122489 | Watch Tower |
+| `water` | -1779180711 | Water |
+| `water.barrel` | -1863559151 | Water Barrel |
+| `water.catcher.large` | -1100168350 | Large Water Catcher |
+| `water.catcher.small` | -132247350 | Small Water Catcher |
+| `water.purifier` | 2114754781 | Water Purifier |
+| `water.salt` | -277057363 | Salt Water |
+| `waterjug` | -119235651 | Water Jug |
+| `waterpump` | -1284169891 | Water Pump |
+| `weapon.mod.8x.scope` | 174866732 | 16x Zoom Scope |
+| `weapon.mod.flashlight` | 952603248 | Weapon flashlight |
+| `weapon.mod.holosight` | 442289265 | Holosight |
+| `weapon.mod.lasersight` | -132516482 | Weapon Lasersight |
+| `weapon.mod.muzzleboost` | -1405508498 | Muzzle Boost |
+| `weapon.mod.muzzlebrake` | 1478091698 | Muzzle Brake |
+| `weapon.mod.silencer` | -1850571427 | Silencer |
+| `weapon.mod.simplesight` | -855748505 | Simple Handmade Sight |
+| `weapon.mod.small.scope` | 567235583 | 8x Zoom Scope |
+| `white.berry` | 854447607 | White Berry |
+| `wiretool` | -144417939 | Wire Tool |
+| `wolfmeat.burned` | 1827479659 | Burnt Wolf Meat |
+| `wolfmeat.cooked` | 813023040 | Cooked Wolf Meat |
+| `wolfmeat.raw` | -395377963 | Raw Wolf Meat |
+| `wolfmeat.spoiled` | -1167031859 | Spoiled Wolf Meat |
+| `wood` | -151838493 | Wood |
+| `wood.armor.helmet` | -2094954543 | Wood Armor Helmet |
+| `wood.armor.jacket` | 418081930 | Wood Chestplate |
+| `wood.armor.pants` | 832133926 | Wood Armor Pants |
+| `woodcross` | 699075597 | Wooden Cross |
+| `woodtea` | -649128577 | Basic Wood Tea |
+| `woodtea.advanced` | -541206665 | Advanced Wood Tea |
+| `woodtea.pure` | -557539629 | Pure Wood Tea |
+| `workbench1` | 1524187186 | Work Bench Level 1 |
+| `workbench2` | -41896755 | Work Bench Level 2 |
+| `workbench3` | -1607980696 | Work Bench Level 3 |
+| `wrappedgift` | 204970153 | Wrapped Gift |
+| `wrappingpaper` | 1094293920 | Wrapping Paper |
+| `xmas.decoration.baubels` | -1667224349 | Decorative Baubels |
+| `xmas.decoration.candycanes` | -209869746 | Decorative Plastic Candy Canes |
+| `xmas.decoration.gingerbreadmen` | 1686524871 | Decorative Gingerbread Men |
+| `xmas.decoration.lights` | 1723747470 | Tree Lights |
+| `xmas.decoration.pinecone` | -129230242 | Decorative Pinecones |
+| `xmas.decoration.star` | -1331212963 | Star Tree Topper |
+| `xmas.decoration.tinsel` | 2106561762 | Decorative Tinsel |
+| `xmas.door.garland` | 674734128 | Festive Doorway Garland |
+| `xmas.lightstring` | 1058261682 | Christmas Lights |
+| `xmas.lightstring.advanced` | -151387974 | Deluxe Christmas Lights |
+| `xmas.present.large` | -1622660759 | Large Present |
+| `xmas.present.medium` | 756517185 | Medium Present |
+| `xmas.present.small` | -722241321 | Small Present |
+| `xmas.tree` | 794443127 | Christmas Tree |
+| `xmas.window.garland` | -1379835144 | Festive Window Garland |
+| `xmasdoorwreath` | 2009734114 | Christmas Door Wreath |
+| `xylophone` | -211235948 | Xylobone |
+| `yellow.berry` | 1660145984 | Yellow Berry |
+
+---
+
+## Skins
+
+Workshop skin ids, grouped by the item they apply to. Set them with an item's `skin` property
+(and the matching `BaseEntity.skinID` once the item is deployed).
+
+### Acoustic Guitar — `fun.guitar`
+
+| Skin ID | Skin name |
+|---:|---|
+| 809801196 | Addicted Guitarist |
+| 826914904 | Army Acoustic Guitar |
+| 809938266 | Black Acoustic Guitar |
+| 844914652 | No War Guitar |
+
+### Armored Door — `door.hinged.toptier`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1228341388 | Apocalypse Door |
+| 1206145767 | Aristocratic Armored Door |
+| 1114020299 | Armored Concrete |
+| 1402412287 | Armored Mason Door |
+| 1414795168 | Armored Scrapper Door |
+| 930478674 | Armored Vault Door |
+| 1395469801 | Blast Armored Door |
+| 948938468 | Bunker Door |
+| 1557857999 | Cargo Ship Security Door |
+| 869475498 | Clockwork Portal |
+| 1176460121 | Cobalt Graffiti Door |
+| 804286931 | Corroded Bronze Door |
+| 911652483 | Green Armored Container Door |
+| 1477263064 | HellBunker Door |
+| 1376526519 | Hellfire Portal |
+| 801889927 | High Voltage |
+| 801937986 | Incarceration Armored Door |
+| 933057923 | Keep Out Armored Door |
+| 801831553 | Laboratory Armored Door |
+| 1605324677 | Mainframe Door |
+| 839925176 | Military Armored Door |
+| 1999927543 | Molten Visage Armored Door |
+| 809638761 | No Escape |
+| 807729959 | Radioactive Armored Door |
+| 1092678229 | Safe Room Door |
+| 1135412861 | TacCom Security Door |
+| 885928673 | Urban Armored Door |
+| 2288730131 | Weather Armored Door |
+
+### Armored Double Door — `door.double.hinged.toptier`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1911994581 | Charitable Rust 2019 Double Door |
+| 2318482252 | Christmas Bunker Double Door |
+| 2254750609 | Crypt Armored Double Door |
+| 1874611109 | Hell Walker Double Armored Door |
+| 1925748582 | Jester Armoured Double Door |
+
+### Assault Rifle — `rifle.ak`
+
+| Skin ID | Skin name |
+|---:|---|
+| 849047662 | Agony Yellow |
+| 887494035 | Aircraft Parts AK47 |
+| 1359893925 | AK Royale |
+| 1202410378 | AK-47 From Hell |
+| 1372945520 | AK-47 Victoria |
+| 859845460 | Alien Red |
+| 1259716979 | Anubis Ak47 |
+| 1826520371 | Apocalyptic Knight AK |
+| 1750654242 | Azul AK47 |
+| 2249370680 | Basebreaker AR |
+| 809212871 | Battle Scarred AK47 |
+| 809190373 | Battle-Scarred AKS47 |
+| 1435827815 | Beast of Industry |
+| 1112904406 | Betty Lou AK47 |
+| 2128372674 | Blackout AR |
+| 1385673487 | Brass Lion |
+| 1679665505 | BullDozer AK47 |
+| 2245084157 | Candy Hunter AR |
+| 2041629387 | Capitan's AR |
+| 2101560738 | Cardboard AR |
+| 924020531 | Cartagena AK47 |
+| 1349512142 | Caution AK47 |
+| 2248879512 | Chained Spirits AR |
+| 937864743 | Checkpoint AK47 |
+| 1196676446 | Chivalry AK47 |
+| 875130056 | Claw AK47 |
+| 1915393587 | Cobalt Security AR |
+| 1174389582 | Cobra |
+| 1583542371 | Cold Hunter AK |
+| 1102750231 | Conquerer AK47 |
+| 840477492 | Crimson King |
+| 1306351416 | Crypt of Death AK47 |
+| 885146172 | Dark Flames |
+| 1137915903 | Dead Pirate Rifle |
+| 1245563496 | Death in Spades AK47 |
+| 1349324364 | Demonic AK47 |
+| 1929819581 | Desert Hawk AK47 |
+| 1092674304 | Diesel AK47 |
+| 10135 | Digital Camo AK47 |
+| 615766181 | Digital Camo AK47 |
+| 2017002938 | Doodle AK47 |
+| 920472848 | Doombringer AK47 |
+| 2075372682 | Dreamland AR |
+| 1804885723 | Dynasty AK47 |
+| 928950425 | Epidemic AK47 |
+| 1448221547 | Etherya AK47 |
+| 2319710097 | Evil Snowman AR |
+| 939180121 | Farseer AK47 |
+| 940035827 | Fate Destroyer |
+| 903882218 | Frost Wolf |
+| 1476966011 | Gearlord AK47 |
+| 1588206436 | Gingerbread AK |
+| 1167207039 | Glorious AK |
+| 889710179 | Glory AK47 |
+| 1362212220 | Gold Rush AK |
+| 1265322092 | Golden Drake AK47 |
+| 1364985829 | Green Dragon AK47 |
+| 1993279809 | Heartbreaker AR |
+| 1599157678 | Hell's Dogs |
+| 1575397458 | Huntsman AK47 |
+| 1886272847 | Jack O Lantern - AK47 |
+| 925720043 | Jaws AK47 |
+| 1272989639 | King of the Jungle AK47 |
+| 1434027951 | Last Phoenix |
+| 908297014 | Lonewolf AK47 - Blue |
+| 1213092632 | Mandrill |
+| 1428980348 | Marrakesh |
+| 1983066869 | Memories AR |
+| 1457951707 | Midnight Dream |
+| 10137 | Military Camo AK47 |
+| 618543834 | Military Camo AK47 |
+| 2085083014 | Monument Memories AR |
+| 1338305091 | Mystic AK47 |
+| 2179386526 | Neanderthal AR |
+| 1118706219 | Night Howler AK47 |
+| 1539318940 | Nightmare AK47 |
+| 1760078043 | No Mercy AK47 |
+| 1161844853 | Panther AK47 |
+| 1522034435 | Phantom AK |
+| 1120500163 | Piranha AK47 |
+| 1685375084 | Playmaker AK47 |
+| 1549426268 | Polymer AK47 |
+| 2304993742 | Porcelain AR |
+| 1907342157 | Poseidon - AK47 |
+| 2172715245 | PulsAR |
+| 1870705926 | Punkish AK47 |
+| 911726740 | Rabble Rouser AK47 |
+| 2012334520 | Rainbow AR |
+| 2059352465 | Rainbow Pony AR |
+| 2108685486 | Raptor AR |
+| 1252554814 | Rebellion Assault Rifle |
+| 895307805 | Retro Car Parts AK47 |
+| 2268418002 | Retrowave AR |
+| 1352844155 | REX |
+| 1746886322 | Royal AK47 |
+| 1288866247 | Rumble AK47 |
+| 654502185 | Rustpunk AK47 |
+| 934891737 | Sandstorm AK47 |
+| 1175238674 | Santa Muerte |
+| 1539409946 | Scarecrow AK47 |
+| 1372566409 | Scorpion AK47 |
+| 1277707212 | Scrapper AK47 |
+| 1396630285 | Smolder |
+| 1076214414 | Soul Taker AK47 |
+| 1882821847 | Sticker Pack AK47 |
+| 1850236015 | Sunken Treasure AK |
+| 2109182691 | Sweet Poison AR |
+| 1539007965 | T-Bone AK47 |
+| 1230963555 | Talon AK47 |
+| 10138 | Tempered AK47 |
+| 566540646 | Tempered AK47 |
+| 1088459232 | The Beast AK47 |
+| 1129886223 | The Beast Of The East |
+| 1124932043 | The Reptile |
+| 1467269924 | Toxic |
+| 2006878490 | Training AR |
+| 1659781652 | Troll Daddy AK |
+| 1402320927 | Trophy Pirate AK47 |
+| 2323019876 | Trust In Rust 3 AR |
+| 2242791041 | Underworld AR |
+| 1324932956 | Urban Ice AK47 |
+| 1140366289 | War Machine AK47 |
+| 2240088463 | Wild Spirit AR |
+| 1159593268 | Wyrm Rifle |
+| 1309470544 | X-RAY AK47 |
+| 2352506845 | xQc Assault Rifle |
+
+### Bandana Mask — `mask.bandana`
+
+| Skin ID | Skin name |
+|---:|---|
+| 820870847 | Beast Bandana |
+| 10061 | Black Bandana |
+| 10060 | Blue Bandana |
+| 1438048628 | Burlap Bandit Bandana |
+| 10067 | Checkered Bandana |
+| 2093051075 | Creepy Bandana |
+| 10104 | Creepy Clown Bandana |
+| 533328361 | Creepy Clown Bandana |
+| 10066 | Desert Camo Bandana |
+| 2051174405 | Easter Bandit |
+| 1710737837 | Egg Thief |
+| 10063 | Forest Camo Bandana |
+| 10059 | Green Bandana |
+| 903595865 | Jawboy |
+| 10065 | Red Skull Bandana |
+| 1323640876 | Road Raider Bandana |
+| 1685873480 | Salvaged Hazmat Bandana |
+| 1185794212 | Santa Bandana |
+| 10064 | Skull Bandana |
+| 10062 | Snow Camo Bandana |
+| 10079 | Wizard Bandana |
+| 521069222 | Wizard Bandana |
+
+### Baseball Cap — `hat.cap`
+
+| Skin ID | Skin name |
+|---:|---|
+| 10029 | Blue Cap |
+| 1565217605 | Charitable Rust 2018 Cap |
+| 10027 | Forest Camo Cap |
+| 10055 | Friendly Cap |
+| 494030776 | Friendly Cap |
+| 10030 | Green Cap |
+| 10026 | Grey Cap |
+| 1760269295 | Jockey Cap |
+| 1137628492 | Oxums Employee Cap |
+| 10028 | Red Cap |
+| 10045 | Rescue Cap |
+| 495026469 | Rescue Cap |
+| 2276035673 | Taxi Cap |
+| 890772638 | Toothy Hat |
+| 893188334 | Top Cap |
+
+### Beach Chair — `beachchair`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13000 | Camo |
+| 13001 | Flamingo |
+| 13002 | Leaves |
+| 13003 | Pizza |
+| 13004 | Target |
+| 13005 | Tarp |
+| 13006 | ZenLabs |
+
+### Beach Parasol — `beachparasol`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13007 | Camo |
+| 13008 | Flamingo |
+| 13009 | Leaves |
+| 13010 | Pizza |
+| 13011 | Target |
+| 13012 | Tarp |
+| 13013 | ZenLabs |
+
+### Beach Towel — `beachtowel`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13014 | Brown Stripes |
+| 13015 | Brown Stripes |
+| 13016 | Dyed |
+| 13017 | Fish |
+| 13018 | Shell |
+| 13019 | Stripes |
+| 13020 | Waves |
+
+### Beenie Hat — `hat.beenie`
+
+| Skin ID | Skin name |
+|---:|---|
+| 14180 | Black Beenie Hat |
+| 10018 | Blue Beenie Hat |
+| 10017 | Green Beenie Hat |
+| 594202145 | Gunner Beanie |
+| 10040 | Rasta Beenie |
+| 501159601 | Rasta Beenie |
+| 10016 | Red Beenie Hat |
+| 10085 | Winter Deers |
+| 519469651 | Winter Deers |
+
+### Bolt Action Rifle — `rifle.bolt`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1852284996 | Apocalyptic Knight Rifle |
+| 818403150 | Army Bolt Rifle |
+| 1795984246 | Azul Bolt Rifle |
+| 1535660827 | Beauty Kills |
+| 1517933342 | Bolt From Hell |
+| 1581664321 | Caution Bolt Rifle |
+| 897023403 | Deadly Rose BAR |
+| 10117 | Dreamcatcher |
+| 516383225 | Dreamcatcher |
+| 10115 | Ghost Bolt Rifle |
+| 526539536 | Ghost Bolt Rifle |
+| 933509449 | Glory BAR |
+| 1687042408 | Glory Rifle |
+| 1587273896 | Granny's Bolt |
+| 875259050 | Great War Service Rifle |
+| 943036098 | Hunter's Bolt |
+| 2024514125 | No Mercy Bolt Rifle |
+| 840105253 | Polymer BAR |
+| 819149392 | Rustpunk Rifle |
+| 972020573 | Sandwar BAR |
+| 1592946955 | Shark Rifle |
+| 947954942 | Smuggler's BAR |
+| 1119629516 | Steel and Brass BAR |
+| 1161165984 | Survivor BAR |
+| 10116 | Tundra Bolt Rifle |
+| 518199212 | Tundra Bolt Rifle |
+
+### Bone Club — `bone.club`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1557788243 | Bone Scepter |
+| 810156739 | Carved Club |
+| 2156399984 | Ice Cream Club |
+| 791109245 | Little Friend |
+| 2242052737 | Little Nightmare |
+| 888839261 | Maracas Bone Club |
+| 945026868 | Sacrificial Club |
+
+### Bone Helmet — `deer.skull.mask`
+
+| Skin ID | Skin name |
+|---:|---|
+| 784259585 | Demonic Deer Skull |
+| 1935631950 | Rudolph Skull Mask |
+| 882204381 | The Plague Doctor |
+| 837166252 | Uprising Deer Skull Mask |
+
+### Bone Knife — `knife.bone`
+
+| Skin ID | Skin name |
+|---:|---|
+| 808955868 | Etched Edge Bone Knife |
+| 1277364396 | Flesh Knife |
+| 909612594 | Paititi Bone Knife |
+| 945031477 | Sacrificial Knife |
+| 933322251 | Studded Bone Knife |
+
+### Boogie Board — `boogieboard`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13021 | Corrugated |
+| 13022 | Crash Test |
+| 13023 | Flames |
+| 13024 | Marbled |
+| 13025 | Shark |
+| 13026 | Stars |
+
+### Boonie Hat — `hat.boonie`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1438050325 | Burlap Bandit Hat |
+| 1754286779 | Cowboy Hat |
+| 1760060421 | Cowboy Sheriff Hat |
+| 10058 | Farmer Hat |
+| 503202816 | Farmer Hat |
+| 2037650796 | Farmer Straw Hat |
+| 587812040 | Fisherman Boonie Hat |
+| 844289539 | Flower Hat |
+| 2255866690 | Gentleman's Fedora |
+| 1185551523 | Hunted Hat |
+| 865054618 | Leather Boonie Hat |
+| 833565406 | PVC Hat |
+
+### Boots — `shoes.boots`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1839313604 | Apocalyptic Knight Boots |
+| 1100926907 | Arctic Wolf Boots |
+| 882570089 | Armored Boots |
+| 869090082 | Army Armored Boots |
+| 826587881 | Army Black Boots |
+| 10080 | Army Boots |
+| 507940691 | Army Boots |
+| 1406796292 | Badboy Boots |
+| 2199934989 | Bee Cosplay Boots |
+| 2009426933 | Bio Integrity Boots |
+| 10023 | Black Boots |
+| 2090776132 | Blackout Boots |
+| 10088 | Bloody Boots |
+| 513629119 | Bloody Boots |
+| 1441308562 | Brony Boots |
+| 1432967312 | Cajun Boots |
+| 899942107 | Caravanner Boots |
+| 838205144 | Combat Boots |
+| 2075527039 | Cow Moo Flage Boots |
+| 1960694026 | Doodle Boots |
+| 919261524 | Explorer Boots |
+| 1657109993 | Glory Boots |
+| 784559403 | Hazard Move Boots |
+| 1196740980 | Loot Leader Boots |
+| 1395755190 | Marsh Lurker Boots |
+| 1106548545 | Metalhunter Boots |
+| 920390242 | Muddy Boots |
+| 2304198263 | No Mercy Boots |
+| 10034 | Punk Boots |
+| 493534620 | Punk Boots |
+| 1864539854 | Punkish Boots |
+| 1995685684 | Road Romeo Boots |
+| 613481881 | Rock Star Boots |
+| 10044 | Scavenged Sneaker Boots |
+| 493064563 | Scavenged Sneaker Boots |
+| 1111680681 | Sky Seal Boots |
+| 962503020 | Stalker Boots |
+| 809586899 | Tactical Boots |
+| 1915397286 | Tactical Combat Boots |
+| 1084392788 | Tailgunner Boots |
+| 10022 | Tan Boots |
+| 1915955573 | Training Boots |
+| 961096730 | Wasteland Hunter Boots |
+| 944997041 | Yellow Race Boots |
+
+### Bucket Helmet — `bucket.helmet`
+
+| Skin ID | Skin name |
+|---:|---|
+| 831798567 | Graffiti Bucket Helmet |
+| 926313433 | Green Riveted Bucket Helmet |
+| 10127 | Medic Helmet |
+| 570784227 | Medic Helmet |
+| 1197730661 | Punk Bucket |
+| 964461549 | Road Cone Helmet |
+| 1073904216 | Roasted Bucket Helmet |
+| 867605376 | Rusty Bucket Helmet |
+| 784438982 | Smilin' Jack |
+| 949889936 | Sunrise Bucket Helmet |
+| 885450077 | Super Happy Bucket |
+| 889767601 | The King's Bucket |
+| 564826303 | Wooden Bucket |
+
+### Burlap Headwrap — `burlap.headwrap`
+
+| Skin ID | Skin name |
+|---:|---|
+| 942098139 | Anarchy |
+| 1691834772 | Bandit Headwrap |
+| 896506958 | Brotherhood Headwrap |
+| 861551572 | Crimson Headwrap |
+| 2255857422 | Death Mask |
+| 1694253807 | Minicopter Pilot Helmet |
+| 868014709 | Outlaw Headwrap |
+| 785890135 | SandPrince |
+| 822358002 | Shinobi Cowl |
+
+### Burlap Shirt — `burlap.shirt`
+
+| Skin ID | Skin name |
+|---:|---|
+| 849866944 | Biker Dad |
+| 1127407306 | Blacksmith Shirt |
+| 809909900 | Burlap and Leather Vest |
+| 1438049725 | Burlap Bandit Shirt |
+| 654502725 | Captain's Vest and Shirt |
+| 899941622 | Caravanner Shirt |
+| 1755124648 | Cowboy Shirt |
+| 926478499 | Desert Outlaw Burlap Shirt |
+| 2039984110 | Farmer Overalls Top |
+| 2255869247 | Gentleman's Shirt |
+| 1294811936 | It is Wednesday, my dudes |
+| 1394039696 | Junkyard King Shirt |
+| 1354670586 | Leopard Skin Shirt |
+| 1380044819 | Pirate Shirt |
+| 10136 | Pirate Vest & Shirt |
+| 585386820 | Pirate Vest & Shirt |
+| 1145786859 | Rioter's Jacket |
+| 1323654151 | Road Raider Shirt |
+| 1229561297 | Santa's Helper Shirt |
+| 882451685 | Sleazy Rider |
+| 1294812700 | Whens Whip? |
+
+### Burlap Shoes — `burlap.shoes`
+
+| Skin ID | Skin name |
+|---:|---|
+| 906443871 | Broken Ankles Cast |
+| 790679533 | Burlap Ninja Slippers |
+| 2215057317 | Fish Shoes |
+
+### Burlap Trousers — `burlap.trousers`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1127409880 | Blacksmith Pants |
+| 1438049211 | Burlap Bandit Pants |
+| 1755140135 | Cowboy Pants |
+| 921250017 | Desert Outlaw Burlap Pants |
+| 2039988322 | Farmer Overalls Bottom |
+| 2255871111 | Gentleman's Pants |
+| 1394040054 | Junkyard King Pants |
+| 1354675665 | Leopard Skin Pants |
+| 1380047706 | Pirate Pants |
+| 809968188 | Recycled Tarp Pants |
+| 1145780081 | Rioter's Pants |
+| 1323664071 | Road Raider Pants |
+
+### Chair — `chair`
+
+| Skin ID | Skin name |
+|---:|---|
+| 875258235 | Antique Dining Chair |
+| 871339422 | Danger Chair |
+| 1260443731 | Glory Throne |
+| 897656037 | Muerto Chair |
+| 2024586973 | Night Sky Chair |
+| 871271807 | Red Leather Chair |
+| 1147170604 | Rusty Iron Throne |
+| 1154498476 | Yellow Ornate Chair |
+
+### Coffee Can Helmet — `coffeecan.helmet`
+
+| Skin ID | Skin name |
+|---:|---|
+| 848645884 | Apocalypse Helmet |
+| 1797478191 | Apocalyptic Knight Helmet |
+| 914060966 | Army Armored Helmet |
+| 1759479029 | Azul Helmet |
+| 2120618167 | Blackout Helmet |
+| 2350097716 | Bombing Helmet |
+| 1865208631 | Bombshell Helmet |
+| 2296710564 | Cardboard Helmet |
+| 1342122459 | Caution Helmet |
+| 2142393198 | Centurion Helmet |
+| 1445131741 | Chaos Helmet |
+| 1121458604 | Cobalt Armor Helmet |
+| 1251411840 | Defender Helmet |
+| 938020581 | Desert Patrol Helmet |
+| 1332335200 | Dominator Helmet |
+| 1986043465 | Doodle Helmet |
+| 1349946203 | Dwarf Helmet |
+| 955675586 | Epidemic Helmet |
+| 1349166206 | Full Metal Helmet |
+| 1129809202 | Funhouse Helmet |
+| 1380023142 | Heavenly Legion Helmet |
+| 1740061403 | Heavy Machinery Helmet |
+| 1944168755 | Iceman Helmet |
+| 970583835 | Junkyard Samurai Helmet |
+| 843676357 | Lizard Skull |
+| 1269589560 | Loot Leader Helmet |
+| 1974807032 | Lunar Armor Helmet |
+| 1154453278 | Mad Helmet |
+| 1894381558 | Metal Zombie Helmet |
+| 1174375607 | Metalhunter Can Helmet |
+| 2320222274 | Mr. Gingerbread Helmet |
+| 1539575334 | Night Stalker Helmet |
+| 2076260082 | No Mercy Helmet |
+| 891592450 | Nordic Beast Helmet |
+| 2199783358 | Opulent Helmet |
+| 1438088592 | Ornate Helmet |
+| 2147200135 | Oxums Racing Team Helmet |
+| 1441850738 | Peacemaker Helmet |
+| 1743856800 | Phantom Helmet |
+| 1104118217 | Plywood Helmet |
+| 948491992 | Roadsign Warrior Helmet |
+| 806212029 | Rusty Coffee Can Helmet |
+| 1151227603 | Saboteur's Can Helmet |
+| 1248435433 | Samurai Kabuto |
+| 1539650632 | Scary Helmet |
+| 974321420 | Scrap Hazard Helmet |
+| 1202978872 | Scrapper Helmet |
+| 784910461 | Skull Hazard |
+| 1388417865 | Snap Turtle Helmet |
+| 1804649832 | Solar Panel Helmet |
+| 814098474 | Spare Parts |
+| 919595880 | Sunrise Helmet |
+| 1906527802 | Training Helmet |
+| 1130589746 | Utilizer Helmet |
+| 1400824309 | Vandal Graffiti Helmet |
+| 1442169133 | Viking Helmet |
+| 809816871 | Warboy Helmet |
+| 854460770 | Welding Helmet |
+
+### Combat Knife — `knife.combat`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1730634130 | Bronze Raven Knife |
+| 1706788762 | Carbon Elite |
+| 1719795241 | Combat Knife from Hell |
+| 1910941833 | Dread Lord Knife |
+| 1738307827 | Emerald Knife |
+| 1707332381 | Emperor's Knife |
+| 1702783691 | Glory Knife |
+| 1706692846 | Nuke Combat Knife |
+| 1702530691 | Phantom Knife |
+| 1739818618 | Razor Knife |
+| 2187058228 | Tea Ceremony Knife |
+| 1715608877 | Thug Knife |
+| 1952506333 | Toothed Knife |
+
+### Concrete Barricade — `barricade.concrete`
+
+| Skin ID | Skin name |
+|---:|---|
+| 828182621 | Metal Barricade |
+| 846663258 | Military Barricade |
+| 924112225 | Outpost Concrete Barricade |
+| 939333522 | Railway Barricade |
+| 791070521 | Road Barrier |
+
+### Crossbow — `crossbow`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2136580235 | Abyss Crossbow |
+| 915855989 | Ancient Artifact Crossbow |
+| 2178956071 | Blackout Crossbow |
+| 1565444858 | Caution Crossbow |
+| 874268567 | Chrome Crossbow |
+| 1961541693 | Cloud Shot Crossbow |
+| 1772979668 | Cold Hunter Crossbow |
+| 1242702498 | Dead Man Crossbow |
+| 1390284445 | Deep Water Crossbow |
+| 883141682 | Doomwing Crossbow |
+| 818070371 | Engraved Crossbow |
+| 1349337546 | Gold Spirit Crossbow |
+| 1181976746 | Gurkha Crossbow |
+| 1291686117 | Hawk Crossbow |
+| 809964230 | HazardCross |
+| 1466387739 | Heart Shot |
+| 1699027694 | Holy Trapper Crossbow |
+| 1428614422 | Hunter's crossbow |
+| 1365706569 | Huntsman Crossbow |
+| 1127389810 | Lone Wulf Crossbow |
+| 1115959202 | Mad Crossbow |
+| 1865294019 | Mad Rider Crossbow |
+| 1421675342 | Makeshift Crossbow |
+| 1184318659 | Marauder |
+| 1739935284 | Metal Lord Crossbow |
+| 1097642159 | Northwind Crossbow |
+| 2059058861 | One Shot Crossbow |
+| 2288242320 | Phantom Crossbow |
+| 1269230939 | Phoenix Crossbow |
+| 1089558546 | POP Crossbow |
+| 1206661880 | Primal Crossbow |
+| 2024146764 | Rainbow Pony Crossbow |
+| 2193672354 | Retrowave Crossbow |
+| 1328219905 | Ronin |
+| 1701173429 | Scrapper Crossbow |
+| 856029421 | Tank Crossbow |
+| 1766369967 | Tiki Crossbow |
+| 1559298697 | Tooth Monster Crossbow |
+| 1367933148 | Tribal Crossbow |
+| 1408631840 | Trophy Pirate Crossbow |
+| 1810999666 | Vampire Crossbow |
+| 1383105648 | Victoria Crossbow |
+| 2316783823 | Xmas Candy Crossbow |
+
+### Custom SMG — `smg.2`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1329096680 | Afterburn SMG |
+| 820350952 | Alien Relic SMG |
+| 820402694 | Anarchy SMG |
+| 866745136 | Bandito SMG |
+| 1081305198 | Bone Shaman SMG |
+| 2186437441 | Cloudshot SMG |
+| 1128840196 | Dark Flames SMG |
+| 931547202 | Engineer SMG |
+| 1185311263 | Finish Line SMG |
+| 816728172 | Firestarter Custom SMG |
+| 1839296742 | Flyboy SMG |
+| 1805101270 | Goldthorn SMG |
+| 897099822 | Hailstorm SMG |
+| 892212957 | Hunter SMG |
+| 904964438 | Looter's SMG |
+| 1597038037 | Metalhead SMG |
+| 2172135020 | No Mercy SMG |
+| 1446184061 | Pathogenesis |
+| 1961720552 | Peacemaker SMG |
+| 1685722307 | Phantom SMG |
+| 1198145190 | Polymer SMG |
+| 1753609137 | Poseidon SMG |
+| 1987573278 | Rainbow Pony SMG |
+| 1114032911 | Safari SMG |
+| 1107572641 | Survivor SMG |
+| 854914986 | Tank SMG |
+| 1523699528 | Tempered SMG |
+| 2281845451 | Toy SMG |
+| 822943156 | tRUSTy Friend |
+| 970682025 | Warpaint SMG |
+
+### Double Barrel Shotgun — `shotgun.double`
+
+| Skin ID | Skin name |
+|---:|---|
+| 916790605 | Aircraft Parts DBS |
+| 865019380 | Bespoke DBS |
+| 1448142776 | Blunderbuss |
+| 1660175523 | Brotherhood DBS |
+| 2059815527 | Canned DBS |
+| 1119662164 | Caution DBS |
+| 2118688615 | DD Inc DBS |
+| 1680595474 | Double Oil Pipe |
+| 1213074188 | Double Trouble DBS |
+| 1378519774 | Geartooth DBS |
+| 948113632 | Grandfather DBS |
+| 1818232860 | Happiness DBS |
+| 854987948 | Heat Double Shotgun |
+| 1260964187 | Hellion DBS |
+| 1522902588 | Hippie Blaster |
+| 860153737 | Industrial DBS |
+| 1414878365 | Last Blast Twins |
+| 1295701369 | Last Hero DBS |
+| 2107885378 | Lighthouse DBS |
+| 1408050439 | Mad DBS |
+| 1174675399 | Military Boomstick |
+| 858957151 | Nitro-Maniac DBS |
+| 1910558629 | Pipeline DBS |
+| 1465627520 | Predator DBS |
+| 1341524782 | Protector DBS |
+| 1127266590 | Quick Death DBS |
+| 1441939951 | Raider's Shotgun |
+| 1870693079 | Rat King DBS |
+| 1282137884 | Saboteur DBS |
+| 1590495543 | Santa's Blaster |
+| 1229950256 | Santa's Boomstick |
+| 1277558450 | Steam DBS |
+| 2249169000 | Toy Blaster |
+| 1225880743 | Vigilante DBS |
+| 1247696065 | Whopper DBS |
+| 1616108563 | Witchhunter DBS |
+| 1569952704 | СМЭРТЬ |
+
+### Eoka Pistol — `pistol.eoka`
+
+| Skin ID | Skin name |
+|---:|---|
+| 856053892 | Banana Eoka |
+| 898387222 | Birch Eoka |
+| 2032782073 | Flare Eoka |
+| 1171935313 | Flintlock |
+| 1174673119 | Gurkha Eoka |
+| 926184643 | Japanese Tanegashima |
+| 1413731110 | Last Blast |
+| 920310954 | Nordic Relic |
+| 857750032 | Primal Gun |
+
+### F1 Grenade — `grenade.f1`
+
+| Skin ID | Skin name |
+|---:|---|
+| 836745325 | Fire and Brimstone Grenade |
+| 936182773 | Smile Grenade |
+| 1163186435 | Unholy Grenade |
+| 815252048 | Voodoo Grenade |
+
+### Fridge — `fridge`
+
+| Skin ID | Skin name |
+|---:|---|
+| 869398873 | Aircraft Parts Fridge |
+| 864918396 | Biohazard Fridge |
+| 1759824768 | Cobalt Cola Fridge |
+| 1927006810 | Concert Speaker Fridge |
+| 2156206373 | Ice Cream Freezer |
+| 1968311805 | Portable Toilet |
+| 873612402 | Urban Fridge |
+| 886416273 | Victorian Food Vault |
+
+### Furnace — `furnace`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1260546874 | Ancient Furnace |
+| 1335598661 | Ancient Gods Furnace |
+| 1448350353 | Ancient Totem Furnace |
+| 1247357204 | Angry Furnace |
+| 1408433814 | Artist's Furnace |
+| 1241065527 | Aztec Furnace |
+| 2060469349 | Bee Hive |
+| 1949401987 | Bio Integrity Furnace |
+| 1645019295 | Birch Furnace |
+| 1230386524 | Blacksmith Furnace |
+| 1305332196 | Brutal Furnace |
+| 1230680321 | Cannibal Furnace |
+| 1701971555 | Chocolate Bunny Furnace |
+| 1230975843 | Christmas Furnace |
+| 1935093227 | Cookie Maker Furnace |
+| 1457061230 | Cursed Soul Furnace |
+| 1805182793 | Deep Sea Furnace |
+| 1775718906 | Demon Furance |
+| 1892656766 | Demonic Stone Furnace |
+| 1384844042 | Dragon Furnace |
+| 1975322284 | Eastern Dragon Furnace |
+| 1632040649 | Furious Volcano |
+| 1723387671 | Furnace from Hell |
+| 1230272984 | Furnace of the Shaman |
+| 1539005624 | Ghostly Flame |
+| 2031915217 | Greek Furnace |
+| 1652555216 | Hearts Furnace |
+| 1865321291 | Hell Forge |
+| 1391109786 | Hellfire Furnace |
+| 1588458946 | Home Sweet Home |
+| 2179924680 | HQM Furnace |
+| 1260305347 | Hydraulic Furnace |
+| 1427551950 | Iron Calamity |
+| 1277616284 | Iron Forge |
+| 2253998989 | Jack-o'-lantern Furnace |
+| 1335260783 | Junkyard Furnace |
+| 1583218948 | Last Friend |
+| 1421455358 | Mad Iron Furnace |
+| 1387619038 | Marble Furnace |
+| 1992130386 | Master's Furnace |
+| 1354629493 | Medieval Fresco Furnace |
+| 2138871357 | Metal Furnace |
+| 1377346304 | Metalwork Flux Furnace |
+| 1320779999 | Military Furnace |
+| 1354714819 | Miner's Furnace |
+| 1630511618 | Monster Furnace |
+| 1277183788 | Mosaic Furnace |
+| 1936112920 | Mr. Gingerbread |
+| 1810979800 | Night Sky Furnace |
+| 1640730462 | Octo Furnace |
+| 1636919294 | Personal Lighthouse |
+| 1239083962 | Potbelly Furnace |
+| 1356581838 | Rainbow Furnace |
+| 1305743950 | Ritual Furnace |
+| 1772650961 | Royal Furnace |
+| 1587226587 | Santa Furnace |
+| 1373663659 | Scrap Face Furnace |
+| 1529559770 | Sea Devil Furnace |
+| 2288536484 | Shippy & Friends Furnace |
+| 2316854479 | Silent Night |
+| 1230539924 | Snowboy |
+| 1349367380 | Soul Burner |
+| 1559242743 | Spider Furnace |
+| 1539436979 | Spooky Slime Furnace |
+| 2115314246 | Sulfur Furnace |
+| 2198708104 | Tiger Crown Furnace |
+| 1282172459 | Totem Furnace |
+| 1458047080 | Toxic Furnace |
+| 1367939983 | Treasure Furnace |
+| 1575177513 | Tribe Furnace |
+| 1261530424 | Urban Furnace |
+| 1231071505 | Victorian Furnace |
+| 1467078851 | Wild Furnace |
+| 2193152729 | Yummy Furnace |
+| 1587959070 | Сhristmas Night |
+
+### Garage Door — `wall.frame.garagedoor`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2317872477 | Advent Calendar Garage Door |
+| 1398568170 | Bandit Garage Door |
+| 1415167317 | Brutal Jaws Garage Door |
+| 1334974046 | Cargo Truck Garage Door |
+| 1772483395 | Castle Gate |
+| 1617613419 | Caution Garage Door |
+| 2010495833 | CCTV Garage Door |
+| 2289421450 | Charitable Rust 2020 Garage Door |
+| 1209586977 | Checkpoint Door |
+| 2156585400 | Chill Zone Garage Door |
+| 1180981036 | Chop Shop Garage Door |
+| 1935858699 | Christmas Tree Garage Door |
+| 1529742943 | Cobalt Cargo Door |
+| 1805270622 | Cobalt Quarantine |
+| 1186351868 | Cobalt Space Door |
+| 1926583818 | Concert Curtains |
+| 1415079530 | Cursed Pirate Garage Door |
+| 1523814360 | Danger Garage Door |
+| 2323315927 | Dead Moroz |
+| 1788350229 | Deep Sea Garage Door |
+| 1180968592 | Defense Garage Door |
+| 1886876765 | Dia De Los Muertos Garage Door |
+| 1649777840 | Egiptu Garage Door |
+| 1575268855 | Electro Garage Door |
+| 2238632740 | Elevator Garage Door |
+| 1238292260 | Factory Rolling Door |
+| 2041819488 | Fresh Produce Garage Door |
+| 2222230165 | Garage Door from Hell |
+| 1380090862 | GNH-315 |
+| 1529558717 | Gun Lord Door |
+| 2123310382 | HappyLand Garage Door |
+| 1539143998 | House of Horror |
+| 2186094580 | Laboratory Rolling Door |
+| 1465843732 | Longtail Garage Door |
+| 1856195647 | Love Nest |
+| 1968391406 | Marine Blast Door |
+| 2146118486 | Mechanic Garage Door |
+| 1871289078 | Military Bunker Door |
+| 1871289078 | Military Bunker Door |
+| 1645407409 | Minicopter Hangar Door |
+| 1461027316 | Monster Garage Door |
+| 1819106723 | Morexo Garage Door |
+| 2255437587 | Neon Pumpkin Garage Door |
+| 2014975420 | Pixel Garage Door |
+| 2351178062 | Pokimane Garage Door |
+| 2155588318 | Raider's Cove Garage Door |
+| 1309406283 | Reactor Room 3 of 10 |
+| 1804915784 | Resist Garage Door |
+| 2006000003 | Revolution Garage Door |
+| 1183127702 | Rolling Exit Door |
+| 1733848365 | Royal Garage Door |
+| 1759641728 | Rust Rider Door |
+| 1358030533 | Sailor's Garage Door |
+| 1826250647 | Shippy Garage Door |
+| 1747024635 | Steer Clear |
+| 1839473397 | Street Meat Door |
+| 1973756459 | Street Rat |
+| 2101163537 | Toxic Garage Door |
+| 1306203844 | Trash Garage Door |
+| 2111916381 | uMod Fundraiser Garage Door |
+| 1846000839 | Vandalized Shop Door |
+| 1428456080 | War Door |
+| 1680120997 | ZENLABS Garage Door |
+
+### Hammer — `hammer`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1249500235 | Aztec Jade Hammer |
+| 1539336419 | Braineater Hammer |
+| 938806184 | Builders Guild Hammer |
+| 2115359138 | Building Block Hammer |
+| 1457914371 | Calamity Hammer |
+| 1128710439 | Dead Hammer |
+| 1208606722 | Frost Hammer |
+| 1858261101 | Fuel Hammer |
+| 1116103194 | God Of Builders Hammer |
+| 1652017472 | Heart of the Creator |
+| 1120977731 | Kitchen Tile Hammer |
+| 1916000340 | Morganite Hammer |
+| 1125995819 | Museum Raider Hammer |
+| 1720644451 | Mystic Hammer |
+| 1876980303 | Night Sky Hammer |
+| 1884786335 | Pumpkin Hammer |
+| 1095969830 | Riveted Hammer |
+| 833423263 | Scorched Hammer |
+| 2076299603 | Silver Leaf Hammer |
+| 1586965130 | Snowman Hammer |
+| 961294045 | Trap Base Weaver |
+| 2138245748 | Watermelon Ice Cream Hammer |
+| 822539548 | Welded Hammer |
+
+### Hatchet — `hatchet`
+
+| Skin ID | Skin name |
+|---:|---|
+| 892263562 | Ancient Artifact Hatchet |
+| 2068589541 | Apocalyptic Hatchet |
+| 1145547996 | Beast Hunter Hatchet |
+| 2124287244 | Chaos Hatchet |
+| 1546404025 | Cursed Treasure Hatchet |
+| 1143274085 | Damascus Steel Hatchet |
+| 1911293067 | Dragon Claw Hatchet |
+| 1171956705 | Eater Hatchet |
+| 1987865546 | Emerald Relic Hatchet |
+| 1320099240 | Fenrir Hatchet |
+| 814630559 | Firefighter Hatchet |
+| 1252014044 | Full Metal Hatchet |
+| 824552943 | Golden Axe |
+| 1290169302 | Hatchet of Antiquities |
+| 1407875352 | Hazard Hatchet |
+| 950020589 | Hunter Hatchet |
+| 2328580814 | Hunting Hatchet |
+| 924242197 | Iron Jaws Hatchet |
+| 915910717 | Iron Wing |
+| 1082302323 | Leather Hatchet |
+| 1095577423 | Macbeth Hatchet |
+| 1466664834 | Machinery Hatchet |
+| 2242722277 | Meteorite Hatchet |
+| 816715928 | Military Hatchet |
+| 962959509 | Modern Lumberjack Hatchet |
+| 2093114444 | Norse Hatchet |
+| 967413298 | Notorious Hatchet |
+| 944497252 | Ornate Axe |
+| 1435214632 | Pharon Hatchet |
+| 1076337199 | Polynesian War Axe |
+| 1150815053 | Prospector's Hatchet |
+| 1108554409 | Raider Hatchet |
+| 2171464647 | Rainbow Pony Hatchet |
+| 1422179740 | Raventale Hatchet |
+| 1448232793 | Reaper Hatchet |
+| 910196839 | Red Chopper |
+| 953186726 | Refined Hatchet |
+| 1414446668 | Regal Hatchet |
+| 912857899 | Replacement Blade Hatchet |
+| 1379766114 | Road Hatchet |
+| 1553321287 | Runic Hatchet |
+| 1242774466 | Scrapper Hatchet |
+| 1378023158 | Secret Zone Hatchet |
+| 1838326907 | Shadow of Death Hatchet |
+| 1291775183 | Shinobi Hatchet |
+| 1220880032 | Siege Breaker |
+| 1247701169 | Snow Valley Hatchet |
+| 1152712210 | Soul Collector Hatchet |
+| 1193102490 | Soulburn Hatchet |
+| 1362737705 | Spec Ops Hatchet |
+| 1107210636 | Spider King Hatchet |
+| 1710517158 | Spring Hatchet |
+| 1870596204 | Strange Fury Hatchet |
+| 928879549 | Sunrise Hatchet |
+| 1137482995 | Survivor Hatchet |
+| 1359120832 | Survivor's Hatchet |
+| 1772892883 | Tactical Hatchet |
+| 1572398539 | Taurus Hatchet |
+| 1617000027 | Tiki Hatchet |
+| 1121515438 | Tomb Hatchet |
+| 1962083351 | Toothed Hatchet |
+| 1092131816 | Tribal Hatchet |
+| 826402867 | Veteran Hatchet |
+| 814713259 | Vikings Tomahawk |
+| 825033005 | Vintage Hatchet |
+| 1325481133 | Virulent Hatchet |
+| 1620492374 | Virus Hatchet |
+| 1900587737 | Warlord Hatchet |
+| 1258108678 | Widowmaker Hatchet |
+
+### Hazmat Suit — `hazmatsuit`
+
+| Skin ID | Skin name |
+|---:|---|
+| 10180 | Spacesuit |
+
+### Headset — `twitch.headset`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13055 | Purple Headset |
+
+### Hide Boots — `attire.hide.boots`
+
+| Skin ID | Skin name |
+|---:|---|
+| 785347695 | Native American Hide Shoes |
+| 1230633097 | Rudolph Slippers |
+| 837175591 | Uprising Hide Shoes |
+
+### Hide Halterneck — `attire.hide.helterneck`
+
+| Skin ID | Skin name |
+|---:|---|
+| 798669794 | Caution Tape Top |
+| 845019310 | Leopard Top |
+
+### Hide Pants — `attire.hide.pants`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1269154354 | Tribesman Hide Pants |
+| 837179220 | Uprising Hide Pants |
+
+### Hide Poncho — `attire.hide.poncho`
+
+| Skin ID | Skin name |
+|---:|---|
+| 833524594 | Camo Netting |
+| 788732722 | Grey Wolf Hide Poncho |
+| 825459163 | Toymaker Poncho |
+| 1269162578 | Tribesman Poncho |
+| 837191793 | Uprising Hide Poncho |
+
+### Hide Skirt — `attire.hide.skirt`
+
+| Skin ID | Skin name |
+|---:|---|
+| 831920129 | Blue Tarp Skirt |
+| 793180528 | Irish Kilt |
+
+### Hide Vest — `attire.hide.vest`
+
+| Skin ID | Skin name |
+|---:|---|
+| 878319804 | Celtic Hide Shirt |
+| 1269172413 | Tribesman Hide Shirt |
+
+### Hoodie — `hoodie`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1660290744 | Airman Hoodie |
+| 1787216403 | Apocalyptic Knight Hoodie |
+| 1100931254 | Arctic Wolf Hoodie |
+| 897890977 | Army Armored Hoodie |
+| 2351687115 | AuronPlay Hoodie |
+| 1961464025 | Azul Hoodie |
+| 1408832378 | Badboy Hoodie |
+| 2282178792 | Base Invaders Hoodie |
+| 10142 | BCHILLZ! Hoodie |
+| 626133126 | BCHILLZ! Hoodie |
+| 2192919905 | Bee Cosplay Hoodie |
+| 1997532879 | Bio Integrity Hoodie |
+| 14179 | Black Hoodie |
+| 2080975449 | Blackout Hoodie |
+| 10052 | Bloody Hoodie |
+| 492800372 | Bloody Hoodie |
+| 14178 | Blue Hoodie |
+| 2295666190 | Bombing Hoodie |
+| 2293185782 | Bombshell Hoodie |
+| 1373714814 | Brony Hoodie |
+| 1968538819 | Buscador Hoodie |
+| 1432964453 | Cajun Hoodie |
+| 2000507925 | Caution Hoodie |
+| 1552703337 | CCSC Hoodie |
+| 1209453497 | Charitable Rust 2017 Hoodie |
+| 1564974974 | Charitable Rust 2018 Hoodie |
+| 1911980598 | Charitable Rust 2019 Hoodie |
+| 2289427434 | Charitable Rust 2020 Hoodie |
+| 1371314541 | Checkpoint Hoodie |
+| 1305321596 | Chekist's Hoodie |
+| 1587744366 | Christmas Gang Hoodie |
+| 1150818496 | Conquistador Hoodie |
+| 2099705103 | Conspiracy Nut Hoodie |
+| 2067569919 | Cow Moo Flage Hoodie |
+| 1766644324 | Cowboy Sheriff Hoodie |
+| 10133 | Cuda87 Hoodie |
+| 619935833 | Cuda87 Hoodie |
+| 904963081 | Denim Studded Hoodie |
+| 889718910 | Desert Conqueror Hoodie |
+| 1950853975 | Doodle Hoodie |
+| 2200988844 | Dragon Hoodie |
+| 1581817010 | Electrician Hoodie |
+| 2131784896 | Elite Forest Camo Hoodie |
+| 1234693807 | Explorer Hoodie |
+| 1296608954 | Firefighter Hoodie |
+| 954392337 | Gang Leader Hoodie |
+| 2147365537 | Garage Master Hoodie |
+| 14072 | Green Hoodie |
+| 2176988889 | Hobo Hoodie |
+| 959900137 | Huntsman Hoodie |
+| 1768733505 | Jockey Hoodie |
+| 2215209664 | Kayak Hoodie |
+| 895065994 | Leather Strapped Hoodie |
+| 1196751864 | Loot Leader Hoodie |
+| 914621940 | Looter's Hoodie |
+| 2349487658 | Ludwig Hoodie |
+| 1368417352 | Lumberjack Hoodie |
+| 1448343881 | Mad Rider Hoodie |
+| 1894585931 | Maniac Hoodie |
+| 1385322661 | Marsh Lurker Hoodie |
+| 1106582025 | Metalhunter Hoodie |
+| 1700935391 | Minicopter Pilot Jacket |
+| 1740562395 | No Mercy Hoodie |
+| 939604165 | Nordic Beast Hoodie |
+| 1328751626 | Northern Forester Hoodie |
+| 797128321 | Official Vertiigo Hoodie |
+| 1784482745 | Operator Hoodie |
+| 2207288699 | Opulent Hoodie |
+| 1356328924 | Outlaws Hoodie |
+| 2022463110 | Phantom Hoodie |
+| 1810592176 | Playmaker Hoodie |
+| 2124528682 | Poison Hoodie |
+| 1150760640 | Predator Hoodie |
+| 1274163900 | Prospector's Hoodie |
+| 1858310941 | Punkish Hoodie |
+| 1638742127 | Railway Engineer Hoodie |
+| 661319427 | Ranger's Vest |
+| 919353761 | Regulator's Hoodie |
+| 1282111884 | Revolution Hoodie |
+| 10132 | Rhinocrunch Hoodie |
+| 612956053 | Rhinocrunch Hoodie |
+| 1993891915 | Road Romeo Jacket |
+| 1927124747 | Rocker Jacker |
+| 971807764 | Rocket Factory Crew Hoodie |
+| 2256109331 | Rusteratu Hoodie |
+| 1936131747 | Rustmas PJ Hoodie |
+| 10129 | Safety Crew |
+| 539943199 | Safety Crew |
+| 1170989053 | Savage Jacket |
+| 1292091712 | Scrapper Hoodie |
+| 835836079 | Scudpunk Hoodie |
+| 1356748246 | Seaman Hoodie |
+| 2349484905 | Shroud Hoodie |
+| 10086 | Skeleton Hoodie |
+| 519147220 | Skeleton Hoodie |
+| 1111669350 | Sky Seal Hoodie |
+| 2138199381 | Snow Warrior Hoodie |
+| 959641236 | Stalker Hoodie |
+| 1623185000 | Survivor Jacket |
+| 1883624383 | Tactical Hoodie |
+| 975500312 | Tailgunner Hoodie |
+| 677636990 | Tank Crew Hoodie |
+| 1703216433 | Tough Bunny Hoodie |
+| 1740503746 | Training Hoodie |
+| 2182271278 | Trust in Rust Hoodie |
+| 803249256 | Unknown Territory Hoodie |
+| 2076428294 | Uproar Hoodie |
+| 1317554978 | Urban Ice Hoodie |
+| 961066582 | Wasteland Hunter Hoodie |
+| 2329780962 | Winter Hoodie |
+| 954947279 | Worker Hoodie |
+| 941172099 | Yellow Police Jacket |
+| 926162531 | Yellow Racer Hoodie |
+
+### Hunting Bow — `bow.hunting`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2108510511 | Abyss Bow |
+| 2192571819 | Blackout Bow |
+| 1773297889 | Bushi Zhe Hunting Bow |
+| 2046137724 | Chocolate Hunter Bow |
+| 1988012822 | Cloud Shot Bow |
+| 2275810551 | Dragon Bow |
+| 1926862937 | Dread Lord Hunting Bow |
+| 1846220912 | Golden Leaf Bow |
+| 1818588701 | Heavy Machinery Bow |
+| 1793915047 | Hunting Bow from Hell |
+| 2341845629 | Jade Bow |
+| 1747542198 | Metalhead Bow |
+| 1729920243 | Native Hunting Bow |
+| 1759967280 | Northwind Bowmaster |
+| 2032574584 | One Shot Bow |
+| 1729629485 | Phantom Bow |
+| 1984690140 | Pink Death Bow |
+| 1734427277 | Resin Bow |
+| 2229211780 | Retrowave Bow |
+| 2312049369 | Rising Moon Bow |
+| 1729683309 | Scrapper Bow |
+| 2085489622 | Seafarer Hunting Bow |
+| 1883523860 | Sunken Treasure Bow |
+| 1885852817 | The Bone Bow |
+| 2164997891 | Tribe Hunting Bow |
+| 1974088369 | Triumph Bow |
+| 1876857585 | Vampire Bow |
+| 2185750735 | Venomous Bow |
+| 1788414884 | War Story Bow |
+
+### Improvised Balaclava — `mask.balaclava`
+
+| Skin ID | Skin name |
+|---:|---|
+| 843976918 | Burglar Mask |
+| 539536877 | Burlap Brains Balaclava |
+| 10069 | Desert Camo Balaclava |
+| 10071 | Double Yellow Balaclava |
+| 884484239 | Executioner Latex |
+| 10068 | Forest Camo Balaclava |
+| 1175131736 | Frankenstein Mask |
+| 813561728 | Knitted Balaclava |
+| 858156568 | Meat Mask |
+| 10057 | Murica Balaclava |
+| 503161493 | Murica Balaclava |
+| 856403207 | Nerd Glasses |
+| 10075 | Nightmare Balaclava |
+| 506771831 | Nightmare Balaclava |
+| 10070 | Red Check Balaclava |
+| 10054 | Rorschach Skull |
+| 502924129 | Rorschach Skull |
+| 1174877663 | Rotten Scalp |
+| 807719156 | Santa Balaclava |
+| 10090 | Skin Balaclava |
+| 507590678 | Skin Balaclava |
+| 539562549 | Stitched Skin |
+| 10084 | The Rust Knight |
+| 519942815 | The Rust Knight |
+| 851779943 | Toupee |
+| 10139 | Valentine Balaclava |
+| 613057784 | Valentine Balaclava |
+| 10111 | Zipper Face |
+| 535666265 | Zipper Face |
+
+### Inner Tube — `innertube`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13027 | Camo |
+| 13028 | Donut |
+| 13029 | Horse |
+| 13030 | Tire |
+| 13031 | Unicorn |
+| 13032 | Watermelon |
+| 13033 | Zebra |
+
+### Jacket — `jacket`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2137516645 | Blackout Jacket |
+| 10011 | Blue Jacket |
+| 10012 | Desert Jacket |
+| 834233801 | Fire jacket |
+| 10009 | Green Jacket |
+| 10015 | Hunting Jacket |
+| 2350426469 | Lilypichu Jacket |
+| 10013 | Multicam Jacket |
+| 2296376871 | No Mercy Jacket |
+| 10072 | Provocateur Jacket |
+| 505424331 | Provocateur Jacket |
+| 10010 | Red Jacket |
+| 10008 | Snowcamo Jacket |
+| 10014 | Urban Camo Jacket |
+| 1317555901 | Urban Ice Jacket |
+
+### Large Wood Box — `box.wooden.large`
+
+| Skin ID | Skin name |
+|---:|---|
+| 813269955 | Ammo Box |
+| 1915836108 | Ammo Crate |
+| 10124 | Ammo Wooden Box |
+| 566336757 | Ammo Wooden Box |
+| 1285113124 | Aztec Gold Chest |
+| 1206100969 | Aztec Trunk |
+| 2157494407 | Beach Crate |
+| 1320924107 | Bone Collector Box |
+| 1196352289 | Box from Hell |
+| 1651859603 | Box of Hearts |
+| 892062620 | Cabin Chest |
+| 1261541803 | Captain's Treasure |
+| 2108972947 | Cargo Heli Large Box |
+| 1315566388 | Carpenter's Chest |
+| 1362394666 | Caution Crate |
+| 2012513964 | CCTV Storage |
+| 1209454231 | Charitable Rust 2017 Relief Crate |
+| 1565532295 | Charitable Rust 2018 Box |
+| 1911972056 | Charitable Rust 2019 Box |
+| 2289415427 | Charitable Rust 2020 Box |
+| 1277330503 | Childhood Toolbox |
+| 810383121 | Christmas Holiday LWB |
+| 10122 | Christmas Storage |
+| 571495390 | Christmas Storage |
+| 854002617 | Components Storage |
+| 1539262307 | Creepy Box |
+| 1394363785 | Cursed Pirate Treasure Chest |
+| 1740339091 | Cursed Soul Chest |
+| 576569265 | D.O.A Trunk |
+| 1199632980 | Danger Box |
+| 1673157060 | Dead Man's Chest |
+| 1116497962 | Dead Pirates Chest |
+| 1753777701 | Deep Sea Storage |
+| 1443958473 | Defender Box |
+| 1627583152 | Digital Security Box |
+| 1466559128 | Divinity Chest |
+| 2248888457 | Doodle Large Wooden Box |
+| 1617361106 | Egiptu Box |
+| 1251062707 | Eisensheet Box |
+| 798455489 | Explosives Box |
+| 2320069344 | Fairy Tale Box |
+| 2040458769 | Farming Storage Box |
+| 942678679 | Fire Hose Box |
+| 10123 | First Aid Green |
+| 565253186 | First Aid Green |
+| 882223700 | First Aid Large Box |
+| 809975811 | Food Box Large |
+| 1067191615 | Forgotten Temple Box |
+| 1686299197 | Freight Crate |
+| 2256347841 | Ghostly Flame Box |
+| 1582501552 | Gingerbread Box |
+| 2156384652 | Glacial Visage Large Box |
+| 10141 | Gun Box |
+| 624269671 | Gun Box |
+| 1102266445 | Hazard Crate |
+| 2106939007 | Hieroglyphic Large Box |
+| 1766238308 | Horseshoe Box |
+| 1306240898 | Ichtaca Treasure Box |
+| 1192724938 | Idolized Toolbox |
+| 2350415758 | Jacksepticeye Storage |
+| 1524018833 | Labyrinth Box |
+| 2165312390 | Large Stickered Toy Car |
+| 797422750 | Large Stone Box |
+| 1575872461 | Large Suitcase |
+| 969292267 | Leather Bound Trunk |
+| 1680678559 | Leprechaun's Loot |
+| 1204070852 | Lone Wolf Chest |
+| 904962497 | Long Hauler's Trunk |
+| 1135412156 | Loot Coffer |
+| 2144339321 | Mechanic Tool Box |
+| 851053322 | Medieval Box |
+| 928502682 | Metropolitan Trunk |
+| 1882223552 | Midnight Box |
+| 842083350 | Military Crate |
+| 942917320 | Mini Nuke Case |
+| 1900496901 | Molten Visage Large Box |
+| 1630549771 | Monster Box |
+| 1825978701 | Morexo Tool Box |
+| 1212838382 | Muertos Chest |
+| 2212102023 | Nautical Storage Box |
+| 1795321839 | Night Sky Large Box |
+| 1517816237 | Oathbreaker Box |
+| 1557427113 | Open Stone Box |
+| 1356773002 | Ordnance Box |
+| 932160919 | Padded Armor Trunk |
+| 1282838099 | Pandora's box |
+| 1535990243 | Peacemaker Box |
+| 1456233168 | Pharaoh Mummy Box |
+| 1353721544 | Ragnarok Trunk |
+| 1342462175 | Railway Box |
+| 1973015940 | Rat Chest |
+| 878850459 | Recyclables Box |
+| 2172084040 | Reprocessing Box |
+| 1727351952 | Royal Loot |
+| 881249489 | Royal Wooden Box |
+| 1169231428 | Salvaged Cargo Box |
+| 1853539864 | Scrap Heli Box |
+| 1269932286 | Scrapper Storage Chest |
+| 1877231477 | Shippy Crate |
+| 2249242717 | Spirit Board Box |
+| 1886917011 | Spooky Large Box |
+| 1840296976 | Sunrise Box |
+| 2068850952 | Supplies Box |
+| 2185190213 | Tea Cargo Box |
+| 1447962258 | Toxic Box |
+| 1936186181 | Toy Box |
+| 978112601 | Trash Box |
+| 1382429236 | Trophy Pirate Chest |
+| 2323036838 | Trust In Rust 3 Box |
+| 1926650593 | Turntable Box |
+| 890915277 | Urban Large Wood Storage |
+| 1119263507 | Vaccine box |
+| 1547157690 | Varangian Chest |
+| 854718942 | Weapons Box |
+| 2311523302 | Weather Large Wood Box |
+| 1159589238 | Wyrm Chest |
+| 2012101320 | XPOINT Ammo |
+| 2023776102 | XPOINT Armor |
+| 2023770995 | XPOINT Clothes |
+| 2017867878 | XPOINT Components |
+| 2023780547 | XPOINT Electrical |
+| 2017869441 | XPOINT Medical |
+| 2049364586 | XPOINT Metal Fragments |
+| 2031688330 | XPOINT Misc |
+| 2039982308 | XPOINT Stone |
+| 2049362180 | XPOINT Sulfur |
+| 2012102778 | XPOINT Tools |
+| 2012098446 | XPOINT Weapons |
+| 2031113316 | XPOINT Wood |
+
+### Leather Gloves — `burlap.gloves`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1839312425 | Apocalyptic Knight Leather Gloves |
+| 1100928373 | Arctic Wolf Gloves |
+| 874488180 | Army Armored Gloves |
+| 1406800025 | Badboy Gloves |
+| 2199937414 | Bee Cosplay Gloves |
+| 2009427605 | Bio Integrity Gloves |
+| 816473273 | Black Alligator |
+| 2090790324 | Blackout Gloves |
+| 10128 | Boxer's Bandages |
+| 565678598 | Boxer's Bandages |
+| 883476299 | Bruiser Gloves |
+| 1432966221 | Cajun Gloves |
+| 904961862 | Caravanner Gloves |
+| 1552705918 | CCSC Gloves |
+| 2075536045 | Cow Moo Flage Gloves |
+| 1960696487 | Doodle Gloves |
+| 661317919 | Duelist Gloves |
+| 1296614997 | Firefighter Gloves |
+| 1633859273 | Glory Gloves |
+| 938394833 | Junklord Gloves |
+| 1394040487 | Junkyard King Gloves |
+| 1196737780 | Loot Leader Gloves |
+| 1368419860 | Lumberjack Gloves |
+| 1448347837 | Mad Rider Gloves |
+| 1395757825 | Marsh Lurker Gloves |
+| 921030333 | Merciless Gloves |
+| 1106600389 | Metalhunter Gloves |
+| 610098458 | Motorcycle Gloves |
+| 2304196579 | No Mercy Gloves |
+| 1727356926 | Playmaker Gloves |
+| 1864540635 | Punkish Gloves |
+| 1993913813 | Road Romeo Gloves |
+| 1111677889 | Sky Seal Gloves |
+| 949616124 | Space Rocket Work Gloves |
+| 962495909 | Stalker Gloves |
+| 1623175153 | Survivor Gloves |
+| 1865178625 | Tactical Leather Gloves |
+| 1084390180 | Tailgunner Gloves |
+| 1915956499 | Training Gloves |
+| 961103399 | Wasteland Hunter Gloves |
+
+### Locker — `locker`
+
+| Skin ID | Skin name |
+|---:|---|
+| 879343335 | Army Locker |
+| 2058696685 | Cargo Heli Locker |
+| 1328242213 | Carpenter's Locker |
+| 1935027646 | Christmas Locker |
+| 1901223959 | Cobalt Personal Locker |
+| 1138218408 | Cobalt Security Locker |
+| 879533969 | Grid Locker |
+| 881997061 | Muertos Locker |
+| 881411749 | Permanent Detention |
+| 2242254710 | Toxic Locker |
+
+### Longsleeve T-Shirt — `tshirt.long`
+
+| Skin ID | Skin name |
+|---:|---|
+| 10047 | Aztec Long T-Shirt |
+| 493015260 | Aztec Long T-Shirt |
+| 801204141 | Battle Worn Long TShirt |
+| 10004 | Black Longsleeve T-Shirt |
+| 808300545 | Christmas Elf |
+| 512107102 | Christmas Jumper |
+| 10106 | Creepy Jack |
+| 534635471 | Creepy Jack |
+| 10050 | Frankensteins Sweater |
+| 493860728 | Frankensteins Sweater |
+| 10032 | Green Checkered Shirt |
+| 500940007 | Green Checkered Shirt |
+| 10005 | Grey Longsleeve T-Shirt |
+| 566893368 | Lawman |
+| 10118 | Merry Reindeer |
+| 564242686 | Merry Reindeer |
+| 10051 | Nightmare Sweater |
+| 492980527 | Nightmare Sweater |
+| 10006 | Orange Longsleeve T-Shirt |
+| 1416787006 | Rust Goalkeeper Shirt |
+| 10036 | Sign Painter |
+| 492923278 | Sign Painter |
+| 2351253871 | Sykkuno Longsleeve TShirt |
+| 10042 | Varsity Jacket |
+| 494178127 | Varsity Jacket |
+| 10007 | Yellow Longsleeve T-Shirt |
+
+### Longsword — `longsword`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1222939471 | Aztec Macuahuitl |
+| 825169057 | Danger Fork |
+| 796733487 | Hot-tempered Longsword |
+| 831965423 | Kryss Longsword |
+| 855009078 | Wakizashi |
+| 825008040 | Xtreme Sword |
+
+### LR-300 Assault Rifle — `rifle.lr300`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1621894466 | Badlands LR-300 |
+| 2100059186 | Basebreaker LR |
+| 1741459108 | Black Pearl LR300 |
+| 2151920583 | Blackout LR |
+| 1535995784 | Bogeyman LR300 |
+| 1239079767 | Bone Grinder LR-300 |
+| 1569062511 | BullDozer LR300 |
+| 1173523145 | Bulletstorm |
+| 1553359638 | Cold Hunter LR 300 |
+| 1812045814 | Cutesy LR300 |
+| 1174458060 | Daemon Strike |
+| 1604879931 | Dead Ringer LR300 |
+| 1225499752 | Deathcore LR300 |
+| 2304318648 | Doodle LR |
+| 1725240606 | Dynasty LR300 |
+| 1883559335 | Flyboy LR |
+| 1419392688 | Fury Ex Red |
+| 1700177871 | Holographic LR300 |
+| 1612152593 | Icarus LR300 |
+| 1578816958 | Ice Marine LR300 |
+| 1660691287 | Jungle Fighter LR-300 Stockless |
+| 1173459827 | LR300 - Wild |
+| 1644715625 | Marked for Death |
+| 1177273104 | Mercenary Rifle |
+| 1264358358 | Midway LR300 |
+| 2092965663 | Monster LR |
+| 1953108368 | No Mercy LR300 |
+| 2122513705 | Optimist LR |
+| 2146248175 | OVERDRIVE LR |
+| 2229046238 | Paintball LR |
+| 1671985039 | Phantom LR-300 |
+| 1652362426 | Pink Death LR300 |
+| 1308037543 | Polymer LR300 |
+| 1779949198 | Poseidon LR300 |
+| 1635559091 | Prancing Pony LR-300 |
+| 1787012455 | Project White Light |
+| 1176479716 | Survivor LR-300 |
+| 2319796265 | Sweet Gift LR |
+| 2058268475 | Talon LR |
+| 1481478360 | Tempered Steel LR300 |
+| 1967805281 | Toy Blast LR |
+| 2195318269 | Tween LR |
+| 2016313108 | Uproar LR300 |
+| 1282171260 | Warhead LR300 |
+| 1203322875 | Wildfire LR-300 |
+| 1906355162 | Winter Ops LR |
+
+### M249 — `lmg.m249`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1719536313 | Bombshell M249 |
+| 1740639585 | CHROMA FLAIR |
+| 1707973294 | Guerilla M249 |
+| 1992981006 | Love Machine |
+| 1831294069 | Playmaker M249 |
+| 1712378771 | The Beast M249 |
+
+### M39 Rifle — `rifle.m39`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1708343082 | Desert Warrior |
+| 1708365495 | Devourer M39 |
+| 1736532811 | Metalhead M39 |
+| 1720530850 | Ornate M39 |
+| 1707880195 | Skull Seeker |
+
+### Metal Chest Plate — `metal.plate.torso`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1805322456 | Apocalyptic Knight Chest Plate |
+| 1787198707 | Azul Metal Chest Plate |
+| 2229279338 | Bee Cosplay Chestplate |
+| 1581353262 | Berserk Chest Plate |
+| 2105505757 | Blackout Chestplate |
+| 2304445825 | Bombing Chest Plate |
+| 1969743263 | Bombshell Chestplate |
+| 1711048020 | Carrot Power Chestplate |
+| 832233112 | Chainmail |
+| 842577956 | Chest Resistance |
+| 1270065959 | Conquistador Chest Plate |
+| 2092488087 | Cow Moo Flage Chestplate |
+| 1753699785 | Dead Souls Chest Plate |
+| 2005709642 | Doodle Metal Chestplate |
+| 2226598382 | Dread Chestplate |
+| 1335770974 | Dwarf Chestplate |
+| 1993774875 | Eat Me Chestplate |
+| 924019814 | Engineer's Chest Plate |
+| 1886179838 | Evil Pumpkin Chest |
+| 1934946028 | Evil Snowman Chestplate |
+| 796728308 | Flak Vest - Green |
+| 1349989767 | Flyer Vest |
+| 794169855 | Forest Camo Chest Plate |
+| 2013723517 | Forsaken Era Chest Plate |
+| 2252998412 | Franken-Chestplate |
+| 1771804406 | Frostwulf Armor |
+| 1638812721 | Glory Armor Chest |
+| 823132085 | Hazardous Grater Chest Plate |
+| 944835223 | Hornet Chestplate |
+| 1886922099 | Horror Chest Plate |
+| 1575392727 | Huntsman Chest Plate |
+| 2215911873 | Kayak Vest |
+| 895066686 | Looter's Chain and Plate |
+| 828888000 | Machina Plate |
+| 817022417 | Metal Barrel Chest Plate |
+| 1094522474 | Metalhunter Chest Plate |
+| 2296501936 | Monument Memories Chestplate |
+| 2352188221 | Myth Chestplate |
+| 1586132318 | Naughty Gingerbread Chestplate |
+| 2242200040 | No Mercy Chestplate |
+| 1777967326 | Northwind Chestplate |
+| 819160334 | Oil Barrel Chest Plate |
+| 2193157606 | Opulent Chest Plate |
+| 797410767 | Plate Carrier - Black |
+| 1693641239 | Playmaker Chest Plate |
+| 2100740608 | Poison Armor Plate |
+| 1388861988 | Precious Antiques Chestplate |
+| 798736321 | Press Vest |
+| 1900842357 | Punkish Chestplate |
+| 799657859 | Racing Stripes Chest Plate |
+| 2001706617 | RaidBot Chest Plate |
+| 2131557341 | Raptor Chestplate |
+| 934627208 | Retro Car Parts Chestplate |
+| 900807753 | Salvaged Plating Armor |
+| 1353723648 | Samurai Kozane Do |
+| 1587225313 | Santa Chest Plate |
+| 970700662 | Space Rocket Chest Plate |
+| 1845931269 | Tactical Chestplate |
+| 2144720791 | Test Dummy Chestplate |
+| 1932615190 | Training Chest Plate |
+| 2178449205 | Tribe Warrior Armor |
+| 1578628782 | Troll Daddy Chest Plate |
+| 2059931054 | Uproar Chestplate |
+| 1680452167 | Vandal Chest Plate |
+| 1522963149 | Wanderer's Chest Plate |
+| 1135168998 | War Machine Chestplate |
+| 1113984430 | Warface Chestplate |
+| 1421841596 | Whaleman Chestplate |
+
+### Metal Facemask — `metal.facemask`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1805321162 | Apocalyptic Knight Facemask |
+| 901668040 | Army Armored Facemask |
+| 832021670 | Army Facemask |
+| 792649975 | Aztek Night Hunter |
+| 1787201365 | Azul Metal Facemask |
+| 2229280260 | Bee Cosplay Facemask |
+| 1581351961 | Berserk Facemask |
+| 784316334 | Big Grin |
+| 2105454370 | Blackout Facemask |
+| 799044333 | Blingin Grill |
+| 821441043 | BoltFace Metal Facemask |
+| 2304448562 | Bombing Facemask |
+| 1969741836 | Bombshell Facemask |
+| 835026584 | Bronze War Mask |
+| 1121237616 | Bruiser Facemask |
+| 831923884 | Carbon Facemask |
+| 1711049678 | Carrot Power Facemask |
+| 939788004 | Clan Leader Mask |
+| 1270065112 | Conquistador Face Mask |
+| 2092488951 | Cow Moo Flage Facemask |
+| 1753711761 | Dead Souls Facemask |
+| 792079554 | Death Facemask |
+| 962694769 | Deathwing Facemask |
+| 1092671728 | Diesel Facemask |
+| 2005707226 | Doodle Metal Facemask |
+| 2226597543 | Dread Mask |
+| 1335769610 | Dwarf Facemask |
+| 1993775723 | Eat Me Facemask |
+| 1084823878 | Elder's Metal Facemask |
+| 1886184322 | Evil Pumpkin Facemask |
+| 1934943101 | Evil Snowman Mask |
+| 915572534 | Flesh Facemask |
+| 1349988105 | Flyer Mask |
+| 2012095496 | Forsaken Era Mask |
+| 2252919011 | Franken-Facemask |
+| 807821375 | Frostbite |
+| 1771714129 | Frostwulf Mask |
+| 1638135398 | Glory Mask |
+| 1172409741 | Glowing Metal Pumpkin Mask |
+| 794837198 | Glowing Skull |
+| 932233099 | Heavy Industry |
+| 1886920683 | Horror Facemask |
+| 812933296 | Human Sacrifice Mask |
+| 881687672 | Hunter Mask |
+| 1575391468 | Huntsman Facemask |
+| 806983252 | Industrial Protection Mask |
+| 899001394 | Juggernaut Mask |
+| 2215908400 | Kayak Helmet |
+| 1313529548 | Legendary Gold Facemask |
+| 895067146 | Looter's Mask |
+| 828888629 | Machina Mask |
+| 1894591519 | Maniac Facemask |
+| 841012325 | Mask of Sacrifice |
+| 1083628316 | Metalhunter Facemask |
+| 924019464 | Metalmute Facemask |
+| 2296503845 | Monument Memories Facemask |
+| 900645045 | Mosaic Mask |
+| 1586135331 | Naughty Gingerbread Facemask |
+| 2242198470 | No Mercy Facemask |
+| 1777973800 | Northwind Mask |
+| 2193149013 | Opulent Mask |
+| 943128194 | Overlord Mask |
+| 1693643930 | Playmaker Facemask |
+| 2100738972 | Poison Mask |
+| 1388857962 | Precious Antiques Facemask |
+| 803894027 | Punishment Mask |
+| 1900843064 | Punkish Facemask |
+| 2001712636 | RaidBot Facemask |
+| 2131549928 | Raptor Facemask |
+| 903628875 | Red Dead Jester |
+| 792905158 | Rusted Smile |
+| 792827436 | Sacrificial Mask |
+| 1353724450 | Samurai Somen |
+| 1587225942 | Santa Metal Facemask |
+| 1137533438 | Savage Facemask |
+| 896211631 | Scavenger Facemask |
+| 907176719 | Scrapyard Curse |
+| 971433920 | Space Rocket Face Mask |
+| 824898622 | Stainless Facemask |
+| 816530945 | Steampunk Leather Mask |
+| 915693648 | Sunrise Metal Facemask |
+| 1845950558 | Tactical Facemask |
+| 1130407273 | Tank Crew Facemask |
+| 800980236 | Tempered Mask |
+| 1203888714 | Templar |
+| 2143679757 | Test Dummy Mask |
+| 1932619423 | Training Facemask |
+| 2178447488 | Tribe Warrior Mask |
+| 1547874663 | Troll Daddy Mask |
+| 2059935666 | Uproar Facemask |
+| 1680454451 | Vandal Face Mask |
+| 1522955755 | Wanderer's Face Mask |
+| 1135160079 | War Machine Mask |
+| 1113983678 | Warface Mask |
+| 1421829383 | Whaleman Facemask |
+| 832934294 | Where Eagles Dare |
+
+### Miners Hat — `hat.miner`
+
+| Skin ID | Skin name |
+|---:|---|
+| 886968007 | Army Miner Hat |
+| 788260164 | Train Conductor Miner's Hat |
+| 886318490 | Workman's Safety Hat |
+
+### MP5A4 — `smg.mp5`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1137434899 | Arctic Wolf MP5 |
+| 1603970802 | Batteries Not Included |
+| 2201971147 | Bombshell Mp5 |
+| 2172493867 | BURNOUT |
+| 1693898215 | Cold Hunter MP5 |
+| 904404578 | Dead Fish MP5 |
+| 796679172 | Digital Camo MP5 |
+| 833639834 | Elite Mp5 |
+| 1637174724 | Icarus MP5 |
+| 796687275 | Military Camo MP5 |
+| 1865099372 | No Mercy MP5 |
+| 911612956 | Nomad MP5 |
+| 1673754411 | Phantom MP5 |
+| 808554348 | Polymer MP5 |
+| 892100306 | Spitfire MP5 |
+| 853438134 | Tank MP5 |
+| 800974015 | Tempered Mp5 |
+| 914624163 | Urban Camo MP5 |
+| 1654499223 | Valentine MP5 |
+| 1413917236 | Wasp MP5 |
+| 1084800708 | Wild Flame MP5 |
+| 1087199678 | Wild Tiger MP5 |
+
+### Paddling Pool — `paddlingpool`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13034 | Hot Tub |
+| 13035 | Rainbow |
+| 13036 | Sea Scape |
+| 13037 | Spawn Pool |
+
+### Pants — `pants`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1660293384 | Airman Pants |
+| 1787243248 | Apocalyptic Knight Pants |
+| 1100930207 | Arctic Wolf Pants |
+| 888360095 | Army Armored Pants |
+| 1961465777 | Azul Pants |
+| 1406835139 | Badboy Pants |
+| 2282181821 | Base Invaders Pants |
+| 2192914821 | Bee Cosplay Pants |
+| 1997534121 | Bio Integrity Pants |
+| 2080977144 | Blackout Pants |
+| 10001 | Blue Jeans |
+| 10049 | Blue Track Pants |
+| 490773561 | Blue Track Pants |
+| 2295664263 | Bombing Pants |
+| 2293180981 | Bombshell Pants |
+| 1441311938 | Brony Pants |
+| 1968533197 | Buscador Pants |
+| 1432965178 | Cajun Pants |
+| 909888619 | Caravanner Pants |
+| 1987863036 | Caution Workpants |
+| 1552705077 | CCSC Pants |
+| 1911973450 | Charitable Rust 2019 Pants |
+| 2289433771 | Charitable Rust 2020 Pants |
+| 1371313777 | Checkpoint Pants |
+| 1305364315 | Chekist's Pants |
+| 1587846022 | Christmas Gang Pants |
+| 1150816693 | Conquistador Pants |
+| 2099701364 | Conspiracy Nut Pants |
+| 2067568367 | Cow Moo Flage Pants |
+| 1766646393 | Cowboy Sheriff Pants |
+| 889714798 | Desert Conqueror Pants |
+| 1950854989 | Doodle Pants |
+| 2200988235 | Dragon Pants |
+| 1581822078 | Electrician Pants |
+| 2131787171 | Elite Forest Camo Pants |
+| 1234956405 | Explorer Pants |
+| 1296612316 | Firefighter Pants |
+| 10019 | Forest Camo Pants |
+| 2147367433 | Garage Master Pants |
+| 2176989787 | Hobo Pants |
+| 969289969 | Huntsman Pants |
+| 1768737448 | Jockey Pants |
+| 2215211982 | Kayak Pants |
+| 1196747617 | Loot Leader Trousers |
+| 1368418893 | Lumberjack Pants |
+| 1448346336 | Mad Rider Pants |
+| 1894589800 | Maniac Pants |
+| 1385326314 | Marsh Lurker Pants |
+| 1106596145 | Metalhunter Pants |
+| 1700938224 | Minicopter Pilot Pants |
+| 1740563572 | No Mercy Pants |
+| 939586076 | Nordic Beast Pants |
+| 1328753424 | Northern Forester Pants |
+| 10078 | Old Prisoner Pants |
+| 504687841 | Old Prisoner Pants |
+| 823154911 | One Percenter Chaps |
+| 1784474755 | Operator Pants |
+| 2207291626 | Opulent Pants |
+| 1356324187 | Outlaws Pants |
+| 2022464363 | Phantom Pants |
+| 1810590744 | Playmaker Pants |
+| 2124531088 | Poison Pants |
+| 1150763210 | Predator Pants |
+| 1274163146 | Prospector's Pants |
+| 10048 | Punk Rock Pants |
+| 494003754 | Punk Rock Pants |
+| 1858308973 | Punkish Pants |
+| 1638743634 | Railway Engineer Pants |
+| 1287193745 | Revolution Jeans |
+| 1993902344 | Road Romeo Pants |
+| 1927127023 | Rocker Pants |
+| 2256110716 | Rusteratu Pants |
+| 1936132863 | Rustmas PJ Pants |
+| 1229552157 | Santa's Helper Pants |
+| 1170988006 | Savage Pants |
+| 1292094174 | Scrapper Pants |
+| 1356749671 | Seaman Pants |
+| 1111673876 | Sky Seal Pants |
+| 10021 | Snow Camo Pants |
+| 2138201022 | Snow Warrior Pants |
+| 960252273 | Stalker Pants |
+| 798690647 | Steppe Camo Pants |
+| 1623181884 | Survivor Pants |
+| 1883629284 | Tactical Pants |
+| 975498827 | Tailgunner Pants |
+| 1125254090 | Tank Crew Pants |
+| 1703218418 | Tough Bunny Pants |
+| 1740505052 | Training Pants |
+| 2076980911 | Uproar Pants |
+| 10020 | Urban Camo Pants |
+| 1317553480 | Urban Ice Pants |
+| 961084105 | Wasteland Hunter Pants |
+| 2329782748 | Winter Pants |
+| 955615160 | Worker Pants |
+| 930559188 | Yellow Racer Pants |
+
+### Pickaxe — `pickaxe`
+
+| Skin ID | Skin name |
+|---:|---|
+| 904296143 | Ancient Artifact Pick Axe |
+| 2068591788 | Apocalyptic Pick Axe |
+| 2124297298 | Chaos Pick Axe |
+| 1557509001 | Cursed Treasure Pick Axe |
+| 1143157014 | Damascus Steel Pickaxe |
+| 1911366896 | Dragon Claw Pick Axe |
+| 1283807232 | Elegant Pick Axe |
+| 1987871430 | Emerald Relic Pick Axe |
+| 1320093416 | Fenrir Pickaxe |
+| 828884658 | Gold Digger |
+| 1407877776 | Hazard Pick Axe |
+| 2328583396 | Hunting Pick Axe |
+| 1083591199 | Leather Pick Axe |
+| 1466675896 | Machinery Pickaxe |
+| 2242717611 | Meteorite Pick Axe |
+| 859743520 | Military Pick Axe |
+| 1444912645 | Montezuma Pick Axe |
+| 2093115622 | Norse Pickaxe |
+| 949859819 | Ornate Pick Axe |
+| 1435220253 | Pharon Pick Axe |
+| 1150813747 | Prospector's Pickaxe |
+| 2171468844 | Rainbow Pony Pick Axe |
+| 1428399027 | Raventale Pick Axe |
+| 1414450451 | Regal Pick Axe |
+| 832799172 | Rescue Pick Axe |
+| 1553326380 | Runic Pick Axe |
+| 1377987815 | Secret Zone Pick Axe |
+| 1845184191 | Shadow of Death Pick Axe |
+| 1298797381 | Shinobi Pick Axe |
+| 1362736707 | Spec Ops Pickaxe |
+| 1872098938 | Strange Fury Pick Axe |
+| 1780027581 | Tactical Pick Axe |
+| 863455081 | Tarnished Sun Pick Axe |
+| 1572401500 | Taurus Pick Axe |
+| 1616992357 | Tiki Pickaxe |
+| 1121521173 | Tomb Pickaxe |
+| 1962080594 | Toothed Pick Axe |
+| 1325483813 | Virulent Pick Axe |
+| 1901442609 | Warlord Pick Axe |
+
+### Pump Shotgun — `shotgun.pump`
+
+| Skin ID | Skin name |
+|---:|---|
+| 10074 | Chieftain Pump Shotgun |
+| 515716304 | Chieftain Pump Shotgun |
+| 1115399868 | Conquerer Shotgun |
+| 1553603344 | Dead Ringer Pump Shotgun |
+| 964345579 | Frostfire Shotgun |
+| 1153922437 | Head Hunter Shotgun |
+| 1269617539 | Loot Leader Shotgun |
+| 1666328139 | Metalhead Pump Shotgun |
+| 1094741003 | Modern Knight Shotgun |
+| 813631833 | Native Gold |
+| 813628651 | Native Yellow |
+| 1760154042 | Pegasus |
+| 921253888 | Polymer Pump Shotgun |
+| 1191938171 | Problem Solver Stick |
+| 1476013941 | Psychosis Pump |
+| 1132569603 | Rebel Shotgun |
+| 1292063367 | Royalty Pump Shotgun |
+| 1672954158 | Spitfire Pump Shotgun |
+| 1652348929 | Sweet Shot |
+| 850130444 | Tank Pump Shotgun |
+| 849997025 | The Billy Baroo |
+| 10140 | The Swampmaster |
+| 639046335 | The Swampmaster |
+| 1706897835 | Troll Daddy Pump Shotgun |
+| 731119713 | Urban Afterburn Pump Shotgun |
+
+### Python Revolver — `pistol.python`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1839518047 | Aviator Python |
+| 1752928667 | Azul Python |
+| 1631920728 | Batteries Not Included Python |
+| 1457537882 | Bite Python |
+| 1216163401 | Black Mamba |
+| 2200875381 | Cardboard Python |
+| 1421351634 | Caution Python |
+| 1624620555 | Celtic Python |
+| 1305704747 | Cold Hunter Python |
+| 1228154190 | Dark Silver Python |
+| 1215390635 | Devourer |
+| 1563667918 | Dragon's Spit |
+| 1455062983 | Duelist's Python |
+| 1864788236 | Dynasty Python |
+| 1217395562 | Engraved Python |
+| 1914959779 | Eternal Python |
+| 1373936691 | Hellraiser Python |
+| 1406640269 | Hollow Point Gifter |
+| 1265214612 | Holy Python |
+| 1296687971 | Hot Battle Steel |
+| 1342464644 | Industrial Python |
+| 1335582211 | Ivory Python |
+| 1917523660 | Metal Beast Python |
+| 1435364672 | Metalhead Python |
+| 1418647979 | Morocco Python |
+| 1290876678 | Necromancer Python |
+| 1445908611 | Nitro Junkie Python |
+| 1812135451 | No Mercy Python |
+| 1277518447 | Outlaw Python |
+| 1605379554 | Peacemaker Python |
+| 1364964220 | Pearl Python |
+| 1461918011 | Pegasus Python |
+| 1214609010 | Phantom |
+| 1435858834 | Pink Death Python |
+| 1328632407 | Punk Python |
+| 1269667577 | Relict Python |
+| 1796388607 | Royal Python |
+| 1362224646 | Sea Monster Python |
+| 1672707813 | Skull Seeker Python |
+| 1356665596 | Slaughter |
+| 1377347733 | Smoking Python |
+| 2100486270 | Stealth Python |
+| 1276136280 | Steam Python |
+| 1529514494 | Tempered Python |
+| 2025046773 | Training Python |
+| 1223105431 | Trausi's Python |
+| 2059988260 | Venomous Shot |
+| 1235690536 | Warstory Python |
+| 1258109891 | Widowmaker Python |
+
+### Reactive Target — `target.reactive`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2255973811 | Decoy Target |
+| 824001540 | Led Light Target |
+| 791177585 | On Target |
+
+### Revolver — `pistol.revolver`
+
+| Skin ID | Skin name |
+|---:|---|
+| 910665268 | Bandito Revolver |
+| 1901240954 | Caution Revolver |
+| 2049887645 | Choco-Revolver |
+| 1192708586 | Death Viper |
+| 855087726 | Defender |
+| 1235107237 | Devourer Revolver |
+| 1265936882 | Duelist Revolver |
+| 1141054826 | Dynamo Revolver |
+| 815532676 | Eightball |
+| 1517889157 | Emerald Revolver |
+| 937338314 | Firefighter Revolver |
+| 970737094 | Forest Guardian Revolver |
+| 1536482422 | Frankenstein Revolver |
+| 873242795 | Frostbitten Revolver |
+| 2000389791 | Gothic Revolver |
+| 809865395 | Handmade Revolver |
+| 809822151 | Hot-tempered Revolver |
+| 933056389 | Junkyard Revolver |
+| 1448503557 | Metalhead Revolver |
+| 1349358875 | Necromancer Revolver |
+| 1580859157 | Nuke Pistol |
+| 10114 | Outback revolver |
+| 522224500 | Outback revolver |
+| 809897611 | Outlaw Revolver |
+| 1346870567 | Party Pooper |
+| 911828654 | Patriot Revolver |
+| 1235996786 | Phantom Revolver |
+| 2340195521 | Pharaoh's Revolver |
+| 1428863076 | Pink Death Revolver |
+| 950956238 | Pink Grunge |
+| 2312068016 | Porcelain Revolver |
+| 1787802800 | Pure Evil Revolver |
+| 1435664860 | Radioactive Revolver |
+| 1161550991 | Rebel Revolver |
+| 1309517474 | Rebel Revolver |
+| 1408242038 | Regal Revolver |
+| 1447877728 | Sailor's Revolver |
+| 1099177489 | Shamanism Revolver |
+| 973871108 | Sting Revolver |
+| 1217455695 | Tribal Revolver |
+| 887846629 | Western Revolver Gold |
+
+### Riot Helmet — `riot.helmet`
+
+| Skin ID | Skin name |
+|---:|---|
+| 869125904 | Biker Goth Helmet |
+| 930923611 | Blast Shield Helmet |
+| 849872204 | Born To Loot |
+| 1414953014 | Bumble Bee Helmet |
+| 801095823 | Captain's Helmet |
+| 937863435 | Checkpoint Riot Helmet |
+| 911015530 | Digger Helmet |
+| 1109466231 | Furious Raider Riot Helmet |
+| 887283623 | Hardline Helmet |
+| 920983864 | Medical Riot Helmet |
+| 1784490572 | Operator Helmet |
+| 950182163 | Raider Helmet |
+| 1993881492 | Road Romeo Helmet |
+| 869709888 | Ruthless Riot Helmet |
+| 930563894 | Yellow Racer Helmet |
+
+### Road Sign Jacket — `roadsign.jacket`
+
+| Skin ID | Skin name |
+|---:|---|
+| 953104456 | Apocalypse Vest |
+| 1797481354 | Apocalyptic Knight Vest |
+| 865659101 | Army Sign Vest |
+| 1759481001 | Azul Roadsign Vest |
+| 2120615642 | Blackout Vest |
+| 2350092536 | Bombing Roadsign Vest |
+| 1865210028 | Bombshell Vest |
+| 801873550 | British Sign Vest |
+| 2296713508 | Cardboard Vest |
+| 1342125487 | Caution Vest |
+| 2142378618 | Centurion Vest |
+| 1442341176 | Chaos Armored Vest |
+| 818611894 | Chopshop Body Armor |
+| 1121456497 | Cobalt Armor Vest |
+| 1102966153 | Deathwing Vest |
+| 1251431494 | Defender Vest |
+| 934926427 | Desert Patrol Vest |
+| 1084394793 | Diesel Roadsign Vest |
+| 1332334593 | Dominator Vest |
+| 1986047563 | Doodle Vest |
+| 1349940035 | Dwarf Roadsign Vest |
+| 944577714 | Epidemic Roadsign Vest |
+| 947950933 | Freebooter Vest |
+| 1349163491 | Full Metal Vest |
+| 784581113 | Hazard Protection Vest |
+| 1380025789 | Heavenly Legion Vest |
+| 1159597292 | Heavy Alloy Vest |
+| 1740065674 | Heavy Machinery Roadsign Vest |
+| 1944167671 | Iceman Armor |
+| 879861502 | Junker's Vest |
+| 934744263 | Junkyard Samurai Vest |
+| 1269597852 | Loot Leader Vest |
+| 1974808139 | Lunar Armor Vest |
+| 1154446174 | Mad Vest |
+| 1894379005 | Metal Zombie Vest |
+| 1119760089 | Metalhunter Roadsign Vest |
+| 2320209237 | Mr. Gingerbread Vest |
+| 1539573170 | Night Stalker Vest |
+| 2076262389 | No Mercy Vest |
+| 892402754 | Nordic Beast Vest |
+| 2199785536 | Opulent Roadsign Vest |
+| 1438089648 | Ornate Vest |
+| 2147211029 | Oxums Racing Team Vest |
+| 953124938 | Patchwork Cuirass |
+| 1441844877 | Peacemaker Vest |
+| 1743991748 | Phantom Vest |
+| 1098029034 | Plywood Vest |
+| 950173158 | Raider Roadsign Vest |
+| 1151219812 | Saboteur's Vest |
+| 1248434418 | Samurai Dou |
+| 1539651543 | Scary Vest |
+| 974336556 | Scrap Hazard Vest |
+| 1202977830 | Scrapper Vest |
+| 1388417448 | Snap Turtle Vest |
+| 1779981832 | Solar Panel Vest |
+| 828175620 | Spiked Metal Vest |
+| 1130406273 | Tank Crew Roadsign Vest |
+| 1234957719 | The Last Viking Vest |
+| 1906530247 | Training Vest |
+| 1558586741 | Troll Daddy Roadsign Vest |
+| 1130599258 | Utilizer Vest |
+| 1400828574 | Vandal Graffiti Vest |
+| 1442162947 | Viking Armor Vest |
+| 932778217 | Wasteland Legionnaire |
+
+### Road Sign Kilt — `roadsign.kilt`
+
+| Skin ID | Skin name |
+|---:|---|
+| 953112839 | Apocalypse Kilt |
+| 1797483140 | Apocalyptic Knight Kilt |
+| 865679836 | Army Sign Kilt |
+| 1759482713 | Azul Roadsign Pants |
+| 2120628865 | Blackout Kilt |
+| 2350090284 | Bombing Kilt |
+| 1865210905 | Bombshell Kilt |
+| 801837047 | British Sign Pants |
+| 2296714510 | Cardboard Kilt |
+| 1342123902 | Caution Pants |
+| 2142383374 | Centurion Kilt |
+| 1442346890 | Chaos Armored Pants |
+| 818612271 | Chopshop Kilt |
+| 1121447954 | Cobalt Armor Pants |
+| 1102986622 | Deathwing Pants |
+| 1251419748 | Defender Pants |
+| 934937654 | Desert Patrol Pants |
+| 1084396407 | Diesel Roadsign Pants |
+| 1332333384 | Dominator Pants |
+| 1986050287 | Doodle Kilt |
+| 1349943069 | Dwarf Roadsign Pants |
+| 944586866 | Epidemic Roadsign Pants |
+| 947949717 | Freebooter Pants |
+| 1349158079 | Full Metal Kilt |
+| 1657108026 | Glory Kilt |
+| 784577443 | Hazard Cover Pants |
+| 1380028657 | Heavenly Legion Kilt |
+| 1159599284 | Heavy Alloy Pants |
+| 1740068457 | Heavy Machinery Roadsign Pants |
+| 1944165903 | Iceman Kilt |
+| 879861153 | Junker's Kilt |
+| 934742835 | Junkyard Samurai Pants |
+| 1269612137 | Loot Leader Pants |
+| 1974809731 | Lunar Armor Pants |
+| 1154469089 | Mad Pants |
+| 1894376712 | Metal Zombie Kilt |
+| 1106569231 | Metalhunter Roadsign Pants |
+| 794291485 | Military Camo Roadsign Kilt |
+| 2320203004 | Mr. Gingerbread Kilt |
+| 1539570583 | Night Stalker Kilt |
+| 2076261294 | No Mercy Kilt |
+| 892414125 | Nordic Beast Kilt |
+| 2199787450 | Opulent Roadsign Pants |
+| 1438090382 | Ornate Pants |
+| 2147209635 | Oxums Racing Team Pants |
+| 953123363 | Patchwork War Kilt |
+| 1441848470 | Peacemaker Pants |
+| 1737733590 | Phantom Kilt |
+| 1723851847 | Playmaker Kilt |
+| 1103687152 | Plywood Kilt |
+| 950176525 | Raider Roadsign Pants |
+| 1151205503 | Saboteur's Pants |
+| 1248433379 | Samurai Haidate |
+| 1353722661 | Samurai Kusazuri |
+| 1539652650 | Scary Kilt |
+| 974345761 | Scrap Hazard Kilt |
+| 1202976443 | Scrapper Kilt |
+| 1388416860 | Snap Turtle Pants |
+| 1779983158 | Solar Panel Pants |
+| 828173323 | Spiked Metal Kilt |
+| 1915398061 | Tactical Kilt |
+| 1130405286 | Tank Crew Roadsign Pants |
+| 1906531526 | Training Kilt |
+| 1558579257 | Troll Daddy Roadsign Pants |
+| 1130610212 | Utilizer Pants |
+| 1400837602 | Vandal Graffiti Pants |
+| 1442167045 | Viking Armor Pants |
+
+### Rock — `rock`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2108583966 | Acid Rock |
+| 1435229543 | Adventurer's Rock |
+| 1209361016 | Ancient World Rock |
+| 1084822722 | Barb Wire Rock |
+| 1368454662 | Best Friend |
+| 1636101879 | Big Burger |
+| 1595910049 | Dragon Egg |
+| 2313802668 | Festive Pudding Rock |
+| 2350375831 | Foil Ball |
+| 1530140666 | Football Rock |
+| 864277659 | Fresh Brain |
+| 858285362 | Frozen Turkey |
+| 804791902 | Gold Rock |
+| 2012371465 | Golden Ore |
+| 1378500484 | Gravel Rock |
+| 1693063715 | Honeycomb |
+| 843429299 | Hot Potato |
+| 971411353 | Junkyard Rock |
+| 807372963 | Meteorite |
+| 2200644593 | Meteorite Rock |
+| 1617334269 | Moon Light |
+| 1953527967 | Morganite Rock |
+| 933809748 | Mossy Fossil |
+| 1739062735 | Mother's Day Rock |
+| 1205671322 | My Only Friend |
+| 2154934029 | Mystical Rock |
+| 2320435219 | North Rock |
+| 2084257363 | Obsidian Rock |
+| 1539197932 | Pumpkin Rock |
+| 2187163489 | Rainbow Stone |
+| 834287924 | Ripe Watermelon |
+| 1838926976 | Rooted Rock |
+| 1467090959 | Shaman Rock |
+| 824904841 | Shard of True Ice |
+| 1126754320 | Sharptooth |
+| 2137102504 | Sourdough Bread |
+| 1458528823 | Swamp Rock |
+
+### Rocket Launcher — `rocket.launcher`
+
+| Skin ID | Skin name |
+|---:|---|
+| 879708939 | Aircraft Parts RL |
+| 813795591 | Army Surplus Rocket Launcher |
+| 894679426 | Beans Cannon |
+| 1936188783 | Candy Launcher |
+| 1926503780 | Dragon Launcher |
+| 1162978825 | Glass Cannon |
+| 1657103887 | Glory Rocket Launcher |
+| 1815384807 | Gothic Reception |
+| 875930670 | Hot Topic |
+| 853494512 | KNOCK KNOCK |
+| 2268211267 | Pixel Rocket Launcher |
+| 1839729563 | Sea Monster Launcher |
+| 926279011 | Surge Rocket Launcher |
+| 812737524 | ThatGermanGuy Warhawk |
+| 1905848285 | Totem Rocket Launcher |
+| 1162085821 | Troglodyte |
+| 1137393412 | Wood Barreled |
+
+### Rug — `rug`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1637950966 | Bandit Rug |
+| 1740724608 | Blood & Fire |
+| 907327964 | Rubber Hazard Mat |
+| 1461385713 | Rust Island Car Rug |
+| 1225299046 | Rustmas Rug |
+| 2179778281 | Scientist Rug |
+| 871072156 | Soviet Carpet |
+| 2156295778 | Summer Rug |
+| 870851438 | Tailor`s Carpet |
+| 1114718055 | Tarp Rug |
+
+### Rug Bear Skin — `rug.bear`
+
+| Skin ID | Skin name |
+|---:|---|
+| 870446546 | Panda Rug |
+| 2023982236 | Teddy Bear Rug |
+| 2245825475 | Werewolf Rug |
+
+### Salvaged Icepick — `icepick.salvaged`
+
+| Skin ID | Skin name |
+|---:|---|
+| 911446362 | Dark Arts Icepick |
+| 820810719 | Inferno Hazard Salvaged Icepick |
+| 844666224 | Lavapick |
+| 933760454 | Raven |
+| 1121804393 | Rocket Scrap Salvaged Pickaxe |
+| 843454856 | Runic Ice Pick |
+| 1276627079 | Stinger Icepick |
+| 1124734833 | Voodoo Daddy Icepick |
+
+### Salvaged Sword — `salvaged.sword`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1568609421 | Buccaneer Blade |
+| 1587541456 | Candybober Sword |
+| 1915832963 | Double Blade |
+| 950134503 | Fallen Knight |
+| 1652800384 | Fire Slasher |
+| 1455468520 | Grid Strike |
+| 1852787012 | Helicopter Blade |
+| 828885909 | Metal Roses Short Sword |
+| 1442148142 | Oblivion Sword |
+| 2038180230 | Pixel Sword |
+| 1442017029 | Rainbow Sword |
+| 893871715 | Roadsign Sword |
+| 969725237 | Rusty Blade |
+| 1366123054 | Saw Sword |
+| 1239660381 | Scraptooth Sword |
+| 1154175800 | Sheet Metal Sword |
+| 1283812544 | Spartan Sword |
+| 1535765451 | Tempered Sword |
+| 1212723513 | Toothed Sword |
+| 930557072 | Trained To Kill |
+| 1313755167 | Trash Sword |
+| 825240467 | Wooden Sword |
+| 1624719255 | Zap Slasher |
+
+### Sandbag Barricade — `barricade.sandbags`
+
+| Skin ID | Skin name |
+|---:|---|
+| 809144507 | Grandmother's Gift Barricade |
+
+### Satchel Charge — `explosive.satchel`
+
+| Skin ID | Skin name |
+|---:|---|
+| 855256664 | Bad News |
+| 1934132095 | Bad Santa Satchel |
+| 908893157 | BadaBoom Satchel Charge |
+| 860156815 | Box O Love |
+| 2172795318 | Cargo Heli Satchel Charge |
+| 856333895 | Close Enough |
+| 2315757321 | DoorCracker |
+| 1586074827 | Festive Surprise |
+| 2200482089 | Legacy Satchel |
+| 855084816 | Military Satchel Charge |
+| 1906259594 | R.A.I.D. Satchel |
+| 855113878 | Red Leather Day |
+| 1961769080 | Satchelo |
+| 1710383765 | Sweet Satchel |
+
+### Semi-Automatic Pistol — `pistol.semiauto`
+
+| Skin ID | Skin name |
+|---:|---|
+| 902487409 | Aircraft Parts SAP |
+| 1720501333 | Aquamarine SAP |
+| 919535259 | Armageddon SAP |
+| 883156158 | Base Invaders SAP |
+| 924018875 | Bitin' Dog SAP |
+| 937863988 | Checkpoint SAP |
+| 876007573 | Chrome SAP |
+| 1428766159 | Cold-Forged Pistol |
+| 10087 | Contamination Pistol |
+| 515313072 | Contamination Pistol |
+| 1183693235 | Croc Shot |
+| 1158943049 | Demonic Pistol |
+| 863443112 | Desert Hunter |
+| 953126981 | Dime Bag SAP |
+| 910681058 | Direct Threat SAP |
+| 1811814491 | Dynasty SAP |
+| 1105853708 | Faded SAP |
+| 1167255900 | Fang |
+| 904356033 | Fight Like a Girl |
+| 893118140 | Fire Walk SAP |
+| 2041571172 | Garden SAP |
+| 1121906926 | Golden Dragon |
+| 805925675 | Golden Leaf SAP |
+| 10108 | Halloween Bat |
+| 539539196 | Halloween Bat |
+| 1630961792 | Holographic SAP |
+| 954520976 | Khalifa SAP |
+| 1113544521 | Last Eclipse SAP |
+| 830255284 | LCD Marine Sidearm |
+| 899942580 | Looter's SAP |
+| 853927198 | Nightmare |
+| 1571099329 | Nineties Zapper |
+| 950037016 | Nishikigoi SAP |
+| 972059802 | Oink SAP |
+| 830606037 | Ol' Greasy |
+| 804337360 | Paint Rush SAP |
+| 1328323548 | Poison Jaws SAP |
+| 798375117 | Polymer SAP |
+| 868298519 | Poseidon Semi Auto Pistol |
+| 10081 | Reaper Note Pistol |
+| 531196714 | Reaper Note Pistol |
+| 10073 | Red Shine Pistol |
+| 529604373 | Red Shine Pistol |
+| 1446715780 | Reptile SAP |
+| 908722214 | Retro Car Parts SAP |
+| 827533196 | Salt Shaker SAP |
+| 975102848 | Silent Sting SAP |
+| 938007886 | Soul Eater SAP |
+| 1118707296 | Sting SAP |
+| 936623315 | Sunrise SAP |
+| 829983759 | Tehno Pistol |
+| 1553005167 | Tempered SAP - Ornate |
+| 1092676141 | Triad SAP |
+| 935205778 | Yellow Racer SAP |
+
+### Semi-Automatic Rifle — `rifle.semiauto`
+
+| Skin ID | Skin name |
+|---:|---|
+| 2222645873 | Aborigene's SAR |
+| 1772028068 | Anarchist SAR |
+| 828616457 | Army SAR |
+| 1195821858 | Aztec SAR |
+| 2193203225 | Azul Sar |
+| 839302795 | Bandito SAR |
+| 2131324289 | Beach Day SAR |
+| 1168002579 | Blood Dragon Rifle |
+| 1359059068 | Buzzard SAR |
+| 1667097058 | Candyman SAR |
+| 1385736095 | Caution SAR |
+| 1818125194 | Cobalt SAR |
+| 1616628843 | Cold Hunter SAR |
+| 1652791742 | Cupidon |
+| 1819195444 | Diesel SAR |
+| 2171565192 | Doodle SAR |
+| 1517644801 | Drake SAR |
+| 2296659119 | Elite Crate SAR |
+| 900921542 | Fire Starter SAR |
+| 922119054 | Forgotten Warfare SAR |
+| 1291766032 | Freedom SAR |
+| 1395475969 | Geartooth SAR |
+| 1936035303 | Gingerbread SAR |
+| 959955205 | Glory SAR |
+| 1448088345 | Gold Phoenix SAR |
+| 1099992405 | Gunsmith SAR |
+| 840023839 | Hazard Semi Auto Rifle |
+| 1129722099 | Hellcat SAR |
+| 1113987623 | Hero's SAR |
+| 1217394290 | Hot Rod SAR |
+| 1863834018 | Imp SAR |
+| 1966875478 | Lucky No.8 SAR |
+| 942919370 | Meridian SAR |
+| 1621472496 | Metalhead SAR |
+| 1429032578 | Mojave SAR |
+| 2108652282 | Monument Memories SAR |
+| 1098038362 | Nightmare SAR |
+| 1788152335 | No Mercy SAR |
+| 1576671137 | Northwind SAR |
+| 2123641710 | OPS SAR |
+| 1310522106 | Payback SAR |
+| 1135415770 | Pharaoh SAR |
+| 1876226129 | Poseidon SAR |
+| 1522185915 | Primal SAR |
+| 2249445756 | Retrowave SAR |
+| 1446861251 | Royal SAR |
+| 1182015913 | Saboteur Rifle |
+| 2252306404 | SAR from Hell |
+| 1170719113 | SAR Scarecrow |
+| 1240340535 | Scrapper SAR |
+| 1566048269 | Sea Eater SAR |
+| 1298949573 | Snakebite SAR |
+| 1933250593 | Snowman Surprise SAR |
+| 1193105339 | Soulburn SAR |
+| 1300239738 | Soulkeeper SAR |
+| 875259741 | Sublime SAR |
+| 1112906123 | Suzy-Q SAR |
+| 1814170373 | Tactical SAR |
+| 1313600286 | Tiki SAR |
+| 899564368 | To Hell And Back |
+| 2076615773 | Training SAR |
+| 1279791283 | Urban Light SAR |
+| 1300137383 | Warbeast SAR |
+| 818613234 | Workbench SAR |
+
+### Sheet Metal Door — `door.hinged.metal`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1852469574 | Ace Door |
+| 901194793 | Ambulance Door |
+| 2131148230 | Ancient Lore Door |
+| 1457845730 | Ancient Totem Door |
+| 950560231 | Antique Metal Door |
+| 836815358 | Army Metal Door |
+| 1328395850 | Artist's Door |
+| 1170684837 | Aztec Door |
+| 1309566989 | Aztec Gold Door |
+| 1415394917 | Bandit Sheet Metal Door |
+| 1984902763 | Bio Integrity Door |
+| 1313458951 | Blacksmith's Door |
+| 1109694864 | Blue Puzzle Door |
+| 1356364616 | Boat House Door |
+| 1066783524 | Brass Sentinel Door |
+| 1733664175 | Broken Mirror Door |
+| 1290467327 | Brutal Door |
+| 1952448742 | Bull Rage Door |
+| 1362595551 | Caution Door |
+| 1354718926 | Chinook Fuselage Door |
+| 1412241247 | Corinthian Door |
+| 2346936208 | Corrupted Metal Door |
+| 1124738987 | Dead Room Door |
+| 1653322594 | Dead Valentine Door |
+| 1175547229 | Death Crypt Door |
+| 1687047599 | Deep Sea Door |
+| 1443957299 | Defender Door |
+| 1466554259 | Divinity Door |
+| 827190175 | Doomsday Door |
+| 1539115581 | Door of Flesh |
+| 948930384 | Door to Death |
+| 1227441654 | Dragon Relic Door |
+| 1565096963 | Dreamer's Door |
+| 1599702939 | Eagle Sheet Metal Door |
+| 1617363766 | Egiptu Door |
+| 1213613030 | Eisensheet Door |
+| 1759765099 | El Dorado Door |
+| 1447671986 | Emergency Exit Door |
+| 1260208160 | Engineer's Door |
+| 1631261352 | Evil Within |
+| 1852769999 | Excavator Door |
+| 1707455661 | Fallen Emperor Door |
+| 915684869 | Fire Truck Door |
+| 1438420454 | Flower Power Door |
+| 2282199805 | Freedom Door |
+| 1281626747 | Fretwork Door |
+| 1933669766 | Gingerbread Door |
+| 942658960 | Grey Fire Door |
+| 1294718018 | Grid Door |
+| 1795304359 | Guardian Door |
+| 1992539569 | Guardians of the Heart |
+| 1176406578 | Halloween Door |
+| 2255950540 | Halloween House Door |
+| 2051016981 | Happy Rabbit Door |
+| 849614068 | Hazard Metal Door |
+| 1120339199 | Hideout Door |
+| 2075130889 | Hieroglyphic Metal Door |
+| 10189 | Industrial Door |
+| 928503162 | Jeweler's Security Door |
+| 1141051963 | KEEP OUT |
+| 917719889 | Laboratory Door |
+| 1524017223 | Labyrinth Door |
+| 921076360 | Locomotive Door |
+| 1205721755 | Lost Hope Door |
+| 1211678957 | Lost Metal Door |
+| 1239808532 | Lost Treasure Door |
+| 2146923368 | Mechanic Door |
+| 1356332123 | Meltdown Metal Door |
+| 2264763191 | Melted Blast Door |
+| 2200677375 | MeowMeow Sheet Metal Door |
+| 832957536 | Metal Shutter Door |
+| 959898495 | Metalshop Scrap Door |
+| 1870735722 | Midnight Door |
+| 922419554 | Military Vehicle Door |
+| 2091097349 | Molten Visage Metal Door |
+| 2116010484 | Monitored Door |
+| 1747674239 | Mosaic Door |
+| 1886472768 | Mummy Door |
+| 1926577314 | Musical Notes Door |
+| 1435254318 | Night Sky Door |
+| 1587777999 | Nutcracker |
+| 1680572723 | Oil Rig Door |
+| 1999996993 | Old Fighters Door |
+| 1812049396 | Pirate Treasures Door |
+| 2009712630 | Pixel Metal Door |
+| 1083653685 | Polar Station Door |
+| 1514174191 | Potty Door |
+| 1576050073 | Power Door |
+| 859864870 | Prison Door |
+| 1412186246 | Pug Tower Door |
+| 1523940330 | Quarantine Area |
+| 961909886 | Quarantine Door |
+| 1342459239 | Railway Door |
+| 1390896848 | Rainbow Door |
+| 835119969 | Recycled Garage Door |
+| 1383063240 | Red Skull Door |
+| 2156515064 | Riveted Summer Door |
+| 934924536 | Roadsign Door |
+| 1772296521 | Rocket Door |
+| 1727356485 | Royal Door |
+| 1117884427 | Salvaged APC Door |
+| 962391797 | Salvation Door |
+| 2320063891 | Santa's Door |
+| 1595324955 | Santa's Front Door |
+| 897274189 | School Bus Door |
+| 1306412169 | Scrap Robot Door |
+| 1119310953 | Scrap Tanker Door |
+| 883741993 | Shipping Container Door |
+| 1839905607 | Shippy & Friends Door |
+| 1587119000 | Snowman Door |
+| 1362729705 | Steel Pirate Door |
+| 1321264697 | Submarine Door |
+| 1780241717 | Sunrise Door |
+| 1401769919 | Test Room Door |
+| 1447958101 | Toxic Door |
+| 1380022034 | Trophy Pirate Door |
+| 914869833 | Truck Door |
+| 1328566466 | Urban Night Door |
+| 2124140548 | Wealthy Farmer Door |
+| 1845208821 | Wild Owl Door |
+| 1448354224 | Winged Guardian Door |
+| 1974769574 | Year of the Rat Door |
+
+### Sheet Metal Double Door — `door.double.hinged.metal`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1874961152 | Ambulance Double Door |
+| 1900646657 | Castle Double Door |
+| 1936126874 | Doors to a Fairy Tale |
+| 1882782756 | Double Door from Hell |
+| 1918077744 | Dragon Door |
+| 1926125252 | Earblaster Doors |
+| 2088339038 | Eviction Double Door |
+| 1876575703 | Global Freight Double Door |
+| 1904509199 | Green Labs Door |
+| 2101572637 | Horsemen of the Apocalypse Door |
+| 1895120296 | Howling Double Door |
+| 1885983859 | Jack Sheet Metal Double Door |
+| 2235414618 | Lab Elevator Double Door |
+| 1883500337 | Military Double Door |
+| 1911036760 | Monster Double Door |
+| 1914299009 | Oil Rig Double Door |
+| 2305997989 | Pixel Metal Double Door |
+| 2253675722 | Pumpkin Jail Double Door |
+| 2040477404 | Red Barn Double Door |
+| 1926973479 | Shippy & Friends Double Door |
+
+### Shirt — `shirt.collared`
+
+| Skin ID | Skin name |
+|---:|---|
+| 885078753 | Autumn Hunter's Shirt |
+| 797241160 | Charitable Rust 2016 Shirt |
+| 802078252 | Green Lumberjack |
+| 802073199 | Red Lumberjack |
+| 819818852 | Sergeant Shirt |
+| 809704306 | Survival Shirt |
+| 801955689 | The Blue Death |
+
+### Shorts — `pants.shorts`
+
+| Skin ID | Skin name |
+|---:|---|
+| 794678401 | Camo Shorts |
+| 793871235 | Cutoff Shorts |
+| 818068257 | Homemade Shorts |
+| 1412875829 | Rust Footballer Shorts |
+| 1416779855 | Rust Goalkeeper Shorts |
+| 799006291 | Snow Camo Shorts |
+
+### Skull Spikes — `skullspikes`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13050 | Candles |
+| 13051 | Pumpkin |
+
+### Skull Trophy — `skull.trophy`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13052 | Glass |
+| 13053 | Glass 2 |
+| 13054 | Table |
+
+### Sled — `sled`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13056 | |
+
+### Sleeping Bag — `sleepingbag`
+
+| Skin ID | Skin name |
+|---:|---|
+| 10121 | Aston Christmas |
+| 558861217 | Aston Christmas |
+| 1127084512 | Bear Bag |
+| 10037 | Blue Plaid Sleeping Bag |
+| 493375502 | Blue Plaid Sleeping Bag |
+| 1296042340 | Brony Bag |
+| 1165339422 | Cannibal Survival Bag |
+| 1447956760 | Captain's Bed |
+| 909889024 | Caravanner Bedroll |
+| 10119 | Christmas Bag |
+| 548925163 | Christmas Bag |
+| 809186722 | Christmas Holiday Bag |
+| 1152883867 | Cobalt Survival Bag |
+| 1839630957 | Comfortable Cardboard |
+| 1886931973 | Comfortable Coffin |
+| 1711044880 | Cozy Bunny Bag |
+| 1396600730 | Crime Bag |
+| 2192906780 | Desert Scout |
+| 1804347166 | Dolphin Float |
+| 2347941731 | Doodle Sleeping Bag |
+| 1709890051 | Easter Bag |
+| 1140342335 | Fisher Sleeping Bag |
+| 2131151567 | Forest Camo Bag |
+| 1137518723 | Freefolk Bedroll |
+| 539536110 | Freshly Dug Grave |
+| 1818779860 | Frostwulf Bed |
+| 1402402700 | Golden Drake Sleeping Bag |
+| 10107 | Horror Bag |
+| 535099192 | Horror Bag |
+| 795398514 | Jungle Camo Sleeping Bag |
+| 2215923791 | Lifejacket Sleeping Bag |
+| 1991418530 | Love Sack |
+| 2011695446 | Monument Memories |
+| 1283724154 | Muertos Sleeping Bag |
+| 1269426600 | Nuke Bag |
+| 1466734204 | Peacemaker Sleeping Bag |
+| 2329753984 | Pitstop Bag |
+| 919353105 | Ranger Bedroll |
+| 834487561 | Red Survival Sleeping Bag |
+| 1624628815 | Regeneration Program |
+| 2200870229 | Retrowave Sleeping Bag |
+| 1986734890 | Salvaged Hazmat Bag |
+| 1934818691 | Santa's Bag |
+| 1586749954 | Seasons Beatings |
+| 1858936313 | Shippy Sleeping Bag |
+| 1102195403 | Sleep Catcher |
+| 1565127136 | Sleepover Bag |
+| 1174407153 | Spooky Pumpkin Bed |
+| 2051263477 | Spring Sleeping Bag |
+| 1132190812 | Star Bedroll |
+| 1186393080 | Supply Drop Sleeping Bag |
+| 1362261702 | Survivor Bag |
+| 2185104012 | Tea Bag |
+| 1773435398 | Thermal Sleeping Bag |
+| 10077 | Tiger Crown Sleeping Bag |
+| 514146546 | Tiger Crown Sleeping Bag |
+| 1865305668 | Toxic Sleeping Bag |
+| 944993672 | Undead Bedroll |
+| 1906188254 | Warboy Sleeping Bag |
+| 2303592013 | Weather Sleeping Bag |
+| 2162368881 | Winter Scout |
+| 10076 | Wood Camo Sleeping Bag |
+| 494249390 | Wood Camo Sleeping Bag |
+| 1228238024 | Wood Sleeping Bag |
+
+### Snow Jacket — `jacket.snow`
+
+| Skin ID | Skin name |
+|---:|---|
+| 530154777 | 60's Army Jacket |
+| 10113 | Black |
+| 913227043 | Fireman's Jacket |
+| 530159711 | Salvaged Shirt, Coat and Tie |
+| 839466039 | Telogreika Jacket |
+| 10112 | Woodland |
+
+### Stone Hatchet — `stonehatchet`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1438048408 | Abstraction Stone Hatchet |
+| 1092741003 | Ancient Gods Stone Hatchet |
+| 2228616112 | Ancient Runic Stone Hatchet |
+| 1269563695 | Artisan's Stone Hatchet |
+| 1117098080 | Aztec Jade Hachet |
+| 2108830575 | Bite Stone Hatchet |
+| 1114895505 | Blood Feud |
+| 1559244155 | Bone Dragon Hatchet |
+| 955692135 | Bone Hatchet |
+| 887663210 | Chieftain Stone Hatchet |
+| 1356232241 | Dark Rite Stone Hatchet |
+| 1428010053 | Dragon Glass Stone Hatchet |
+| 947950887 | Fossil Tooth Hatchet |
+| 1788439811 | Gemstone Hatchet |
+| 1058431260 | Geode Hatchet |
+| 1395467841 | Gravel Stone Hatchet |
+| 797445687 | Ice Tooth |
+| 2275037516 | Kids' Stone Hatchet |
+| 854688691 | Large Fruit Pit Hatchet |
+| 1290344811 | Megalodon Totem Hatchet |
+| 1184754750 | Midas Hatchet |
+| 1906590340 | Morganite Hatchet |
+| 1428438688 | Mosaic Stone Hatchet |
+| 2084846275 | Night Farmer Stone Hatchet |
+| 1340282993 | Ritual Stone Hatchet |
+| 2138883683 | Ruby Hatchet |
+| 1235107175 | Sea Monster |
+| 1988082179 | Silver Leaf Stone Hatchet |
+| 912599650 | Soul Reaper Stone Hatchet |
+| 1196674526 | Stonecraft Hatchet |
+| 1151551275 | Tirbal Stone Hatchet |
+| 1306176753 | Tree Killer |
+| 1342121150 | Tribal Stone Hatchet |
+| 2171504484 | Two Faced Stone Hatchet |
+| 1852290423 | Vampire Stone Hatchet |
+| 878257758 | Volcanic Stone Hatchet |
+| 1594996565 | Winter Hatchet |
+
+### Stone Pickaxe — `stone.pickaxe`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1100085862 | Ancient Gods Stone Pickaxe |
+| 2228725445 | Ancient Runic Pick Axe |
+| 1269582427 | Artisan's Stone Pickaxe |
+| 1127557296 | Aztec Jade Pick Axe |
+| 2108826652 | Bite Stone Pick Axe |
+| 840380436 | Bloody Tooth Pickaxe |
+| 1428014003 | Dragon Glass Stone Pickaxe |
+| 1788447750 | Gemstone Pickaxe |
+| 1395460858 | Gravel Stone Pickaxe |
+| 886904592 | Jawbreaker |
+| 2275036880 | Kids' Stone Pick Axe |
+| 1290539482 | Megalodon Totem Pickaxe |
+| 1906588860 | Morganite Pick Axe |
+| 1428446680 | Mosaic Stone Pick Axe |
+| 2084849175 | Night Farmer Stone Pick Axe |
+| 2138887265 | Ruby Pick Axe |
+| 1988077270 | Silver Leaf Stone Pickaxe |
+| 1306179593 | Stone Killer |
+| 1196675392 | Stonecraft Pick Axe |
+| 1342118597 | Tribal Stone Pickaxe |
+| 2171508439 | Two Faced Stone Pickaxe |
+| 837149011 | Uprising Stone Pickaxe |
+| 1852292345 | Vampire Stone Pick Axe |
+| 1594886582 | Winter Pickaxe |
+
+### Sunglasses — `sunglasses`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13040 | Black Style 2 |
+| 13043 | Black Style 3 |
+| 13041 | Camo |
+| 13038 | Chalk |
+| 13044 | Chrome |
+| 13045 | Gold |
+| 13042 | Red |
+| 13039 | Tortoise |
+
+### T-Shirt — `tshirt`
+
+| Skin ID | Skin name |
+|---:|---|
+| 10130 | Argyle Scavenger |
+| 490217825 | Argyle Scavenger |
+| 10033 | Baseball Tshirt |
+| 499455600 | Baseball Tshirt |
+| 10003 | Black Tshirt |
+| 14177 | Blue Tshirt |
+| 851890495 | Crossbone Crew |
+| 489329801 | Facepunch TShirt |
+| 14181 | Forest Camo Tshirt |
+| 10024 | German Tshirt |
+| 10035 | Hacker Valley Veteran |
+| 495902079 | Hacker Valley Veteran |
+| 10046 | Missing Textures TShirt |
+| 490948132 | Missing Textures TShirt |
+| 10038 | Murderer T-Shirt |
+| 492471488 | Murderer T-Shirt |
+| 101 | Red Tshirt |
+| 10025 | Russia Tshirt |
+| 1412895302 | Rust Footballer Shirt |
+| 10002 | Sandbox Game Shirt |
+| 10134 | Ser Winter TShirt |
+| 504919781 | Ser Winter TShirt |
+| 489687236 | Shadowfrax TShirt |
+| 10041 | Skull & Bones TShirt |
+| 492781593 | Skull & Bones TShirt |
+| 10053 | Smile T-Shirt |
+| 492096219 | Smile T-Shirt |
+| 10039 | Target Practice T-Shirt |
+| 489878758 | Target Practice T-Shirt |
+| 584379 | Urban Camo |
+| 10043 | Vyshyvanka Shirt |
+| 490236659 | Vyshyvanka Shirt |
+
+### Table — `table`
+
+| Skin ID | Skin name |
+|---:|---|
+| 875258582 | Antique Dining Table |
+| 872346354 | Off The Grid |
+| 909129983 | Parquet Table |
+
+### Tank Top — `shirt.tanktop`
+
+| Skin ID | Skin name |
+|---:|---|
+| 784578916 | Black Mesh Crop Top |
+
+### Thompson — `smg.thompson`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1772377862 | Azul Thompson |
+| 1720001936 | Devourer Thompson |
+| 1689944021 | Glory Thompson |
+| 1345464512 | Mysterious Cult Thompson |
+| 561462394 | Santa's Little Helper |
+| 839819171 | Wasteland Hunter |
+
+### Vending Machine — `vending.machine`
+
+| Skin ID | Skin name |
+|---:|---|
+| 861029759 | Army Vending Machine |
+| 862137836 | Base Invaders |
+| 869474635 | Brass Vending Machine |
+| 1335113551 | Carpenter's Vending Machine |
+| 2018506223 | Cobalt Coffee |
+| 1780228760 | Cobalt Ice Cream |
+| 1161727529 | Lavish Vending Machine |
+| 1927092059 | Music Box |
+| 2146714479 | Oxums Gas Pump |
+| 2311659818 | Recycler Vending Machine |
+| 1373851317 | Retro Vending Machine |
+| 860916780 | Rox Black Vending Machine |
+| 862291005 | RustyCola Machine |
+| 861548229 | Sand Tone Vending Machine |
+| 2186443994 | Tea Vending Machine |
+| 871927557 | Urban Vending Machine |
+
+### Water Gun — `gun.water`
+
+| Skin ID | Skin name |
+|---:|---|
+| 13046 | Green |
+| 13047 | Grey |
+| 13048 | Orange |
+| 13049 | Yellow |
+
+### Water Purifier — `water.purifier`
+
+| Skin ID | Skin name |
+|---:|---|
+| 886677071 | Distillery |
+| 786826476 | Radioactive Water Purifier |
+| 1796826334 | Wooden Purifier |
+
+### Waterpipe Shotgun — `shotgun.waterpipe`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1234721165 | Apostate |
+| 1209128595 | Blacksmith's Pipe |
+| 1274179291 | Cannibal Tribe Musket |
+| 1168524895 | Flaming Pipe |
+| 1851214164 | Garden Pipe Shotgun |
+| 907070012 | Hot Topic Waterpipe Shotgun |
+| 1320685736 | Industrial Pipe Shotgun |
+| 1219492103 | Junkyard Pipe |
+| 1250809355 | KOI |
+| 1147084675 | Luxuria |
+| 1421462560 | Pirate Pipe |
+| 1693498234 | Pure Evil |
+| 912464069 | Riveted Pipe Shotgun |
+| 819137470 | Rustpunk Scattergun |
+| 661319648 | RustPunk Waterpipe Shotgun |
+| 1205464046 | Sea Hunter Shotgun |
+| 10143 | The Peace Pipe |
+| 633754963 | The Peace Pipe |
+| 2268362982 | Toy Shotgun |
+| 1181616781 | Twisted Pipe |
+| 832764933 | Western Waterpipe Shotgun |
+
+### Wood Double Door — `door.double.hinged.wood`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1882487559 | Pirate Ship Wooden Double Door |
+| 1876817741 | Wind King Wooden Double Door |
+
+### Wood Storage Box — `box.wooden`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1865304630 | Army Supply Box |
+| 2000024196 | Cargo Heli Storage |
+| 1316294242 | Carpenter's Small Box |
+| 2234050484 | Cobalt Supply Box |
+| 2258758426 | Day and Night Small Box |
+| 1212709764 | Decorative Small Box |
+| 1455068496 | Duelist's Wood Box |
+| 2051308391 | Easter Bunny Small Box |
+| 787716105 | First Aid Box |
+| 2329411820 | Glacial Visage Small Box |
+| 2040776062 | GMO Free Seed Box |
+| 1644263172 | High Voltage Box |
+| 2268670063 | Little Cloud Box |
+| 885103417 | Medieval Small Wooden Box |
+| 2138650218 | MILTAN Storage Box |
+| 1679876778 | Oil Rig Storage Box |
+| 2186894702 | Organic Berry Box |
+| 1529745641 | Sea Supply Box |
+| 889212734 | Seed Box |
+| 930694436 | Small Medical Box |
+| 2146145661 | Stickered Toy Car |
+| 1818868472 | Toxic Hazard Box |
+| 1127078435 | Treasure Crate |
+| 2255658925 | Woodenstein |
+
+### Wooden Door — `door.hinged.wood`
+
+| Skin ID | Skin name |
+|---:|---|
+| 1386052491 | Alchemist Door |
+| 1733982448 | Archer Door |
+| 1402178300 | Artisan Wooden Door |
+| 1108316628 | Barricaded Door |
+| 1932460590 | Big Dreams Door |
+| 1100873539 | Black Decorative Wood Door |
+| 838700836 | Bleached Ebony Door |
+| 1320929144 | Bone Collector Door |
+| 804991715 | Christmas Tree Door |
+| 1605229872 | Cobalt Wooden Door |
+| 1415059257 | Cursed Wooden Door |
+| 809253752 | Door to Heaven |
+| 1313604647 | Dreamcatcher Door |
+| 2025017114 | Eco Door |
+| 962427350 | Forgotten Temple Door |
+| 1328425419 | Fortified Castle Door |
+| 1539681696 | Hell-o-ween Wooden Door |
+| 1666630991 | Hut Door |
+| 2246937402 | Jinx Wooden Door |
+| 1131650209 | Lone Wolf Door |
+| 1269783329 | Metal Tree Door |
+| 2229214032 | Midgard Door |
+| 804854812 | Old Heavy Wooden Door |
+| 1132144523 | Ornate Wooden Door |
+| 1759874635 | Pirate Hut Door |
+| 1415496136 | Pirate Wooden Door |
+| 2135476099 | Pixel Wooden Door |
+| 847902281 | Porthole Door |
+| 1100886818 | Red Decorative Wood Door |
+| 923763807 | Riveted Wooden Door |
+| 1127631900 | Sacrificial door |
+| 1886617093 | The Growth Of Evil |
+| 2295055078 | The Hunter and his Dog |
+| 1176899114 | Trick Or Treat Door |
+| 1362500013 | Vandal's Peace Door |
+| 1428632857 | Viking Door |
+| 2348793011 | Weather Wood Door |
+| 1260913194 | Wisdom Door |
+| 950184212 | Wise Door |
+| 1932737376 | Wolf Den Wooden Door |
+
+---
+
+Generated from uMod's Rust definitions page, scraped 2026-09-15. 678 items, 2590 skins across 104 items.
diff --git a/modules/rust/HOOKS.md b/modules/rust/HOOKS.md
new file mode 100644
index 0000000..7c91dab
--- /dev/null
+++ b/modules/rust/HOOKS.md
@@ -0,0 +1,9294 @@
+# Rust Oxide/uMod hook reference
+
+Every hook the uMod Rust game extension raises — **477 hooks across 20 categories** — with its
+description, its return contract and the C# signature to declare in a plugin.
+
+> **Scraped verbatim from [`umod.org/documentation/games/rust`](https://umod.org/documentation/games/rust) on 2026-09-15.**
+> This is a *mirror for reference*, not a specification we own: uMod is upstream and wins any
+> disagreement. See [`README.md`](README.md) for what it is for and how to refresh it.
+
+---
+
+## How to read an entry
+
+Each hook gives three things:
+
+- **What it is called for** — the game moment that raises it.
+- **Return behaviour** — the hook's contract, and the only part that is load-bearing. Oxide
+ reads the value your method returns and one of four things is true:
+
+ | Contract | Meaning |
+ |---|---|
+ | *No return behavior* | The hook is a **notification**. Return `void`; nothing you return is read. |
+ | *Returning a non-null value overrides default behavior* | The hook is a **veto with a payload**. Declare it `object`; return `null` to let the game proceed, anything else (conventionally `true`/`false`) to cancel the default action. |
+ | *Returning true or false overrides default behavior* | A **veto**. Declare it `object`; return `null` to abstain — returning `false` is *not* the same as abstaining. |
+ | *Returning a string will kick…* (and similar) | The returned value is **consumed as data**, not just as a veto. |
+
+- **Signature** — the exact method to declare. Oxide binds hooks **by name and arity**, by
+ reflection, at runtime: there is no interface to implement and no compile-time check. A typo in
+ the name, or the wrong parameter types, means the method is silently never called.
+
+> **Two cautions that apply to the whole table.** (1) Never return a non-`null` value from a hook
+> whose contract is *no return behavior* — on some hooks Oxide will still treat it as a veto.
+> (2) When several plugins hook the same veto, **the first non-`null` return wins** and the
+> remaining plugins are not consulted; abstain with `null` unless you mean to decide.
+
+---
+
+## Categories
+
+| Category | Hooks | What it covers |
+|---|---:|---|
+| [Server](#server-hooks) | 17 | Process lifecycle, the tick/frame loop, save and restart, RCON and console commands. |
+| [Player](#player-hooks) | 138 | Everything a connected human does: connect, chat, command, craft, loot, build, die, respawn. The largest surface alongside Entity. |
+| [Entity](#entity-hooks) | 140 | The generic `BaseEntity` graph — spawn, kill, damage, mount, loot, flags. Anything in the world that is not specifically an item. |
+| [Item](#item-hooks) | 43 | Item stacks and containers: add, remove, split, stack, move, repair, research, craft, use. |
+| [Resource](#resource-hooks) | 12 | Gathering and node dispensers — ore, trees, corpses, collectibles, quarries. |
+| [Structure](#structure-hooks) | 15 | Building blocks: placement, upgrade, demolish, rotate, stability, doors and locks. |
+| [Terrain](#terrain-hooks) | 1 | Terrain/map topology. |
+| [Vending](#vending-hooks) | 16 | Vending machines and the shop/trade flow, including the marketplace and drone deliveries. |
+| [Weapon](#weapon-hooks) | 16 | Firing, reloading, throwing, melee swings, projectile and trap behaviour. |
+| [Vehicle](#vehicle-hooks) | 22 | Boats, cars, horses, helicopters, trains, submarines — fuel, engines, mounting, pushing. |
+| [Team](#team-hooks) | 12 | Rust's built-in team/party system: create, invite, join, leave, promote, disband. |
+| [World](#world-hooks) | 1 | World-level generation events. |
+| [Fishing](#fishing-hooks) | 4 | The fishing minigame. |
+| [Electronic](#electronic-hooks) | 2 | The electricity graph. |
+| [Clan](#clan-hooks) | 7 | The first-party clan system (distinct from Team). |
+| [Plugin](#plugin-hooks) | 4 | Plugin lifecycle inside Oxide itself — `Loaded`, `Unload`, and compilation. |
+| [Sign](#sign-hooks) | 3 | Sign painting, updating and locking. |
+| [TechTree](#techtree-hooks) | 4 | Tech tree node unlocks and their prerequisites. |
+| [Phone](#phone-hooks) | 12 | In-game telephones: dialling, answering, voicemail, directory. |
+| [Permission](#permission-hooks) | 8 | uMod's own permission/group system (Covalence) — grants, revokes, group membership. |
+| **Total** | **477** | |
+
+---
+
+## Alphabetical index
+
+| Hook | Category | Returns |
+|---|---|---|
+| [`CanAcceptItem`](#canacceptitem) | Item | Returning CanAcceptResult value overrides default behavior |
+| [`CanAdministerVending`](#canadministervending) | Vending | Returning true or false overrides default behavior |
+| [`CanAffordToPlace`](#canaffordtoplace) | Player | Returning true or false overrides default behavior |
+| [`CanAffordUpgrade`](#canaffordupgrade) | Player | Returning true or false overrides default behavior |
+| [`CanAssignBed`](#canassignbed) | Player | Returning a non-null value overrides default behavior |
+| [`CanBeTargeted`](#canbetargeted) | Player | Returning true or false overrides default behavior |
+| [`CanBeWounded`](#canbewounded) | Player | Returning true or false overrides default behavior |
+| [`CanBradleyApcTarget`](#canbradleyapctarget) | Entity | Returning true or false overrides default behavior |
+| [`CanBuild`](#canbuild) | Player | Returning a non-null value overrides default behavior |
+| [`CanBypassQueue`](#canbypassqueue) | Player | Returning true will bypass the queue, returning nothing will by def… |
+| [`CanCatchFish`](#cancatchfish) | Fishing | Returning true or false overrides default behavior |
+| [`CanChangeCode`](#canchangecode) | Player | Returning a non-null value overrides default behavior |
+| [`CanChangeGrade`](#canchangegrade) | Player | Returning true or false overrides default behavior |
+| [`CanCheckFuel`](#cancheckfuel) | Vehicle | Returning true or false overrides default behavior |
+| [`CanClientLogin`](#canclientlogin) | Player | Returning a string will use the string as the error message |
+| [`CanCombineDroppedItem`](#cancombinedroppeditem) | Item | Returning a non-null value overwrites command arguments |
+| [`CanCraft`](#cancraft) | Player | Returning true or false overrides default behavior |
+| [`CanCreateWorldProjectile`](#cancreateworldprojectile) | Weapon | Returning a non-null value overrides default behavior |
+| [`CanDemolish`](#candemolish) | Player | Returning true or false overrides default behavior |
+| [`CanDeployItem`](#candeployitem) | Player | Returning a non-null value cancels default behavior |
+| [`CanDismountEntity`](#candismountentity) | Player | Returning a non-null value overrides default behavior |
+| [`CanDropActiveItem`](#candropactiveitem) | Item | Returning true or false overrides default behavior |
+| [`CanEntityBeHostile`](#canentitybehostile) | Entity | Returning a non-null value overrides default behavior |
+| [`CanEquipItem`](#canequipitem) | Player | Returning true or false overrides default behavior |
+| [`CanExplosiveStick`](#canexplosivestick) | Weapon | Returning a non-null value overwrites the default behavior |
+| [`CanHackCrate`](#canhackcrate) | Player | Returning a non-null value overrides default behavior |
+| [`CanHelicopterDropCrate`](#canhelicopterdropcrate) | Entity | Returning true or false overrides default behavior |
+| [`CanHelicopterStrafe`](#canhelicopterstrafe) | Entity | Returning true or false overrides default behavior |
+| [`CanHelicopterStrafeTarget`](#canhelicopterstrafetarget) | Entity | Returning true or false overrides default behavior |
+| [`CanHelicopterTarget`](#canhelicoptertarget) | Entity | Returning true or false overrides default behavior |
+| [`CanHelicopterUseNapalm`](#canhelicopterusenapalm) | Entity | Returning true or false overrides default behavior |
+| [`CanHideStash`](#canhidestash) | Player | Returning a non-null value overrides default behavior |
+| [`CanLock`](#canlock) | Player | Returning a non-null value cancels default behavior |
+| [`CanLockerAcceptItem`](#canlockeracceptitem) | Entity | Returning true or false overrides default behavior |
+| [`CanLootEntity`](#canlootentity) | Player | Returning a non-null value overrides default behavior |
+| [`CanLootPlayer`](#canlootplayer) | Player | Returning true or false overrides default behavior |
+| [`CanMountEntity`](#canmountentity) | Player | Returning a non-null value overrides default behavior |
+| [`CanMoveItem`](#canmoveitem) | Item | Returning a non-null value overrides default behavior |
+| [`CanNetworkTo`](#cannetworkto) | Entity | Returning true or false overrides default behavior |
+| [`CanNpcAttack`](#cannpcattack) | Entity | Returning true or false overrides default behavior |
+| [`CanNpcEat`](#cannpceat) | Entity | Returning true or false overrides default behavior |
+| [`CanPickupEntity`](#canpickupentity) | Player | Returning true or false overrides default behavior |
+| [`CanPickupLock`](#canpickuplock) | Player | Returning true or false overrides default behavior |
+| [`CanPushBoat`](#canpushboat) | Player | Returning a non-null value cancels default behavior |
+| [`CanReceiveCall`](#canreceivecall) | Phone | Returning true or false overrides default behavior |
+| [`CanRecycle`](#canrecycle) | Entity | Returning true or false overrides default behavior |
+| [`CanRenameBed`](#canrenamebed) | Player | Returning a non-null value overrides default behavior |
+| [`CanResearchItem`](#canresearchitem) | Player | Returning a non-null value overrides default behavior |
+| [`CanSamSiteShoot`](#cansamsiteshoot) | Entity | Returning a non-null value cancels default behavior |
+| [`CanSeeStash`](#canseestash) | Player | Returning a non-null value overrides default behavior |
+| [`CanSetBedPublic`](#cansetbedpublic) | Player | Returning a non-null value overrides default behavior |
+| [`CanSetRelationship`](#cansetrelationship) | Player | Returning true or false overrides default behavior |
+| [`CanSpectateTarget`](#canspectatetarget) | Player | Returning a non-null value cancels default behavior |
+| [`CanStackItem`](#canstackitem) | Item | Returning true or false overrides default behavior |
+| [`CanSwapToSeat`](#canswaptoseat) | Entity | Returning true or false overrides default behavior |
+| [`CanTakeCutting`](#cantakecutting) | Resource | Returning a non-null value cancels default behavior |
+| [`CanUnlock`](#canunlock) | Player | Returning a non-null value overrides default behavior |
+| [`CanUnlockTechTreeNode`](#canunlocktechtreenode) | TechTree | Returning true or false overrides default behavior |
+| [`CanUnlockTechTreeNodePath`](#canunlocktechtreenodepath) | TechTree | Returning true or false overrides default behavior |
+| [`CanUpdateSign`](#canupdatesign) | Player | Returning true or false overrides default behavior |
+| [`CanUseFuel`](#canusefuel) | Vehicle | Returning true or false overrides default behavior |
+| [`CanUseGesture`](#canusegesture) | Player | Returning true or false overrides default behavior |
+| [`CanUseHelicopter`](#canusehelicopter) | Vehicle | Returning a non-null value cancels default behavior |
+| [`CanUseLockedEntity`](#canuselockedentity) | Player | Returning true or false overrides default behavior |
+| [`CanUseMailbox`](#canusemailbox) | Player | Returning true or false overrides default behavior |
+| [`CanUserLogin`](#canuserlogin) | Player | Returning a string will kick the user with this reason. Returning a… |
+| [`CanUseUI`](#canuseui) | Player | Returning a non-null value overrides default behavior |
+| [`CanUseVending`](#canusevending) | Vending | Returning true or false overrides default behavior |
+| [`CanUseWires`](#canusewires) | Player | Returning a non-null value overrides default behavior |
+| [`CanVendingAcceptItem`](#canvendingacceptitem) | Vending | Returning true or false overrides default behavior |
+| [`CanWearItem`](#canwearitem) | Player | Returning a non-null value overrides default behavior |
+| [`Init`](#init) | Server | — |
+| [`LoadDefaultConfig`](#loaddefaultconfig) | Plugin | — |
+| [`LoadDefaultMessages`](#loaddefaultmessages) | Plugin | — |
+| [`Loaded`](#loaded) | Plugin | — |
+| [`OnActiveItemChange`](#onactiveitemchange) | Player | Returning a non-null value cancels default behavior |
+| [`OnActiveItemChanged`](#onactiveitemchanged) | Player | — |
+| [`OnAddVendingOffer`](#onaddvendingoffer) | Vending | — |
+| [`OnAirdrop`](#onairdrop) | Entity | — |
+| [`OnAmmoSwitch`](#onammoswitch) | Weapon | Returning a non-null value overrides default behavior |
+| [`OnAmmoUnload`](#onammounload) | Weapon | Returning a non-null value cancels default behavior |
+| [`OnAnalysisComplete`](#onanalysiscomplete) | Player | — |
+| [`OnBackpackDrop`](#onbackpackdrop) | Item | Return non-null to override default behaviour. |
+| [`OnBigWheelLoss`](#onbigwheelloss) | Entity | — |
+| [`OnBigWheelWin`](#onbigwheelwin) | Entity | Returning non-null value overrides default behaviour. |
+| [`OnBoatPathGenerate`](#onboatpathgenerate) | Vehicle | Returning a List overrides default behavior |
+| [`OnBonusItemDrop`](#onbonusitemdrop) | Item | Returning a non-null value overrides default behavior |
+| [`OnBonusItemDropped`](#onbonusitemdropped) | Item | — |
+| [`OnBookmarkAdd`](#onbookmarkadd) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBookmarkControl`](#onbookmarkcontrol) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBookmarkControlEnd`](#onbookmarkcontrolend) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBookmarkControlEnded`](#onbookmarkcontrolended) | Entity | — |
+| [`OnBookmarkControlStarted`](#onbookmarkcontrolstarted) | Entity | — |
+| [`OnBookmarkDelete`](#onbookmarkdelete) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBookmarkInput`](#onbookmarkinput) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBookmarksSendControl`](#onbookmarkssendcontrol) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBradleyApcHunt`](#onbradleyapchunt) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBradleyApcInitialize`](#onbradleyapcinitialize) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBradleyApcPatrol`](#onbradleyapcpatrol) | Entity | Returning a non-null value overrides default behavior |
+| [`OnBroadcastCommand`](#onbroadcastcommand) | Player | Returning a non-null value overwrites command arguments |
+| [`OnBuildingPrivilege`](#onbuildingprivilege) | Entity | Returning BuildingPrivlidge value overrides default behavior |
+| [`OnBuildingSplit`](#onbuildingsplit) | Structure | — |
+| [`OnButtonPress`](#onbuttonpress) | Entity | Returning a non-null value cancels default behavior |
+| [`OnBuyVendingItem`](#onbuyvendingitem) | Vending | Returning a non-null value overrides default behavior |
+| [`OnCardSwipe`](#oncardswipe) | Item | Returning a non-null value cancels default behavior |
+| [`OnCargoPlaneSignaled`](#oncargoplanesignaled) | Entity | — |
+| [`OnCCTVDirectionChange`](#oncctvdirectionchange) | Entity | Returning a non-null value cancels default behavior |
+| [`OnCentralizedBanCheck`](#oncentralizedbancheck) | Player | Returning a non-null value cancels default behavior |
+| [`OnClanColorChanged`](#onclancolorchanged) | Clan | — |
+| [`OnClanCreated`](#onclancreated) | Clan | — |
+| [`OnClanDisbanded`](#onclandisbanded) | Clan | — |
+| [`OnClanLogoChanged`](#onclanlogochanged) | Clan | — |
+| [`OnClanMemberAdded`](#onclanmemberadded) | Clan | — |
+| [`OnClanMemberKicked`](#onclanmemberkicked) | Clan | — |
+| [`OnClanMemberLeft`](#onclanmemberleft) | Clan | — |
+| [`OnClientAuth`](#onclientauth) | Player | — |
+| [`OnClientCommand`](#onclientcommand) | Player | Returning a non-null value overrides default behavior |
+| [`OnCodeEntered`](#oncodeentered) | Structure | Returning a non-null value overrides default behavior |
+| [`OnCollectiblePickup`](#oncollectiblepickup) | Resource | Returning a non-null value overrides default behavior |
+| [`OnConstructionPlace`](#onconstructionplace) | Structure | Returning a non-null value overrides default behavior |
+| [`OnContainerDropItems`](#oncontainerdropitems) | Entity | Returning a non-null value overrides default behavior |
+| [`OnCorpsePopulate`](#oncorpsepopulate) | Player | Returning a BaseCorpse overrides default behavior |
+| [`OnCounterModeToggle`](#oncountermodetoggle) | Entity | Returning a non-null value overrides default behavior |
+| [`OnCounterTargetChange`](#oncountertargetchange) | Entity | Returning a non-null value overrides default behavior |
+| [`OnCrateDropped`](#oncratedropped) | Entity | — |
+| [`OnCrateHack`](#oncratehack) | Entity | — |
+| [`OnCrateHackEnd`](#oncratehackend) | Entity | — |
+| [`OnCrateLanded`](#oncratelanded) | Entity | — |
+| [`OnCupboardAuthorize`](#oncupboardauthorize) | Structure | Returning a non-null value overrides default behavior |
+| [`OnCupboardClearList`](#oncupboardclearlist) | Structure | Returning a non-null value overrides default behavior |
+| [`OnCupboardDeauthorize`](#oncupboarddeauthorize) | Structure | Returning a non-null value overrides default behavior |
+| [`OnDefaultItemsReceive`](#ondefaultitemsreceive) | Player | Returning a non-null value overrides default behavior |
+| [`OnDefaultItemsReceived`](#ondefaultitemsreceived) | Player | Returning a non-null value overrides default behavior |
+| [`OnDeleteVendingOffer`](#ondeletevendingoffer) | Vending | — |
+| [`OnDemoRecordingStart`](#ondemorecordingstart) | Player | Returning a non-null value overrides default behavior |
+| [`OnDemoRecordingStarted`](#ondemorecordingstarted) | Player | — |
+| [`OnDemoRecordingStop`](#ondemorecordingstop) | Player | Returning a non-null value overrides default behavior |
+| [`OnDemoRecordingStopped`](#ondemorecordingstopped) | Player | — |
+| [`OnDestroyUI`](#ondestroyui) | Player | — |
+| [`OnDieselEngineToggle`](#ondieselenginetoggle) | Entity | Returning a non-null value cancels default behavior |
+| [`OnDieselEngineToggled`](#ondieselenginetoggled) | Entity | — |
+| [`OnDispenserBonus`](#ondispenserbonus) | Resource | Returning an Item replaces the existing Item |
+| [`OnDispenserGather`](#ondispensergather) | Resource | Returning a non-null value overrides default behavior |
+| [`OnDoorClosed`](#ondoorclosed) | Structure | — |
+| [`OnDoorKnocked`](#ondoorknocked) | Structure | — |
+| [`OnDoorOpened`](#ondooropened) | Structure | — |
+| [`OnElevatorButtonPress`](#onelevatorbuttonpress) | Entity | Returning a non-null value overrides default behavior |
+| [`OnElevatorCall`](#onelevatorcall) | Entity | Returning a non-null value overrides default behavior |
+| [`OnElevatorMove`](#onelevatormove) | Entity | Returning a non-null value overrides default behavior |
+| [`OnEngineLoadoutRefresh`](#onengineloadoutrefresh) | Entity | Returning a non-null value overrides default behaviour |
+| [`OnEngineStart`](#onenginestart) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnEngineStarted`](#onenginestarted) | Vehicle | — |
+| [`OnEngineStatsRefresh`](#onenginestatsrefresh) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnEngineStatsRefreshed`](#onenginestatsrefreshed) | Vehicle | — |
+| [`OnEngineStop`](#onenginestop) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnEngineStopped`](#onenginestopped) | Vehicle | — |
+| [`OnEntityBuilt`](#onentitybuilt) | Structure | — |
+| [`OnEntityControl`](#onentitycontrol) | Entity | Returning true or false overrides default behavior |
+| [`OnEntityDeath`](#onentitydeath) | Entity | — |
+| [`OnEntityDestroy`](#onentitydestroy) | Entity | Returning a non-null value overrides default behavior |
+| [`OnEntityDismounted`](#onentitydismounted) | Entity | — |
+| [`OnEntityEnter`](#onentityenter) | Entity | — |
+| [`OnEntityFlagsNetworkUpdate`](#onentityflagsnetworkupdate) | Entity | Returning a non-null value overrides default behavior |
+| [`OnEntityGroundMissing`](#onentitygroundmissing) | Entity | Returning a non-null value overrides default behavior |
+| [`OnEntityKill`](#onentitykill) | Entity | Returning a non-null value overrides default behavior |
+| [`OnEntityLeave`](#onentityleave) | Entity | — |
+| [`OnEntityMarkHostile`](#onentitymarkhostile) | Entity | Returning a non-null value cancels default behavior |
+| [`OnEntityMounted`](#onentitymounted) | Entity | — |
+| [`OnEntitySaved`](#onentitysaved) | Entity | — |
+| [`OnEntitySnapshot`](#onentitysnapshot) | Entity | Returning a non-null value overrides default behavior |
+| [`OnEntitySpawned`](#onentityspawned) | Entity | — |
+| [`OnEntityStabilityCheck`](#onentitystabilitycheck) | Entity | Returning a non-null value cancels default behavior |
+| [`OnEntityTakeDamage`](#onentitytakedamage) | Entity | |
+| [`OnExcavatorGather`](#onexcavatorgather) | Entity | Returning a non-null value cancels default behavior |
+| [`OnExcavatorMiningToggled`](#onexcavatorminingtoggled) | Entity | — |
+| [`OnExcavatorResourceSet`](#onexcavatorresourceset) | Entity | Returning a non-null value cancels default behavior |
+| [`OnExcavatorSuppliesRequest`](#onexcavatorsuppliesrequest) | Electronic | Returning non-null overrides default behaviour. |
+| [`OnExcavatorSuppliesRequested`](#onexcavatorsuppliesrequested) | Electronic | |
+| [`OnExperimentEnd`](#onexperimentend) | Player | Returning a non-null value overrides defualt behaviour. |
+| [`OnExperimentEnded`](#onexperimentended) | Player | — |
+| [`OnExperimentStart`](#onexperimentstart) | Player | Returning a non-null value overrides default behavior |
+| [`OnExperimentStarted`](#onexperimentstarted) | Player | — |
+| [`OnExplosiveDropped`](#onexplosivedropped) | Weapon | — |
+| [`OnExplosiveDud`](#onexplosivedud) | Weapon | Returning a non-null value cancels default behavior |
+| [`OnExplosiveFuseSet`](#onexplosivefuseset) | Weapon | Returning a non-null value overwrites fuse length |
+| [`OnExplosiveThrown`](#onexplosivethrown) | Weapon | — |
+| [`OnFindBurnable`](#onfindburnable) | Item | Returning an Item overrides default behavior |
+| [`OnFindSpawnPoint`](#onfindspawnpoint) | Player | Return a BasePlayer.SpawnPoint object to use that spawnpoint |
+| [`OnFireBallDamage`](#onfireballdamage) | Entity | — |
+| [`OnFireBallSpread`](#onfireballspread) | Entity | — |
+| [`OnFishCatch`](#onfishcatch) | Fishing | Returning a non-null value overrides default behavior |
+| [`OnFishCaught`](#onfishcaught) | Fishing | — |
+| [`OnFishingStopped`](#onfishingstopped) | Fishing | — |
+| [`OnFlameExplosion`](#onflameexplosion) | Entity | — |
+| [`OnFlameThrowerBurn`](#onflamethrowerburn) | Weapon | — |
+| [`OnFrame`](#onframe) | Server | — |
+| [`OnFuelAmountCheck`](#onfuelamountcheck) | Vehicle | Returning a numeric value (int) overrides the default value |
+| [`OnFuelCheck`](#onfuelcheck) | Vehicle | Returning true or false overrides default behavior |
+| [`OnFuelConsume`](#onfuelconsume) | Item | Returning a non-null value overrides default behavior |
+| [`OnFuelConsumed`](#onfuelconsumed) | Item | — |
+| [`OnFuelItemCheck`](#onfuelitemcheck) | Vehicle | Returning an Item overrides default behavior |
+| [`OnGiveSoldItem`](#ongivesolditem) | Vending | Returning a non-null value cancels default behavior |
+| [`OnGroupCreated`](#ongroupcreated) | Permission | — |
+| [`OnGroupDeleted`](#ongroupdeleted) | Permission | — |
+| [`OnGroupParentSet`](#ongroupparentset) | Permission | — |
+| [`OnGroupPermissionGranted`](#ongrouppermissiongranted) | Permission | — |
+| [`OnGroupPermissionRevoked`](#ongrouppermissionrevoked) | Permission | — |
+| [`OnGroupRankSet`](#ongrouprankset) | Permission | — |
+| [`OnGroupTitleSet`](#ongrouptitleset) | Permission | — |
+| [`OnGrowableGather`](#ongrowablegather) | Resource | Returning a non-null value overrides default behavior |
+| [`OnGrowableGathered`](#ongrowablegathered) | Resource | — |
+| [`OnHammerHit`](#onhammerhit) | Structure | Returning a non-null value overrides default behavior |
+| [`OnHealingItemUse`](#onhealingitemuse) | Item | Returning a non-null value overrides default behavior |
+| [`OnHelicopterAttack`](#onhelicopterattack) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHelicopterDropCrate`](#onhelicopterdropcrate) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHelicopterDropDoorOpen`](#onhelicopterdropdooropen) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHelicopterKilled`](#onhelicopterkilled) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHelicopterOutOfCrates`](#onhelicopteroutofcrates) | Entity | Returning true or false overrides default behavior |
+| [`OnHelicopterRetire`](#onhelicopterretire) | Entity | Returning a non-null value overrides default behaviour. |
+| [`OnHelicopterStrafeEnter`](#onhelicopterstrafeenter) | Entity | Returning a non-null value cancels default behavior |
+| [`OnHelicopterTarget`](#onhelicoptertarget) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHorseHitch`](#onhorsehitch) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHorseLead`](#onhorselead) | Entity | Returning a non-null value overrides default behavior |
+| [`OnHotAirBalloonToggle`](#onhotairballoontoggle) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnHotAirBalloonToggled`](#onhotairballoontoggled) | Vehicle | — |
+| [`OnIngredientsCollect`](#oningredientscollect) | Item | Returning a non-null value cancels default behavior |
+| [`OnInputUpdate`](#oninputupdate) | Entity | Returning a non-null value cancels default behavior |
+| [`OnInventoryNetworkUpdate`](#oninventorynetworkupdate) | Player | Returning a non-null value overrides default behavior |
+| [`OnIORefCleared`](#oniorefcleared) | Entity | — |
+| [`OnItemAction`](#onitemaction) | Item | Returning a non-null value overrides default behavior |
+| [`OnItemAddedToContainer`](#onitemaddedtocontainer) | Item | — |
+| [`OnItemCraft`](#onitemcraft) | Item | Returning true or false overrides default behavior |
+| [`OnItemCraftCancelled`](#onitemcraftcancelled) | Item | — |
+| [`OnItemCraftFinished`](#onitemcraftfinished) | Item | — |
+| [`OnItemDeployed`](#onitemdeployed) | Item | — |
+| [`OnItemDropped`](#onitemdropped) | Item | — |
+| [`OnItemLock`](#onitemlock) | Item | Returning a non-null value overrides default behavior |
+| [`OnItemPickup`](#onitempickup) | Item | Returning a non-null value overrides default behavior |
+| [`OnItemRecycle`](#onitemrecycle) | Entity | Returning a non-null value overrides default behavior |
+| [`OnItemRefill`](#onitemrefill) | Item | Returning a non-null value overrides default behavior |
+| [`OnItemRemove`](#onitemremove) | Item | Return a non-null value stop item from being destroyed |
+| [`OnItemRemovedFromContainer`](#onitemremovedfromcontainer) | Item | — |
+| [`OnItemRepair`](#onitemrepair) | Item | Returning a non-null value overrides default behavior |
+| [`OnItemResearch`](#onitemresearch) | Item | — |
+| [`OnItemResearched`](#onitemresearched) | Item | Returning a float will affect if researching is successful or not |
+| [`OnItemSplit`](#onitemsplit) | Item | Returning an Item overrides default behavior |
+| [`OnItemStacked`](#onitemstacked) | Item | — |
+| [`OnItemSubmit`](#onitemsubmit) | Item | Returning a non-null value cancels default behavior |
+| [`OnItemUnlock`](#onitemunlock) | Item | Returning a non-null value overrides default behavior |
+| [`OnItemUpgrade`](#onitemupgrade) | Item | — |
+| [`OnItemUse`](#onitemuse) | Item | Returning an int overrides the amount consumed. |
+| [`OnLiftUse`](#onliftuse) | Entity | Returning a non-null value overrides default behavior |
+| [`OnLiquidVesselFill`](#onliquidvesselfill) | Entity | Returning a non-null value cancels default behavior |
+| [`OnLockerSwap`](#onlockerswap) | Entity | Returning non-null value overrides default behavior |
+| [`OnLootEntity`](#onlootentity) | Player | — |
+| [`OnLootEntityEnd`](#onlootentityend) | Player | — |
+| [`OnLootItem`](#onlootitem) | Player | — |
+| [`OnLootNetworkUpdate`](#onlootnetworkupdate) | Player | Returning a non-null value overrides default behavior |
+| [`OnLootPlayer`](#onlootplayer) | Player | — |
+| [`OnLootSpawn`](#onlootspawn) | Entity | Returning a non-null value overrides default behavior |
+| [`OnLoseCondition`](#onlosecondition) | Item | — |
+| [`OnMagazineReload`](#onmagazinereload) | Weapon | Returning a non-null value overrides default behavior |
+| [`OnMapImageUpdated`](#onmapimageupdated) | Item | — |
+| [`OnMapMarkerAdd`](#onmapmarkeradd) | Player | Returning a non-null value cancels default behavior |
+| [`OnMapMarkerAdded`](#onmapmarkeradded) | Player | — |
+| [`OnMapMarkerRemove`](#onmapmarkerremove) | Player | Returning a non-null value cancels default behaviour |
+| [`OnMapMarkersClear`](#onmapmarkersclear) | Player | Returning a non-null value cancels default behavior |
+| [`OnMapMarkersCleared`](#onmapmarkerscleared) | Player | — |
+| [`OnMaxStackable`](#onmaxstackable) | Item | Returning a numeric value (int) overrides the default value |
+| [`OnMeleeAttack`](#onmeleeattack) | Player | Returning a non-null value cancels default behavior |
+| [`OnMeleeThrown`](#onmeleethrown) | Weapon | — |
+| [`OnMessagePlayer`](#onmessageplayer) | Server | Returning a non-null value overrides default behavior |
+| [`OnMlrsFire`](#onmlrsfire) | Entity | Returning a non-null value overrides default behaviour. |
+| [`OnMlrsFired`](#onmlrsfired) | Entity | No return behaviour. |
+| [`OnNetworkGroupEntered`](#onnetworkgroupentered) | Player | — |
+| [`OnNetworkGroupLeft`](#onnetworkgroupleft) | Player | — |
+| [`OnNetworkSubscriptionsUpdate`](#onnetworksubscriptionsupdate) | Entity | Returning a non-null value prevents Rust from applying the proposed… |
+| [`OnNewSave`](#onnewsave) | Server | — |
+| [`OnNpcConversationEnded`](#onnpcconversationended) | Player | — |
+| [`OnNpcConversationRespond`](#onnpcconversationrespond) | Player | Returning a non-null value overrides default behavior |
+| [`OnNpcConversationResponded`](#onnpcconversationresponded) | Player | — |
+| [`OnNpcConversationStart`](#onnpcconversationstart) | Player | Returning a non-null value overrides default behavior |
+| [`OnNpcDestinationSet`](#onnpcdestinationset) | Entity | Returning a non-null value cancels default behavior |
+| [`OnNpcGiveSoldItem`](#onnpcgivesolditem) | Vending | Returning a non-null value overrides default behaviour. |
+| [`OnNpcPlayerResume`](#onnpcplayerresume) | Entity | Returning a non-null value cancels default behavior |
+| [`OnNpcStopMoving`](#onnpcstopmoving) | Entity | Returning a non-null value cancels default behavior |
+| [`OnNpcTarget`](#onnpctarget) | Entity | Returning a non-null value overrides default behavior |
+| [`OnNpcTargetSense`](#onnpctargetsense) | Entity | Returning a non-null value overrides default behavior |
+| [`OnOpenVendingAdmin`](#onopenvendingadmin) | Vending | — |
+| [`OnOutputUpdate`](#onoutputupdate) | Entity | Returning a non-null value cancels default behavior |
+| [`OnOvenCook`](#onovencook) | Entity | Returning a non-null value overrides default behavior |
+| [`OnOvenCooked`](#onovencooked) | Entity | — |
+| [`OnOvenToggle`](#onoventoggle) | Entity | Returning a non-null value overrides default behavior |
+| [`OnPayForPlacement`](#onpayforplacement) | Player | Returning a non-null value cancels default behavior |
+| [`OnPayForUpgrade`](#onpayforupgrade) | Player | Returning a non-null value cancels default behavior |
+| [`OnPermissionRegistered`](#onpermissionregistered) | Permission | — |
+| [`OnPhoneAnswer`](#onphoneanswer) | Phone | Returning a non-null value overrides default behavior |
+| [`OnPhoneAnswered`](#onphoneanswered) | Phone | — |
+| [`OnPhoneCallStart`](#onphonecallstart) | Phone | Returning a non-null value overrides default behavior |
+| [`OnPhoneCallStarted`](#onphonecallstarted) | Phone | |
+| [`OnPhoneDial`](#onphonedial) | Phone | Returning a non-null value overrides default behavior |
+| [`OnPhoneDialFail`](#onphonedialfail) | Phone | Returning a non-null value overrides default behavior |
+| [`OnPhoneDialFailed`](#onphonedialfailed) | Phone | — |
+| [`OnPhoneDialTimedOut`](#onphonedialtimedout) | Phone | — |
+| [`OnPhoneDialTimeout`](#onphonedialtimeout) | Phone | Returning a non-null value overrides default behavior |
+| [`OnPhoneNameUpdate`](#onphonenameupdate) | Phone | Returning a non-null value overrides default behavior |
+| [`OnPhoneNameUpdated`](#onphonenameupdated) | Phone | — |
+| [`OnPlayerAddModifiers`](#onplayeraddmodifiers) | Player | Returning a non-null value overrides default behavior (prevents the… |
+| [`OnPlayerAssist`](#onplayerassist) | Player | Returning a non-null value cancels default behavior |
+| [`OnPlayerAttack`](#onplayerattack) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerBanned`](#onplayerbanned) | Player | — |
+| [`OnPlayerChat`](#onplayerchat) | Player | Returning a non-null value overrides default behavior of chat, not… |
+| [`OnPlayerCommand`](#onplayercommand) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerConnected`](#onplayerconnected) | Player | — |
+| [`OnPlayerCorpse`](#onplayercorpse) | Player | — |
+| [`OnPlayerCorpseSpawn`](#onplayercorpsespawn) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerCorpseSpawned`](#onplayercorpsespawned) | Player | — |
+| [`OnPlayerDeath`](#onplayerdeath) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerDisconnected`](#onplayerdisconnected) | Player | — |
+| [`OnPlayerDropActiveItem`](#onplayerdropactiveitem) | Player | — |
+| [`OnPlayerHealthChange`](#onplayerhealthchange) | Player | Returning a non-null value cancels the health change |
+| [`OnPlayerInput`](#onplayerinput) | Player | — |
+| [`OnPlayerKeepAlive`](#onplayerkeepalive) | Player | Returning a non-null value cancels default behavior |
+| [`OnPlayerKicked`](#onplayerkicked) | Player | — |
+| [`OnPlayerLand`](#onplayerland) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerLanded`](#onplayerlanded) | Player | — |
+| [`OnPlayerLootEnd`](#onplayerlootend) | Player | — |
+| [`OnPlayerMetabolize`](#onplayermetabolize) | Player | — |
+| [`OnPlayerRecover`](#onplayerrecover) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerRecovered`](#onplayerrecovered) | Player | — |
+| [`OnPlayerReported`](#onplayerreported) | Player | — |
+| [`OnPlayerRespawn`](#onplayerrespawn) | Player | Returning a BasePlayer.SpawnPoint (takes a position and rotation),… |
+| [`OnPlayerRespawned`](#onplayerrespawned) | Player | — |
+| [`OnPlayerRevive`](#onplayerrevive) | Player | Returning a non-null value cancels default behavior |
+| [`OnPlayerSetInfo`](#onplayersetinfo) | Player | — |
+| [`OnPlayerSleep`](#onplayersleep) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerSleepEnded`](#onplayersleepended) | Player | — |
+| [`OnPlayerSpawn`](#onplayerspawn) | Player | Returning true overrides default behavior |
+| [`OnPlayerSpectate`](#onplayerspectate) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerSpectateEnd`](#onplayerspectateend) | Player | Returning a non-null value stops the spectate from ending |
+| [`OnPlayerTick`](#onplayertick) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerViolation`](#onplayerviolation) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerVoice`](#onplayervoice) | Player | Returning a non-null value overrides default behavior |
+| [`OnPlayerWound`](#onplayerwound) | Player | Returning a non-null value cancels the wounded state |
+| [`OnPluginLoaded`](#onpluginloaded) | Server | — |
+| [`OnPluginUnloaded`](#onpluginunloaded) | Server | — |
+| [`OnProjectileRicochet`](#onprojectilericochet) | Weapon | Returning a non-null value overrides default behavior |
+| [`OnQuarryEnabled`](#onquarryenabled) | Resource | — |
+| [`OnQuarryGather`](#onquarrygather) | Resource | — |
+| [`OnQuarryToggled`](#onquarrytoggled) | Resource | — |
+| [`OnRconCommand`](#onrconcommand) | Server | — |
+| [`OnRconConnection`](#onrconconnection) | Server | Returning a non-null value overrides default behavior |
+| [`OnReactiveTargetReset`](#onreactivetargetreset) | Entity | — |
+| [`OnRecyclerToggle`](#onrecyclertoggle) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRefreshVendingStock`](#onrefreshvendingstock) | Vending | — |
+| [`OnRemoveDying`](#onremovedying) | Resource | Returning a non-null value overrides default behavior |
+| [`OnResearchCostDetermine`](#onresearchcostdetermine) | Item | Returning a numeric value (int) overrides the default value |
+| [`OnResourceDepositCreated`](#onresourcedepositcreated) | Entity | — |
+| [`OnRespawnInformationGiven`](#onrespawninformationgiven) | Player | — |
+| [`OnRfBroadcasterAdd`](#onrfbroadcasteradd) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRfBroadcasterAdded`](#onrfbroadcasteradded) | Entity | — |
+| [`OnRfBroadcasterRemove`](#onrfbroadcasterremove) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRfBroadcasterRemoved`](#onrfbroadcasterremoved) | Entity | — |
+| [`OnRfFrequencyChange`](#onrffrequencychange) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRfFrequencyChanged`](#onrffrequencychanged) | Entity | — |
+| [`OnRfListenerAdd`](#onrflisteneradd) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRfListenerAdded`](#onrflisteneradded) | Entity | — |
+| [`OnRfListenerRemove`](#onrflistenerremove) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRfListenerRemoved`](#onrflistenerremoved) | Entity | — |
+| [`OnRidableAnimalClaim`](#onridableanimalclaim) | Entity | Returning a non-null value overrides default behavior |
+| [`OnRidableAnimalClaimed`](#onridableanimalclaimed) | Entity | — |
+| [`OnRocketLaunched`](#onrocketlaunched) | Weapon | — |
+| [`OnRotateVendingMachine`](#onrotatevendingmachine) | Vending | Returning a non-null value overrides default behavior |
+| [`OnRunPlayerMetabolism`](#onrunplayermetabolism) | Player | Returning a non-null value cancels the update |
+| [`OnSamSiteTarget`](#onsamsitetarget) | Entity | Returning a non-null value cancels default behavior |
+| [`OnSaveLoad`](#onsaveload) | Server | Returning a non-null value overrides default behavior |
+| [`OnSendCommand`](#onsendcommand) | Player | Returning a non-null value overwrites command arguments |
+| [`OnServerCommand`](#onservercommand) | Server | Returning a non-null value overrides default behavior |
+| [`OnServerInformationUpdated`](#onserverinformationupdated) | Server | — |
+| [`OnServerInitialized`](#onserverinitialized) | Server | — |
+| [`OnServerMessage`](#onservermessage) | Server | Return a non-null value to stop message from being sent |
+| [`OnServerRestartInterrupt`](#onserverrestartinterrupt) | Server | Returning a non-null value overrides default behavior |
+| [`OnServerSave`](#onserversave) | Server | — |
+| [`OnServerShutdown`](#onservershutdown) | Server | — |
+| [`OnShopAcceptClick`](#onshopacceptclick) | Entity | Returning a non-null value cancels default behavior |
+| [`OnShopCancelClick`](#onshopcancelclick) | Entity | Returning a non-null value cancels default behavior |
+| [`OnShopCompleteTrade`](#onshopcompletetrade) | Entity | Returning a non-null value cancels default behavior |
+| [`OnShopCompleteTrade`](#onshopcompletetrade-1) | Entity | Returning a non-null value overrides default behavior |
+| [`OnSignLocked`](#onsignlocked) | Sign | — |
+| [`OnSignUpdated`](#onsignupdated) | Sign | — |
+| [`OnSleepingBagDestroy`](#onsleepingbagdestroy) | Entity | Returning a non-null value overrides default behavior |
+| [`OnSleepingBagDestroyed`](#onsleepingbagdestroyed) | Entity | — |
+| [`OnSleepingBagValidCheck`](#onsleepingbagvalidcheck) | Entity | Returning true or false overrides default behavior |
+| [`OnSolarPanelSunUpdate`](#onsolarpanelsunupdate) | Entity | Returning a non-null value overrides default behavior |
+| [`OnSpinWheel`](#onspinwheel) | Sign | — |
+| [`OnStashExposed`](#onstashexposed) | Player | — |
+| [`OnStashHidden`](#onstashhidden) | Player | — |
+| [`OnStructureDemolish`](#onstructuredemolish) | Structure | Returning a non-null value overrides default behavior |
+| [`OnStructureRepair`](#onstructurerepair) | Structure | Returning a non-null value cancels repair |
+| [`OnStructureRotate`](#onstructurerotate) | Structure | Returning a non-null value cancels rotate |
+| [`OnStructureUpgrade`](#onstructureupgrade) | Structure | Returning a non-null value overrides default behavior |
+| [`OnSupplyDropDropped`](#onsupplydropdropped) | Entity | — |
+| [`OnSupplyDropLanded`](#onsupplydroplanded) | Entity | — |
+| [`OnSurveyGather`](#onsurveygather) | Resource | — |
+| [`OnSwitchToggle`](#onswitchtoggle) | Entity | Returning a non-null value cancels default behavior |
+| [`OnSwitchToggled`](#onswitchtoggled) | Entity | — |
+| [`OnTakeCurrencyItem`](#ontakecurrencyitem) | Vending | Returning a non-null value cancels default behavior |
+| [`OnTeamAcceptInvite`](#onteamacceptinvite) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamCreate`](#onteamcreate) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamCreated`](#onteamcreated) | Team | — |
+| [`OnTeamDisband`](#onteamdisband) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamDisbanded`](#onteamdisbanded) | Team | — |
+| [`OnTeamInvite`](#onteaminvite) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamKick`](#onteamkick) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamLeave`](#onteamleave) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamPromote`](#onteampromote) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamRejectInvite`](#onteamrejectinvite) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamUpdate`](#onteamupdate) | Team | Returning a non-null value cancels default behavior |
+| [`OnTeamUpdated`](#onteamupdated) | Team | Returning a non-null value cancels default behavior |
+| [`OnTechTreeNodeUnlock`](#ontechtreenodeunlock) | TechTree | Returning a non-null value overrides default behavior |
+| [`OnTechTreeNodeUnlocked`](#ontechtreenodeunlocked) | TechTree | — |
+| [`OnTerrainInitialized`](#onterraininitialized) | Terrain | — |
+| [`OnThreatLevelUpdate`](#onthreatlevelupdate) | Player | Returning a non-null value cancels default behavior |
+| [`OnTick`](#ontick) | Server | — |
+| [`OnToggleVendingBroadcast`](#ontogglevendingbroadcast) | Vending | — |
+| [`OnTrapArm`](#ontraparm) | Item | Returning a non-null value overrides default behavior |
+| [`OnTrapDisarm`](#ontrapdisarm) | Item | Returning a non-null value overrides default behavior |
+| [`OnTrapSnapped`](#ontrapsnapped) | Item | — |
+| [`OnTrapTrigger`](#ontraptrigger) | Item | Returning a non-null value overrides default behavior |
+| [`OnTreeMarkerHit`](#ontreemarkerhit) | Resource | Returning true or false overrides default behaviour |
+| [`OnTurretAssign`](#onturretassign) | Entity | Returning a non-null value cancels default behavior |
+| [`OnTurretAssigned`](#onturretassigned) | Entity | — |
+| [`OnTurretAuthorize`](#onturretauthorize) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretClearList`](#onturretclearlist) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretDeauthorize`](#onturretdeauthorize) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretModeToggle`](#onturretmodetoggle) | Entity | — |
+| [`OnTurretRotate`](#onturretrotate) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretShutdown`](#onturretshutdown) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretStartup`](#onturretstartup) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretTarget`](#onturrettarget) | Entity | Returning a non-null value overrides default behavior |
+| [`OnTurretToggle`](#onturrettoggle) | Entity | Returning a non-null value overrides default behavior |
+| [`OnUserApprove`](#onuserapprove) | Player | Returning a non-null value overrides default behavior, plugin shoul… |
+| [`OnUserApproved`](#onuserapproved) | Player | — |
+| [`OnUserBanned`](#onuserbanned) | Player | — |
+| [`OnUserChat`](#onuserchat) | Player | Returning true overrides default behavior of chat, not commands |
+| [`OnUserCommand`](#onusercommand) | Player | Returning a non-null value overrides default behavior |
+| [`OnUserConnected`](#onuserconnected) | Player | — |
+| [`OnUserDisconnected`](#onuserdisconnected) | Player | — |
+| [`OnUserGroupAdded`](#onusergroupadded) | Player | — |
+| [`OnUserGroupRemoved`](#onusergroupremoved) | Player | — |
+| [`OnUserKicked`](#onuserkicked) | Player | — |
+| [`OnUserNameUpdated`](#onusernameupdated) | Player | — |
+| [`OnUserPermissionGranted`](#onuserpermissiongranted) | Player | — |
+| [`OnUserPermissionRevoked`](#onuserpermissionrevoked) | Player | — |
+| [`OnUserRespawn`](#onuserrespawn) | Player | — |
+| [`OnUserRespawned`](#onuserrespawned) | Player | — |
+| [`OnUserUnbanned`](#onuserunbanned) | Player | — |
+| [`OnVehicleModuleDeselected`](#onvehiclemoduledeselected) | Vehicle | — |
+| [`OnVehicleModuleMove`](#onvehiclemodulemove) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnVehicleModulesAssign`](#onvehiclemodulesassign) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnVehicleModulesAssigned`](#onvehiclemodulesassigned) | Vehicle | — |
+| [`OnVehicleModuleSelect`](#onvehiclemoduleselect) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnVehicleModuleSelected`](#onvehiclemoduleselected) | Vehicle | — |
+| [`OnVehiclePush`](#onvehiclepush) | Vehicle | Returning a non-null value overrides default behavior |
+| [`OnVendingShopOpened`](#onvendingshopopened) | Vending | — |
+| [`OnVendingShopRename`](#onvendingshoprename) | Vending | Returning a non-null value cancels default behavior |
+| [`OnVendingTransaction`](#onvendingtransaction) | Vending | Returning true or false overrides default behavior |
+| [`OnWaterCollect`](#onwatercollect) | Entity | Returning a non-null value cancels default behavior |
+| [`OnWaterPurified`](#onwaterpurified) | Entity | — |
+| [`OnWaterPurify`](#onwaterpurify) | Entity | Returning a non-null value cancels default behavior |
+| [`OnWeaponFired`](#onweaponfired) | Weapon | — |
+| [`OnWeaponReload`](#onweaponreload) | Weapon | Returning a non-null value overrides default behavior |
+| [`OnWireClear`](#onwireclear) | Entity | Returning a non-null value cancels default behavior |
+| [`OnWireConnect`](#onwireconnect) | Entity | Returning a non-null value cancels default behavior |
+| [`OnWorldPrefabSpawned`](#onworldprefabspawned) | World | — |
+| [`OnWorldProjectileCreate`](#onworldprojectilecreate) | Weapon | Returning a non-null value overrides default behavior |
+| [`Unload`](#unload) | Plugin | — |
+
+---
+
+## Server Hooks
+
+*Process lifecycle, the tick/frame loop, save and restart, RCON and console commands.*
+
+17 hooks: [`Init`](#init), [`OnMessagePlayer`](#onmessageplayer), [`OnServerCommand`](#onservercommand), [`OnServerRestartInterrupt`](#onserverrestartinterrupt), [`OnServerShutdown`](#onservershutdown), [`OnFrame`](#onframe), [`OnServerInformationUpdated`](#onserverinformationupdated), [`OnRconCommand`](#onrconcommand), [`OnPluginLoaded`](#onpluginloaded), [`OnRconConnection`](#onrconconnection), [`OnNewSave`](#onnewsave), [`OnPluginUnloaded`](#onpluginunloaded), [`OnSaveLoad`](#onsaveload), [`OnServerInitialized`](#onserverinitialized), [`OnServerMessage`](#onservermessage), [`OnServerSave`](#onserversave), [`OnTick`](#ontick)
+
+
+
+### `Init`
+
+- Called when a plugin is being initialized
+- Other plugins may or may not be present, dependant on load order
+
+**Returns:** No return behavior
+
+```csharp
+void Init()
+{
+ Puts("Init works!");
+}
+```
+
+uMod last updated 2018-08-20
+
+
+
+### `OnMessagePlayer`
+
+- Useful for intercepting server messages before they get to their intended target
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnMessagePlayer(string message, BasePlayer player)
+{
+ Puts("OnMessagePlayer works!");
+ return null;
+}
+```
+
+Tags: `message`, `server` · uMod last updated 2021-05-08
+
+
+
+### `OnServerCommand`
+
+- Useful for intercepting commands before they get to their intended target
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnServerCommand(ConsoleSystem.Arg arg)
+{
+ Puts("OnServerCommand works!");
+ return null;
+}
+```
+
+Tags: `server` · uMod last updated 2021-05-08
+
+
+
+### `OnServerRestartInterrupt`
+
+- Called when a server restart is being cancelled
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnServerRestartInterrupt()
+{
+ Puts("OnServerRestartInterrupt works!");
+ return null;
+}
+```
+
+Tags: `server` · uMod last updated 2023-04-11
+
+
+
+### `OnServerShutdown`
+
+- Useful for saving something / etc on server shutdown
+
+**Returns:** No return behavior
+
+```csharp
+void OnServerShutdown()
+{
+ Puts("OnServerShutdown works!");
+}
+```
+
+Tags: `server` · uMod last updated 2021-05-08
+
+
+
+### `OnFrame`
+
+- Called each frame
+
+**Returns:** No return behavior
+
+```csharp
+void OnFrame()
+{
+ Puts("OnFrame works!");
+}
+```
+
+Tags: `frame`, `server` · uMod last updated 2021-05-08
+
+
+
+### `OnServerInformationUpdated`
+
+- Called after all steam information for the server has has been updated
+
+**Returns:** No return behavior
+
+```csharp
+void OnServerInformationUpdated()
+{
+ Puts("OnServerInformationUpdated works!");
+}
+```
+
+Tags: `server`, `steam` · uMod last updated 2023-04-11
+
+
+
+### `OnRconCommand`
+
+- Called when an RCON command is run
+
+**Returns:** No return behavior
+
+```csharp
+void OnRconCommand(IPAddress ip, string command, string[] args)
+{
+ Puts("OnRconCommand works!");
+}
+```
+
+Tags: `rcon`, `server` · uMod last updated 2021-05-08
+
+
+
+### `OnPluginLoaded`
+
+- Called when any plugin has been loaded
+- Not to be confused with [`Loaded`](#loaded)
+
+**Returns:** No return behavior
+
+```csharp
+void OnPluginLoaded(Plugin plugin)
+{
+ Puts($"Plugin '{plugin.Name}' has been loaded");
+}
+```
+
+Tags: `plugin`, `server` · uMod last updated 2023-12-25
+
+
+
+### `OnRconConnection`
+
+- Called when a new RCON connection is opened
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRconConnection(IPAddress ip)
+{
+ Puts("OnRconConnection works!");
+ return null;
+}
+```
+
+Tags: `rcon`, `server` · uMod last updated 2021-05-08
+
+
+
+### `OnNewSave`
+
+- Called when a new savefile is created (usually when map has wiped)
+
+**Returns:** No return behavior
+
+```csharp
+void OnNewSave(string filename)
+{
+ Puts("OnNewSave works!");
+}
+```
+
+Tags: `server` · uMod last updated 2021-05-08
+
+
+
+### `OnPluginUnloaded`
+
+- Called when any plugin has been unloaded
+- Not to be confused with [`Unload`](#unload)
+
+**Returns:** No return behavior
+
+```csharp
+void OnPluginUnloaded(Plugin plugin)
+{
+ Puts($"Plugin '{plugin.Name}' has been unloaded");
+}
+```
+
+Tags: `plugin`, `server` · uMod last updated 2023-12-25
+
+
+
+### `OnSaveLoad`
+
+- Called when a save file is loaded
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnSaveLoad(Dictionary entities)
+{
+ Puts("OnSaveLoad works!");
+ return null;
+}
+```
+
+Tags: `save`, `server` · uMod last updated 2021-05-08
+
+
+
+### `OnServerInitialized`
+
+- Called after the server startup has been completed and is awaiting connections
+- Also called for plugins that are hotloaded while the server is already started running
+- Boolean parameter, false if called on plugin hotload and true if called on server initialization
+
+**Returns:** No return behavior
+
+```csharp
+void OnServerInitialized(bool initial)
+{
+ Puts("OnServerInitialized works!");
+}
+```
+
+Tags: `server` · uMod last updated 2021-05-08
+
+
+
+### `OnServerMessage`
+
+- Called before a SERVER message is sent to a player
+
+**Returns:** Return a non-null value to stop message from being sent
+
+```csharp
+// Example that stops message from being sent
+
+object OnServerMessage(string message, string playerName, string color, ulong playerId)
+{
+ if (message.Contains("gave"))
+ {
+ Puts($"Message to {playerName} ({playerId}) cancelled");
+ return false;
+ }
+
+ return null;
+}
+```
+
+```csharp
+// Example that does not stop message from being sent
+
+void OnServerMessage(string message, string playerName, string color, ulong playerId)
+{
+ Puts($"{playerName} ({playerId}) was sent message: {message}");
+}
+```
+
+Tags: `server` · uMod last updated 2022-01-28
+
+
+
+### `OnServerSave`
+
+- Called before the server saves
+
+**Returns:** No return behavior
+
+```csharp
+void OnServerSave()
+{
+ Puts("OnServerSave works!");
+}
+```
+
+Tags: `server` · uMod last updated 2021-05-08
+
+
+
+### `OnTick`
+
+- Called every tick (defined by the tick rate of the server)
+- For better performance, avoid using heavy calculations in this hook.
+
+**Returns:** No return behavior
+
+```csharp
+void OnTick()
+{
+ Puts("OnTick works!");
+}
+```
+
+Tags: `tick`, `server` · uMod last updated 2021-05-08
+
+---
+
+## Player Hooks
+
+*Everything a connected human does: connect, chat, command, craft, loot, build, die, respawn. The largest surface alongside Entity.*
+
+138 hooks: [`CanAffordToPlace`](#canaffordtoplace), [`CanAffordUpgrade`](#canaffordupgrade), [`CanAssignBed`](#canassignbed), [`CanDeployItem`](#candeployitem), [`CanLock`](#canlock), [`CanPushBoat`](#canpushboat), [`CanSpectateTarget`](#canspectatetarget), [`CanUpdateSign`](#canupdatesign), [`CanUseWires`](#canusewires), [`OnActiveItemChange`](#onactiveitemchange), [`OnActiveItemChanged`](#onactiveitemchanged), [`OnBroadcastCommand`](#onbroadcastcommand), [`OnMapMarkerAdd`](#onmapmarkeradd), [`OnMapMarkerAdded`](#onmapmarkeradded), [`OnMapMarkerRemove`](#onmapmarkerremove), [`OnMapMarkersClear`](#onmapmarkersclear), [`OnMapMarkersCleared`](#onmapmarkerscleared), [`OnMeleeAttack`](#onmeleeattack), [`OnPayForPlacement`](#onpayforplacement), [`OnPayForUpgrade`](#onpayforupgrade), [`OnPlayerAssist`](#onplayerassist), [`OnPlayerCommand`](#onplayercommand), [`OnPlayerCorpse`](#onplayercorpse), [`OnPlayerCorpseSpawn`](#onplayercorpsespawn), [`OnPlayerCorpseSpawned`](#onplayercorpsespawned), [`OnPlayerKeepAlive`](#onplayerkeepalive), [`OnPlayerRecovered`](#onplayerrecovered), [`OnPlayerReported`](#onplayerreported), [`OnPlayerRevive`](#onplayerrevive), [`OnPlayerSetInfo`](#onplayersetinfo), [`OnSendCommand`](#onsendcommand), [`OnUserChat`](#onuserchat), [`OnUserCommand`](#onusercommand), [`OnUserRespawn`](#onuserrespawn), [`OnUserRespawned`](#onuserrespawned), [`OnUserConnected`](#onuserconnected), [`OnUserDisconnected`](#onuserdisconnected), [`CanBeTargeted`](#canbetargeted), [`CanBeWounded`](#canbewounded), [`CanBuild`](#canbuild), [`CanBypassQueue`](#canbypassqueue), [`CanChangeCode`](#canchangecode), [`CanChangeGrade`](#canchangegrade), [`CanCraft`](#cancraft), [`CanClientLogin`](#canclientlogin), [`CanDemolish`](#candemolish), [`CanHackCrate`](#canhackcrate), [`CanUserLogin`](#canuserlogin), [`OnUserApproved`](#onuserapproved), [`CanDismountEntity`](#candismountentity), [`OnUserNameUpdated`](#onusernameupdated), [`CanEquipItem`](#canequipitem), [`OnUserGroupAdded`](#onusergroupadded), [`OnUserGroupRemoved`](#onusergroupremoved), [`OnExperimentStart`](#onexperimentstart), [`OnExperimentStarted`](#onexperimentstarted), [`OnUserPermissionGranted`](#onuserpermissiongranted), [`OnUserPermissionRevoked`](#onuserpermissionrevoked), [`OnExperimentEnd`](#onexperimentend), [`OnExperimentEnded`](#onexperimentended), [`OnUserKicked`](#onuserkicked), [`CanHideStash`](#canhidestash), [`OnUserBanned`](#onuserbanned), [`CanLootEntity`](#canlootentity), [`CanLootPlayer`](#canlootplayer), [`CanMountEntity`](#canmountentity), [`OnUserUnbanned`](#onuserunbanned), [`CanPickupEntity`](#canpickupentity), [`CanPickupLock`](#canpickuplock), [`CanRenameBed`](#canrenamebed), [`CanResearchItem`](#canresearchitem), [`CanUseLockedEntity`](#canuselockedentity), [`CanSeeStash`](#canseestash), [`OnStashExposed`](#onstashexposed), [`OnStashHidden`](#onstashhidden), [`CanSetBedPublic`](#cansetbedpublic), [`CanUnlock`](#canunlock), [`CanUseMailbox`](#canusemailbox), [`CanUseUI`](#canuseui), [`CanWearItem`](#canwearitem), [`OnClientAuth`](#onclientauth), [`OnDestroyUI`](#ondestroyui), [`OnFindSpawnPoint`](#onfindspawnpoint), [`OnLootEntity`](#onlootentity), [`OnLootEntityEnd`](#onlootentityend), [`OnLootItem`](#onlootitem), [`OnLootPlayer`](#onlootplayer), [`OnPlayerAttack`](#onplayerattack), [`OnPlayerBanned`](#onplayerbanned), [`OnPlayerChat`](#onplayerchat), [`OnPlayerConnected`](#onplayerconnected), [`OnPlayerDeath`](#onplayerdeath), [`OnPlayerDisconnected`](#onplayerdisconnected), [`OnPlayerDropActiveItem`](#onplayerdropactiveitem), [`OnPlayerHealthChange`](#onplayerhealthchange), [`OnPlayerInput`](#onplayerinput), [`OnPlayerKicked`](#onplayerkicked), [`OnPlayerLand`](#onplayerland), [`OnPlayerLanded`](#onplayerlanded), [`OnPlayerLootEnd`](#onplayerlootend), [`OnPlayerMetabolize`](#onplayermetabolize), [`OnPlayerRecover`](#onplayerrecover), [`OnPlayerRespawn`](#onplayerrespawn), [`OnPlayerRespawned`](#onplayerrespawned), [`OnRespawnInformationGiven`](#onrespawninformationgiven), [`OnPlayerSleep`](#onplayersleep), [`OnPlayerSleepEnded`](#onplayersleepended), [`OnPlayerSpawn`](#onplayerspawn), [`OnPlayerSpectate`](#onplayerspectate), [`OnPlayerSpectateEnd`](#onplayerspectateend), [`OnPlayerTick`](#onplayertick), [`OnPlayerViolation`](#onplayerviolation), [`OnPlayerVoice`](#onplayervoice), [`OnPlayerWound`](#onplayerwound), [`OnRunPlayerMetabolism`](#onrunplayermetabolism), [`OnUserApprove`](#onuserapprove), [`OnDefaultItemsReceive`](#ondefaultitemsreceive), [`OnDefaultItemsReceived`](#ondefaultitemsreceived), [`OnAnalysisComplete`](#onanalysiscomplete), [`OnNpcConversationStart`](#onnpcconversationstart), [`OnNpcConversationRespond`](#onnpcconversationrespond), [`OnNpcConversationEnded`](#onnpcconversationended), [`OnNpcConversationResponded`](#onnpcconversationresponded), [`OnNetworkGroupEntered`](#onnetworkgroupentered), [`OnNetworkGroupLeft`](#onnetworkgroupleft), [`OnDemoRecordingStart`](#ondemorecordingstart), [`OnDemoRecordingStarted`](#ondemorecordingstarted), [`OnDemoRecordingStop`](#ondemorecordingstop), [`OnDemoRecordingStopped`](#ondemorecordingstopped), [`OnLootNetworkUpdate`](#onlootnetworkupdate), [`OnInventoryNetworkUpdate`](#oninventorynetworkupdate), [`OnPlayerAddModifiers`](#onplayeraddmodifiers), [`OnThreatLevelUpdate`](#onthreatlevelupdate), [`CanUseGesture`](#canusegesture), [`OnCentralizedBanCheck`](#oncentralizedbancheck), [`OnClientCommand`](#onclientcommand), [`OnCorpsePopulate`](#oncorpsepopulate), [`CanSetRelationship`](#cansetrelationship)
+
+
+
+### `CanAffordToPlace`
+
+- Useful for ignoring resource requirements for placement
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanAffordToPlace(BasePlayer player, Planner planner, Construction construction)
+{
+ Puts("CanAffordToPlace works!");
+ return false;
+}
+```
+
+Tags: `afford`, `player` · uMod last updated 2022-01-17
+
+
+
+### `CanAffordUpgrade`
+
+- Called when the resources for an upgrade are checked
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanAffordUpgrade(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade)
+{
+ Puts("CanAffordUpgrade works!");
+ return true;
+}
+```
+
+Tags: `player` · uMod last updated 2022-01-19
+
+
+
+### `CanAssignBed`
+
+- Called when a player attempts to assign a bed or sleeping bag to another player
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanAssignBed(BasePlayer player, SleepingBag bag, ulong targetPlayerId)
+{
+ Puts("CanAssignBed works!");
+ return null;
+}
+```
+
+Tags: `assign`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanDeployItem`
+
+- Useful for denying items' deployment
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanDeployItem(BasePlayer player, Deployer deployer, NetworkableId entityId)
+{
+ Puts("CanDeployItem works!");
+ return null;
+}
+```
+
+Tags: `deploy`, `player` · uMod last updated 2023-05-04
+
+
+
+### `CanLock`
+
+- Useful for canceling the lock action
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanLock(BasePlayer player, BaseLock baseLock)
+{
+ Puts("CanLock works!");
+ return null;
+}
+```
+
+Tags: `lock`, `player` · uMod last updated 2021-08-14
+
+
+
+### `CanPushBoat`
+
+- Useful for canceling boat push
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanPushBoat(BasePlayer player, MotorRowboat boat)
+{
+ Puts("CanPushBoat works!");
+ return null;
+}
+```
+
+Tags: `push`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanSpectateTarget`
+
+- Called when spectate target is attempting to update
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanSpectateTarget(BasePlayer player, string filter)
+{
+ Puts($"{player.displayName} tries to spectate with a filter: {filter}");
+ return null;
+}
+```
+
+Tags: `spectate`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUpdateSign`
+
+- Called when the player attempts to change the text on a sign or lock it, or update a photo frame
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanUpdateSign(BasePlayer player, Signage sign)
+{
+ Puts("CanUpdateSign works!");
+ return true;
+}
+```
+
+```csharp
+bool CanUpdateSign(BasePlayer player, PhotoFrame photoFrame)
+{
+ Puts("CanUpdateSign works!");
+ return true;
+}
+```
+
+Tags: `update`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUseWires`
+
+- Useful for allowing or preventing a player from using wires
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanUseWires(BasePlayer player)
+{
+ Puts($"{player.displayName} has just tried to use wires");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnActiveItemChange`
+
+- Called when active item is attempting to update
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnActiveItemChange(BasePlayer player, Item oldItem, ItemId newItemId)
+{
+ Puts("OnActiveItemChange works!");
+ return null;
+}
+```
+
+Tags: `active`, `player` · uMod last updated 2023-05-04
+
+
+
+### `OnActiveItemChanged`
+
+- Called when active item was changed
+
+**Returns:** No return behavior
+
+```csharp
+void OnActiveItemChanged(BasePlayer player, Item oldItem, Item newItem)
+{
+ Puts("OnActiveItemChanged works!");
+}
+```
+
+Tags: `active`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnBroadcastCommand`
+
+- Called before a command is broadcasted to all connected clients
+
+**Returns:** Returning a non-null value overwrites command arguments
+
+```csharp
+object OnBroadcastCommand(string command, object[] args)
+{
+ Puts("OnBroadcastCommand works!");
+ return null;
+}
+```
+
+Tags: `broadcast`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnMapMarkerAdd`
+
+- Called when trying to add a marker
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnMapMarkerAdd(BasePlayer player, MapNote note)
+{
+ Puts("OnMapMarkerAdd works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnMapMarkerAdded`
+
+- Called after a marker was added
+
+**Returns:** No return behavior
+
+```csharp
+void OnMapMarkerAdded(BasePlayer player, MapNote note)
+{
+ Puts("OnMapMarkerAdded works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnMapMarkerRemove`
+
+- Called when trying to remove a marker
+
+**Returns:** Returning a non-null value cancels default behaviour
+
+```csharp
+object OnMapMarkerRemove(BasePlayer player, MapNote note)
+{
+ Puts("OnMapMarkerRemove works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnMapMarkersClear`
+
+- Called when trying to clear map markers
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnMapMarkersClear(BasePlayer player, List notes)
+{
+ Puts("OnMapMarkersClear works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnMapMarkersCleared`
+
+- Called after markers were cleared
+
+**Returns:** No return behavior
+
+```csharp
+void OnMapMarkersCleared(BasePlayer player, List notes)
+{
+ Puts("OnMapMarkersCleared works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnMeleeAttack`
+
+- Useful for canceling melee attacks
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnMeleeAttack(BasePlayer player, HitInfo info)
+{
+ Puts("OnMeleeAttack works!");
+ return null;
+}
+```
+
+Tags: `melee`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPayForPlacement`
+
+- Called when a player is paying for placement. Useful for preventing paying for placing deployables, building blocks and etc
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnPayForPlacement(BasePlayer player, Planner planner, Construction construction)
+{
+ Puts("OnPayForPlacement works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPayForUpgrade`
+
+- Called when player is paying for an upgrade. Useful for preventing paying for block upgrade
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnPayForUpgrade(BasePlayer player, BuildingBlock block, ConstructionGrade gradeTarget)
+{
+ Puts("OnPayForUpgrade works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerAssist`
+
+- Called when a player tries to assist target player (when target is wounded)
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnPlayerAssist(BasePlayer target, BasePlayer player)
+{
+ Puts("OnPlayerAssist works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerCommand`
+
+- Useful for intercepting players' commands before their handling
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerCommand(BasePlayer player, string command, string[] args)
+{
+ Puts("OnPlayerCommand works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-08-05
+
+
+
+### `OnPlayerCorpse`
+
+- Called when a non-null corpse has just been spawned
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerCorpse(BasePlayer player, BaseCorpse corpse)
+{
+ Puts($"A corpse for {player.displayName} has just been spawned!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerCorpseSpawn`
+
+- Called when a non-null corpse is about to spawn
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerCorpseSpawn(BasePlayer player)
+{
+ Puts("OnPlayerCorpseSpawn works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerCorpseSpawned`
+
+- Called when a non-null corpse has just been spawned
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerCorpseSpawned(BasePlayer player, PlayerCorpse corpse)
+{
+ Puts("OnPlayerCorpseSpawned works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerKeepAlive`
+
+- Called before a player is kept alive (Example: You started "helping" player, it keeps him alive for at least 10 seconds more to be sure he won't die until you finish picking him up)
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnPlayerKeepAlive(BasePlayer player, BasePlayer target)
+{
+ Puts("OnPlayerKeepAlive works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerRecovered`
+
+- Called when the player was recovered
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerRecovered(BasePlayer player)
+{
+ Puts("OnPlayerRecovered works!");
+}
+```
+
+Tags: `player` · uMod last updated 2022-01-24
+
+
+
+### `OnPlayerReported`
+
+- Called when a player has reported someone via F7
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerReported(BasePlayer reporter, string targetName, string targetId, string subject, string message, string type)
+{
+ Puts($"{reporter.displayName} reported {targetName} for {subject}.");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerRevive`
+
+- Called before the recover after reviving with a medical tool
+- Useful for canceling the reviving
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnPlayerRevive(BasePlayer reviver, BasePlayer player)
+{
+ Puts($"{reviver.displayName} revived {player.displayName}");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2022-01-24
+
+
+
+### `OnPlayerSetInfo`
+
+- Called when setting player's information *(aka console variables)*
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerSetInfo(Connection connection, string key, string value)
+{
+ Puts($"{connection.userid}: {key} was set to {value}");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnSendCommand`
+
+- Called before a command is sent from the server to a player (or a group of players)
+- Usually commands aren't sent to a group of players, so in most cases it's safe to use only OnSendCommand with a single Connection.
+
+**Returns:** Returning a non-null value overwrites command arguments
+
+```csharp
+object OnSendCommand(List connections, string command, object[] args)
+{
+ Puts("OnSendCommand works!");
+ return null;
+}
+
+object OnSendCommand(Connection connection, string command, object[] args)
+{
+ Puts("OnSendCommand works!");
+ return null;
+}
+```
+
+Tags: `send`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserChat`
+
+- Called when a player sends a chat message to the server
+
+**Returns:** Returning true overrides default behavior of chat, not commands
+
+```csharp
+object OnUserChat(IPlayer player, string message)
+{
+ Puts($"{player.Name} said: {message}");
+ return null;
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserCommand`
+
+- Useful for intercepting players' commands before their handling
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnUserCommand(IPlayer player, string command, string[] args)
+{
+ Puts("OnUserCommand works!");
+ return null;
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-08-05
+
+
+
+### `OnUserRespawn`
+
+- Called when a player is respawning
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserRespawn(IPlayer player)
+{
+ Puts("OnUserRespawn works!");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2022-01-25
+
+
+
+### `OnUserRespawned`
+
+- Called after a player has respawned
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserRespawned(IPlayer player)
+{
+ Puts("OnUserRespawned works!");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2022-01-25
+
+
+
+### `OnUserConnected`
+
+- Called after a player has been approved and has connected to the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserConnected(IPlayer player)
+{
+ Puts($"{player.Name} ({player.Id}) connected from {player.Address}");
+
+ if (player.IsAdmin)
+ {
+ Puts($"{player.Name} ({player.Id}) is admin");
+ }
+
+ Puts($"{player.Name} is {(player.IsBanned ? "banned" : "not banned")}");
+
+ server.Broadcast($"Welcome {player.Name} to {server.Name}!");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserDisconnected`
+
+- Called after a player has disconnected from the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserDisconnected(IPlayer player)
+{
+ Puts($"{player.Name} ({player.Id}) disconnected");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanBeTargeted`
+
+- Called when an autoturret, flame turret, shotgun trap, or helicopter turret is attempting to target the player
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanBeTargeted(BaseCombatEntity player, MonoBehaviour behaviour)
+{
+ Puts("CanBeTargeted works!");
+ return true;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanBeWounded`
+
+- Called when any damage is attempted on player
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanBeWounded(BasePlayer player, HitInfo info)
+{
+ Puts("CanBeWounded works!");
+ return true;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanBuild`
+
+- Called when the player tries to build something
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanBuild(Planner planner, Construction prefab, Construction.Target target)
+{
+ Puts("CanBuild works!");
+ return null;
+}
+```
+
+Tags: `build`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanBypassQueue`
+
+- Called before the player is added to the connection queue
+
+**Returns:** Returning true will bypass the queue, returning nothing will by default queue the player
+
+```csharp
+bool CanBypassQueue(Network.Connection connection)
+{
+ Puts("CanBypassQueue works!");
+ return true;
+}
+```
+
+Tags: `bypass`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanChangeCode`
+
+- Called when a player tries to change the code on a codelock
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanChangeCode(BasePlayer player, CodeLock codeLock, string newCode, bool isGuestCode)
+{
+ Puts("CanChangeCode works!");
+ return null;
+}
+```
+
+Tags: `change`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanChangeGrade`
+
+- Called when a player tries to change a building grade
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanChangeGrade(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade)
+{
+ Puts("CanChangeGrade works!");
+ return true;
+}
+```
+
+Tags: `change`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanCraft`
+
+- Called when the player attempts to craft an item
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanCraft(ItemCrafter itemCrafter, ItemBlueprint bp, int amount)
+{
+ Puts("CanCraft works!");
+ return true;
+}
+```
+
+```csharp
+bool CanCraft(PlayerBlueprints playerBlueprints, ItemDefinition itemDefinition, int skinItemId)
+{
+ Puts("CanCraft works!");
+ return true;
+}
+```
+
+Tags: `craft`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanClientLogin`
+
+- Called when the player is attempting to login
+
+**Returns:** Returning a string will use the string as the error message
+
+**Returns:** Returning true allows the connection, returning nothing will by default allow the connection, returning anything else will reject it with an error message
+
+```csharp
+object CanClientLogin(Network.Connection connection)
+{
+ Puts("CanClientLogin works!");
+ return true;
+}
+```
+
+Tags: `client`, `player` · uMod last updated 2022-09-28
+
+
+
+### `CanDemolish`
+
+- Called when a player tries to demolish a building block
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanDemolish(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade)
+{
+ Puts("CanDemolish works!");
+ return true;
+}
+```
+
+Tags: `demolish`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanHackCrate`
+
+- Called when a player starts hacking a locked crate
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanHackCrate(BasePlayer player, HackableLockedCrate crate)
+{
+ Puts("CanHackCrate works!");
+ return null;
+}
+```
+
+Tags: `hack`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUserLogin`
+
+- Called when a player is attempting to connect to the server
+
+**Returns:** Returning a string will kick the user with this reason. Returning a non-null value overrides default behavior
+
+```csharp
+object CanUserLogin(string name, string id, string ipAddress)
+{
+ if (name.ToLower().Contains("admin"))
+ {
+ Puts($"{name} ({id}) at {ipAddress} tried to connect with 'admin' in name");
+ return "Sorry, your name cannot have 'admin' in it";
+ }
+
+ return true;
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserApproved`
+
+- Called after a player is approved to connect to the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserApproved(string name, string id, string ipAddress)
+{
+ Puts($"{name} ({id}) at {ipAddress} has been approved to connect");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanDismountEntity`
+
+- Called when the player attempts to dismount an entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanDismountEntity(BasePlayer player, BaseMountable entity)
+{
+ Puts("CanDismountEntity works!");
+ return null;
+}
+```
+
+Tags: `dismount`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserNameUpdated`
+
+- Called when a player's stored nickname has been changed
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserNameUpdated(string id, string oldName, string newName)
+{
+ Puts($"Player name changed from {oldName} to {newName} for ID {id}");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanEquipItem`
+
+- Called when the player attempts to equip an item
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanEquipItem(PlayerInventory inventory, Item item, int targetPos)
+{
+ Puts("CanEquipItem works!");
+ return true;
+}
+```
+
+Tags: `equip`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserGroupAdded`
+
+- Called when a player has been added to a group
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserGroupAdded(string id, string groupName)
+{
+ Puts($"Player '{id}' added to group: {groupName}");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserGroupRemoved`
+
+- Called when a player has been removed from a group
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserGroupRemoved(string id, string groupName)
+{
+ Puts($"Player '{id}' removed from group: {groupName}");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnExperimentStart`
+
+- Called when the player attempts to experiment with at a workbench
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnExperimentStart(Workbench workbench, BasePlayer player)
+{
+ Puts("OnExperimentStart works!");
+ return null;
+}
+```
+
+Tags: `experiment`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnExperimentStarted`
+
+- Called after the experimentation has started
+
+**Returns:** No return behaviour
+
+```csharp
+void OnExperimentStarted(Workbench workbench, BasePlayer player)
+{
+ Puts("OnExperimentStarted works!");
+}
+```
+
+Tags: `experiment`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserPermissionGranted`
+
+- Called when a permission has been granted to a player
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserPermissionGranted(string id, string permName)
+{
+ Puts($"Player '{id}' granted permission: {permName}");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserPermissionRevoked`
+
+- Called when a permission has been revoked from a player
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserPermissionRevoked(string id, string permName)
+{
+ Puts($"Player '{id}' revoked permission: {permName}");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnExperimentEnd`
+
+- Called when an experiment is about to end
+
+**Returns:** Returning a non-null value overrides defualt behaviour.
+
+```csharp
+object OnExperimentEnd(Workbench workbench)
+{
+ Puts("OnExperimentEnd works!");
+ return null;
+}
+```
+
+Tags: `experiment`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnExperimentEnded`
+
+- Called after the experiment has finished
+
+**Returns:** No return behaviour
+
+```csharp
+void OnExperimentEnded(Workbench workbench)
+{
+ Puts("OnExperimentEnded works!");
+}
+```
+
+Tags: `experiment`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserKicked`
+
+- Called when a player has been kicked from the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserKicked(IPlayer player, string reason)
+{
+ Puts($"Player {player.Name} ({player.Id}) was kicked");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanHideStash`
+
+- Called when a player tries to hide a stash
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanHideStash(BasePlayer player, StashContainer stash)
+{
+ Puts("CanHideStash works!");
+ return null;
+}
+```
+
+Tags: `hide`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserBanned`
+
+- Called when a player has been banned from the server
+- Will have reason available if provided
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserBanned(string name, string id, string ipAddress, string reason)
+{
+ Puts($"Player {name} ({id}) at {ipAddress} was banned: {reason}");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanLootEntity`
+
+- Called when the player starts looting a DroppedItemContainer, LootableCorpse, ResourceContainer, BaseRidableAnimal, or StorageContainer entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanLootEntity(BasePlayer player, DroppedItemContainer container)
+{
+ Puts("CanLootEntity works!");
+ return null;
+}
+```
+```csharp
+object CanLootEntity(BasePlayer player, LootableCorpse corpse)
+{
+ Puts("CanLootEntity works!");
+ return null;
+}
+```
+```csharp
+object CanLootEntity(BasePlayer player, ResourceContainer container)
+{
+ Puts("CanLootEntity works!");
+ return null;
+}
+```
+```csharp
+object CanLootEntity(BasePlayer player, BaseRidableAnimal animal)
+{
+ Puts("CanLootEntity works!");
+ return null;
+}
+```
+```csharp
+object CanLootEntity(BasePlayer player, StorageContainer container)
+{
+ Puts("CanLootEntity works!");
+ return null;
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanLootPlayer`
+
+- Called when the player attempts to loot another player
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanLootPlayer(BasePlayer target, BasePlayer looter)
+{
+ Puts("CanLootPlayer works!");
+ return true;
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanMountEntity`
+
+- Called when the player attempts to mount an entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanMountEntity(BasePlayer player, BaseMountable entity)
+{
+ Puts("CanMountEntity works!");
+ return null;
+}
+```
+
+Tags: `mount`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserUnbanned`
+
+- Called when a player has been unbanned from the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnUserUnbanned(string name, string id, string ipAddress)
+{
+ Puts($"Player {name} ({id}) at {ipAddress} was unbanned");
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanPickupEntity`
+
+- Called when a player attempts to pickup a deployed entity (AutoTurret, BaseMountable, BearTrap, DecorDeployable, Door, DoorCloser, ReactiveTarget, SamSite, SleepingBag, SpinnerWheel, StorageContainer, etc.)
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanPickupEntity(BasePlayer player, BaseEntity entity)
+{
+ Puts("CanPickupEntity works!");
+ return true;
+}
+```
+
+Tags: `pickup`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanPickupLock`
+
+- Called when a player attempts to pickup a lock
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanPickupLock(BasePlayer player, BaseLock baseLock)
+{
+ Puts("CanPickupLock works!");
+ return true;
+}
+```
+
+Tags: `pickup`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanRenameBed`
+
+- Called when the player attempts to rename a bed or sleeping bag
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanRenameBed(BasePlayer player, SleepingBag bed, string bedName)
+{
+ Puts("CanRenameBed works!");
+ return null;
+}
+```
+
+Tags: `rename`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanResearchItem`
+
+- Called when the player attempts to research an item
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanResearchItem(BasePlayer player, Item targetItem)
+{
+ Puts("CanResearchItem works!");
+ return null;
+}
+```
+
+Tags: `research`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUseLockedEntity`
+
+- Called when the player tries to use an entity that is locked
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanUseLockedEntity(BasePlayer player, BaseLock baseLock)
+{
+ Puts("CanUseLockedEntity works!");
+ return true;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanSeeStash`
+
+- Called when a player is looking at a hidden stash
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanSeeStash(BasePlayer player, StashContainer stash)
+{
+ Puts("CanSeeStash works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnStashExposed`
+
+- Called when a player reveals a hidden stash
+
+**Returns:** No return behavior
+
+```csharp
+void OnStashExposed(StashContainer stash, BasePlayer player)
+{
+ Puts("OnStashExposed works");
+}
+```
+
+Tags: `stash`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnStashHidden`
+
+- Called when a player hides a stash
+
+**Returns:** No return behavior
+
+```csharp
+void OnStashHidden(StashContainer stash, BasePlayer player)
+{
+ Puts("OnStashHidden works!");
+}
+```
+
+Tags: `stash`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanSetBedPublic`
+
+- Called when a player tries to set a bed public
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanSetBedPublic(BasePlayer player, SleepingBag bed)
+{
+ Puts("CanSetBedPublic works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUnlock`
+
+- Called when the player tries to unlock a keylock or codelock
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanUnlock(BasePlayer player, BaseLock baseLock)
+{
+ Puts("CanUnlock works!");
+ return null;
+}
+```
+
+Tags: `unlock`, `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUseMailbox`
+
+- Called when the player tries to use a mailbox
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanUseMailbox(BasePlayer player, Mailbox mailbox)
+{
+ Puts("CanUseMailbox works!");
+ return true;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUseUI`
+
+- Called when the player attempts to use a custom UI
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanUseUI(BasePlayer player, string json)
+{
+ Puts("CanUseUI works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanWearItem`
+
+- Called when the player attempts to equip an item
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanWearItem(PlayerInventory inventory, Item item, int targetSlot)
+{
+ Puts("CanWearItem works!");
+ return null;
+}
+```
+
+Tags: `wear`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnClientAuth`
+
+- Called when the player is giving server connection authorization information
+
+**Returns:** No return behavior
+
+```csharp
+void OnClientAuth(Connection connection)
+{
+ Puts("OnClientAuth works!");
+}
+```
+
+Tags: `client`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDestroyUI`
+
+- Called when a custom UI is destroyed for the player
+
+**Returns:** No return behavior
+
+```csharp
+void OnDestroyUI(BasePlayer player, string json)
+{
+ Puts("OnDestroyUI works!");
+}
+```
+
+Tags: `destroy`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnFindSpawnPoint`
+
+- Useful for controlling player spawnpoints (like making all spawns occur in a set area)
+
+**Returns:** Return a BasePlayer.SpawnPoint object to use that spawnpoint
+
+```csharp
+void OnFindSpawnPoint(BasePlayer player)
+{
+ Puts("OnFindSpawnPoint works!");
+}
+```
+
+Tags: `find`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnLootEntity`
+
+- Called when the player starts looting an entity
+
+**Returns:** No return behavior
+
+```csharp
+void OnLootEntity(BasePlayer player, BaseEntity entity)
+{
+ Puts("OnLootEntity works!");
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnLootEntityEnd`
+
+- Called when the player stops looting an entity
+
+**Returns:** No return behavior
+
+```csharp
+void OnLootEntityEnd(BasePlayer player, BaseCombatEntity entity)
+{
+ Puts("OnLootEntityEnd works!");
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnLootItem`
+
+- Called when the player starts looting an item
+
+**Returns:** No return behavior
+
+```csharp
+void OnLootItem(PlayerLoot playerLoot, Item item)
+{
+ Puts("OnLootItem works!");
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-06-24
+
+
+
+### `OnLootPlayer`
+
+- Called when the player starts looting another player
+
+**Returns:** No return behavior
+
+```csharp
+void OnLootPlayer(BasePlayer player, BasePlayer target)
+{
+ Puts("OnLootPlayer works!");
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerAttack`
+
+- Useful for modifying an attack before it goes out
+- hitInfo.HitEntity should be the entity that this attack would hit
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerAttack(BasePlayer attacker, HitInfo info)
+{
+ Puts("OnPlayerAttack works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-12-03
+
+
+
+### `OnPlayerBanned`
+
+- Called when the player is banned (Facepunch, EAC, server ban, etc.)
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerBanned(string name, ulong id, string address, string reason)
+{
+ Puts("OnPlayerBanned works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerChat`
+
+- Called when the player sends chat to the server
+
+**Returns:** Returning a non-null value overrides default behavior of chat, not commands
+
+```csharp
+object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel)
+{
+ Puts("OnPlayerChat works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerConnected`
+
+- Called after the player object is created, but before the player has spawned
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerConnected(BasePlayer player)
+{
+ Puts("OnPlayerConnected works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerDeath`
+
+- Called when the player is about to die
+- HitInfo may be null sometimes
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerDeath(BasePlayer player, HitInfo info)
+{
+ Puts("OnPlayerDeath works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerDisconnected`
+
+- Called after the player has disconnected from the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerDisconnected(BasePlayer player, string reason)
+{
+ Puts("OnPlayerDisconnected works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerDropActiveItem`
+
+- Called when the player drops their active held item
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerDropActiveItem(BasePlayer player, Item item)
+{
+ Puts("OnPlayerDropActiveItem works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerHealthChange`
+
+- Called just before the player's health changes
+
+**Returns:** Returning a non-null value cancels the health change
+
+```csharp
+object OnPlayerHealthChange(BasePlayer player, float oldValue, float newValue)
+{
+ Puts("OnPlayerHealthChange works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerInput`
+
+- Called when input is received from a connected client
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerInput(BasePlayer player, InputState input)
+{
+ Puts("OnPlayerInput works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerKicked`
+
+- Called after the player is kicked from the server
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerKicked(BasePlayer player, string reason)
+{
+ Puts("OnPlayerKicked works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerLand`
+
+- Called just before the player lands on the ground
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerLand(BasePlayer player, float num)
+{
+ Puts("OnPlayerLand works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerLanded`
+
+- Called when the player landed on the ground
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerLanded(BasePlayer player, float num)
+{
+ Puts("OnPlayerLanded works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerLootEnd`
+
+- Called when the player stops looting
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerLootEnd(PlayerLoot inventory)
+{
+ Puts("OnPlayerLootEnd works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerMetabolize`
+
+- Called after the player's metabolism has been changed
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerMetabolize(PlayerMetabolism metabolism, BaseCombatEntity entity, float delta)
+{
+ Puts("OnPlayerMetabolize works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerRecover`
+
+- Called when the player is about to recover from the 'wounded' state
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerRecover(BasePlayer player)
+{
+ Puts("OnPlayerRecover works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerRespawn`
+
+- Called when a player is attempting to respawn
+
+**Returns:** Returning a BasePlayer.SpawnPoint (takes a position and rotation), overrides the respawn location, for the variant that receives a BasePlayer.SpawnPoint argument
+
+**Returns:** Returning a SleepingBag overrides the respawn location, for the variant that receives a SleepingBag argument
+
+```csharp
+object OnPlayerRespawn(BasePlayer player, BasePlayer.SpawnPoint spawnPoint)
+{
+ Puts("OnPlayerRespawn works!");
+ return null;
+}
+```
+
+```csharp
+object OnPlayerRespawn(BasePlayer player, SleepingBag sleepingBag)
+{
+ Puts("OnPlayerRespawn works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2023-08-04
+
+
+
+### `OnPlayerRespawned`
+
+- Called when the player has respawned (specifically when they click the "Respawn" button)
+- ONLY called after the player has transitioned from dead to not-dead, so not when they're waking up
+- This means it's possible for the player to connect and disconnect from a server without OnPlayerRespawned ever triggering for them
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerRespawned(BasePlayer player)
+{
+ Puts("OnPlayerRespawned works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnRespawnInformationGiven`
+
+- Called when a player is about to be sent respawn information
+
+**Returns:** No return behavior
+
+```csharp
+void OnRespawnInformationGiven(BasePlayer player, RespawnInformation respawnInformation)
+{
+ Puts("OnRespawnInformationGiven works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-07-03
+
+
+
+### `OnPlayerSleep`
+
+- Called when the player is about to go to sleep
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerSleep(BasePlayer player)
+{
+ Puts("OnPlayerSleep works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerSleepEnded`
+
+- Called when the player awakes
+
+**Returns:** No return behavior
+
+```csharp
+void OnPlayerSleepEnded(BasePlayer player)
+{
+ Puts("OnPlayerSleepEnded works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerSpawn`
+
+- Called when a player is attempting to spawn for the first time
+
+**Returns:** Returning true overrides default behavior
+
+```csharp
+object OnPlayerSpawn(BasePlayer player)
+{
+ Puts("OnPlayerSpawn works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerSpectate`
+
+- Called when the player starts spectating
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerSpectate(BasePlayer player, string spectateFilter)
+{
+ Puts("OnPlayerSpectate works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerSpectateEnd`
+
+- Called when the player stops spectating
+
+**Returns:** Returning a non-null value stops the spectate from ending
+
+```csharp
+object OnPlayerSpectateEnd(BasePlayer player, string spectateFilter)
+{
+ Puts("OnPlayerSpectateEnd works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerTick`
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerTick(BasePlayer player, PlayerTick msg, bool wasPlayerStalled)
+{
+ Puts("OnPlayerTick works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerViolation`
+
+- Called when the player triggers an anti-hack violation
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerViolation(BasePlayer player, AntiHackType type, float amount)
+{
+ Puts("OnPlayerViolation works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerVoice`
+
+- Called when the player uses the in-game voice chat
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPlayerVoice(BasePlayer player, Byte[] data)
+{
+ Puts("OnPlayerVoice works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnPlayerWound`
+
+- Called when the player is about to go down to the 'wounded' state
+- source might be null, check it before use
+
+**Returns:** Returning a non-null value cancels the wounded state
+
+```csharp
+object OnPlayerWound(BasePlayer player, HitInfo info)
+{
+ Puts("OnPlayerWound works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2022-01-17
+
+
+
+### `OnRunPlayerMetabolism`
+
+- Called before a metabolism update occurs for the specified player
+- Metabolism update consists of managing the player's temperature, health etc.
+- You can use this to turn off or change certain aspects of the metabolism, either by editing values before returning, or taking complete control of the method
+
+**Returns:** Returning a non-null value cancels the update
+
+```csharp
+object OnRunPlayerMetabolism(PlayerMetabolism metabolism, BasePlayer player, float delta)
+{
+ Puts("OnRunPlayerMetabolism works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnUserApprove`
+
+- Used by RustCore and abstracted into CanClientLogin
+
+**Returns:** Returning a non-null value overrides default behavior, plugin should call Reject if it does this
+
+```csharp
+object OnUserApprove(Network.Connection connection)
+{
+ Puts("OnUserApprove works!");
+ return null;
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDefaultItemsReceive`
+
+- Called when a player is about to receive default items
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnDefaultItemsReceive(PlayerInventory inventory)
+{
+ Puts("OnDefaultItemsReceive works!");
+ return null;
+}
+```
+
+Tags: `default`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDefaultItemsReceived`
+
+- Called after a player has received default items
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+void OnDefaultItemsReceived(PlayerInventory inventory)
+{
+ Puts("OnDefaultItemsReceived works!");
+}
+```
+
+Tags: `default`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnAnalysisComplete`
+
+- Called right after a player completes a survey crater analysis
+
+**Returns:** No return behavior
+
+```csharp
+void OnAnalysisComplete(SurveyCrater surveyCrater, BasePlayer player)
+{
+ Puts("OnAnalysisComplete works!");
+}
+```
+
+Tags: `analysis`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcConversationStart`
+
+- Called when a player tries to start a conversation with an NPC
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnNpcConversationStart(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData)
+{
+ Puts("OnNpcConversationStart works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcConversationRespond`
+
+- Called when a player chooses an NPC conversation response
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnNpcConversationRespond(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData, ConversationData.ResponseNode responseNode)
+{
+ Puts("OnNpcConversationRespond works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcConversationEnded`
+
+- Called right after a player has ended an NPC conversation
+
+**Returns:** No return behavior
+
+```csharp
+void OnNpcConversationEnded(NPCTalking npcTalking, BasePlayer player)
+{
+ Puts("OnNpcConversationEnded works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcConversationResponded`
+
+- Called right after a player's chosen NPC conversation response has been processed
+
+**Returns:** No return behavior
+
+```csharp
+void OnNpcConversationResponded(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData, ConversationData.ResponseNode responseNode)
+{
+ Puts("OnNpcConversationResponded works!");
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnNetworkGroupEntered`
+
+- Called after a player has entered a network group
+
+**Returns:** No return behavior
+
+```csharp
+void OnNetworkGroupEntered(BasePlayer player, Network.Visibility.Group group)
+{
+ Puts("OnNetworkGroupEntered works!");
+}
+```
+
+Tags: `network`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnNetworkGroupLeft`
+
+- Called after a player has left a network group
+
+**Returns:** No return behavior
+
+```csharp
+void OnNetworkGroupLeft(BasePlayer player, Network.Visibility.Group group)
+{
+ Puts("OnNetworkGroupLeft works!");
+}
+```
+
+Tags: `network`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDemoRecordingStart`
+
+- Called right before a demo of a player starts recording
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnDemoRecordingStart(string filename, BasePlayer player)
+{
+ Puts("OnDemoRecordingStart works!");
+ return null;
+}
+```
+
+Tags: `demo`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDemoRecordingStarted`
+
+- Called after a demo of a player has started recording
+
+**Returns:** No return behavior
+
+```csharp
+void OnDemoRecordingStarted(string filename, BasePlayer player)
+{
+ Puts("OnDemoRecordingStarted works!");
+}
+```
+
+Tags: `demo`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDemoRecordingStop`
+
+- Called right before a demo of a player stops recording
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnDemoRecordingStop(string filename, BasePlayer player)
+{
+ Puts("OnDemoRecordingStop works!");
+ return null;
+}
+```
+
+Tags: `demo`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnDemoRecordingStopped`
+
+- Called after a demo of a player has stopped recording
+
+**Returns:** No return behavior
+
+```csharp
+void OnDemoRecordingStopped(string filename, BasePlayer player)
+{
+ Puts("OnDemoRecordingStopped works!");
+}
+```
+
+Tags: `demo`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnLootNetworkUpdate`
+
+- Called when a player is trying to loot a container or a container they are looting has changed its contents
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnLootNetworkUpdate(PlayerLoot loot)
+{
+ Puts("OnLootNetworkUpdate works!");
+ return null;
+}
+```
+
+Tags: `loot`, `player` · uMod last updated 2021-05-08
+
+
+
+### `OnInventoryNetworkUpdate`
+
+- Called after a player's inventory contents have changed, before it is sent over the network to one or more clients
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnInventoryNetworkUpdate(PlayerInventory inventory, ItemContainer container, ProtoBuf.UpdateItemContainer updateItemContainer, PlayerInventory.Type type, PlayerInventory.PlayerInventory.NetworkInventoryMode networkInventoryMode)
+{
+ Puts("OnInventoryNetworkUpdate works!");
+ return null;
+}
+```
+
+Tags: `inventory`, `player` · uMod last updated 2024-02-02
+
+
+
+### `OnPlayerAddModifiers`
+
+- Called after a player consumes an item such as tea that is about to apply modifiers
+
+**Returns:** Returning a non-null value overrides default behavior (prevents the modifiers from being applied)
+
+```csharp
+object OnPlayerAddModifiers(BasePlayer player, Item item, ItemModConsumable consumable)
+{
+ Puts("OnPlayerAddModifiers works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnThreatLevelUpdate`
+
+- Called when a player's threat level is about to be updated
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnThreatLevelUpdate(BasePlayer player)
+{
+ Puts("OnThreatLevelUpdate works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `CanUseGesture`
+
+- Called when a player attempts to use a gesture
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool? CanUseGesture(BasePlayer player, GestureConfig gesture)
+{
+ Puts("CanUseGesture works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-05-08
+
+
+
+### `OnCentralizedBanCheck`
+
+- Called when a player is about to be checked in the centralized ban database
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnCentralizedBanCheck(Network.Connection connection)
+{
+ Puts("OnCentralizedBanCheck works!");
+ return null;
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-06-12
+
+
+
+### `OnClientCommand`
+
+- Useful for intercepting players' commands before their handling
+- Called before OnPlayerCommand and OnUserCommand
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnClientCommand(Connection connection, string command)
+{
+ Puts("OnClientCommand works!");
+ return null;
+}
+```
+
+Tags: `user`, `player` · uMod last updated 2021-06-12
+
+
+
+### `OnCorpsePopulate`
+
+- Called when an NPC player corpse is about to be populated with loot
+
+**Returns:** Returning a BaseCorpse overrides default behavior
+
+```csharp
+BaseCorpse OnCorpsePopulate(BasePlayer npcPlayer, BaseCorpse corpse)
+{
+ Puts("OnCorpsePopulate works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2021-06-12
+
+
+
+### `CanSetRelationship`
+
+- Called when a player's relationship with another is about to be updated
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool? CanSetRelationship(BasePlayer player, BasePlayer otherPlayer, RelationshipManager.RelationshipType relationshipType, int weight)
+{
+ Puts("CanSetRelationship works!");
+ return null;
+}
+```
+
+Tags: `player` · uMod last updated 2022-04-20
+
+---
+
+## Entity Hooks
+
+*The generic `BaseEntity` graph — spawn, kill, damage, mount, loot, flags. Anything in the world that is not specifically an item.*
+
+140 hooks: [`CanBradleyApcTarget`](#canbradleyapctarget), [`CanEntityBeHostile`](#canentitybehostile), [`CanSamSiteShoot`](#cansamsiteshoot), [`OnBuildingPrivilege`](#onbuildingprivilege), [`OnButtonPress`](#onbuttonpress), [`OnDieselEngineToggle`](#ondieselenginetoggle), [`OnDieselEngineToggled`](#ondieselenginetoggled), [`OnEntityMarkHostile`](#onentitymarkhostile), [`OnEntityStabilityCheck`](#onentitystabilitycheck), [`OnExcavatorGather`](#onexcavatorgather), [`OnExcavatorMiningToggled`](#onexcavatorminingtoggled), [`OnExcavatorResourceSet`](#onexcavatorresourceset), [`OnHelicopterStrafeEnter`](#onhelicopterstrafeenter), [`OnHorseHitch`](#onhorsehitch), [`OnHorseLead`](#onhorselead), [`OnInputUpdate`](#oninputupdate), [`OnMlrsFire`](#onmlrsfire), [`OnMlrsFired`](#onmlrsfired), [`OnNpcDestinationSet`](#onnpcdestinationset), [`OnNpcPlayerResume`](#onnpcplayerresume), [`OnNpcStopMoving`](#onnpcstopmoving), [`OnOutputUpdate`](#onoutputupdate), [`OnReactiveTargetReset`](#onreactivetargetreset), [`OnSamSiteTarget`](#onsamsitetarget), [`OnShopAcceptClick`](#onshopacceptclick), [`OnShopCancelClick`](#onshopcancelclick), [`OnShopCompleteTrade`](#onshopcompletetrade), [`OnSupplyDropLanded`](#onsupplydroplanded), [`OnTurretAssign`](#onturretassign), [`OnTurretAssigned`](#onturretassigned), [`OnWireClear`](#onwireclear), [`OnWireConnect`](#onwireconnect), [`CanHelicopterDropCrate`](#canhelicopterdropcrate), [`OnEngineLoadoutRefresh`](#onengineloadoutrefresh), [`CanHelicopterStrafe`](#canhelicopterstrafe), [`CanHelicopterStrafeTarget`](#canhelicopterstrafetarget), [`CanHelicopterTarget`](#canhelicoptertarget), [`CanHelicopterUseNapalm`](#canhelicopterusenapalm), [`CanNetworkTo`](#cannetworkto), [`OnHelicopterRetire`](#onhelicopterretire), [`CanNpcAttack`](#cannpcattack), [`CanNpcEat`](#cannpceat), [`CanRecycle`](#canrecycle), [`OnAirdrop`](#onairdrop), [`OnBradleyApcInitialize`](#onbradleyapcinitialize), [`OnBradleyApcHunt`](#onbradleyapchunt), [`OnBradleyApcPatrol`](#onbradleyapcpatrol), [`OnContainerDropItems`](#oncontainerdropitems), [`OnCrateDropped`](#oncratedropped), [`OnCrateHack`](#oncratehack), [`OnCrateHackEnd`](#oncratehackend), [`OnCrateLanded`](#oncratelanded), [`OnEntityDeath`](#onentitydeath), [`OnEntityDismounted`](#onentitydismounted), [`OnEntityEnter`](#onentityenter), [`OnEntityGroundMissing`](#onentitygroundmissing), [`OnEntityKill`](#onentitykill), [`OnEntityLeave`](#onentityleave), [`OnEntityMounted`](#onentitymounted), [`OnEntitySpawned`](#onentityspawned), [`OnEntityTakeDamage`](#onentitytakedamage), [`OnFireBallDamage`](#onfireballdamage), [`OnFireBallSpread`](#onfireballspread), [`OnFlameExplosion`](#onflameexplosion), [`OnHelicopterAttack`](#onhelicopterattack), [`OnHelicopterDropCrate`](#onhelicopterdropcrate), [`OnHelicopterDropDoorOpen`](#onhelicopterdropdooropen), [`OnHelicopterKilled`](#onhelicopterkilled), [`OnHelicopterOutOfCrates`](#onhelicopteroutofcrates), [`OnHelicopterTarget`](#onhelicoptertarget), [`OnLiftUse`](#onliftuse), [`OnLootSpawn`](#onlootspawn), [`OnNpcTargetSense`](#onnpctargetsense), [`OnNpcTarget`](#onnpctarget), [`OnItemRecycle`](#onitemrecycle), [`OnOvenCook`](#onovencook), [`OnOvenCooked`](#onovencooked), [`OnOvenToggle`](#onoventoggle), [`OnRecyclerToggle`](#onrecyclertoggle), [`OnResourceDepositCreated`](#onresourcedepositcreated), [`OnShopCompleteTrade`](#onshopcompletetrade-1), [`OnTurretAuthorize`](#onturretauthorize), [`OnTurretClearList`](#onturretclearlist), [`OnTurretDeauthorize`](#onturretdeauthorize), [`OnTurretModeToggle`](#onturretmodetoggle), [`OnTurretShutdown`](#onturretshutdown), [`OnTurretStartup`](#onturretstartup), [`OnTurretTarget`](#onturrettarget), [`OnTurretToggle`](#onturrettoggle), [`OnBigWheelWin`](#onbigwheelwin), [`OnBigWheelLoss`](#onbigwheelloss), [`OnSolarPanelSunUpdate`](#onsolarpanelsunupdate), [`OnBookmarkControl`](#onbookmarkcontrol), [`OnBookmarkControlStarted`](#onbookmarkcontrolstarted), [`OnBookmarkDelete`](#onbookmarkdelete), [`OnBookmarkAdd`](#onbookmarkadd), [`OnBookmarksSendControl`](#onbookmarkssendcontrol), [`OnBookmarkControlEnd`](#onbookmarkcontrolend), [`OnBookmarkControlEnded`](#onbookmarkcontrolended), [`OnRfBroadcasterAdd`](#onrfbroadcasteradd), [`OnRfBroadcasterAdded`](#onrfbroadcasteradded), [`OnRfBroadcasterRemove`](#onrfbroadcasterremove), [`OnRfBroadcasterRemoved`](#onrfbroadcasterremoved), [`OnRfListenerAdd`](#onrflisteneradd), [`OnRfListenerAdded`](#onrflisteneradded), [`OnRfListenerRemove`](#onrflistenerremove), [`OnRfFrequencyChange`](#onrffrequencychange), [`OnRfFrequencyChanged`](#onrffrequencychanged), [`OnRfListenerRemoved`](#onrflistenerremoved), [`OnSleepingBagDestroy`](#onsleepingbagdestroy), [`OnNetworkSubscriptionsUpdate`](#onnetworksubscriptionsupdate), [`OnSleepingBagDestroyed`](#onsleepingbagdestroyed), [`OnBookmarkInput`](#onbookmarkinput), [`OnEntityControl`](#onentitycontrol), [`OnTurretRotate`](#onturretrotate), [`OnCounterTargetChange`](#oncountertargetchange), [`OnCounterModeToggle`](#oncountermodetoggle), [`OnSwitchToggle`](#onswitchtoggle), [`OnSwitchToggled`](#onswitchtoggled), [`OnEntityDestroy`](#onentitydestroy), [`OnElevatorButtonPress`](#onelevatorbuttonpress), [`OnElevatorCall`](#onelevatorcall), [`OnElevatorMove`](#onelevatormove), [`CanSwapToSeat`](#canswaptoseat), [`OnRidableAnimalClaim`](#onridableanimalclaim), [`OnRidableAnimalClaimed`](#onridableanimalclaimed), [`OnEntitySaved`](#onentitysaved), [`OnEntitySnapshot`](#onentitysnapshot), [`OnEntityFlagsNetworkUpdate`](#onentityflagsnetworkupdate), [`OnIORefCleared`](#oniorefcleared), [`OnSupplyDropDropped`](#onsupplydropdropped), [`OnCargoPlaneSignaled`](#oncargoplanesignaled), [`OnWaterPurify`](#onwaterpurify), [`OnWaterPurified`](#onwaterpurified), [`OnSleepingBagValidCheck`](#onsleepingbagvalidcheck), [`OnCCTVDirectionChange`](#oncctvdirectionchange), [`OnWaterCollect`](#onwatercollect), [`OnLiquidVesselFill`](#onliquidvesselfill), [`OnLockerSwap`](#onlockerswap), [`CanLockerAcceptItem`](#canlockeracceptitem)
+
+
+
+### `CanBradleyApcTarget`
+
+- Called when an APC targets an entity
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanBradleyApcTarget(BradleyAPC apc, BaseEntity entity)
+{
+ Puts("CanBradleyApcTarget works!");
+ return true;
+}
+```
+
+Tags: `bradley`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanEntityBeHostile`
+
+- Useful for overriding hostility of an entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanEntityBeHostile(BaseCombatEntity entity)
+{
+ Puts("CanEntityBeHostile works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanSamSiteShoot`
+
+- Useful for canceling the shoot of SamSite
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanSamSiteShoot(SamSite samSite)
+{
+ Puts("CanSamSiteShoot works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBuildingPrivilege`
+
+- Useful for overriding a building privilege on specific entities and etc.
+
+**Returns:** Returning BuildingPrivlidge value overrides default behavior
+
+```csharp
+BuildingPrivlidge OnBuildingPrivilege(BaseEntity entity, OBB obb)
+{
+ Puts($"Getting a building privilege for {entity.ShortPrefabName}!");
+ return null;
+}
+```
+
+Tags: `building`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnButtonPress`
+
+- Called when a player is trying to press a button
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnButtonPress(PressButton button, BasePlayer player)
+{
+ Puts("OnButtonPress works!");
+ return null;
+}
+```
+
+Tags: `button`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnDieselEngineToggle`
+
+- Called when a player is trying to toggle diesel engine
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnDieselEngineToggle(DieselEngine engine, BasePlayer player)
+{
+ Puts("OnDieselEngineToggle works!");
+ return null;
+}
+```
+
+Tags: `diesel`, `entity` · uMod last updated 2022-09-12
+
+
+
+### `OnDieselEngineToggled`
+
+- Called when diesel engine is toggled
+
+**Returns:** No return behavior
+
+```csharp
+void OnDieselEngineToggled(DieselEngine engine)
+{
+ Puts("OnDieselEngineToggled works!");
+}
+```
+
+Tags: `diesel`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityMarkHostile`
+
+- Useful for denying marking the entity hostile
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnEntityMarkHostile(BaseCombatEntity entity, float duration)
+{
+ Puts("OnEntityMarkHostile works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityStabilityCheck`
+
+- Called when stability of an entity is checked
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnEntityStabilityCheck(StabilityEntity entity)
+{
+ Puts("OnEntityStabilityCheck works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnExcavatorGather`
+
+- Called right before moving gathered resource to container
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnExcavatorGather(ExcavatorArm arm, Item item)
+{
+ Puts("OnExcavatorGather works!");
+ return null;
+}
+```
+
+Tags: `excavator`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnExcavatorMiningToggled`
+
+- Called when excavator mining arm is toggled
+
+**Returns:** No return behavior
+
+```csharp
+void OnExcavatorMiningToggled(ExcavatorArm arm)
+{
+ Puts("OnExcavatorMiningToggled works!");
+}
+```
+
+Tags: `excavator`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnExcavatorResourceSet`
+
+- Called when a player is trying to set a new resource target
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnExcavatorResourceSet(ExcavatorArm arm, string resourceName, BasePlayer player)
+{
+ Puts("OnExcavatorResourceSet works!");
+ return null;
+}
+```
+
+Tags: `excavator`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHelicopterStrafeEnter`
+
+- Called when helicopter is entering strafe
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnHelicopterStrafeEnter(PatrolHelicopterAI helicopter, Vector3 strafePosition)
+{
+ Puts("OnHelicopterStrafeEnter works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHorseHitch`
+
+- Called just before setting the hitch
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHorseHitch(RidableHorse horse, HitchTrough hitch)
+{
+ Puts("OnHorseHitch works!");
+ return null;
+}
+```
+
+Tags: `horse`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHorseLead`
+
+- Called when a player tries to lead a horse
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHorseLead(BaseRidableAnimal animal, BasePlayer player)
+{
+ Puts($"{player.displayName} tries to lead {animal.ShortPrefabName}");
+ return null;
+}
+```
+
+Tags: `horse`, `entity` · uMod last updated 2022-01-08
+
+
+
+### `OnInputUpdate`
+
+- Called when an input of IOEntity is updated
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnInputUpdate(IOEntity entity, int inputAmount, int slot)
+{
+ Puts("OnInputUpdate works!");
+ return null;
+}
+```
+
+Tags: `input`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnMlrsFire`
+
+- Called just before the MLRS is fired.
+
+**Returns:** Returning a non-null value overrides default behaviour.
+
+```csharp
+object OnMlrsFire(MLRS mlrs, BasePlayer player)
+{
+ Puts("OnMlrsFire works!");
+ return null;
+}
+```
+
+Tags: `mlrs`, `entity` · uMod last updated 2022-06-21
+
+
+
+### `OnMlrsFired`
+
+- Called just after the MLRS has been fired.
+
+**Returns:** No return behaviour.
+
+```csharp
+void OnMlrsFired(MLRS mlrs, BasePlayer player)
+{
+ Puts("OnMlrsFired works!");
+}
+```
+
+Tags: `mlrs`, `entity` · uMod last updated 2022-06-21
+
+
+
+### `OnNpcDestinationSet`
+
+- Useful for canceling the destination change on NPCs
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnNpcDestinationSet(NPCPlayerApex npc, Vector3 newPosition)
+{
+ Puts("OnNpcDestinationSet works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcPlayerResume`
+
+- Useful for canceling the invoke of TryForceToNavmesh
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnNpcPlayerResume(NPCPlayerApex npc)
+{
+ Puts("OnNpcPlayerResume works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcStopMoving`
+
+- Useful for denying the move stop of NPCs
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnNpcStopMoving(NPCPlayerApex npc)
+{
+ Puts("OnNpcStopMoving works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnOutputUpdate`
+
+- Called when outputs of IOEntity are updated
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnOutputUpdate(IOEntity entity)
+{
+ Puts("OnOutputUpdate works!");
+ return null;
+}
+```
+
+Tags: `output`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnReactiveTargetReset`
+
+- Called after the reactive target is reset
+
+**Returns:** No return behaviour
+
+```csharp
+void OnReactiveTargetReset(ReactiveTarget target)
+{
+ Puts("OnReactiveTargetReset works!");
+}
+```
+
+Tags: `reactive`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSamSiteTarget`
+
+- Called before last target visible time is updated
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnSamSiteTarget(SamSite samSite, BaseCombatEntity target)
+{
+ Puts("OnSamSiteTarget works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2022-02-03
+
+
+
+### `OnShopAcceptClick`
+
+- Called when a player is trying to accept a trade in ShopFront
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnShopAcceptClick(ShopFront entity, BasePlayer player)
+{
+ Puts("OnShopAcceptClick works!");
+ return null;
+}
+```
+
+Tags: `shop`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnShopCancelClick`
+
+- Called when a player is cancelling a trade
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnShopCancelClick(ShopFront entity, BasePlayer player)
+{
+ Puts("OnShopCancelClick works!");
+ return null;
+}
+```
+
+Tags: `shop`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnShopCompleteTrade`
+
+- Called before the trade is completed in ShopFront
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnShopCompleteTrade(ShopFront entity)
+{
+ Puts("OnShopCompleteTrade works!");
+ return null;
+}
+```
+
+Tags: `shop`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSupplyDropLanded`
+
+- Called after Supply Drop has landed
+
+**Returns:** No return behavior
+
+```csharp
+void OnSupplyDropLanded(SupplyDrop entity)
+{
+ Puts("OnSupplyDropLanded works!");
+}
+```
+
+Tags: `supply`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretAssign`
+
+- Called when a player attempts to authorize another player on a turret
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTurretAssign(AutoTurret turret, ulong targetId, BasePlayer initiator)
+{
+ Puts("{targetId} has been authorized on a turret by {initiator.displayName}");
+ return null;
+}
+```
+
+Tags: `turret`, `player`, `entity` · uMod last updated 2022-07-01
+
+
+
+### `OnTurretAssigned`
+
+- Called when a player has been authorized on a turret by another player
+
+**Returns:** No return behaviour
+
+```csharp
+void OnTurretAssigned(AutoTurret turret, ulong targetId, BasePlayer initiator)
+{
+ Puts($"{targetId} has been authorized on a turret by {initiator.displayName});
+}
+```
+
+Tags: `turret`, `player`, `entity` · uMod last updated 2022-07-01
+
+
+
+### `OnWireClear`
+
+- Useful for preventing clearing wires
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnWireClear(BasePlayer player, IOEntity entity1, int connected, IOEntity entity2, bool flag)
+{
+ Puts("OnWireClear works!");
+ return null;
+}
+```
+
+Tags: `wire`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnWireConnect`
+
+- Useful for preventing a wire to connect
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnWireConnect(BasePlayer player, IOEntity entity1, int inputs, IOEntity entity2, int outputs)
+{
+ Puts("OnWireConnect works!");
+ return null;
+}
+```
+
+Tags: `wire`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanHelicopterDropCrate`
+
+- Called when a CH47 helicopter attempts to drop a crate
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanHelicopterDropCrate(CH47HelicopterAIController heli)
+{
+ Puts("CanHelicopterDropCrate works!");
+ return true;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineLoadoutRefresh`
+
+- Called before engine loadout data is refreshed
+
+**Returns:** Returning a non-null value overrides default behaviour
+
+```csharp
+object OnEngineLoadoutRefresh(EngineStorage storage)
+{
+ Puts("OnEngineLoadoutRefresh works!");
+ return null;
+}
+```
+
+Tags: `engine`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanHelicopterStrafe`
+
+- Called when a patrol helicopter attempts to strafe
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanHelicopterStrafe(PatrolHelicopterAI heli)
+{
+ Puts("CanHelicopterStrafe works!");
+ return true;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanHelicopterStrafeTarget`
+
+- Called when a patrol helicopter attempts to target a player to attack while strafing
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanHelicopterStrafeTarget(PatrolHelicopterAI entity, BasePlayer target)
+{
+ Puts("CanHelicopterStrafeTarget works!");
+ return true;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanHelicopterTarget`
+
+- Called when a patrol helicopter attempts to target a player to attack
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer player)
+{
+ Puts("CanHelicopterTarget works!");
+ return true;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanHelicopterUseNapalm`
+
+- Called when a patrol helicopter attempts to use napalm
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanHelicopterUseNapalm(PatrolHelicopterAI heli)
+{
+ Puts("CanHelicopterUseNapalm works!");
+ return true;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanNetworkTo`
+
+- Called when an entity attempts to network with a player
+- For better performance, avoid using heavy calculations in this hook.
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanNetworkTo(BaseNetworkable entity, BasePlayer target)
+{
+ Puts("CanNetworkTo works!");
+ return true;
+}
+```
+
+Tags: `network`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHelicopterRetire`
+
+- Called before the patrol helicopter starts leaving the map.
+
+**Returns:** Returning a non-null value overrides default behaviour.
+
+```csharp
+object OnHelicopterRetire(PatrolHelicopterAI helicopter)
+{
+ Puts("OnHelicopterRetire works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2022-01-23
+
+
+
+### `CanNpcAttack`
+
+- Called when a NPC attempts to attack another entity
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanNpcAttack(BaseNpc npc, BaseEntity target)
+{
+ Puts("CanNpcAttack works!");
+ return true;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanNpcEat`
+
+- Called when a NPC attempts to eat another entity
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanNpcEat(BaseNpc npc, BaseEntity target)
+{
+ Puts("CanNpcEat works!");
+ return true;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanRecycle`
+
+- Called when the recycler attempts to recycle an item
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanRecycle(Recycler recycler, Item item)
+{
+ Puts("CanRecycle works!");
+ return true;
+}
+```
+
+Tags: `recycle`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnAirdrop`
+
+- Called when an airdrop has been called
+
+**Returns:** No return behavior
+
+```csharp
+void OnAirdrop(CargoPlane plane, Vector3 dropPosition)
+{
+ Puts("OnAirdrop works!");
+}
+```
+
+Tags: `airdrop`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBradleyApcInitialize`
+
+- Called when an APC initializes
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBradleyApcInitialize(BradleyAPC apc)
+{
+ Puts("OnBradleyApcInitialize works!");
+ return null;
+}
+```
+
+Tags: `bradley`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBradleyApcHunt`
+
+- Called when an APC starts hunting
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBradleyApcHunt(BradleyAPC apc)
+{
+ Puts("OnBradleyApcHunt works!");
+ return null;
+}
+```
+
+Tags: `bradley`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBradleyApcPatrol`
+
+- Called when an APC is starts patrolling
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBradleyApcPatrol(BradleyAPC apc)
+{
+ Puts("OnBradleyApcPatrol works!");
+ return null;
+}
+```
+
+Tags: `bradley`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnContainerDropItems`
+
+- Called when a container is destroyed and all items are about to be dropped
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnContainerDropItems(ItemContainer container)
+{
+ Puts("OnContainerDropItems works!");
+ return null;
+}
+```
+
+Tags: `container`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCrateDropped`
+
+- Called when a locked crate from the CH47 (Chinook) has dropped
+
+**Returns:** No return behavior
+
+```csharp
+void OnCrateDropped(HackableLockedCrate crate)
+{
+ Puts("OnCrateDropped works!");
+}
+```
+
+Tags: `crate`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCrateHack`
+
+- Called when a player starts hacking a locked crate
+
+**Returns:** No return behavior
+
+```csharp
+void OnCrateHack(HackableLockedCrate crate)
+{
+ Puts("OnCrateHack works!");
+}
+```
+
+Tags: `crate`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCrateHackEnd`
+
+- Called when a player stops hacking a locked crate
+
+**Returns:** No return behavior
+
+```csharp
+void OnCrateHackEnd(HackableLockedCrate crate)
+{
+ Puts("OnCrateHackEnd works!");
+}
+```
+
+Tags: `crate`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCrateLanded`
+
+- Called when a locked crate from the CH47 (Chinook) has landed
+
+**Returns:** No return behavior
+
+```csharp
+void OnCrateLanded(HackableLockedCrate crate)
+{
+ Puts("OnCrateLanded works!");
+}
+```
+
+Tags: `crate`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityDeath`
+
+- HitInfo might be null, check it before use
+- Editing hitInfo has no effect because the death has already happened
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntityDeath(BaseCombatEntity entity, HitInfo info)
+{
+ Puts("OnEntityDeath works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2022-01-17
+
+
+
+### `OnEntityDismounted`
+
+- Called when an entity is dismounted by a player
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntityDismounted(BaseMountable entity, BasePlayer player)
+{
+ Puts("OnEntityDismounted works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityEnter`
+
+- Called when an entity enters a trigger (water area, radiation zone, hurt zone, etc.)
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntityEnter(TriggerBase trigger, BaseEntity entity)
+{
+ Puts("OnEntityEnter works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityGroundMissing`
+
+- Called when an entity (sleepingbag, sign, furnace,...) is going to be destroyed because the buildingblock it is on was removed
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEntityGroundMissing(BaseEntity entity)
+{
+ Puts("OnEntityGroundMissing works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityKill`
+
+- Called when an entity is destroyed
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEntityKill(BaseNetworkable entity)
+{
+ Puts("OnEntityKill works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2023-04-11
+
+
+
+### `OnEntityLeave`
+
+- Called when an entity leaves a trigger (water area, radiation zone, hurt zone, etc.)
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntityLeave(TriggerBase trigger, BaseEntity entity)
+{
+ Puts("OnEntityLeave works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityMounted`
+
+- Called when an entity is mounted by a player
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntityMounted(BaseMountable entity, BasePlayer player)
+{
+ Puts("OnEntityMounted works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntitySpawned`
+
+- Called after any networked entity has spawned (including trees)
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntitySpawned(BaseNetworkable entity)
+{
+ Puts("OnEntitySpawned works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityTakeDamage`
+
+- Alternatively, modify the HitInfo object to change the damage
+- It should be okay to set the damage to 0, but if you don't return non-null, the player's client will receive a damage indicator (if entity is a BasePlayer)
+- HitInfo has all kinds of useful things in it, such as Weapon, damageProperties or damageTypes
+
+**Returns:** *(not stated upstream)*
+
+```csharp
+object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
+{
+ Puts("OnEntityTakeDamage works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnFireBallDamage`
+
+- Called when a fire ball does damage to another entity
+
+**Returns:** No return behavior
+
+```csharp
+void OnFireBallDamage(FireBall fire, BaseCombatEntity entity, HitInfo info)
+{
+ Puts("OnFireBallDamage works!");
+}
+```
+
+Tags: `fire`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnFireBallSpread`
+
+- Called when a fire ball fire spreads
+
+**Returns:** No return behavior
+
+```csharp
+void OnFireBallSpread(FireBall ball, BaseEntity fire)
+{
+ Puts("OnFireBallSpread works!");
+}
+```
+
+Tags: `fire`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnFlameExplosion`
+
+- Called when a flame explodes
+
+**Returns:** No return behavior
+
+```csharp
+void OnFlameExplosion(FlameExplosive explosive, BaseEntity flame)
+{
+ Puts("OnFlameExplosion works!");
+}
+```
+
+Tags: `flame`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHelicopterAttack`
+
+- Called when a CH47 helicopter is being attacked
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHelicopterAttack(CH47HelicopterAIController heli)
+{
+ Puts("OnHelicopterAttack works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2022-09-12
+
+
+
+### `OnHelicopterDropCrate`
+
+- Called when a CH47 helicopter is dropping a crate
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHelicopterDropCrate(CH47HelicopterAIController heli)
+{
+ Puts("OnHelicopterDropCrate works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHelicopterDropDoorOpen`
+
+- Called when a CH47 helicopter is opening its drop door
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHelicopterDropDoorOpen(CH47HelicopterAIController heli)
+{
+ Puts("OnHelicopterDropDoorOpen works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHelicopterKilled`
+
+- Called when a CH47 helicopter is going to be killed
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHelicopterKilled(CH47HelicopterAIController heli)
+{
+ Puts("OnHelicopterKilled works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnHelicopterOutOfCrates`
+
+- Called when a CH47 helicopter runs out of crates
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool? OnHelicopterOutOfCrates(CH47HelicopterAIController heli)
+{
+ Puts("OnHelicopterOutOfCrates works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-08-14
+
+
+
+### `OnHelicopterTarget`
+
+- Called when a helicopter turret attempts to target an entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHelicopterTarget(HelicopterTurret turret, BaseCombatEntity entity)
+{
+ Puts("OnHelicopterTarget works!");
+ return null;
+}
+```
+
+Tags: `helicopter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnLiftUse`
+
+- Called when a player calls a lift or procedural lift
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnLiftUse(Lift lift, BasePlayer player)
+{
+ Puts("OnLiftUse works!");
+ return null;
+}
+```
+```csharp
+object OnLiftUse(ProceduralLift lift, BasePlayer player)
+{
+ Puts("OnLiftUse works!");
+ return null;
+}
+```
+
+Tags: `lift`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnLootSpawn`
+
+- Called when loot spawns in a container
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnLootSpawn(LootContainer container)
+{
+ Puts("OnLootSpawn works!");
+ return null;
+}
+```
+
+Tags: `loot`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcTargetSense`
+
+- Called when an NPC becomes aware of another entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnNpcTargetSense(BaseEntity owner, BaseEntity entity, AIBrainSenses brainSenses)
+{
+ Puts("OnNpcTargetSense works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2023-04-23
+
+
+
+### `OnNpcTarget`
+
+- Called when an NPC targets another entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnNpcTarget(BaseEntity npc, BaseEntity entity)
+{
+ Puts("OnNpcTarget works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnItemRecycle`
+
+- Called when an item is recycled in a recycler
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemRecycle(Item item, Recycler recycler)
+{
+ Puts("OnItemRecycle works!");
+ return null;
+}
+```
+
+Tags: `recycle`, `entity` · uMod last updated 2022-09-12
+
+
+
+### `OnOvenCook`
+
+- Called before an oven cooks an item
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnOvenCook(BaseOven oven, Item item)
+{
+ Puts("OnOvenCook works!");
+ return null;
+}
+```
+
+Tags: `oven`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnOvenCooked`
+
+- Called after an oven cooks an item
+
+**Returns:** No return behavior
+
+```csharp
+void OnOvenCooked(BaseOven oven, Item item, BaseEntity slot)
+{
+ Puts("OnOvenCooked works!");
+}
+```
+
+Tags: `oven`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnOvenToggle`
+
+- Called when an oven (Campfire, Furnace,...) is turned on or off
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnOvenToggle(BaseOven oven, BasePlayer player)
+{
+ Puts("OnOvenToggle works!");
+ return null;
+}
+```
+
+Tags: `oven`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRecyclerToggle`
+
+- Called when a recycler is turned on or off
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRecyclerToggle(Recycler recycler, BasePlayer player)
+{
+ Puts("OnRecyclerToggle works!");
+ return null;
+}
+```
+
+Tags: `recycler`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnResourceDepositCreated`
+
+- Called when a resource deposit has been created
+
+**Returns:** No return behavior
+
+```csharp
+void OnResourceDepositCreated(ResourceDepositManager.ResourceDeposit deposit)
+{
+ Puts("OnResourceDepositCreated works!");
+}
+```
+
+Tags: `resource`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnShopCompleteTrade`
+
+- Called when a shopfront trade is complete
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnShopCompleteTrade(ShopFront shop, BasePlayer customer)
+{
+ Puts("OnShopCompleteTrade works!");
+ return null;
+}
+```
+
+Tags: `shop`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretAuthorize`
+
+- Called when a player attempts to authorize on a turret
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretAuthorize(AutoTurret turret, BasePlayer player)
+{
+ Puts("OnTurretAuthorize works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretClearList`
+
+- Called when a player attempts to clear an autoturret's authorized list
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretClearList(AutoTurret turret, BasePlayer player)
+{
+ Puts("OnTurretClearList works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretDeauthorize`
+
+- Called when a player is deauthorized on an autoturret
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretDeauthorize(AutoTurret turret, BasePlayer player)
+{
+ Puts("OnTurretDeauthorize works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretModeToggle`
+
+- Called when the mode of an autoturrent is toggled
+
+**Returns:** No return behavior
+
+```csharp
+void OnTurretModeToggle(AutoTurret turret)
+{
+ Puts("OnTurretModeToggle works!");
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretShutdown`
+
+- Called when an autoturret is shut down
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretShutdown(AutoTurret turret)
+{
+ Puts("OnTurretShutdown works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretStartup`
+
+- Called when an autoturret starts up
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretStartup(AutoTurret turret)
+{
+ Puts("OnTurretStartup works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretTarget`
+
+- Called when an autoturret attempts to target an entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretTarget(AutoTurret turret, BaseCombatEntity entity)
+{
+ Puts("OnTurretTarget works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretToggle`
+
+- Called when an autoturret toggles powerstate (on/off)
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretToggle(AutoTurret turret)
+{
+ Puts("OnTurretToggle works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBigWheelWin`
+
+- Called before multiplier is applied.
+
+**Returns:** Returning non-null value overrides default behaviour.
+
+```csharp
+object OnBigWheelWin(BigWheelGame bigWheel, Item scrap, BigWheelBettingTerminal terminal, int multiplier)
+{
+ Puts("OnBigWheelWin works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2022-06-05
+
+
+
+### `OnBigWheelLoss`
+
+- Called when a specific item is lost on the big wheel game
+
+**Returns:** No return behavior
+
+```csharp
+void OnBigWheelLoss(BigWheelGame wheel, Item item)
+{
+ Puts("OnBigWheelLoss works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSolarPanelSunUpdate`
+
+- Called when a solar panel updates the amount of energy it is getting from the sun
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnSolarPanelSunUpdate(SolarPanel panel, int currentEnergy)
+{
+ Puts("OnSolarPanelSunUpdate works!");
+ return null;
+}
+```
+
+Tags: `solar`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarkControl`
+
+- Called when a player tries to select a bookmark at a computer station
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBookmarkControl(ComputerStation computerStation, BasePlayer player, string bookmarkName, IRemoteControllable remoteControllable)
+{
+ Puts("OnBookmarkControl works!");
+ return null;
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarkControlStarted`
+
+- Called after a player has selected a bookmark at a computer station
+
+**Returns:** No return behavior
+
+```csharp
+void OnBookmarkControlStarted(ComputerStation computerStation, BasePlayer player, string bookmarkName, IRemoteControllable remoteControllable)
+{
+ Puts("OnBookmarkControlStarted works!");
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarkDelete`
+
+- Called when a player tries to delete a bookmark at a computer station
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBookmarkDelete(ComputerStation computerStation, BasePlayer player, string bookmarkName)
+{
+ Puts("OnBookmarkDelete works!");
+ return null;
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarkAdd`
+
+- Called when a player tries to add a bookmark at a computer station
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBookmarkAdd(ComputerStation computerStation, BasePlayer player, string bookmarkName)
+{
+ Puts("OnBookmarkAdd works!");
+ return null;
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarksSendControl`
+
+- Called when a player is being sent a list of bookmarks for a computer station
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBookmarksSendControl(ComputerStation computerStation, BasePlayer player, string bookmarks)
+{
+ Puts("OnBookmarksSendControl works!");
+ return null;
+}
+```
+
+Tags: `bookmarks`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarkControlEnd`
+
+- Called when a player tries to stop viewing/controlling an entity at a computer station
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBookmarkControlEnd(ComputerStation computerStation, BasePlayer player, BaseEntity controlledEntity)
+{
+ Puts("OnBookmarkControlEnd works!");
+ return null;
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnBookmarkControlEnded`
+
+- Called after a player has stopped viewing/controlling an entity at a computer station
+
+**Returns:** No return behavior
+
+```csharp
+void OnBookmarkControlEnded(ComputerStation computerStation, BasePlayer player, BaseEntity controlledEntity)
+{
+ Puts("OnBookmarkControlEnded works!");
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfBroadcasterAdd`
+
+- Called right before an object starts broadcasting an RF frequency
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRfBroadcasterAdd(IRFObject obj, int frequency)
+{
+ Puts("OnRfBroadcasterAdd works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfBroadcasterAdded`
+
+- Called right after an object has started broadcasting an RF frequency
+
+**Returns:** No return behavior
+
+```csharp
+void OnRfBroadcasterAdded(IRFObject obj, int frequency)
+{
+ Puts("OnRfBroadcasterAdded works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfBroadcasterRemove`
+
+- Called right before an object stops broadasting an RF frequency
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRfBroadcasterRemove(IRFObject obj, int frequency)
+{
+ Puts("OnRfBroadcasterRemove works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfBroadcasterRemoved`
+
+- Called right after an object has stopped broadcasting an RF frequency
+
+**Returns:** No return behavior
+
+```csharp
+void OnRfBroadcasterRemoved(IRFObject obj, int frequency)
+{
+ Puts("OnRfBroadcasterRemoved works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfListenerAdd`
+
+- Called right before an object starts listening to an RF frequency
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRfListenerAdd(IRFObject obj, int frequency)
+{
+ Puts("OnRfListenerAdd works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfListenerAdded`
+
+- Called right after an object has started listening to an RF frequency
+
+**Returns:** No return behavior
+
+```csharp
+void OnRfListenerAdded(IRFObject obj, int frequency)
+{
+ Puts("OnRfListenerAdded works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfListenerRemove`
+
+- Called right before an object stops listening to an RF frequency
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRfListenerRemove(IRFObject obj, int frequency)
+{
+ Puts("OnRfListenerRemove works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfFrequencyChange`
+
+- Called when a player tries to change the frequency of an RF broadcaster or receiver
+- Useful for preventing particular reserved frequencies from being selected
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRfFrequencyChange(IRFObject obj, int frequency, BasePlayer player)
+{
+ Puts("OnRfFrequencyChange works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfFrequencyChanged`
+
+- Called after a player has changed the frequency of an RF broadcaster or receiver
+
+**Returns:** No return behavior
+
+```csharp
+void OnRfFrequencyChanged(IRFObject obj, int frequency, BasePlayer player)
+{
+ Puts("OnRfFrequencyChanged works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRfListenerRemoved`
+
+- Called right after an object has stopped listening to an RF frequency
+
+**Returns:** No return behavior
+
+```csharp
+void OnRfListenerRemoved(IRFObject obj, int frequency)
+{
+ Puts("OnRfListenerRemoved works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSleepingBagDestroy`
+
+- Called when a player tries to remove a sleeping bag from their respawn screen
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnSleepingBagDestroy(SleepingBag sleepingBag, BasePlayer player)
+{
+ Puts("OnSleepingBagDestroy works!");
+ return null;
+}
+```
+
+Tags: `sleeping`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnNetworkSubscriptionsUpdate`
+
+- Called after the Rust has determined which network groups to subscribe a player to (`groupsToAdd`), and which network groups to unsubscribe the player from (`groupsToRemove`)
+- This hook is useful for situations where you want to subscribe a player to a network group that is outside their network range -- To do so, you can prevent Rust from automatically unsubscribing them by removing that group from the `groupsToRemove` list
+
+**Returns:** Returning a non-null value prevents Rust from applying the proposed subscription changes
+
+```csharp
+object OnNetworkSubscriptionsUpdate(Network.Networkable networkable, List groupsToAdd, List groupsToRemove)
+{
+ Puts("OnNetworkSubscriptionsUpdate works!");
+}
+```
+
+Tags: `network`, `player` · uMod last updated 2023-08-11
+
+
+
+### `OnSleepingBagDestroyed`
+
+- Called after a player removes a sleeping bag from their respawn screen
+
+**Returns:** No return behavior
+
+```csharp
+void OnSleepingBagDestroyed(SleepingBag sleepingBag, BasePlayer player)
+{
+ Puts("OnSleepingBagDestroyed works!");
+}
+```
+
+Tags: `sleeping`, `entity` · uMod last updated 2022-01-17
+
+
+
+### `OnBookmarkInput`
+
+- Called when input is received from a player who is using a computer station with a bookmark selected
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBookmarkInput(ComputerStation computerStation, BasePlayer player, InputState inputState)
+{
+ Puts("OnBookmarkInput works!");
+ return null;
+}
+```
+
+Tags: `bookmark`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityControl`
+
+- Called when a player tries to remote control an entity
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object OnEntityControl(IRemoteControllable entity)
+{
+ Puts("OnEntityControl works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnTurretRotate`
+
+- Called when a player tries to rotate an auto turret
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTurretRotate(AutoTurret turret, BasePlayer player)
+{
+ Puts("OnTurretRotate works!");
+ return null;
+}
+```
+
+Tags: `turret`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCounterTargetChange`
+
+- Called when a player tries to change the target number of a power counter
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCounterTargetChange(PowerCounter counter, BasePlayer player, int targetNumber)
+{
+ Puts("OnCounterTargetChange works!");
+ return null;
+}
+```
+
+Tags: `counter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCounterModeToggle`
+
+- Called when a player ties to toggle a power counter between modes
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCounterModeToggle(PowerCounter counter, BasePlayer player, bool mode)
+{
+ Puts("OnCounterModeToggle works!");
+ return null;
+}
+```
+
+Tags: `counter`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSwitchToggle`
+
+- Called when a player tries to switch and ElectricSwitch or FuelGenerator
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnSwitchToggle(IOEntity entity, BasePlayer player)
+{
+ Puts("OnSwitchToggle works!");
+ return null;
+}
+```
+
+Tags: `switch`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSwitchToggled`
+
+- Called right after a player switches an ElectricSwitch or FuelGenerator
+
+**Returns:** No return behavior
+
+```csharp
+void OnSwitchToggled(IOEntity entity, BasePlayer player)
+{
+ Puts("OnSwitchToggled works!");
+}
+```
+
+Tags: `switch`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityDestroy`
+
+- Called right before a CH47Helicopter or BradleyAPC is destroyed
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEntityDestroy(BaseCombatEntity entity)
+{
+ Puts("OnEntityDestroy works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnElevatorButtonPress`
+
+- Called when a player presses a button on an elevator lift
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnElevatorButtonPress(ElevatorLift lift, BasePlayer player, Elevator.Direction direction, bool toTopOrBottom)
+{
+ Puts("OnElevatorButtonPress works!");
+ return null;
+}
+```
+
+Tags: `elevator`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnElevatorCall`
+
+- Called when an elevator lift is called to a specific floor by electricity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnElevatorCall(Elevator elevator, Elevator topElevator)
+{
+ Puts("OnElevatorCall works!");
+ return null;
+}
+```
+
+Tags: `elevator`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnElevatorMove`
+
+- Called right before an elevator starts moving to the target floor
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnElevatorMove(Elevator topElevator, int targetFloor)
+{
+ Puts("OnElevatorMove works!");
+ return null;
+}
+```
+
+Tags: `elevator`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `CanSwapToSeat`
+
+- Called when a player tries to switch seats, to determine whether each seat is eligible to be swapped to
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanSwapToSeat(BasePlayer player, BaseMountable mountable)
+{
+ Puts("CanSwapToSeat works!");
+ return true;
+}
+```
+
+Tags: `swap`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRidableAnimalClaim`
+
+- Called when a player tries to claim a horse
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRidableAnimalClaim(BaseRidableAnimal animal, BasePlayer player)
+{
+ Puts("OnRidableAnimalClaim works!");
+ return null;
+}
+```
+
+Tags: `ridable`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnRidableAnimalClaimed`
+
+- Called after a player has claimed a horse
+
+**Returns:** No return behavior
+
+```csharp
+void OnRidableAnimalClaimed(BaseRidableAnimal animal, BasePlayer player)
+{
+ Puts("OnRidableAnimalClaimed works!");
+}
+```
+
+Tags: `ridable`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntitySaved`
+
+- Called after a BaseNetworkable has been saved to a ProtoBuf object and is about to be serialized to a network stream or network cache
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntitySaved(BaseNetworkable entity, BaseNetworkable.SaveInfo saveInfo)
+{
+ Puts("OnEntitySaved works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntitySnapshot`
+
+- Called when an entity snapshot is about to be sent to a client connection
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEntitySnapshot(BaseNetworkable entity, Connection connection)
+{
+ Puts("OnEntitySnapshot works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityFlagsNetworkUpdate`
+
+- Called after an entity's flags have been updated on the server, before they are sent over the network
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEntityFlagsNetworkUpdate(BaseEntity entity)
+{
+ Puts("OnEntityFlagsNetworkUpdate works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnIORefCleared`
+
+- Called after a wire has been disconnected from an electrical entity, such as when its connected entity was destroyed or when a player removed the wire
+
+**Returns:** No return behavior
+
+```csharp
+void OnIORefCleared(IOEntity.IORef ioRef, IOEntity ioEntity)
+{
+ Puts("OnIORefCleared works!");
+}
+```
+
+Tags: `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnSupplyDropDropped`
+
+- Called right after a cargo plane has dropped a supply drop
+
+**Returns:** No return behavior
+
+```csharp
+void OnSupplyDropDropped(SupplyDrop supplyDrop, CargoPlane cargoPlane)
+{
+ Puts("OnSupplyDropDropped works!");
+}
+```
+
+Tags: `supply`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnCargoPlaneSignaled`
+
+- Called right after a supply signal has called a cargo plane
+
+**Returns:** No return behavior
+
+```csharp
+void OnCargoPlaneSignaled(CargoPlane cargoPlane, SupplySignal supplySignal)
+{
+ Puts("OnCargoPlaneSignaled works!");
+}
+```
+
+Tags: `cargo`, `entity` · uMod last updated 2021-05-08
+
+
+
+### `OnWaterPurify`
+
+- Called when salt water is about to be converted to fresh water in a water purifier
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnWaterPurify(WaterPurifier waterPurifier, float timeCooked)
+{
+ Puts("OnWaterPurify works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnWaterPurified`
+
+- Called after salt water has been converted to fresh water in a water purifier
+
+**Returns:** No return behavior
+
+```csharp
+void OnWaterPurified(WaterPurifier waterPurifier, float timeCooked)
+{
+ Puts("OnWaterPurified works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnSleepingBagValidCheck`
+
+- Called when determining if a sleeping bag is a valid respawn location for a player
+- Useful in conjunction with OnRespawnInformationGiven since a custom sleeping bag will need to pass this check
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool? OnSleepingBagValidCheck(SleepingBag bag, ulong targetPlayerID, bool ignoreTimers)
+{
+ Puts("OnSleepingBagValidCheck works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-06-12
+
+
+
+### `OnCCTVDirectionChange`
+
+- Called when a player attempts to change the direction of a CCTV camera to face them
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnCCTVDirectionChange(CCTV_RC camera, BasePlayer player)
+{
+ Puts("OnCCTVDirectionChange works!");
+ return null;
+}
+```
+
+Tags: `entity` · uMod last updated 2022-01-24
+
+
+
+### `OnWaterCollect`
+
+- Called when a water catcher is about to collect water
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnWaterCollect(WaterCatcher waterCatcher)
+{
+ Puts("OnWaterCollect works!");
+ return null;
+}
+```
+
+Tags: `entity`, `item` · uMod last updated 2021-07-03
+
+
+
+### `OnLiquidVesselFill`
+
+- Called when a player is attempting to fill a liquid vessel
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnLiquidVesselFill(BaseLiquidVessel liquidVessel, BasePlayer player, LiquidContainer facingLiquidContainer)
+{
+ Puts("OnLiquidVesselFill works!");
+ return null;
+}
+```
+
+Tags: `entity`, `item` · uMod last updated 2021-07-03
+
+
+
+### `OnLockerSwap`
+
+- Called when a player clicks the "Swap" button while viewing a locker interface
+
+**Returns:** Returning non-null value overrides default behavior
+
+```csharp
+object OnLockerSwap(Locker locker, int startIndex, BasePlayer player)
+{
+ Puts("OnLockerSwap works!");
+ return null;
+}
+```
+
+Tags: `entity`, `locker` · uMod last updated 2023-12-10
+
+
+
+### `CanLockerAcceptItem`
+
+- Called before an item is attempted to be placed inside a locker
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object CanLockerAcceptItem(Locker locker, Item item, int targetPos)
+{
+ Puts("CanLockerAcceptItem works!");
+ return null;
+}
+```
+
+Tags: `entity`, `locker` · uMod last updated 2023-12-10
+
+---
+
+## Item Hooks
+
+*Item stacks and containers: add, remove, split, stack, move, repair, research, craft, use.*
+
+43 hooks: [`CanAcceptItem`](#canacceptitem), [`CanDropActiveItem`](#candropactiveitem), [`OnBackpackDrop`](#onbackpackdrop), [`OnCardSwipe`](#oncardswipe), [`OnItemRemove`](#onitemremove), [`OnMapImageUpdated`](#onmapimageupdated), [`CanCombineDroppedItem`](#cancombinedroppeditem), [`CanMoveItem`](#canmoveitem), [`CanStackItem`](#canstackitem), [`OnFuelConsume`](#onfuelconsume), [`OnFuelConsumed`](#onfuelconsumed), [`OnFindBurnable`](#onfindburnable), [`OnHealingItemUse`](#onhealingitemuse), [`OnItemAction`](#onitemaction), [`OnItemAddedToContainer`](#onitemaddedtocontainer), [`OnItemCraft`](#onitemcraft), [`OnItemCraftCancelled`](#onitemcraftcancelled), [`OnItemCraftFinished`](#onitemcraftfinished), [`OnItemDeployed`](#onitemdeployed), [`OnItemDropped`](#onitemdropped), [`OnItemPickup`](#onitempickup), [`OnItemRemovedFromContainer`](#onitemremovedfromcontainer), [`OnItemRepair`](#onitemrepair), [`OnItemResearch`](#onitemresearch), [`OnItemResearched`](#onitemresearched), [`OnResearchCostDetermine`](#onresearchcostdetermine), [`OnItemSplit`](#onitemsplit), [`OnItemUpgrade`](#onitemupgrade), [`OnItemUse`](#onitemuse), [`OnLoseCondition`](#onlosecondition), [`OnMaxStackable`](#onmaxstackable), [`OnTrapArm`](#ontraparm), [`OnTrapDisarm`](#ontrapdisarm), [`OnTrapSnapped`](#ontrapsnapped), [`OnTrapTrigger`](#ontraptrigger), [`OnBonusItemDrop`](#onbonusitemdrop), [`OnBonusItemDropped`](#onbonusitemdropped), [`OnItemRefill`](#onitemrefill), [`OnItemLock`](#onitemlock), [`OnItemUnlock`](#onitemunlock), [`OnItemSubmit`](#onitemsubmit), [`OnItemStacked`](#onitemstacked), [`OnIngredientsCollect`](#oningredientscollect)
+
+
+
+### `CanAcceptItem`
+
+- Called when attempting to put an item in a container
+
+**Returns:** Returning CanAcceptResult value overrides default behavior
+
+```csharp
+ItemContainer.CanAcceptResult? CanAcceptItem(ItemContainer container, Item item, int targetPos)
+{
+ Puts("CanAcceptItem works!");
+ return null;
+}
+```
+
+Tags: `accept`, `item` · uMod last updated 2021-05-08
+
+
+
+### `CanDropActiveItem`
+
+- Called when a player attempts to drop their active item
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanDropActiveItem(BasePlayer player)
+{
+ Puts("CanDropActiveItem works!");
+ return true;
+}
+```
+
+Tags: `drop`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnBackpackDrop`
+
+- Called just before a backpack is dropped from a player on death.
+
+**Returns:** Return non-null to override default behaviour.
+
+```csharp
+object OnBackpackDrop(Item backpack, BasePlayer player)
+{
+ Puts("OnBackpackDrop works!");
+ return null;
+}
+```
+
+Tags: `rust` · uMod last updated 2024-05-08
+
+
+
+### `OnCardSwipe`
+
+- Called when a player is trying to swipe a card
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnCardSwipe(CardReader cardReader, Keycard card, BasePlayer player)
+{
+ Puts("OnCardSwipe works!");
+ return null;
+}
+```
+
+Tags: `card`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemRemove`
+
+- Called before an item is destroyed
+
+**Returns:** Return a non-null value stop item from being destroyed
+
+```csharp
+// Example that stops item from being destroyed
+
+object OnItemRemove(Item item)
+{
+ Puts("OnItemRemove works!");
+ return null;
+}
+```
+
+```csharp
+// Example that does not stop item from being destroyed
+
+void OnItemRemove(Item item)
+{
+ Puts("OnItemRemove works!");
+}
+```
+
+Tags: `item` · uMod last updated 2022-01-17
+
+
+
+### `OnMapImageUpdated`
+
+- Called when player updates map item's image
+- Useful for executing any action when map image is updated
+
+**Returns:** No return behavior
+
+```csharp
+void OnMapImageUpdated()
+{
+ Puts("OnMapImageUpdated works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `CanCombineDroppedItem`
+
+- Called when an item is dropped on another item
+
+**Returns:** Returning a non-null value overwrites command arguments
+
+```csharp
+object CanCombineDroppedItem(DroppedItem item, DroppedItem targetItem)
+{
+ Puts("CanCombineDroppedItem works!");
+ return null;
+}
+```
+
+Tags: `combine`, `item` · uMod last updated 2021-05-08
+
+
+
+### `CanMoveItem`
+
+- Called when moving an item from one inventory slot to another
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanMoveItem(Item item, PlayerInventory playerLoot, ItemContainerId targetContainer, int targetSlot, int amount, ItemMoveModifier itemMoveModifier)
+{
+ Puts("CanMoveItem works!");
+ return null;
+}
+```
+
+Tags: `move`, `item` · uMod last updated 2024-02-02
+
+
+
+### `CanStackItem`
+
+- Called when moving an item onto another item
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanStackItem(Item item, Item targetItem)
+{
+ Puts("CanStackItem works!");
+ return true;
+}
+```
+
+Tags: `stack`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnFuelConsume`
+
+- Called right before fuel is used (furnace, lanterns, camp fires, etc.)
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnFuelConsume(BaseOven oven, Item fuel, ItemModBurnable burnable)
+{
+ Puts("OnFuelConsume works!");
+ return null;
+}
+```
+
+Tags: `fuel`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnFuelConsumed`
+
+- Called after fuel is used (furnace, lanterns, camp fires, etc.)
+
+**Returns:** No return behavior
+
+```csharp
+void OnFuelConsumed(BaseOven oven, Item fuel, ItemModBurnable burnable)
+{
+ Puts("OnFuelConsumed works!");
+}
+```
+
+Tags: `fuel`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnFindBurnable`
+
+- Called when looking for fuel for the oven
+
+**Returns:** Returning an Item overrides default behavior
+
+```csharp
+Item OnFindBurnable(BaseOven oven)
+{
+ Puts("OnFindBurnable works!");
+ return null;
+}
+```
+
+Tags: `find`, `item` · uMod last updated 2022-10-05
+
+
+
+### `OnHealingItemUse`
+
+- Called when a player attempts to use a medical tool
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHealingItemUse(MedicalTool tool, BasePlayer player)
+{
+ Puts("OnHealingItemUse works!");
+ return null;
+}
+```
+
+Tags: `healing`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemAction`
+
+- Called when a button is clicked on an item in the inventory (drop, unwrap, ...)
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemAction(Item item, string action, BasePlayer player)
+{
+ Puts("OnItemAction works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemAddedToContainer`
+
+- Called right after an item was added to a container
+- An entire stack has to be created, not just adding more wood to a wood stack for example
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemAddedToContainer(ItemContainer container, Item item)
+{
+ Puts("OnItemAddedToContainer works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemCraft`
+
+- Called just before an item is added to the crafting queue
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object OnItemCraft(ItemCraftTask task, BasePlayer player, Item item)
+{
+ Puts("OnItemCraft works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2023-10-11
+
+
+
+### `OnItemCraftCancelled`
+
+- Called before an item has been crafted
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemCraftCancelled(ItemCraftTask task)
+{
+ Puts("OnItemCraftCancelled works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemCraftFinished`
+
+- Called right after an item has been crafted
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemCraftFinished(ItemCraftTask task, Item item)
+{
+ Puts("OnItemCraftFinished works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemDeployed`
+
+- Called right after an item has been deployed
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemDeployed(Deployer deployer, BaseEntity entity, BaseEntity slotEntity)
+{
+ Puts("OnItemDeployed works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemDropped`
+
+- Called right after an item has been dropped
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemDropped(Item item, BaseEntity entity)
+{
+ Puts("OnItemDropped works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemPickup`
+
+- Called right after an item has been picked up
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemPickup(Item item, BasePlayer player)
+{
+ Puts("OnItemPickup works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemRemovedFromContainer`
+
+- Called right after an item was removed from a container
+- The entire stack has to be removed for this to be called, not just a little bit
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemRemovedFromContainer(ItemContainer container, Item item)
+{
+ Puts("OnItemRemovedFromContainer works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemRepair`
+
+- Called right before an item is repaired
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemRepair(BasePlayer player, Item item)
+{
+ Puts("OnItemRepair works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-07-21
+
+
+
+### `OnItemResearch`
+
+- Called right before a player begins to research an item
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemResearch(ResearchTable table, Item targetItem, BasePlayer player)
+{
+ Puts("OnItemResearch works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemResearched`
+
+- Called right before a player finishes researching an item
+
+**Returns:** Returning a float will affect if researching is successful or not
+
+```csharp
+float OnItemResearched(ResearchTable table, float chance)
+{
+ Puts("OnItemResearched works!");
+ return 1;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnResearchCostDetermine`
+
+- Called when an item is being scrapped at a research table or when a blueprint is being unlocked in a tech tree
+
+**Returns:** Returning a numeric value (int) overrides the default value
+
+```csharp
+object OnResearchCostDetermine(Item item, ResearchTable researchTable)
+{
+ Puts("OnResearchCostDetermine works!");
+ return null;
+}
+```
+```csharp
+object OnResearchCostDetermine(ItemDefinition itemDefinition)
+{
+ Puts("OnResearchCostDetermine works!");
+ return null;
+}
+```
+
+Tags: `research`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemSplit`
+
+- Called right before an item is split into multiple stacks
+
+**Returns:** Returning an Item overrides default behavior
+
+```csharp
+Item OnItemSplit(Item item, int amount)
+{
+ Puts("OnItemSplit works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemUpgrade`
+
+- Called right before an item is upgraded
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemUpgrade(Item item, Item upgraded, BasePlayer player)
+{
+ Puts("OnItemUpgrade works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemUse`
+
+- Called when an item is used
+
+**Returns:** Returning an int overrides the amount consumed.
+
+```csharp
+int OnItemUse(Item item, int amountToUse)
+{
+ Puts("OnItemUse works!");
+ return amountToUse;
+}
+```
+
+Tags: `item` · uMod last updated 2022-07-27
+
+
+
+### `OnLoseCondition`
+
+- Called right before the condition of the item is modified
+
+**Returns:** No return behavior
+
+```csharp
+void OnLoseCondition(Item item, ref float amount)
+{
+ Puts("OnLoseCondition works!");
+}
+```
+
+Tags: `lose`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnMaxStackable`
+
+- Called when an items max stackable is calculated
+
+**Returns:** Returning a numeric value (int) overrides the default value
+
+```csharp
+int OnMaxStackable(Item item)
+{
+ Puts("OnMaxStackable works!");
+ return 1;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnTrapArm`
+
+- Called when the player arms a bear trap
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTrapArm(BearTrap trap, BasePlayer player)
+{
+ Puts("OnTrapArm works!");
+ return null;
+}
+```
+
+Tags: `trap`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnTrapDisarm`
+
+- Called when the player disarms a land mine
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTrapDisarm(Landmine trap, BasePlayer player)
+{
+ Puts("OnTrapDisarm works!");
+ return null;
+}
+```
+
+Tags: `trap`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnTrapSnapped`
+
+- Called when a trap is triggered by a game object
+
+**Returns:** No return behavior
+
+```csharp
+void OnTrapSnapped(BaseTrapTrigger trap, GameObject go)
+{
+ Puts("OnTrapSnapped works!");
+}
+```
+
+Tags: `trap`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnTrapTrigger`
+
+- Called when a trap is triggered by a game object
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTrapTrigger(BaseTrap trap, GameObject go)
+{
+ Puts("OnTrapTrigger works!");
+ return null;
+}
+```
+
+Tags: `trap`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnBonusItemDrop`
+
+- Called when a loot container is about to drop bonus scrap for a player who has a corresponding tea buff
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBonusItemDrop(Item item, BasePlayer player)
+{
+ Puts("OnBonusItemDrop works!");
+ return null;
+}
+```
+
+Tags: `bonus`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnBonusItemDropped`
+
+- Called after a loot container has dropped bonus scrap for a player who has a corresponding tea buff
+
+**Returns:** No return behavior
+
+```csharp
+void OnBonusItemDropped(Item item, BasePlayer player)
+{
+ Puts("OnBonusItemDropped works!");
+}
+```
+
+Tags: `bonus`, `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemRefill`
+
+- Called right before an item such as a diving tank is repaired without using a repair bench
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemRefill(Item item, BasePlayer player)
+{
+ Puts("OnItemRefill works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemLock`
+
+- Called right before an item is locked, such as in a modular car inventory
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemLock(Item item)
+{
+ Puts("OnItemLock works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemUnlock`
+
+- Called right before an item is unlocked, such as in a modular car inventory
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnItemUnlock(Item item)
+{
+ Puts("OnItemUnlock works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemSubmit`
+
+- Called when a player submits an item into a mailbox or dropbox
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnItemSubmit(Item item, Mailbox mailbox, BasePlayer player)
+{
+ Puts("OnItemSubmit works!");
+ return null;
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnItemStacked`
+
+- Called after an item has been stacked
+
+**Returns:** No return behavior
+
+```csharp
+void OnItemStacked(Item destinationItem, Item sourceItem, ItemContainer destinationContainer)
+{
+ Puts("OnItemStacked works!");
+}
+```
+
+Tags: `item` · uMod last updated 2021-05-08
+
+
+
+### `OnIngredientsCollect`
+
+- Called when ingredients are about to be collected for crafting an item
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+bool? OnIngredientsCollect(ItemCrafter itemCrafter, ItemBlueprint blueprint, ItemCraftTask task, int amount, BasePlayer player)
+{
+ Puts("OnIngredientsCollect works!");
+ return null;
+}
+```
+
+Tags: `craft` · uMod last updated 2021-06-12
+
+---
+
+## Resource Hooks
+
+*Gathering and node dispensers — ore, trees, corpses, collectibles, quarries.*
+
+12 hooks: [`CanTakeCutting`](#cantakecutting), [`OnCollectiblePickup`](#oncollectiblepickup), [`OnGrowableGathered`](#ongrowablegathered), [`OnQuarryToggled`](#onquarrytoggled), [`OnRemoveDying`](#onremovedying), [`OnGrowableGather`](#ongrowablegather), [`OnDispenserBonus`](#ondispenserbonus), [`OnDispenserGather`](#ondispensergather), [`OnQuarryEnabled`](#onquarryenabled), [`OnTreeMarkerHit`](#ontreemarkerhit), [`OnQuarryGather`](#onquarrygather), [`OnSurveyGather`](#onsurveygather)
+
+
+
+### `CanTakeCutting`
+
+- Called when a player is trying to take a cutting (clone) of a GrowableEntity
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanTakeCutting(BasePlayer player, GrowableEntity entity)
+{
+ Puts("CanTakeCutting works!");
+ return null;
+}
+```
+
+Tags: `take`, `resource` · uMod last updated 2022-01-24
+
+
+
+### `OnCollectiblePickup`
+
+- Called when the player collects an item
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCollectiblePickup(CollectibleEntity collectible, BasePlayer player)
+{
+ Puts("OnCollectiblePickup works!");
+ return null;
+}
+```
+
+Tags: `collectible`, `resource` · uMod last updated 2022-08-14
+
+
+
+### `OnGrowableGathered`
+
+- Called before the player receives an item from gathering a growable entity
+
+**Returns:** No return behavior
+
+```csharp
+void OnGrowableGathered(GrowableEntity plant, Item item, BasePlayer player)
+{
+ Puts($"{player.displayName} has gathered {item.info.shortname} x {item.amount}.");
+}
+```
+
+Tags: `growable`, `resource` · uMod last updated 2021-05-08
+
+
+
+### `OnQuarryToggled`
+
+- Called when a quarry has just been toggled
+
+**Returns:** No return behavior
+
+```csharp
+void OnQuarryToggled(MiningQuarry quarry, BasePlayer player)
+{
+ Puts($"{player.displayName} has toggled a quarry");
+}
+```
+
+Tags: `quarry`, `resource` · uMod last updated 2021-05-08
+
+
+
+### `OnRemoveDying`
+
+- Called when a player is trying to harvest a dying growable entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRemoveDying(GrowableEntity plant, BasePlayer player)
+{
+ Puts("OnRemoveDying works!");
+ return null;
+}
+```
+
+Tags: `remove`, `resource` · uMod last updated 2021-05-08
+
+
+
+### `OnGrowableGather`
+
+- Called when the player gathers a growable entity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnGrowableGather(GrowableEntity plant, BasePlayer player)
+{
+ Puts("OnGrowableGather works!");
+ return null;
+}
+```
+
+Tags: `growable`, `resource` · uMod last updated 2021-05-08
+
+
+
+### `OnDispenserBonus`
+
+- Called before the player is given a bonus item for gathering
+
+**Returns:** Returning an Item replaces the existing Item
+
+```csharp
+void OnDispenserBonus(ResourceDispenser dispenser, BasePlayer player, Item item)
+{
+ Puts("OnDispenserBonus works!");
+}
+```
+
+Tags: `dispenser`, `resource` · uMod last updated 2021-10-19
+
+
+
+### `OnDispenserGather`
+
+- Called before the player is given items from a resource
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnDispenserGather(ResourceDispenser dispenser, BasePlayer player, Item item)
+{
+ Puts("OnDispenserGather works!");
+ return null;
+}
+```
+
+Tags: `dispenser`, `resource` · uMod last updated 2023-05-04
+
+
+
+### `OnQuarryEnabled`
+
+- Called when a mining quarry is turned on/enabled
+
+**Returns:** No return behavior
+
+```csharp
+void OnQuarryEnabled(MiningQuarry quarry)
+{
+ Puts("OnQuarryEnabled works!");
+}
+```
+
+Tags: `quarry`, `resource` · uMod last updated 2021-05-08
+
+
+
+### `OnTreeMarkerHit`
+
+- Called when a player hits a tree with a tool (rock, hatchet, etc.)
+
+**Returns:** Returning true or false overrides default behaviour
+
+```csharp
+bool? OnTreeMarkerHit(TreeEntity tree, HitInfo info)
+{
+ Puts("OnTreeMarkerHit works!");
+ return null;
+}
+```
+
+Tags: `resource`, `tree` · uMod last updated 2022-04-11
+
+
+
+### `OnQuarryGather`
+
+- Called before items are gathered from a quarry
+
+**Returns:** No return behavior
+
+```csharp
+void OnQuarryGather(MiningQuarry quarry, Item item)
+{
+ Puts("OnQuarryGather works!");
+}
+```
+
+Tags: `quarry`, `resource` · uMod last updated 2021-05-08
+
+
+
+### `OnSurveyGather`
+
+- Called before items are gathered from a survey charge
+
+**Returns:** No return behavior
+
+```csharp
+void OnSurveyGather(SurveyCharge survey, Item item)
+{
+ Puts("OnSurveyGather works!");
+}
+```
+
+Tags: `survey`, `resource` · uMod last updated 2021-05-08
+
+---
+
+## Structure Hooks
+
+*Building blocks: placement, upgrade, demolish, rotate, stability, doors and locks.*
+
+15 hooks: [`OnCodeEntered`](#oncodeentered), [`OnCupboardAuthorize`](#oncupboardauthorize), [`OnCupboardClearList`](#oncupboardclearlist), [`OnCupboardDeauthorize`](#oncupboarddeauthorize), [`OnDoorClosed`](#ondoorclosed), [`OnDoorOpened`](#ondooropened), [`OnDoorKnocked`](#ondoorknocked), [`OnEntityBuilt`](#onentitybuilt), [`OnHammerHit`](#onhammerhit), [`OnStructureDemolish`](#onstructuredemolish), [`OnStructureRepair`](#onstructurerepair), [`OnStructureRotate`](#onstructurerotate), [`OnStructureUpgrade`](#onstructureupgrade), [`OnConstructionPlace`](#onconstructionplace), [`OnBuildingSplit`](#onbuildingsplit)
+
+
+
+### `OnCodeEntered`
+
+- Called when the player has entered a code in a codelock
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCodeEntered(CodeLock codeLock, BasePlayer player, string code)
+{
+ Puts("OnCodeEntered works!");
+ return null;
+}
+```
+
+Tags: `code`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnCupboardAuthorize`
+
+- Called when a cupboard attempts to authorize a player
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCupboardAuthorize(BuildingPrivlidge privilege, BasePlayer player)
+{
+ Puts("OnCupboardAuthorize works!");
+ return null;
+}
+```
+
+Tags: `cupboard`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnCupboardClearList`
+
+- Called when an attempt is made to clear a cupboard authorized list
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCupboardClearList(BuildingPrivlidge privilege, BasePlayer player)
+{
+ Puts("OnCupboardClearList works!");
+ return null;
+}
+```
+
+Tags: `cupboard`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnCupboardDeauthorize`
+
+- Called when a cupboard attempts to deauthorize a player
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnCupboardDeauthorize(BuildingPrivlidge privilege, BasePlayer player)
+{
+ Puts("OnCupboardDeauthorize works!");
+ return null;
+}
+```
+
+Tags: `cupboard`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnDoorClosed`
+
+- Called when the player closed a door
+
+**Returns:** No return behavior
+
+```csharp
+void OnDoorClosed(Door door, BasePlayer player)
+{
+ Puts("OnDoorClosed works!");
+}
+```
+
+Tags: `door`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnDoorOpened`
+
+- Called when the player opened a door
+
+**Returns:** No return behavior
+
+```csharp
+void OnDoorOpened(Door door, BasePlayer player)
+{
+ Puts("OnDoorOpened works!");
+}
+```
+
+Tags: `door`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnDoorKnocked`
+
+- Called when the player knocks on a door
+
+**Returns:** No return behavior
+
+```csharp
+void OnDoorKnocked(Door door, BasePlayer player)
+{
+ Puts("OnDoorKnocked works!");
+}
+```
+
+Tags: `door`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnEntityBuilt`
+
+- Called when any structure is built (walls, ceilings, stairs, etc.)
+
+**Returns:** No return behavior
+
+```csharp
+void OnEntityBuilt(Planner plan, GameObject go)
+{
+ Puts("OnEntityBuilt works!");
+}
+```
+
+Tags: `entity`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnHammerHit`
+
+- Called when the player has hit something with a hammer
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHammerHit(BasePlayer player, HitInfo info)
+{
+ Puts("OnHammerHit works!");
+ return null;
+}
+```
+
+Tags: `hammer`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnStructureDemolish`
+
+- Called when the player selects Demolish or DemolishImmediate from the BuildingBlock or BaseCombatEntity menu
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnStructureDemolish(BaseCombatEntity entity, BasePlayer player, bool immediate)
+{
+ Puts("OnStructureDemolish works!");
+ return null;
+}
+```
+
+Tags: `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnStructureRepair`
+
+- Called when the player repairs a BuildingBlock or BaseCombatEntity
+
+**Returns:** Returning a non-null value cancels repair
+
+```csharp
+object OnStructureRepair(BaseCombatEntity entity, BasePlayer player)
+{
+ Puts("OnStructureRepair works!");
+ return null;
+}
+```
+
+Tags: `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnStructureRotate`
+
+- Called when the player rotates a BuildingBlock or BaseCombatEntity
+
+**Returns:** Returning a non-null value cancels rotate
+
+```csharp
+object OnStructureRotate(BaseCombatEntity entity, BasePlayer player)
+{
+ Puts("OnStructureRotate works!");
+ return null;
+}
+```
+
+Tags: `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnStructureUpgrade`
+
+- Called when the player upgrades the grade of a BuildingBlock or BaseCombatEntity
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnStructureUpgrade(BaseCombatEntity entity, BasePlayer player, BuildingGrade.Enum grade)
+{
+ Puts("OnStructureUpgrade works!");
+ return null;
+}
+```
+
+Tags: `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnConstructionPlace`
+
+- Called when a player tries to place a building block
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnConstructionPlace(BaseEntity entity, Construction component, Construction.Target constructionTarget, BasePlayer player)
+{
+ Puts("OnConstructionPlace works!");
+ return null;
+}
+```
+
+Tags: `construction`, `structure` · uMod last updated 2021-05-08
+
+
+
+### `OnBuildingSplit`
+
+- Called when a building is split into two
+
+**Returns:** No return behavior
+
+```csharp
+void OnBuildingSplit(BuildingManager.Building building, uint newBuildingId)
+{
+ Puts("OnBuildingSplit works!");
+}
+```
+
+Tags: `building`, `structure` · uMod last updated 2022-09-11
+
+---
+
+## Terrain Hooks
+
+*Terrain/map topology.*
+
+1 hook: [`OnTerrainInitialized`](#onterraininitialized)
+
+
+
+### `OnTerrainInitialized`
+
+- Called after the terrain generation process has completed
+
+**Returns:** No return behavior
+
+```csharp
+void OnTerrainInitialized()
+{
+ Puts("OnTerrainInitialized works!");
+}
+```
+
+Tags: `terrain` · uMod last updated 2021-05-08
+
+---
+
+## Vending Hooks
+
+*Vending machines and the shop/trade flow, including the marketplace and drone deliveries.*
+
+16 hooks: [`CanAdministerVending`](#canadministervending), [`OnGiveSoldItem`](#ongivesolditem), [`OnTakeCurrencyItem`](#ontakecurrencyitem), [`OnVendingShopRename`](#onvendingshoprename), [`CanUseVending`](#canusevending), [`CanVendingAcceptItem`](#canvendingacceptitem), [`OnAddVendingOffer`](#onaddvendingoffer), [`OnBuyVendingItem`](#onbuyvendingitem), [`OnDeleteVendingOffer`](#ondeletevendingoffer), [`OnOpenVendingAdmin`](#onopenvendingadmin), [`OnVendingShopOpened`](#onvendingshopopened), [`OnRefreshVendingStock`](#onrefreshvendingstock), [`OnRotateVendingMachine`](#onrotatevendingmachine), [`OnToggleVendingBroadcast`](#ontogglevendingbroadcast), [`OnVendingTransaction`](#onvendingtransaction), [`OnNpcGiveSoldItem`](#onnpcgivesolditem)
+
+
+
+### `CanAdministerVending`
+
+- Called when a player attempts to administer a vending machine
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanAdministerVending(BasePlayer player, VendingMachine machine)
+{
+ Puts("CanAdministerVending works!");
+ return true;
+}
+```
+
+Tags: `administer`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnGiveSoldItem`
+
+- Called before a sold item is given
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnGiveSoldItem(NPCVendingMachine vending, Item soldItem, BasePlayer buyer)
+{
+ Puts("OnGiveSoldItem works!");
+ return null;
+}
+```
+```csharp
+object OnGiveSoldItem(VendingMachine vending, Item soldItem, BasePlayer buyer)
+{
+ Puts("OnGiveSoldItem works!");
+ return null;
+}
+```
+
+Tags: `give`, `vending` · uMod last updated 2022-01-17
+
+
+
+### `OnTakeCurrencyItem`
+
+- Called before currency item is taken
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTakeCurrencyItem(VendingMachine vending, Item item)
+{
+ Puts("OnTakeCurrencyItem works!");
+ return null;
+}
+```
+
+Tags: `take`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnVendingShopRename`
+
+- Called when a player tries to rename vending shop
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnVendingShopRename(VendingMachine vending, string newName, BasePlayer player)
+{
+ Puts("OnVendingShopRename works!");
+ return null;
+}
+```
+
+Tags: `vending` · uMod last updated 2021-05-08
+
+
+
+### `CanUseVending`
+
+- Called when a player attempts to use a vending machine
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanUseVending(BasePlayer player, VendingMachine machine)
+{
+ Puts("CanUseVending works!");
+ return true;
+}
+```
+
+Tags: `vending` · uMod last updated 2022-09-11
+
+
+
+### `CanVendingAcceptItem`
+
+- Called when a player attempts to administer a vending machine
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool CanVendingAcceptItem(VendingMachine vending, Item item, int targetPos)
+{
+ Puts("CanVendingAcceptItem works!");
+ return true;
+}
+```
+
+Tags: `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnAddVendingOffer`
+
+- Called when a sell order/offer is added to a vending machine
+
+**Returns:** No return behavior
+
+```csharp
+void OnAddVendingOffer(VendingMachine machine, ProtoBuf.VendingMachine.SellOrder sellOrder)
+{
+ Puts("OnAddVendingOffer works!");
+}
+```
+
+Tags: `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnBuyVendingItem`
+
+- Called when a player buys an item from a vending machine
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnBuyVendingItem(VendingMachine machine, BasePlayer player, int sellOrderId, int numberOfTransactions)
+{
+ Puts("OnBuyVendingItem works!");
+ return null;
+}
+```
+
+Tags: `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnDeleteVendingOffer`
+
+- Called when a sell order/offer is deleted from a vending machine
+
+**Returns:** No return behavior
+
+```csharp
+void OnDeleteVendingOffer(VendingMachine machine, int offerId)
+{
+ Puts("OnDeleteVendingOffer works!");
+}
+```
+
+Tags: `delete`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnOpenVendingAdmin`
+
+- Called when a player opens the admin ui for a vending machine
+
+**Returns:** No return behavior
+
+```csharp
+void OnOpenVendingAdmin(VendingMachine machine, BasePlayer player)
+{
+ Puts("OnOpenVendingAdmin works!");
+}
+```
+
+Tags: `open`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnVendingShopOpened`
+
+- Called when a player opens the customer ui for a vending machine
+
+**Returns:** No return behavior
+
+```csharp
+void OnVendingShopOpened(VendingMachine machine, BasePlayer player)
+{
+ Puts("OnVendingShopOpened works!");
+}
+```
+
+Tags: `open`, `vending` · uMod last updated 2022-09-12
+
+
+
+### `OnRefreshVendingStock`
+
+- Called when the stock on a vending machine is updated
+
+**Returns:** No return behavior
+
+```csharp
+void OnRefreshVendingStock(VendingMachine machine, Item item)
+{
+ Puts("OnRefreshVendingStock works!");
+}
+```
+
+Tags: `refresh`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnRotateVendingMachine`
+
+- Called when a player attempts to rotate a vending machine
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnRotateVendingMachine(VendingMachine machine, BasePlayer player)
+{
+ Puts("OnRotateVendingMachine works!");
+ return null;
+}
+```
+
+Tags: `rotate`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnToggleVendingBroadcast`
+
+- Called when a player toggles the broadcasting of the vending machine
+
+**Returns:** No return behavior
+
+```csharp
+void OnToggleVendingBroadcast(VendingMachine machine, BasePlayer player)
+{
+ Puts("OnToggleVendingBroadcast works!");
+}
+```
+
+Tags: `toggle`, `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnVendingTransaction`
+
+- Called when a player attempts to buy an item from a vending machine
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool OnVendingTransaction(VendingMachine machine, BasePlayer buyer, int sellOrderId, int numberOfTransactions)
+{
+ Puts("OnVendingTransaction works!");
+ return true;
+}
+```
+
+Tags: `vending` · uMod last updated 2021-05-08
+
+
+
+### `OnNpcGiveSoldItem`
+
+- Called before a non-player controlled vending machine (at outpost etc.) gives the player the item they purchased.
+
+**Returns:** Returning a non-null value overrides default behaviour.
+
+```csharp
+object OnNpcGiveSoldItem(NPCVendingMachine machine, Item soldItem, BasePlayer buyer)
+{
+ Puts("OnNpcGiveSoldItem works!");
+ return null;
+}
+```
+
+Tags: `vending` · uMod last updated 2021-05-10
+
+---
+
+## Weapon Hooks
+
+*Firing, reloading, throwing, melee swings, projectile and trap behaviour.*
+
+16 hooks: [`CanCreateWorldProjectile`](#cancreateworldprojectile), [`CanExplosiveStick`](#canexplosivestick), [`OnAmmoUnload`](#onammounload), [`OnExplosiveDud`](#onexplosivedud), [`OnExplosiveFuseSet`](#onexplosivefuseset), [`OnProjectileRicochet`](#onprojectilericochet), [`OnWorldProjectileCreate`](#onworldprojectilecreate), [`OnExplosiveDropped`](#onexplosivedropped), [`OnExplosiveThrown`](#onexplosivethrown), [`OnFlameThrowerBurn`](#onflamethrowerburn), [`OnMeleeThrown`](#onmeleethrown), [`OnMagazineReload`](#onmagazinereload), [`OnWeaponReload`](#onweaponreload), [`OnRocketLaunched`](#onrocketlaunched), [`OnAmmoSwitch`](#onammoswitch), [`OnWeaponFired`](#onweaponfired)
+
+
+
+### `CanCreateWorldProjectile`
+
+- Called when the item creates a projectile in the world
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object CanCreateWorldProjectile(HitInfo info, ItemDefinition itemDef)
+{
+ Puts("CanCreateWorldProjectile works!");
+ return null;
+}
+```
+
+Tags: `create`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `CanExplosiveStick`
+
+- Called when a Timed Explosive is attempting to stick to another entity
+
+**Returns:** Returning a non-null value overwrites the default behavior
+
+```csharp
+object CanExplosiveStick(TimedExplosive explosive, BaseEntity entity)
+{
+ Puts("CanExplosiveStick works!");
+ return null;
+}
+```
+
+Tags: `explosive`, `weapon` · uMod last updated 2023-07-12
+
+
+
+### `OnAmmoUnload`
+
+- Called when a player is trying to unload ammo
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnAmmoUnload(BaseProjectile projectile, Item item, BasePlayer player)
+{
+ Puts("OnAmmoUnload works!");
+ return null;
+}
+```
+
+Tags: `ammo`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnExplosiveDud`
+
+- Called when explosive tries to become dud
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnExplosiveDud(DudTimedExplosive explosive)
+{
+ Puts("OnExplosiveDud works!");
+ return null;
+}
+```
+
+Tags: `explosive`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnExplosiveFuseSet`
+
+- Called when a fuse of an explosive is set
+
+**Returns:** Returning a non-null value overwrites fuse length
+
+```csharp
+object OnExplosiveFuseSet(TimedExplosive explosive, float fuseLength)
+{
+ Puts("OnExplosiveFuseSet works!");
+ return null;
+}
+```
+
+Tags: `explosive`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnProjectileRicochet`
+
+- Called when a player's weapon projectile ricochets
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnProjectileRicochet(BasePlayer player, PlayerProjectileRicochet ricochet)
+{
+ Puts("OnProjectileRicochet works!");
+ return null;
+}
+```
+
+Tags: `projectile`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnWorldProjectileCreate`
+
+- Called when a projectile is created
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnWorldProjectileCreate(HitInfo hitInfo, Item item)
+{
+ Puts("OnWorldProjectileCreate works!");
+ return null;
+}
+```
+
+Tags: `create`, `weapon` · uMod last updated 2023-04-16
+
+
+
+### `OnExplosiveDropped`
+
+- Called when the player drops an explosive item (C4, grenade, ...)
+
+**Returns:** No return behavior
+
+```csharp
+void OnExplosiveDropped(BasePlayer player, BaseEntity entity, ThrownWeapon item)
+{
+ Puts("OnExplosiveDropped works!");
+}
+```
+
+Tags: `explosive`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnExplosiveThrown`
+
+- Called when the player throws an explosive item (C4, grenade, ...)
+
+**Returns:** No return behavior
+
+```csharp
+void OnExplosiveThrown(BasePlayer player, BaseEntity entity, ThrownWeapon item)
+{
+ Puts("OnExplosiveThrown works!");
+}
+```
+
+Tags: `explosive`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnFlameThrowerBurn`
+
+- Called when the burn from a flame thrower spreads
+
+**Returns:** No return behavior
+
+```csharp
+void OnFlameThrowerBurn(FlameThrower thrower, BaseEntity flame)
+{
+ Puts("OnFlameThrowerBurn works!");
+}
+```
+
+Tags: `flame`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnMeleeThrown`
+
+- Called when the player throws a melee item (axe, rock, ...)
+
+**Returns:** No return behavior
+
+```csharp
+void OnMeleeThrown(BasePlayer player, Item item)
+{
+ Puts("OnMeleeThrown works!");
+}
+```
+
+Tags: `melee`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnMagazineReload`
+
+- Called when the player reloads a magazine
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnMagazineReload(BaseProjectile weapon, IAmmoContainer desiredAmount, BasePlayer player)
+{
+ Puts("OnMagazineReload works!");
+ return null;
+}
+```
+
+Tags: `reload`, `weapon` · uMod last updated 2023-09-24
+
+
+
+### `OnWeaponReload`
+
+- Called when the player reloads a weapon
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnWeaponReload(BaseProjectile weapon, BasePlayer player)
+{
+ Puts("OnWeaponReload works!");
+ return null;
+}
+```
+
+Tags: `reload`, `weapon` · uMod last updated 2022-09-12
+
+
+
+### `OnRocketLaunched`
+
+- Called when the player launches a rocket
+
+**Returns:** No return behavior
+
+```csharp
+void OnRocketLaunched(BasePlayer player, BaseEntity entity)
+{
+ Puts("OnRocketLaunched works!");
+}
+```
+
+Tags: `rocket`, `weapon` · uMod last updated 2021-05-08
+
+
+
+### `OnAmmoSwitch`
+
+- Called when the player starts to switch the ammo in a weapon
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnAmmoSwitch(BaseProjectile weapon, BasePlayer player)
+{
+ Puts("OnAmmoSwitch works!");
+ return null;
+}
+```
+
+Tags: `switch`, `weapon` · uMod last updated 2023-10-11
+
+
+
+### `OnWeaponFired`
+
+- Called when the player fires a weapon
+
+**Returns:** No return behavior
+
+```csharp
+void OnWeaponFired(BaseProjectile projectile, BasePlayer player, ItemModProjectile mod, ProtoBuf.ProjectileShoot projectiles)
+{
+ Puts("OnWeaponFired works!");
+}
+```
+
+Tags: `weapon` · uMod last updated 2021-05-08
+
+---
+
+## Vehicle Hooks
+
+*Boats, cars, horses, helicopters, trains, submarines — fuel, engines, mounting, pushing.*
+
+22 hooks: [`CanUseHelicopter`](#canusehelicopter), [`OnBoatPathGenerate`](#onboatpathgenerate), [`OnVehicleModuleMove`](#onvehiclemodulemove), [`OnEngineStart`](#onenginestart), [`OnEngineStarted`](#onenginestarted), [`OnEngineStop`](#onenginestop), [`OnEngineStopped`](#onenginestopped), [`OnEngineStatsRefresh`](#onenginestatsrefresh), [`OnEngineStatsRefreshed`](#onenginestatsrefreshed), [`OnVehicleModuleSelect`](#onvehiclemoduleselect), [`OnVehicleModuleSelected`](#onvehiclemoduleselected), [`OnVehicleModuleDeselected`](#onvehiclemoduledeselected), [`OnHotAirBalloonToggle`](#onhotairballoontoggle), [`OnHotAirBalloonToggled`](#onhotairballoontoggled), [`OnVehicleModulesAssign`](#onvehiclemodulesassign), [`OnVehicleModulesAssigned`](#onvehiclemodulesassigned), [`OnVehiclePush`](#onvehiclepush), [`CanCheckFuel`](#cancheckfuel), [`CanUseFuel`](#canusefuel), [`OnFuelCheck`](#onfuelcheck), [`OnFuelAmountCheck`](#onfuelamountcheck), [`OnFuelItemCheck`](#onfuelitemcheck)
+
+
+
+### `CanUseHelicopter`
+
+- Useful for denying to mount a CH47 helicopter
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object CanUseHelicopter(BasePlayer player, CH47HelicopterAIController helicopter)
+{
+ Puts("CanUseHelicopter works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnBoatPathGenerate`
+
+- Called when generating ocean patrol path for CargoShip
+
+**Returns:** Returning a List overrides default behavior
+
+```csharp
+List OnBoatPathGenerate()
+{
+ Puts("OnBoatPathGenerate works!");
+ return null;
+}
+```
+
+Tags: `boat`, `vehicle` · uMod last updated 2021-08-14
+
+
+
+### `OnVehicleModuleMove`
+
+- Called when a player tries to move a vehicle module item that is currently on a vehicle
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnVehicleModuleMove(BaseVehicleModule module, BaseModularVehicle vehicle, BasePlayer player)
+{
+ Puts("OnVehicleModuleMove works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineStart`
+
+- Called when a player tries to start a vehicle engine
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEngineStart(BaseVehicle vehicle, BasePlayer driver)
+{
+ Puts("OnEngineStart works!");
+ return null;
+}
+```
+
+Tags: `engine`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineStarted`
+
+- Called right after a vehicle engine has started
+
+**Returns:** No return behavior
+
+```csharp
+void OnEngineStarted(BaseVehicle vehicle, BasePlayer driver)
+{
+ Puts("OnEngineStarted works!");
+}
+```
+
+Tags: `engine`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineStop`
+
+- Called when a vehicle engine is about to stop
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEngineStop(BaseVehicle vehicle)
+{
+ Puts("OnEngineStop works!");
+ return null;
+}
+```
+
+Tags: `engine`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineStopped`
+
+- Called right after a vehicle engine has stopped
+
+**Returns:** No return behavior
+
+```csharp
+void OnEngineStopped(BaseVehicle vehicle)
+{
+ Puts("OnEngineStopped works!");
+}
+```
+
+Tags: `engine`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineStatsRefresh`
+
+- Called right before the stats of a modular car engine are refreshed
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnEngineStatsRefresh(VehicleModuleEngine engineModule, EngineStorage engineStorage)
+{
+ Puts("OnEngineStatsRefresh works!");
+ return null;
+}
+```
+
+Tags: `engine`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnEngineStatsRefreshed`
+
+- Called right after the stats of a modular car engine are refreshed
+
+**Returns:** No return behavior
+
+```csharp
+void OnEngineStatsRefreshed(VehicleModuleEngine engineModule, EngineStorage engineStorage)
+{
+ Puts("OnEngineStatsRefreshed works!");
+}
+```
+
+Tags: `engine`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnVehicleModuleSelect`
+
+- Called right after a player has selected a vehicle module item in a car inventory, but before they are shown the corresponding storage container
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnVehicleModuleSelect(Item moduleItem, ModularCarGarage carLift, BasePlayer player)
+{
+ Puts("OnVehicleModuleSelect works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnVehicleModuleSelected`
+
+- Called right after a player has selected a vehicle module item in a car's inventory, and after they have been shown the corresponding storage container if applicable
+
+**Returns:** No return behavior
+
+```csharp
+void OnVehicleModuleSelected(Item moduleItem, ModularCarGarage carLift, BasePlayer player)
+{
+ Puts("OnVehicleModuleSelected works!");
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnVehicleModuleDeselected`
+
+- Called right after a player deselects a vehicle module item in a car's inventory
+
+**Returns:** No return behavior
+
+```csharp
+void OnVehicleModuleDeselected(ModularCarGarage carLift, BasePlayer player)
+{
+ Puts("OnVehicleModuleDeselected works!");
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnHotAirBalloonToggle`
+
+- Called when a player tries to toggle a hot air balloon on or off
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnHotAirBalloonToggle(HotAirBalloon balloon, BasePlayer player)
+{
+ Puts("OnHotAirBalloonToggle works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnHotAirBalloonToggled`
+
+- Called right after a player has toggled a hot air balloon on or off
+
+**Returns:** No return behavior
+
+```csharp
+void OnHotAirBalloonToggled(HotAirBalloon balloon, BasePlayer player)
+{
+ Puts("OnHotAirBalloonToggled works!");
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnVehicleModulesAssign`
+
+- Called right after a modular car has spawned, but before module items are added to its inventory from a preset
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnVehicleModulesAssign(ModularCar car, ItemModVehicleModule[] modulePreset)
+{
+ Puts("OnVehicleModulesAssign works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnVehicleModulesAssigned`
+
+- Called right after a car has spawned and its module inventory has been filled with module items from a preset
+
+**Returns:** No return behavior
+
+```csharp
+void OnVehicleModulesAssigned(ModularCar car, ItemModVehicleModule[] modulePreset)
+{
+ Puts("OnVehicleModulesAssigned works!");
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnVehiclePush`
+
+- Called when a player tries to push a vehicle
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnVehiclePush(BaseVehicle vehicle, BasePlayer player)
+{
+ Puts("OnVehiclePush works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `CanCheckFuel`
+
+- Called when a player tries to loot a vehicle's fuel container
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object CanCheckFuel(EntityFuelSystem fuelSystem, StorageContainer fuelContainer, BasePlayer player)
+{
+ Puts("CanCheckFuel works!");
+ return null;
+}
+```
+
+Tags: `check`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `CanUseFuel`
+
+- Called before a vehicle fuel system consumes fuel
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object CanUseFuel(EntityFuelSystem fuelSystem, StorageContainer fuelContainer, float currentSeconds, float fuelPerSecond)
+{
+ Puts("CanUseFuel works!");
+ return null;
+}
+```
+
+Tags: `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnFuelCheck`
+
+- Called when determining whether a vehicle has sufficient fuel
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object OnFuelCheck(EntityFuelSystem fuelSystem)
+{
+ Puts("OnFuelCheck works!");
+ return null;
+}
+```
+
+Tags: `fuel`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnFuelAmountCheck`
+
+- Called when the amount of fuel in a vehicle is being determined
+
+**Returns:** Returning a numeric value (int) overrides the default value
+
+```csharp
+object OnFuelAmountCheck(EntityFuelSystem fuelSystem, Item fuelItem)
+{
+ Puts("OnFuelAmountCheck works!");
+ return null;
+}
+```
+
+Tags: `fuel`, `vehicle` · uMod last updated 2021-05-08
+
+
+
+### `OnFuelItemCheck`
+
+- Called when determining which item should be used to fuel a vehicle
+
+**Returns:** Returning an Item overrides default behavior
+
+```csharp
+object OnFuelItemCheck(EntityFuelSystem fuelSystem, StorageContainer fuelContainer)
+{
+ Puts("OnFuelItemCheck works!");
+ return null;
+}
+```
+
+Tags: `fuel`, `vehicle` · uMod last updated 2021-05-08
+
+---
+
+## Team Hooks
+
+*Rust's built-in team/party system: create, invite, join, leave, promote, disband.*
+
+12 hooks: [`OnTeamAcceptInvite`](#onteamacceptinvite), [`OnTeamCreate`](#onteamcreate), [`OnTeamCreated`](#onteamcreated), [`OnTeamDisband`](#onteamdisband), [`OnTeamDisbanded`](#onteamdisbanded), [`OnTeamInvite`](#onteaminvite), [`OnTeamKick`](#onteamkick), [`OnTeamLeave`](#onteamleave), [`OnTeamPromote`](#onteampromote), [`OnTeamRejectInvite`](#onteamrejectinvite), [`OnTeamUpdate`](#onteamupdate), [`OnTeamUpdated`](#onteamupdated)
+
+
+
+### `OnTeamAcceptInvite`
+
+- Useful for canceling team invitation acceptation
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamAcceptInvite(RelationshipManager.PlayerTeam team, BasePlayer player)
+{
+ Puts("OnTeamAcceptInvite works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamCreate`
+
+- Useful for canceling team creation
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamCreate(BasePlayer player)
+{
+ Puts("OnTeamCreate works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamCreated`
+
+- Called after a team was created
+
+**Returns:** No return behavior
+
+```csharp
+void OnTeamCreated(BasePlayer player, RelationshipManager.PlayerTeam team)
+{
+ Puts("OnTeamCreated works!");
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamDisband`
+
+- Useful for canceling team disbandment
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamDisband(RelationshipManager.PlayerTeam team)
+{
+ Puts("OnTeamDisband works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamDisbanded`
+
+- Called when the team was disbanded
+
+**Returns:** No return behavior
+
+```csharp
+void OnTeamDisbanded(RelationshipManager.PlayerTeam team)
+{
+ Puts("OnTeamDisbanded works!");
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamInvite`
+
+- Useful for canceling an invitation
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamInvite(BasePlayer inviter, BasePlayer target)
+{
+ Puts($"{inviter.displayName} invited {target.displayName} to his team");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamKick`
+
+- Useful for canceling kick of the player from the team
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamKick(RelationshipManager.PlayerTeam team, BasePlayer player, ulong target)
+{
+ Puts("OnTeamKick works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamLeave`
+
+- Useful for canceling the leave from the team
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamLeave(RelationshipManager.PlayerTeam team, BasePlayer player)
+{
+ Puts("OnTeamLeave works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamPromote`
+
+- Useful for canceling player's promotion in the team
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamPromote(RelationshipManager.PlayerTeam team, BasePlayer newLeader)
+{
+ Puts("OnTeamPromote works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamRejectInvite`
+
+- Useful for canceling the invitation rejection
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamRejectInvite(BasePlayer rejector, RelationshipManager.PlayerTeam team)
+{
+ Puts("OnTeamRejectInvite works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamUpdate`
+
+- Called when player's team is updated
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamUpdate(ulong currentTeam, ulong newTeam, BasePlayer player)
+{
+ Puts("OnTeamUpdate works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+
+
+### `OnTeamUpdated`
+
+- Called before sending team info to player
+
+**Returns:** Returning a non-null value cancels default behavior
+
+```csharp
+object OnTeamUpdated(ulong currentTeam, PlayerTeam playerTeam, BasePlayer player)
+{
+ Puts("OnTeamUpdate works!");
+ return null;
+}
+```
+
+Tags: `team` · uMod last updated 2021-05-08
+
+---
+
+## World Hooks
+
+*World-level generation events.*
+
+1 hook: [`OnWorldPrefabSpawned`](#onworldprefabspawned)
+
+
+
+### `OnWorldPrefabSpawned`
+
+- Called when a world prefab was spawned
+
+**Returns:** No return behavior
+
+```csharp
+void OnWorldPrefabSpawned(GameObject gameObject, string category)
+{
+ Puts("OnWorldPrefabSpawned works!");
+}
+```
+
+Tags: `world` · uMod last updated 2021-05-08
+
+---
+
+## Fishing Hooks
+
+*The fishing minigame.*
+
+4 hooks: [`CanCatchFish`](#cancatchfish), [`OnFishCatch`](#onfishcatch), [`OnFishCaught`](#onfishcaught), [`OnFishingStopped`](#onfishingstopped)
+
+
+
+### `CanCatchFish`
+
+- Called before a fish is caught
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+bool? CanCatchFish(BasePlayer player, BaseFishingRod rod, Item item)
+{
+ Puts("can we catch em fishes?");
+ return null;
+}
+```
+
+Tags: `player`, `item`, `fishing` · uMod last updated 2021-12-15
+
+
+
+### `OnFishCatch`
+
+- Called after a fish is caught, before the item is given
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+Item OnFishCatch(Item item, BaseFishingRod rod, BasePlayer player)
+{
+ Puts($"{player.displayName} has just caught {item.amount} x {item.info.shortname}!");
+ return null;
+}
+```
+
+Tags: `player`, `item`, `fishing` · uMod last updated 2021-12-15
+
+
+
+### `OnFishCaught`
+
+- Called after a fish is caught
+
+**Returns:** No return behavior
+
+```csharp
+void OnFishCaught(ItemDefinition definition, BaseFishingRod rod, BasePlayer player)
+{
+ Puts($"A fish ({definition.shortname}) has just been caught by {player.displayName}!");
+}
+```
+
+Tags: `player`, `item`, `fishing` · uMod last updated 2021-12-15
+
+
+
+### `OnFishingStopped`
+
+- Called just after the fishing minigame has been stopped.
+
+**Returns:** No return behaviour
+
+```csharp
+void OnFishingStopped(BaseFishingRod rod, BaseFishingRod.FailReason reason)
+{
+ Puts("OnFishingStopped works!");
+}
+```
+
+Tags: `fishing` · uMod last updated 2022-06-25
+
+---
+
+## Electronic Hooks
+
+*The electricity graph.*
+
+2 hooks: [`OnExcavatorSuppliesRequest`](#onexcavatorsuppliesrequest), [`OnExcavatorSuppliesRequested`](#onexcavatorsuppliesrequested)
+
+
+
+### `OnExcavatorSuppliesRequest`
+
+- Called just after the excavator supply computer is triggered, before the plane is spawned.
+
+**Returns:** Returning non-null overrides default behaviour.
+
+```csharp
+object OnExcavatorSuppliesRequest(ExcavatorSignalComputer computer, BasePlayer player)
+{
+ Puts("OnExcavatorSuppliesRequest works!");
+ return null;
+}
+```
+
+uMod last updated 2023-06-04
+
+
+
+### `OnExcavatorSuppliesRequested`
+
+- Called after the excavator signal computer was triggered, just after the supply plane is spawned.
+
+**Returns:** *(not stated upstream)*
+
+```csharp
+void OnExcavatorSuppliesRequested(ExcavatorSignalComputer computer, BasePlayer player, BaseEntity cargoPlane)
+{
+ Puts("OnExcavatorSuppliesRequested works!");
+}
+```
+
+uMod last updated 2023-06-04
+
+---
+
+## Clan Hooks
+
+*The first-party clan system (distinct from Team).*
+
+7 hooks: [`OnClanColorChanged`](#onclancolorchanged), [`OnClanCreated`](#onclancreated), [`OnClanDisbanded`](#onclandisbanded), [`OnClanLogoChanged`](#onclanlogochanged), [`OnClanMemberAdded`](#onclanmemberadded), [`OnClanMemberKicked`](#onclanmemberkicked), [`OnClanMemberLeft`](#onclanmemberleft)
+
+
+
+### `OnClanColorChanged`
+
+- Called after a player changes a clan color
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanColorChanged(LocalClan clan, Color32 color, ulong steamId)
+{
+ Puts("OnClanColorChanged works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+
+
+### `OnClanCreated`
+
+- Called after a player has created a clan
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanCreated(LocalClan clan, ulong steamId)
+{
+ Puts("OnClanCreated works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+
+
+### `OnClanDisbanded`
+
+- Called after a player disbands a clan
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanDisbanded(LocalClan clan, ulong steamId)
+{
+ Puts("OnClanDisbanded works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+
+
+### `OnClanLogoChanged`
+
+- Called after a player changes a clan logo
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanLogoChanged(LocalClan clan, byte[] logo, ulong steamId)
+{
+ Puts("OnClanLogoChanged works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+
+
+### `OnClanMemberAdded`
+
+- Called after a player has accepted a clan invite
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanMemberAdded(long clanId, ulong steamId)
+{
+ Puts("OnClanMemberAdded works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+
+
+### `OnClanMemberKicked`
+
+- Called after a player has kicked another player from a clan
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanMemberKicked(LocalClan clan, ulong steamId, ulong bySteamId)
+{
+ Puts("OnClanMemberKicked works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+
+
+### `OnClanMemberLeft`
+
+- Called after a player has voluntarily left a clan
+
+**Returns:** No return behavior
+
+```csharp
+void OnClanMemberLeft(LocalClan clan, ulong steamId)
+{
+ Puts("OnClanMemberLeft works!");
+}
+```
+
+Tags: `clan` · uMod last updated 2023-08-11
+
+---
+
+## Plugin Hooks
+
+*Plugin lifecycle inside Oxide itself — `Loaded`, `Unload`, and compilation.*
+
+4 hooks: [`Loaded`](#loaded), [`LoadDefaultConfig`](#loaddefaultconfig), [`Unload`](#unload), [`LoadDefaultMessages`](#loaddefaultmessages)
+
+
+
+### `Loaded`
+
+- Called when a plugin has finished loading
+- Other plugins may or may not be present, dependant on load order
+
+**Returns:** No return behavior
+
+```csharp
+void Loaded()
+{
+ Puts("Loaded works!");
+}
+```
+
+uMod last updated 2018-08-20
+
+
+
+### `LoadDefaultConfig`
+
+- Called when the config for a plugin should be initialized
+- Only called if the config file does not already exist
+
+**Returns:** No return behavior
+
+```csharp
+protected override void LoadDefaultConfig()
+{
+ Puts("Default configuration created");
+}
+```
+
+uMod last updated 2018-08-20
+
+
+
+### `Unload`
+
+- Called when a plugin is being unloaded
+
+**Returns:** No return behavior
+
+```csharp
+void Unload()
+{
+ Puts("Save data, nullify static variables, etc.");
+}
+```
+
+uMod last updated 2018-09-02
+
+
+
+### `LoadDefaultMessages`
+
+- Called when the localization for a plugin should be registered
+
+**Returns:** No return behavior
+
+```csharp
+protected override void LoadDefaultMessages()
+{
+ lang.RegisterMessages(new Dictionary
+ {
+ ["Example"] = "This is an example message!",
+ ["AnotherExample"] = "Here is another example"
+ }, this);
+}
+```
+
+uMod last updated 2018-11-05
+
+---
+
+## Sign Hooks
+
+*Sign painting, updating and locking.*
+
+3 hooks: [`OnSignLocked`](#onsignlocked), [`OnSignUpdated`](#onsignupdated), [`OnSpinWheel`](#onspinwheel)
+
+
+
+### `OnSignLocked`
+
+- Called after the player has locked a sign or photo frame
+
+**Returns:** No return behavior
+
+```csharp
+void OnSignLocked(Signage sign, BasePlayer player)
+{
+ Puts("OnSignLocked works!");
+}
+```
+
+```csharp
+void OnSignLocked(PhotoFrame photoFrame, BasePlayer player)
+{
+ Puts("OnSignLocked works!");
+}
+```
+
+Tags: `sign` · uMod last updated 2021-05-08
+
+
+
+### `OnSignUpdated`
+
+- Called after the player has changed the text on a sign or updated a photo frame
+
+**Returns:** No return behavior
+
+```csharp
+void OnSignUpdated(Signage sign, BasePlayer player, int textureIndex)
+{
+ Puts("OnSignUpdated works!");
+}
+```
+
+```csharp
+void OnSignUpdated(PhotoFrame photoFrame, BasePlayer player)
+{
+ Puts("OnSignUpdated works!");
+}
+```
+
+```csharp
+void OnSignUpdated(CarvablePumpkin pumpkin, BasePlayer player)
+{
+ Puts("OnSignUpdated works!");
+}
+```
+
+Tags: `sign` · uMod last updated 2022-04-18
+
+
+
+### `OnSpinWheel`
+
+- Called when the player spins a spinner wheel
+
+**Returns:** No return behavior
+
+```csharp
+void OnSpinWheel(BasePlayer player, SpinnerWheel wheel)
+{
+ Puts("OnSpinWheel works!");
+}
+```
+
+Tags: `spin`, `sign` · uMod last updated 2021-05-08
+
+---
+
+## TechTree Hooks
+
+*Tech tree node unlocks and their prerequisites.*
+
+4 hooks: [`CanUnlockTechTreeNode`](#canunlocktechtreenode), [`CanUnlockTechTreeNodePath`](#canunlocktechtreenodepath), [`OnTechTreeNodeUnlock`](#ontechtreenodeunlock), [`OnTechTreeNodeUnlocked`](#ontechtreenodeunlocked)
+
+
+
+### `CanUnlockTechTreeNode`
+
+- Called when a player is attempting to unlock a blueprint in a tech tree
+- Useful for bypassing unlock requirements or disallowing particular blueprints from being unlocked
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object CanUnlockTechTreeNode(BasePlayer player, TechTreeData.NodeInstance node, TechTreeData techTree)
+{
+ Puts("CanUnlockTechTreeNode works!");
+ return null;
+}
+```
+
+Tags: `unlock`, `techtree` · uMod last updated 2021-05-08
+
+
+
+### `CanUnlockTechTreeNodePath`
+
+- Called when a player is attempting to unlock a blueprint in a tech tree, after the `CanUnlockTechTreeNode` hook, when determining whether they have the prerequisite blueprints unlocked
+- Useful for customizing prerequisites without conflicting with the `CanPlayerUnlock` hook
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object CanUnlockTechTreeNodePath(BasePlayer player, TechTreeData.NodeInstance node, TechTreeData techTree)
+{
+ Puts("CanUnlockTechTreeNodePath works!");
+ return null;
+}
+```
+
+Tags: `unlock`, `techtree` · uMod last updated 2021-05-08
+
+
+
+### `OnTechTreeNodeUnlock`
+
+- Called when a player is attempting to unlock a blueprint in a tech tree, after the `CanUnlockTechTreeNode` and `CanUnlockTechTreeNodePath` hooks, before the player is charged scrap
+- Useful for replacing the default behavior to charge the player a different currency, or to unlock multiple blueprints at once (such as those leading up to the one selected)
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnTechTreeNodeUnlock(Workbench workbench, TechTreeData.NodeInstance node, BasePlayer player)
+{
+ Puts("OnTechTreeNodeUnlock works!");
+ return null;
+}
+```
+
+Tags: `tech`, `techtree` · uMod last updated 2021-05-08
+
+
+
+### `OnTechTreeNodeUnlocked`
+
+- Called after a player has unlocked a blueprint in a tech tree
+- Useful for automatically unlocking blueprints for team members
+
+**Returns:** No return behavior
+
+```csharp
+void OnTechTreeNodeUnlocked(Workbench workbench, TechTreeData.NodeInstance node, BasePlayer player)
+{
+ Puts("OnTechTreeNodeUnlocked works!");
+}
+```
+
+Tags: `tech`, `techtree` · uMod last updated 2021-05-08
+
+---
+
+## Phone Hooks
+
+*In-game telephones: dialling, answering, voicemail, directory.*
+
+12 hooks: [`OnPhoneDial`](#onphonedial), [`CanReceiveCall`](#canreceivecall), [`OnPhoneAnswer`](#onphoneanswer), [`OnPhoneAnswered`](#onphoneanswered), [`OnPhoneCallStart`](#onphonecallstart), [`OnPhoneCallStarted`](#onphonecallstarted), [`OnPhoneDialFail`](#onphonedialfail), [`OnPhoneDialFailed`](#onphonedialfailed), [`OnPhoneDialTimeout`](#onphonedialtimeout), [`OnPhoneDialTimedOut`](#onphonedialtimedout), [`OnPhoneNameUpdate`](#onphonenameupdate), [`OnPhoneNameUpdated`](#onphonenameupdated)
+
+
+
+### `OnPhoneDial`
+
+- Called when a player places a phone call
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPhoneDial(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player)
+{
+ Puts("OnPhoneDial works!");
+ return null;
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `CanReceiveCall`
+
+- Called when a player tries to place a phone call
+
+**Returns:** Returning true or false overrides default behavior
+
+```csharp
+object CanReceiveCall(PhoneController receiverPhone)
+{
+ Puts("CanReceiveCall works!");
+ return null;
+}
+```
+
+Tags: `receive`, `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneAnswer`
+
+- Called when a player tries to answer a phone call
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPhoneAnswer(PhoneController receiverPhone, PhoneController callerPhone)
+{
+ Puts("OnPhoneAnswer works!");
+ return null;
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneAnswered`
+
+- Called right after a player has answered a phone call
+
+**Returns:** No return behavior
+
+```csharp
+void OnPhoneAnswered(PhoneController receiverPhone, PhoneController callerPhone)
+{
+ Puts("OnPhoneAnswered works!");
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneCallStart`
+
+- Called after a phone has been answered, right before voice communication is established
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPhoneCallStart(PhoneController phone, PhoneController otherPhone, BasePlayer player)
+{
+ Puts("OnPhoneCallStart works!");
+ return null;
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneCallStarted`
+
+- Called right after a phone call has been answered and voice communication has been established
+
+**Returns:** *(not stated upstream)*
+
+```csharp
+void OnPhoneCallStarted(PhoneController phone, PhoneController otherPhone, BasePlayer player)
+{
+ Puts("OnPhoneCallStarted works!");
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneDialFail`
+
+- Called when a phone call is about to end or fail to start
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPhoneDialFail(PhoneController phone, Telephone.DialFailReason reason, BasePlayer player)
+{
+ Puts("OnPhoneDialFail works!");
+ return null;
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneDialFailed`
+
+- Called after a phone call has ended or failed to start
+
+**Returns:** No return behavior
+
+```csharp
+void OnPhoneDialFailed(PhoneController phone, Telephone.DialFailReason reason, BasePlayer player)
+{
+ Puts("OnPhoneDialFailed works!");
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneDialTimeout`
+
+- Called when a phone is about to automatically hang up because the receiver phone wasn't answered in time
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPhoneDialTimeout(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player)
+{
+ Puts("OnPhoneDialTimeout works!");
+ return null;
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneDialTimedOut`
+
+- Called right after a phone was automatically hung up because the receiver phone wasn't answered in time
+
+**Returns:** No return behavior
+
+```csharp
+void OnPhoneDialTimedOut(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player)
+{
+ Puts("OnPhoneDialTimedOut works!");
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneNameUpdate`
+
+- Called when a player tries to update a phone name
+
+**Returns:** Returning a non-null value overrides default behavior
+
+```csharp
+object OnPhoneNameUpdate(PhoneController phoneController, string name, BasePlayer player)
+{
+ Puts("OnPhoneNameUpdate works!");
+ return null;
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+
+
+### `OnPhoneNameUpdated`
+
+- Called after a player has updated a phone name
+
+**Returns:** No return behavior
+
+```csharp
+void OnPhoneNameUpdated(PhoneController phoneController, string name, BasePlayer player)
+{
+ Puts("OnPhoneNameUpdated works!");
+}
+```
+
+Tags: `phone` · uMod last updated 2021-05-08
+
+---
+
+## Permission Hooks
+
+*uMod's own permission/group system (Covalence) — grants, revokes, group membership.*
+
+8 hooks: [`OnPermissionRegistered`](#onpermissionregistered), [`OnGroupPermissionGranted`](#ongrouppermissiongranted), [`OnGroupPermissionRevoked`](#ongrouppermissionrevoked), [`OnGroupCreated`](#ongroupcreated), [`OnGroupDeleted`](#ongroupdeleted), [`OnGroupRankSet`](#ongrouprankset), [`OnGroupTitleSet`](#ongrouptitleset), [`OnGroupParentSet`](#ongroupparentset)
+
+
+
+### `OnPermissionRegistered`
+
+- Called when a permission has been registered
+
+**Returns:** No return behavior
+
+```csharp
+void OnPermissionRegistered(string name, Plugin owner)
+{
+ Puts($"Permission '{name}' has been registered {(owner != null ? $"for {owner.Title}" : "")}");
+}
+```
+
+Tags: `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupPermissionGranted`
+
+- Called when a permission has been granted to a group
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupPermissionGranted(string name, string perm)
+{
+ Puts($"Group '{name}' granted permission: {perm}");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupPermissionRevoked`
+
+- Called when a permission has been revoked from a group
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupPermissionRevoked(string name, string perm)
+{
+ Puts($"Group '{name}' revoked permission: {perm}");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupCreated`
+
+- Called when a group has been created successfully
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupCreated(string name)
+{
+ Puts($"Group '{name}' has been created!");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupDeleted`
+
+- Called when a group has been deleted successfully
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupDeleted(string name)
+{
+ Puts($"Group '{name}' has been deleted!");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupRankSet`
+
+- Called when a group rank has been updated
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupRankSet(string name, int rank)
+{
+ Puts($"Rank '{rank}' set on group '{name}'");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupTitleSet`
+
+- Called when a group title has been updated
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupTitleSet(string name, string title)
+{
+ Puts($"Title '{title}' set on group '{name}'");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+
+
+### `OnGroupParentSet`
+
+- Called when a group parent has been updated
+
+**Returns:** No return behavior
+
+```csharp
+void OnGroupParentSet(string name, string parent)
+{
+ Puts($"Parent '{parent}' set on group '{name}'");
+}
+```
+
+Tags: `group`, `permission` · uMod last updated 2021-05-08
+
+---
+
+Generated from uMod's own hook data (`umod.org/documentation/games/rust.json`), scraped 2026-09-15. 477 hooks.
diff --git a/modules/rust/README.md b/modules/rust/README.md
new file mode 100644
index 0000000..47555e9
--- /dev/null
+++ b/modules/rust/README.md
@@ -0,0 +1,193 @@
+# Rust — the Oxide/uMod API reference
+
+Reference material for the **upcoming `module-rust`**: a mirror of uMod's Rust game API, captured
+here so the module can be designed and built against it without a round trip to the website on every
+question.
+
+Two documents, both **scraped verbatim from uMod on 2026-09-15**:
+
+| Doc | What it holds | Size |
+|---|---|---:|
+| [`HOOKS.md`](HOOKS.md) | Every hook the uMod Rust extension raises — **477 hooks in 20 categories**, each with its description, its return contract, its tags and the C# signature to declare | 9.3k lines |
+| [`DEFINITIONS.md`](DEFINITIONS.md) | The item table (**678 items**: short name, item id, display name) and the workshop skin ids (**2,590 skins** across 104 items) | 3.8k lines |
+
+> **This is a mirror, not a specification we own.** uMod is upstream and wins any disagreement; the
+> point of copying it is availability and grep-ability, not authority. Nothing here may be cited as a
+> Runic Gateway contract — our contracts are [`MODULE_API.md`](../../website/MODULE_API.md) and
+> [`docs/link/`](../../link/).
+
+---
+
+## 1. Why this exists
+
+The website core is game-agnostic; a **module** is what makes it a site for one particular game
+([`MODULE_SYSTEM.md`](../../website/MODULE_SYSTEM.md)). `module-uo` was the first. A Rust module is
+the second, and it was already designed once on paper —
+[`../rust-dryrun.md`](../rust-dryrun.md) is that dry run, written deliberately *without*
+implementing it, to find out whether the module contract generalises past Ultima Online.
+
+The dry run's central structural fact is the thing this reference serves:
+
+> A ServUO shard is C# **source** the operator compiles into their own server, so our bridge plugin
+> can be anything we want. **A Rust server is a binary nobody outside Facepunch patches.** The only
+> way in is a mod — specifically an **Oxide plugin**, since Oxide/uMod is what modded Rust servers
+> run — hooking the game's own events.
+
+So where the UO side gets to *choose* what the shard emits, the Rust side can only emit **what Oxide
+already hands it**. `HOOKS.md` is therefore the hard boundary on what a Rust module can ever know
+about a live server: if a fact is not reachable from one of these 477 hooks (or from a game type one
+of them hands you), the bridge cannot report it.
+
+That makes this reference the input to two decisions the module has to make:
+
+1. **What the Rust sidecar's event catalogue can contain** — the analogue of
+ [`docs/link/PLAN.md`](../../link/PLAN.md) §5 on the UO side.
+2. **Which hooks are cheap and which are hot.** `OnTick`, `OnFrame` and `OnEntityTakeDamage` fire at
+ game-loop rates; a bridge that does real work inside them stalls the server. The same invariant
+ as UO's `Emit()` applies — see §4.
+
+---
+
+## 2. How an Oxide hook actually binds
+
+The one thing to understand before reading `HOOKS.md`, because it is not in the table itself:
+
+**Oxide binds hooks by name and arity, by reflection, at runtime.** There is no interface to
+implement and no compile-time check. A method whose name is misspelled, or whose parameter types do
+not match, is simply **never called** — silently, with no warning at load. This is the single most
+common way a Rust plugin "does nothing".
+
+The consequence for us: **every hook name a module relies on is an untyped string constant against a
+moving upstream.** Facepunch renames and removes hooks on wipes. A Rust sidecar should log which of
+its expected hooks have actually fired at least once, so a hook that quietly stopped existing is
+visible rather than mysterious.
+
+### The return contract
+
+`HOOKS.md` reproduces uMod's return line for every hook and it is the load-bearing part:
+
+| uMod's wording | What it means |
+|---|---|
+| *No return behavior* | A **notification**. Declare `void`. Nothing you return is read. |
+| *Returning a non-null value overrides default behavior* | A **veto with a payload**. Declare `object`; return `null` to let the game proceed, anything else to cancel it. |
+| *Returning true or false overrides default behavior* | A **veto**. Declare `object`; `null` abstains — returning `false` is *not* the same as abstaining. |
+| *Returning a string will kick…* | The value is **consumed as data**, not merely as a veto. |
+
+Two cautions that apply across the whole table:
+
+- Never return non-`null` from a hook documented as *no return behavior*; on some hooks Oxide will
+ still read it as a veto.
+- When several plugins hook the same veto, the **first non-`null` return wins** and the rest are not
+ consulted. Abstain with `null` unless you mean to decide. A bridge plugin should be a **reader**,
+ and must return `null` from every veto hook it listens on — see §4.
+
+Three hooks (`OnEntityTakeDamage`, `OnExcavatorSuppliesRequested`, `OnPhoneCallStarted`) state no
+return behaviour upstream at all; `HOOKS.md` marks those *(not stated upstream)* rather than guessing.
+
+---
+
+## 3. What is in the 477
+
+| Category | Hooks | What it covers |
+|---|---:|---|
+| Server | 17 | Process lifecycle, tick/frame, save and restart, RCON and console commands |
+| Player | 138 | Connect, chat, command, craft, loot, build, die, respawn |
+| Entity | 140 | The generic `BaseEntity` graph — spawn, kill, damage, mount, loot, flags |
+| Item | 43 | Item stacks and containers |
+| Vehicle | 22 | Boats, cars, horses, helicopters, trains, submarines |
+| Vending | 16 | Vending machines, the shop/trade flow, marketplace and drone deliveries |
+| Weapon | 16 | Firing, reloading, throwing, melee, projectiles and traps |
+| Structure | 15 | Placement, upgrade, demolish, stability, doors and locks |
+| Resource | 12 | Gathering and node dispensers |
+| Team | 12 | Rust's built-in team/party system |
+| Phone | 12 | In-game telephones |
+| Permission | 8 | uMod's own permission/group system (Covalence) |
+| Clan | 7 | The first-party clan system, distinct from Team |
+| Fishing · Plugin · TechTree | 4 each | |
+| Sign | 3 | |
+| Electronic | 2 | |
+| Terrain · World | 1 each | |
+
+**Player and Entity are 58% of the surface between them.** `HOOKS.md` opens with a full alphabetical
+index (name → category → return contract), which is the fastest way in when you already know the
+hook's name.
+
+Two notes on the data, both faithful to upstream:
+
+- `OnShopCompleteTrade` appears **twice** — two separate records. Both are kept; the second carries
+ the anchor `#onshopcompletetrade-1`.
+- Eleven hooks document **more than one overload** (e.g. `CanUpdateSign` takes either a `Signage` or
+ a `PhotoFrame`). Every code block is reproduced.
+
+---
+
+## 4. Where this meets our architecture
+
+The bridge invariants the platform already holds ([`ARCHITECTURE.md`](../../website/ARCHITECTURE.md),
+[`docs/link/PLAN.md`](../../link/PLAN.md)) are game-independent, and a Rust module inherits all of
+them. Restated against Oxide:
+
+- **The game server is never network-reachable.** The Rust sidecar listens; the Oxide plugin dials
+ out to it, exactly as `BridgeLink.cs` does on the UO side.
+- **A wedged or absent sidecar must never stall the server.** Oxide hooks run on Rust's main thread.
+ An emit must be an enqueue onto a bounded drop-oldest queue that returns immediately — never a
+ socket write, never a blocking call, and never anything expensive inside `OnTick`/`OnFrame`.
+- **The bridge plugin decides nothing.** It returns `null` from every veto hook it subscribes to.
+ Access control and audience scoping live on the website
+ ([`SHARD_VISIBILITY.md`](../../website/SHARD_VISIBILITY.md)), not in the game plugin — the same
+ rule that makes the uo-link sidecar a dumb forwarder.
+- **Sensitive events never reach the public stream.** Rust raises plenty that must not: `CanUserLogin`
+ and `OnUserApproved` carry IP addresses, `OnPlayerReported` carries player reports. These belong on
+ the admin channel only.
+
+Reading order for someone picking the module up: [`../rust-dryrun.md`](../rust-dryrun.md) for the
+design, [`MODULE_API.md`](../../website/MODULE_API.md) for the contract it must satisfy, then
+`HOOKS.md` for what the game can actually tell it.
+
+---
+
+## 5. Provenance and refreshing
+
+| | |
+|---|---|
+| Source (hooks) | |
+| Source (definitions) | |
+| Captured | 2026-09-15 |
+| Content | 477 hooks · 678 items · 2,590 skins |
+
+**Rust wipes monthly and the hook list moves with it.** Re-capture before any significant work on
+the module, and note the new date at the top of both files.
+
+The hooks page renders client-side from a JSON endpoint, and *that endpoint is not behind
+Cloudflare* even though the HTML page is:
+
+```bash
+curl -A "Mozilla/5.0" -H "Accept: application/json" \
+ "https://umod.org/documentation/hooks/rust.json" -o all_rust_hooks.json
+```
+
+One request returns every hook (`per_page` is 9999, so there is no paging). Each record carries
+`name`, `subcategory`, `tags`, `description` (HTML ``) and `example` (a markdown-fenced C#
+block) — which is exactly what `HOOKS.md` renders. A `?subcategory=Server` query narrows it.
+
+The **definitions** page has no such endpoint and the HTML *is* Cloudflare-gated, so it has to come
+out of a real browser session: load the page, then read the `Rust Items` table and the per-item
+`Rust Skins` tables out of the rendered DOM.
+
+---
+
+## 6. Beyond this page
+
+This reference covers the **Rust-specific** API only — the hooks and the item data. uMod's
+general plugin-authoring documentation is a separate set and is *not* mirrored here:
+
+| Page | Covers |
+|---|---|
+| [Plugins — Getting Started](https://umod.org/documentation/plugins/getting-started) | The plugin skeleton, lifecycle, and the universal hooks (`Init`, `Loaded`, `Unload`) |
+| [Plugin configuration](https://umod.org/documentation/plugins/configuration) | `Config`, defaults, and the config file on disk |
+| [Data files](https://umod.org/documentation/plugins/data-files) | Persisting plugin state |
+| [Permissions](https://umod.org/documentation/plugins/permissions) | The Covalence permission and group API |
+| [Plugin installation](https://umod.org/documentation/plugins/installation) | Operator-side install |
+| [Getting Started](https://umod.org/documentation/getting-started) | Installing Oxide/uMod on a server |
+
+Mirror these too if the module work starts leaning on them.