Limit Entities

The purpose of Limit Entities plugin is to restrict the entities that players can build. You can limit any entity based on its prefab. To get the full list of supported prefabs use limitentities.list console command.

Limit Entities Types

There are two types of limits available: global and building. For building limit checks, if a cupboard is placed, the limits of the cupboard owner will apply. If no cupboard is placed, the restrictions of the owner of the first block will apply. When you run the plugin for the first time, no players will be limited. To apply limits, you must assign one or more permissions from your config file to a player/group. The plugin also tracks permission changes, so you will not need to restart the plugin after giving a player new permission or adding them to a VIP group, etc. This plugin is designed to be efficient and performant even on highly loaded servers. All growables are fully excluded from the count, so you can’t limit any growables with this plugin, and players are free to plant them. I was considering adding this as an option, but it can significantly reduce performance, so at this point, I decided to refrain from it.

This plugin now supports `Entity Groups`, and group names are translatable. All newly created groups are added to the language files on plugin load. You are free to create as many groups as you want or remove them all. The only thing you should keep in mind is that if you added an entity to a group, you can’t add the same entity to `Limits Entities`, you must use the `Group name`.

Note: If you want to have “beautiful” names even on English only, please, install Rust Translation API plugin or you will have a short prefab names only.

Permissions

limitentities.immunity — Allows player to not being limited by this plugin

limitentities.admin — Allows player to check other player limits and execute console command
More permissions with limits are created in config file (see Configuration section below)

Commands

/limits – Get current limits list

limitentities.list (console only) – print all tracked prefabs list into log file. Requires admin rights (can be used in server console/RCON)

Configuration

You can remove unnecessary default permissions and also add as many permissions as you want. For cases where the player has more than one, the permission with the higher priority will be applied.

Note: To improve performance grant permissions only to players you want to apply limits or use immunity permission to disable limits entirely

Enable / disable notifications / logging

Set SteamIDIcon steamid to set desired account icon in chat messages

Set commands list (default are “limits”, “limit”)

Set the % at which limit notifications appear. If set to 0 notification will appear only when limit is already reached

Add entity prefab name to Excluded list and plugin will ignore that prefab completely

Use Entity Groups to combine entities and set a common limit for the entire group

The same entity cannot be in both Group Entities list and Limits Entities simultaneously

Prevent excessive merging of buildings may impact performance, so enable it at your own risk

{
    "Enable GameTip notifications": false,
    "Enable notifications in chat": false,
    "Chat steamID icon": 0,
    "Commands list": [
        "limits",
        "limit"
    ],
    "Warn when more than %": 80.0,
    "Excluded list": [
        "assets/prefabs/building/ladder.wall.wood/ladder.wooden.wall.prefab"
    ],
    "Entity Groups": [
        {
            "Group name": "Foundations",
            "Group Entities list": [
                "assets/prefabs/building core/foundation.triangle/foundation.triangle.prefab",
                "assets/prefabs/building core/foundation/foundation.prefab"
            ]
        },
        {
            "Group name": "Furnace",
            "Group Entities list": [
                "assets/prefabs/deployable/furnace/furnace.prefab",
                "assets/prefabs/deployable/legacyfurnace/legacy_furnace.prefab",
                "assets/prefabs/deployable/playerioents/electricfurnace/electricfurnace.deployed.prefab"
            ]
        },
        {
            "Group name": "PlanterBoxes",
            "Group Entities list": [
                "assets/prefabs/deployable/planters/planter.large.deployed.prefab",
                "assets/prefabs/deployable/planters/planter.small.deployed.prefab",
                "assets/prefabs/misc/decor_dlc/bath tub planter/bathtub.planter.deployed.prefab",
                "assets/prefabs/misc/decor_dlc/minecart planter/minecart.planter.deployed.prefab",
                "assets/prefabs/misc/decor_dlc/rail road planter/railroadplanter.deployed.prefab"
            ]
        },
        {
            "Group name": "Quarries",
            "Group Entities list": [
                "assets/prefabs/deployable/oil jack/mining.pumpjack.prefab",
                "assets/prefabs/deployable/quarry/mining_quarry.prefab"
            ]
        },
        {
            "Group name": "Roof",
            "Group Entities list": [
                "assets/prefabs/building core/roof.triangle/roof.triangle.prefab",
                "assets/prefabs/building core/roof/roof.prefab"
            ]
        }
    ],
    "Permissions": [
        {
            "Permission": "limitentities.default",
            "Priority": 10,
            "Limits Global": {
                "Limit Total": 2000,
                "Limits Entities": {
                    "assets/prefabs/deployable/campfire/campfire.prefab": 20,
                    "assets/prefabs/deployable/ceiling light/ceilinglight.deployed.prefab": 50,
                    "assets/prefabs/deployable/furnace.large/furnace.large.prefab": 5,
                    "assets/prefabs/deployable/oil refinery/refinery_small_deployed.prefab": 5,
                    "assets/prefabs/deployable/search light/searchlight.deployed.prefab": 10,
                    "assets/prefabs/deployable/tool cupboard/cupboard.tool.deployed.prefab": 10,
                    "assets/prefabs/deployable/windmill/electric.windmill.small.prefab": 10,
                    "assets/prefabs/npc/sam_site_turret/sam_site_turret_deployed.prefab": 0,
                    "Foundations": 300,
                    "Furnace": 10,
                    "PlanterBoxes": 50,
                    "Quarries": 2,
                    "Roof": 200
                }
            },
            "Limits Building": {
                "Limit Total": 1000,
                "Limits Entities": {
                    "assets/prefabs/deployable/search light/searchlight.deployed.prefab": 5,
                    "assets/prefabs/deployable/windmill/electric.windmill.small.prefab": 5
                }
            },
            "Prevent excessive merging of buildings": false
        },
        {
            "Permission": "limitentities.vip",
            "Priority": 20,
            "Limits Global": {
                "Limit Total": 5000,
                "Limits Entities": {
                    "Foundations": 500,
                    "Roof": 400
                }
            },
            "Limits Building": {
                "Limit Total": 2000,
                "Limits Entities": {
                    "assets/prefabs/deployable/search light/searchlight.deployed.prefab": 15,
                    "assets/prefabs/deployable/windmill/electric.windmill.small.prefab": 15
                }
            },
            "Prevent excessive merging of buildings": false
        },
        {
            "Permission": "limitentities.elite",
            "Priority": 30,
            "Limits Global": {
                "Limit Total": 10000,
                "Limits Entities": {
                    "Foundations": 2000,
                    "Roof": 1000
                }
            },
            "Limits Building": {
                "Limit Total": 5000,
                "Limits Entities": {
                    "assets/prefabs/deployable/search light/searchlight.deployed.prefab": 20,
                    "assets/prefabs/deployable/windmill/electric.windmill.small.prefab": 20
                }
            },
            "Prevent excessive merging of buildings": false
        }
    ],
    "Log Level (Debug, Info, Warning, Off)": "Off"
}

