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.