• NoDecay



The official release location of NoDecay - Nullifies or scales down/up any decay damage applied to any item is home of the official release of NoDecay.  Accept no substitutes.

NoDecay nullifies or scales down/up any decay damage applied to any item in game (except of small stashes). Each building tier has a different multiplier, so do all other entities.

The default configuration does NOT affect Twig decay but nullifies all damage on all other items.

As of version 1.0.89, items can heal over time - thanks to jozzo402 on github.

As of version 1.0.68 users can enable or disable NoDecay for their owned entities

As of version 1.0.34 you can optionally also check for the presence of a deployed tool cupboard. Set requireCupboard to true. This will check for an attached cupboard for building blocks and a nearby cupboard for entities. For entities, use "cupboardCheckEntity: true" and "cupboardRange: number" to configure how far the entities can be from a cupboard before they will decay. The default is 30 game meters (?), which may or may not be enough for your needs. Adjust as desired.

Note, the default is cupboardCheckEntity: false, which will skip checking for cupboards in range of entities. It will still check for blocks attached to cupboards, which should be more accurate.


NOTE: The long-standing misspelling of Multipliers was fixed as of 1.0.46.  As of 1.0.86, Multipliers has been removed as well.  Only multipliers was actually in use since 1.0.63 but due to having the leave that upgrade in place, Multipliers was also still there.  Sorry for the confusion.

  "Debug": {
    "outputToRcon": false,
    "outputMundane": false
  "Global": {
"usePermission": false,
"useTCOwnerToCheckPermission": false,
"useBPAuthListForProtectedDays": false,
"requireCupboard": false,
"cupboardCheckEntity": false,
"protectedDays": 0.0,
"cupboardRange": 30.0,
"useCupboardRange": false,
"DestroyOnZero": true,
"useJPipes": false,
"honorZoneManagerFlag": false,
"blockCupboardResources": false,
"blockCupboardWood": false,
"blockCupboardStone": false,
"blockCupboardMetal": false,
"blockCupboardArmor": false,
"healBuildings": false,
"healEntities": false,
"healPercentage": 0.01,
"disableWarning": true,
"disableLootWarning": false,
"protectVehicleOnLift": true,
"protectedDisplayTime": 44000.0,
"warningTime": 10.0,
"overrideZoneManager": [
"respondToActivationHooks": false
}, "multipliers": { "armored": 0.0, "baloon": 0.0, "barricades": 0.0, "bbq": 0.0,
"boat": 0.0,
"building": 0.0, "box": 0.0, "campfire": 0.0, "deployables": 0.0, "entityCupboard": 0.0, "furnace": 0.0, "highStoneWall": 0.0, "highWoodWall": 0.0, "horse": 0.0, "minicopter": 0.0, "scrapcopter": 0.0, "sam": 0.0, "sedan": 0.0, "sheet": 0.0, "stone": 0.0, "trap": 0.0, "twig": 1.0, "vehicle": 1.0, "watchtower": 0.0, "wood": 0.0 }, "Version": { "Major": 1, "Minor": 0, "Patch": 89 } }

The default configuration above disables decay for all but twig. For each multiplier, set to 1 for normal decay, 0 for no decay, and somewhere in between for reduced decay.

Set "usePermission" to true to require the nodecay.use permission to prevent decay. If false, all players are protected by default.

If "useTCOwnerToCheckPermission" is set to true, check building privilege owner in addition to entity owner for decay item.

If "useBPAuthListForProtectedDays" is set to true, check for online players authed to a TC instead of simply TC owner (for protected days).

If "blockCupboardResources" is set to true, blocks stone, frags, and hqm from being added to a cupboard.

If "blockCupboardWood" is set to true, blocks wood from being added to a cupboard.

  • Use both of these to prevent all building materials from being added to cupboards. Players will still get the Building Decaying warning but will not waste resources on upkeep since they are not necessary with NoDecay.

  • Use only blockCupboardWood to block wood and therefore upkeep on twig. You may also set the following instead of blockCupboardResources:

If "blockCupboardStone" is set to true, blocks stone from being added to a cupboard.

If "blockCupboardMetal" is set to true, blocks metal frags from being added to a cupboard.

If "blockCupboardArmor" is set to true, blocks HQM from being added to a cupboard.

If "healBuildings" is set to true, damaged building blocks will be healed over time similar to what would occur with typical upkeep resources when present in a TC.

If "healEntities" is true, damaged entities will be healed over time.

Use "healPerecentage" to determine how quickly entities and blocks will recover from damage.  Every decay.tick (default 600 seconds), NoDecay will heal the item by a percentage of max health.  If max health of an item is 500, and healthPercentage is 0.01, the item health will increase by 5 every decay.tick.

Set requireCupboard to true to check for a cupboard to prevent decay.

Set cupboardCheckEntity to also check for entities in range of cupboards (i.e. not just foundations, etc. This should work on doors and high walls, etc.

Set cupboardRange to a desired value for the cupboardCheckEntity range. If too high, may affect other user's stuff. If set too low it may not protect external items if out of range.  Note that this was created primarily to take care of entities that are not building blocks but are part of a building (doors, etc.)  Set "entityCupboardMultiplier" to the desired amount of decay for entities in cupboard range (default 0).

Set DestroyOnZero to true to enable destroying entities when health is zero. This is most likely needed due to a bug in the Feb 2020 Rust.

Set disableWarning to true to disable the "Building Decaying" warning.  This will be set to a default of 4400 minutes (73 hours) based on the value of protectedDisplayTime.  73 hours is enough to hit the default value shown for more than 72 hours of protection without NoDecay.  A warning will still be shown when viewing the contents of the TC.  But, as always, the building is protected anyway since that's what NoDecay is for.  Players may need to periodically open their TC to disable the warning again every couple of days.

Set useJPipes if you have JPipes installed to ensure no decay for JPipes if NoDecay is configured with zero Multiplier for the JPipe building grade.

Set protectVehicleOnLift true if you want to prevent decay for vehicles on a lift.  This should bypass the vehicleMultiplier.

If protectedDays is set to any value other than zero, player buildings, etc. will only be protected if the user has been online sometime within that number of days.

Set warningTime to a number greater than the default of 10.0 (ms) to limit the warnings fired off due to time to execute.  If your logs are consistently being filled with messages like the following:

    "(17:04:31) | [NoDecay] NoDecay.OnEntityTakeDamage on Rowboat took 15.04 ms to execute."

A Few Notes About Multipliers, decay.tick, etc.

  For any config file multiplier, you can set to 0 to disable decay for that item, 1 for normal decay, or a higher number for faster decay.  In other words, anything below 1 is slower than standard down to 0 which is no decay.  Anything above 1 increases the rate of decay for that item and, yes, you can set numbers higher than 1.

Decay is implemented by Rust based on the decay.tick value which defaults to 600 (10 minutes).  This specifies how often decay is processed on your server.  decay.scale should also be set to the default of 1.

The warning from Rust about Building Decaying should be blocked at all times.  If a player adds materials to his TC, NoDecay will be bypassed altogether for their building, and normal upkeep costs will apply.  There are server variables available to adjust cost and decay rates, but that is outside of the scope of what NoDecay is intended to do and may also affect its operation.

As of version 1.0.63, the list of entities used for comparison is prepared in advance programmatically and is written to oxide/data/NoDecay/entityinfo.json.  This should include all available entities in the game from month to month.  However, not all may actually be considered by the game for decay during the decay loop.  Adding entities to this list is not recommended and will likely have NO impact.  You can, however, remove entities from this list and reload to skip their consideration.  One example of an item not sent to this loop is the fridge.  In the future, we may attempt to replace the standard decay loop pending performance considerations in order to handle these lost deployables.


  • nodecay.use     -- Required for NoDecay to work for a user, if the usePermission flag is set to true.
  • nodecay.admin -- Required to use the /nodecay commands below


These commands work for any user regardless of permission:

  • `nodecay ?` -- For users to show current global as well as personal status for enable/disable of NoDecay
  • `nodecay off` -- For users to set their status as disabled.  In this case, decay will be standard for this user's owned items
  • `nodecay on` -- For users to set their status as enabled.  In this case, decay will be managed by NoDecay for this user's owned items

These commands only work for users with the nodecay.admin permission:

  • `nodecay log` -- Toggle logging of debug info to oxide log and rcon
  • `nodecay info` -- Display current configuration (must still set manually and reload)
  • `nodecay enable` -- Toggle enable/disable of the plugin.  This can only be switched off/on via chat and the plugin will always default to enabled on reload.
  • `nodecay update` -- Reload the list of entities from the game itself.  This is normally run automatically during the wipe.  It will overwrite the entityinfo.json file.


  • Deicide666ra and Piarb, the original authors of this plugin
  • Diesel, for helping maintain the plugin

Note that is the official home of NoDecay

Thanks to Deicide666ra, the original author of this plugin, for his permission to continue his work.


If you see the following warning from Carbon:

Warning! 'NoDecay' uses UnityEngine.GameObject.FindObjectsOfType. That may cause significant performance drops, and/or server stalls. Report to the developer or use at your own discretion!

Note that this function is not called regularly during program execution.  This is typically called only at wipe to find new entities.

Comments (0)
No customer reviews for the moment.