Localization

Plugins phrases are available on 3 languages out of the box: English, Ukrainian and Russian

Plugin supports Rust Translation API which allows you to have entities names on any language Rust supports

{
    "Error.EntityIsNotAllowed": "You are not allowed to build <color=#FFA500>{0}",
    "Error.PlayerNotFound": "Player <color=#FFA500>{0} not found!",
    "Error.LimitBuilding.EntityMergeBlocked": "You can't merge these buildings because the limit of <color=#FFA500>{1} will be exceeded by <color=#FFA500>{0}",
    "Error.LimitBuilding.EntityReached": "You have reached the limit <color=#FFA500>{0} of <color=#FFA500>{1} <color=#FFA500>{2} in this building",
    "Error.LimitBuilding.MergeBlocked": "You can't merge these buildings because the limit of entities will be exceeded by <color=#FFA500>{0}",
    "Error.LimitBuilding.Reached": "You have reached the limit <color=#FFA500>{0} of <color=#FFA500>{1} entities in this building",
    "Error.LimitGlobal.EntityReached": "You have reached the limit <color=#FFA500>{0} of <color=#FFA500>{1} <color=#FFA500>{2}",
    "Error.LimitGlobal.Reached": "You have reached the global limit <color=#FFA500>{0} of <color=#FFA500>{1} entities",
    "Error.NoPermission": "You do not have permission to use this command!",
    "Format.Prefix": "<color=#00FF00>[Limit Entities]: ",
    "Info.Help": "Get current limits: <color=#FFFF00>/{0}",
    "Info.LimitBuilding": "You have built <color=#FFA500>{0} of <color=#FFA500>{1} entities in this building",
    "Info.LimitBuildingEntity": "You have built <color=#FFA500>{0} of <color=#FFA500>{1} <color=#FFA500>{2} in this building",
    "Info.LimitGlobal": "You have built <color=#FFA500>{0} of <color=#FFA500>{1} entities",
    "Info.LimitGlobalEntity": "You have built <color=#FFA500>{0} of <color=#FFA500>{1} <color=#FFA500>{2}",
    "Info.Limits": "nYour global limits are:n<color=#FFA500>{0}nYour limits per building are:n<color=#FFA500>{1}",
    "Info.TotalAmount": "Total amount: <color=#FFA500>{0}",
    "Info.Unlimited": "Your ability to build is unlimited",
    "Foundations": "Foundations",
    "Furnace": "Furnace",
    "PlanterBoxes": "PlanterBoxes",
    "Quarries": "Quarries",
    "Roof": "Roof"
}

There is a free version on uMod, why do you even need this plugin?

First of all, this plugin was designed to be efficient and performant. It uses unique caching system that should not consume no additional server resources

Much more efficient building limit control system even without cupboard placed

More accurate mechanism for notification messages

Allows you to prevent entities placement if limit is set to 0

Supports Rust Translation API so you can have full support of any language Rust supports

Supports Entity Groups !

Supports checks to prevent excessive merging of buildings

Supports Abandoned Bases plugin

Leave a Comment