Water Bases allow players with appropriate permissions to easily build structures on the surface of the water - and even expand them underwater! - in a natural, vanilla-like way.
lone.design
This plugin allows players with appropriate permissions to build structures on the surface of the water – and even expand them underwater! – in a natural, vanilla-like way. No need for those tall, unstable pillars that have to reach the sea floor, just deploy your foundation on the water and expand it with building plan/hammer! Those aquatic buildings follow all the rules of normal bases on your server like stability/upkeep/decay – but also contain some unique features, like underwater nettings for collecting random junk items (with fully configurable loot tables) and some new and interesting building techniques. The plugin supports multiple config profiles based on permissions, so it’s a good way to reward your VIP players of different tiers. You decide who gets to build on the water, how big they can build, how far from the shore, the maximum building block tier – and many more! The plugin can also warn players if they’re building in the path of the Cargo Ship. The Submarine update is right around the corner – make your server water-ready today!
Watch the video below to see what it’s all about.
And for the discerning individuals, here’s a 20+ minutes tutorial by srtbull!
“Isn’t this too OP?”
Not at all. Not even on default config! You have to gather the materials for a water base. Then you have to find the right spot. Then you have to build it, maintain the upkeep and defend it from potential raiders. There’s many config settings than you can adjust (like the cost of a water foundation, who can craft/build and where, what tier Workbench is required, how big the water bases can be built, etc). Living offshore is no picnic in itself, but for the right player, it will be the dream come true!
Everything still has to follow Rust rules – this is not an admin entity placement tool, it’s a familiar-feeling expansion to an already existing vanilla building system. Great on any map, but especially those where living space is at a premium, like one-grids.
“What about Cargo Ship, will it destroy structures in the way?”
By default, players will get a warning if they try to to build a water foundation in the path of the cargo ship, but their water foundation will stay. You can change this setting from “Warn” to “Prevent”, and the player won’t be able to build it in first place. Changing it to “None” will skip this check.
Every ocean path node creates a “bubble” with a configurable radius. See Admin chat commands section below to visualise those bubbles and guide your players to areas where they will be able to build without issues.
Quick start (for players and admins)
Upload the WaterBases.cs file to your oxide/plugins folder and you should be good to go, it’s all plug-and-play. No need to restart your server!
Crafting water foundations (with Building Planner)
By default, all players will be able to craft, deploy, expand and reinforce water foundations. More on the limits and how to change them (how far/close to the shore, min and max depth of the water, how many water foundations allowed per building etc) in the section Advanced Config.
When a player equips a Building Plan, a small GUI will show in the bottom right (positions/colours etc can be changed in the config too). There, players will be able to craft deployable water foundations – both square and triangle.
Those crafted items will also be consumed when players expand their already deployed foundations or reinforce them.
The default permission profile requires a player to be close to a Level 2 Workbench – this requirement can be edited in the config to change the level needed, or you can turn off the need for a workbench altogether, per permission profile.
If you don’t want your players to be able to craft foundations – so they have to find them/buy them/earn them instead – you can disable it per-profile. In that case, they won’t see the GUI.
Giving with chat commands (admins only)
Type /give_square [amount] or /give_triangle [amount] to give yourself some foundations of that type. If you don’t specify an amount, you will only receive 1.
Deploying a “starter” foundation on water
Go out to the lake/ocean, select the water foundation as your active item and using the doughnut-shaped guide, deploy it on the water surface.
After trying to deploy/expand upon an existing water foundation, a couple of checks will be performed according to global config and individual permission profile for that player:
Does the player have permission to deploy the first foundation/expand existing one?
Is the player building blocked?
How far is the player trying to build from shore (based on the map topology)? Too close/too far?
How deep is the water where the player is trying to build? Is it too deep/too shallow?
Is the player trying to build too close to the path of cargo/Oil Rig?
Is the player allowed to have this many water foundations in the building?
If all the checks have been successful, a new twig floor, with a stability 100% (like normal foundations) will be built. It will have some indestructible floatation barrels attached to it, partially covering the water foundation’s soft side (the bottom). Then, a water foundation can be expanded, upgraded, protected with a Tool Cupboard (like any other buildings, really), or reinforced.
Expanding
Once you’ve deployed your first “starter” water foundation, all the subsequent foundations will be placed using vanilla building mechanics – just take a building plan and build some floors neighbouring your water foundation on the sides! If you have enough water foundation items of the required kind in your inventory, those newly placed floors will also turn into water foundations. And they can call be demolished/upgraded, just like normal twig structures, as soon as you place a Tool Cupboard.
Expanding a single-sided water foundation requires 1 proper water foundation item, expanding a double sided water foundation (reinforced one) requires two.
Reinforcing
Reinforcing a water foundation means making it double sided – so it fully covers the soft side AND gives you the ability to build from the surface down, to the seabed/lakebed! To reinforce, make sure a built water foundation is fully repaired, and them hit it with a hammer. If you have a required water foundation item in your inventory, it will be consumed and the foundation will be reinforced: you will see another floor with floatation barrels attached upside down.
If you try to expand a reinforced foundation (by attaching a floor at the bottom, reinforced side) and there’s no water foundation above it (normal orientation), it will try to create one, provided you have enough items in your inventory.
Reinforcements (upside down water foundations) are always associated with the water foundation they’re attached to and cannot exist on their own – if you destroy the water foundation, its reinforcement will be destroyed too. However, destroying the reinforcement will not destroy is water foundation.
Upgrading base structures
Building blocks inside your water bases have certain tier limits associated with them – it’s to help balance things out. By default, non-VIP and non-admin players will be able to upgrade water foundations to sheet metal tier, floor frames and wall frames to stone tier, and everything else (including walls, floors and reinforcement foundations) to wood tier. You can easily decide which permission profile has which max tier (per type of building block) in the config.
Water base exclusive features
Because water foundations are treated as floors with the stability of a foundation, you can place roofs at “ground level”, which is not possible with normal foundations!
Similarly, you can leave a “hole” where a water foundation would be and place a floor frame with a hatch instead – now you can enter your base from the bottom, underwater!
Reinforcing a water foundation means you’ll be able to build down from the surface to the bottom of the water to create extra layers of protection, or…
Nettings deployed in wall frames underwater will collect random junk items with editable loot tables, including fish and diving equipment! This feature is heavily configurable and can even be disabled.
But also Sharks! Read just below.
NEW IN 1.0.5: Beware the Netting Sharks!
If enabled, Sharks will randomly spawn around Nettings underwater. Especially ones that have accumulated a lot of items, but only if there’s at least 1 player within the distance of 100 meters from the Netting. As soon as the first item is caught in an empty Netting, a random silent timer will be set. Every additional item spawning reduces the timer left by a certain percentage (default by 8%). When it hits 0, AND local/global Netting Shark population limits haven’t yet been reached (all in the config), a Shark will spawn somewhere near that Netting.
The sharks have a configurable aggro distance and multipliers for speed and health. They will linger around the position of the netting that attracted them and try to pursue anyone in sight. Harvesting a Netting Shark corpse with a proper tool will yield some free items from its entrails – by default 5 times more than you’d normally get from a netting full of items from the default loot tables. Of course the default Shark loot tables in the config are, just like the Netting loot tables, completely configurable – check the config section below.
All in all, it’s like any other base… just on water, without annoying seafloor supports.
The stability of the water foundation is always 100% and goes down the higher you built. The stability of a reinforcement foundation also starts at 100% and goes down the deeper towards the seafloor you build. All the decaying things (walls, floors, doors etc) will require appropriate upkeep materials in the Tool Cupboard. Structures can be repaired, demolished, upgraded and removed using plugins. Bases can be raided, taken over or left to decay.
Permissions (Oxide.Grant user YourName [permission name starting with waterbases.])
By default, the plugin generates 3 permission profiles in the config – one for admins, one for normal players with no specific permissions (default) and one for VIP. More on permission profiles and config values they can handle can be found in the section Advanced Config.
Unless you have added more permission profiles, only these two below are going to be used by your config:
waterbases.admin
Holders of the admin permission will also be able to run the /wb_cfg, /give_square and /give_triangle commands. Also, by default, they will be associated with the permission profile that has no limits on placing water foundations.
waterbases.vip1
Holders of this permission will follow settings and limits associated with with that permission profile.
The permissions below are also registered, but not used by default. To use them, just create some permission profiles with those permissions as the key.
waterbases.vip2
waterbases.vip3
waterbases.vip4
waterbases.vip5
Admin chat commands (must have ownerid/moderatorid/waterbases.admin permission)
/give_square [optional arg: amount of items to receive]
Will give the player a given amount of square-shaped water foundations. If no amount is provided, only 1 will be received.
/give_triangle [optional arg: amount of items to receive]
Will give the player a given amount of triangle-shaped water foundations. If no amount is provided, only 1 will be received.
/draw_cargo
This will draw a "bubble" (only for you, not every player) around every path node, and the bubble's radius will be taken from your config.
If a player tries building inside one of these bubbles, they might get a warning or get prevent from doing so (because cargo ship destroys all structures in its way).
Useful to visualise where your players can and cannot build, based on the cargo ship path.
/shore_distance
This will show you the current distance from the shore, to help you decide how close to/far from the shore to allow players to build.
The unit used by Rust to measure shore distance is not in meters, it's something roughly equivalent to 1/10th of a map grid length.
Mind you though, it's based off of the map's topology, so it should be fine on procgens, but if you have a custom map without topology layers reflecting the actual shoreline,
you might want to disable relying on shore distance in your config.
This command will work both from the chat (in that case, prefix it with a forward slash / ) and the console, (F1 or server/RCON console). Running this command as a player will require the waterbases.admin permission for players that are not moderatorid/ownerid enabled.
wb.give [square/triangle] [partial player name or full steam ID]
If a player executes it in the chat or console in-game and they don't
specify a recipient, it will be given to the player executing this
command. Executing from the server console requires specifying the
player.
Configuration (oxide/config/WaterBases.json and /wb_cfg chat command)
Vast majority of the settings can be configured with the /wb_cfg chat command. Typing it in the chat with no parameters should dump a rundown of config fields and their values.
In order to run any of the config commands, you will need to have ownerid or moderatorid (or the waterbases.admin permission).
/wb_cfg RelyOnShoreDistance [logical values (true or false)]
If true, shore distance will be checked when players try to place water foundation. Maps, especially custom, might not have topology maps defined correctly – if you see deployment errors that don’t make sense according to your config, disable this check and rely on water depth instead (the farther from shore, the deeper). (DEFAULT: true)
/wb_cfg GlobalOceanLevelCheckBeforePlacing [logical values (true or false)]
If true, players won’t be able to place new Water Foundations if the ocean level is currently above or below the GlobalOceanLevelBaseline value. (DEFAULT: true)
/wb_cfg GlobalOceanLevelBaseline[fractions (like 1.2345) between -1000.00 and 1000.00]
Set this value to whatever oceanlevel convar your server normally runs at. Typically it’s 0. This value is used in conjunction with GlobalOceanLevelCheckBeforePlacing. (DEFAULT: 0.00)
/wb_cfg CargoShipPathHandling [“Warn”, “Prevent” or “None”]
If a player tries building/deploying a Water Foundation too close to the path of the Cargo Ship, they will get, respectively, a warning (but the foundation will stay there anyway), they will be prevented from doing so, or nothing will happen. (DEFAULT: “Warn”)
/wb_cfg MinDistanceFromCargoShipNode[fractions (like 1.2345) between 0.00 and 10000.00]
The lower this value (in meters), the closer to Cargo Ship paths players will be able to build water foundations (they will just get a warning, won’t be able to build, or nothing will happen – see CargoShipPathHandling). (DEFAULT: 40.00)
/wb_cfg UnderwaterNetsCollectJunk[logical values (true or false)]
If true, Nettings deployed in wall frames underwater will accumulate random low-tier items. The full loot table (items and their weights) can be edited in the config file. (DEFAULT: true)
/wb_cfg UnderwaterNetsRandomTimerMin[fractions (like 1.2345) between 0.00 and 10000.00]
Minimum duration of time before the next random item spawns in a net (in seconds).
/wb_cfg UnderwaterNetsRandomTimerMax[fractions (like 1.2345) between 0.00 and 10000.00]
Maximum duration of time before the next random item spawns in a net (in seconds).
/wb_cfg UnderwaterNetsItemLimit [integers (like 12345) between 0 and 100]
After this limit of caught items is reached, don’t catch any more items (at least until some despawn first).
/wb_cfg UnderwaterNetsSpawnSharks [logical values (true or false)] (DEFAULT: true) If true, Nettings deployed in wall frames underwater will spawn Sharks nearby. The full loot table (items and their weights) can be edited in the config file.
/wb_cfg UnderwaterNetsSharkRandomTimerMin [fractions (like 1.2345) between 1.00 and 100000.0] When the first item in the netting is caught, minimum duration of time before the next random Shark has a chance of spawning near a Netting (in seconds)
/wb_cfg UnderwaterNetsSharkRandomTimerMax [fractions (like 1.2345) between 1.00 and 100000.0]
When the first item in the netting is caught, minimum duration of time before the next random Shark has a chance of spawning near a Netting (in seconds)
/wb_cfg UnderwaterNetsSharkTimerShortenByPercent [fractions (like 1.2345) between 1.00 and 100000.0]
If this value is greater than 0%, every time an additional item is caught, the currently running timer to spawn the Shark gets shortened by this percentage.
/wb_cfg UnderwaterNetsSharkSpawningMinDistance [fractions (like 1.2345) between 2.00 and 100000.0]
Minimum distance from the Netting for a random Shark position relative to the Netting it spawns from. Sharks have big colliders, so make sure you set this value to at least 2 meters.
/wb_cfg UnderwaterNetsSharkSpawningMaxDistance [fractions (like 1.2345) between 2.00 and 100000.0]
Maximum distance from the Netting for a random Shark position relative to the Netting it spawns from. Over 100 meters, Rust makes Shark automatically go to sleep if no nearby players are found, so don’t set this over 100 meters.
/wb_cfg UnderwaterNetsSharkPopulationLimitLocal[integers (like 12345) between 0 and 1000]
Useful for limiting how many Sharks max can spawn around a given Netting (in a radius of 100 meters from that Netting). Many Nettings close together share the same space and thus the same limit.
/wb_cfg UnderwaterNetsSharkPopulationLimitGlobal[integers (like 12345) between 0 and 1000]
No more Sharks will spawn on the server AT ALL (around the nettings or in the wild) if this limit had been exceeded. Useful for balancing server performance.
/wb_cfg UnderwaterNetsSharkSleepDespawnTimer [fractions (like 1.2345) between 2.00 and 100000.0]
When no players are found within a 100 radius meters of a shark, a timer starts with this value. When it wakes up, the timer is cancelled. Adjust it to let sleeping sharks live longer.
/wb_cfg UnderwaterNetsSharkHealthMultiplier [fractions (like 1.2345) between 0.001 and 100.0]
Use values lower than 1 to give them less health, and higher than 1 to give them more healththan they’d normally have as vanilla Sharks
/wb_cfg UnderwaterNetsSharkSpeedMultiplier [fractions (like 1.2345) between 0.001 and 100.0]
Use values lower than 1 to give them less speed, and higher than 1 to give them more speed than they’d normally have as vanilla Sharks
/wb_cfg UnderwaterNetsSharkAggroRange [fractions (like 1.2345) between 0.001 and 100.0]
When a player underwater gets closer (in meters) to a Shark than this value, the Shark might pursue them. Default Rust vanilla is 15
/wb_cfg SharkHarvestingLootEnabled [logical values (true or false)] If true, harvesting a Shark corpse with a proper tool will have a chance of giving random low-tier items. The full loot table (items and their weights) can be edited in the config file.
/wb_cfg GuiNEW1AnchorMinX [fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI anchor min x (left).
/wb_cfg GuiNEW2AnchorMinY[fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI anchor min y (bottom).
/wb_cfg GuiNEW3AnchorMaxX[fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI anchor max x (right).
/wb_cfg GuiNEW4AnchorMaxY[fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI anchor max y (top).
/wb_cfg GuiNEW5OffsetMinX [fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI offset min x (left).
/wb_cfg GuiNEW6OffsetMinY[fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI offset min y (bottom).
/wb_cfg GuiNEW7OffsetMaxX[fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI offset max x (right).
/wb_cfg GuiNEW8OffsetMaxY[fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI offset max y (top).
/wb_cfg GuiTextSize [integers (like 12345) between 0 and 100]
Building plan crafting GUI text size.
/wb_cfg GuiButtonColor[hexadecimal numbers WITHOUT preceeding # (like 3db4b3)]
Building plan crafting GUI button background colour (hex number, no preceeding hash).
/wb_cfg GuiTextColor[hexadecimal numbers WITHOUT preceeding # (like 3db4b3)]
Building plan crafting GUI text colour (hex number, no preceeding hash).
/wb_cfg GuiButtonAlpha [fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI button alpha (0 = fully transparent, 1 = fully opaque).
/wb_cfg GuiTextAlpha [fractions (like 1.2345) between 0.00 and 1.00]
Building plan crafting GUI text alpha (0 = fully transparent, 1 = fully opaque).
/wb_cfg EnableBarrelEntities [logical values (true or false)]
If true, water foundation and reinforcements will spawn barrels for visuals. If you’re worried about potential server lag with extra entities, set to false, but it will fully expose your foundation/reinforcement soft sides. Changes will take effect for newly deployed foundations or after server restart. (DEFAULT: true)
Advanced config (only editable through oxide/config/WaterBases.json)
Water foundation crafting cost
Here you can adjust how much it costs to craft water foundations. Make it more expensive, less expensive, or add/remove required materials. The cost will stay the same for all permission profiles.
Shortname should belong to one of the available items in-game.
Amount should be a whole number larger than 0 and smaller than the limit of a signed 32-bit integer (2 147 483 647).
Permission profiles
Using profiles you can quickly create/edit different permissions for different players, for example, if you have more than 1 VIP tier on your server – just add some new profiles.
Different players can have different limits and permissions associated with building water bases. To check which permission profile the player should fall under, the plugin goes through all permission profiles and checks whether the player has that permission granted. The permissions are checked in order, meaning that if the player doesn’t have the first permission, it will try the next permission on the list, etc (similar to how Auto Kits checks which kit to give to a player based on their permissions in order).
If the player doesn’t have any permissions from the list granted, they will fall back to the “default” profile. That’s the only one that you shouldn’t remove! If you remove it, a new one with default values will be created.
So if you don’t want your default, non-VIP players to build water bases, don’t remove the default profile, just take away privileges in that profile (like deploying/expanding/reinforcing).
You don’t have to use the built-in VIP permissions – any permission from any plugin will do just fine!
By default, three permission profiles are generate in the config: default, waterbases.admin and waterbases.vip1.
The default permission profile will apply to any player who doesn’t have any permissions listed in the profile list – let’s have a look at it:
PermissionRequired should contain an already existing permission registered by any plugin in the form of pluginname.permissionname
MaxBuildingGradeGeneric, MaxBuildingGradeFrames andMaxBuildingGradeWaterFoundations define the highest allowed grade for a particular part of a water base. Generic means anything that’s not a water foundation or a door/floor frame (that includes normal floors, walls, half walls and inverse foundations). For those 3 settings, the accepted options are “Twigs”, “Wood”, “Stone”, “Metal” or “TopTier”. Set all of them to “TopTier” if you don’t want any tier limits on water bases.
WaterDepthMin and WaterDepthMax define the allowed range for water depth when placing water foundations – to make sure that certain players are not building in water that is too shallow/too deep. The unit is meters.
MaxWaterFoundationsPerBuilding is what it sounds like: it will prevent a player under this permission profile from adding more water foundations to a water base, limiting their size. Set to a large value like 100000 for virtually no limits.
MinDistanceFromOilrig will define the minium distance from the closest oilrig (in meters) that has to be respected before placing a water foundation down. Decrease to let players build closer, increase to make them build further away.
MinDistanceFromShore and MaxDistanceFromShore both rely on your map topology. If you’re sure that you’re quite close to the shore, but the /shore_distance command shows you ridiculous values, it means your map does not have the topology map painted properly (contact the map dev and let them know!). In that case you should set the RelyOnShoreDistance option in the config to false and instead rely on water depth (if shore distance is enabled, it will rely on both). The unit here is not a meter, but roughly 1/10th of a map grid (around 15 meters).
CanDeployWaterFoundations if set to true, it will allow players using this profile to deploy new started foundations (using the doughnut guide, provided they have a properly shaped water foundation item to be consumed).
CanReinforceWaterFoundations if set to true, it will allow players using this profile to reinforce water foundations by hitting them with a hammer (provided they have a properly shaped water foundation item to be consumed).
CanExpandWaterFoundations if set to true, it will allow players using this profile to build more water foundations upon already existing ones by placing neighbouring floors with their building plan (provided they have a properly shaped water foundation item to be consumed).
CanExpandReinforcedFoundations if set to true, it will allow players using this profileto attach a floor to the side of a reinforcement foundation – and as long as they have 2 water foundation items in their inventory, they will expand that reinforced foundation along with its water foundation.
CanCraftWaterFoundations if set to true, it will allow players using this profile to craft water foundations using a GUI in the bottom-right (showing while a Building Plan is equipped). Profiles with this setting set to false won’t display those GUIs and players will have to find other ways of obtaining water foundations (loot, kits, server rewards etc).
RequireMaterialsForCrafting if set to true, players using this profile will need to have required crafting materials in their inventory when trying to craft a Water Foundation. If set to false, the player will be able to craft an infinite amount of water foundations for free, so use with caution.
WorkbenchLevelRequired Set to 0.0 (no workbench nearby required), 1.0 (Level 1 required), 2.0 (Level 2 required) or 3.0 (Level 3 required) for crafting Water Foundations.
CanDeployUnderwaterNets if set to true, players will be able to deploy nettings in underwater wall frames. Those nettings will slowly accumulate underwater junk items if the feature is enabled on your server – look below for the loot table configuration.
Underwater junk & Netting Shark loot tables
If you have not disabled underwater nets collecting junk, this is where you can adjust the kind and rarity of certain items. You can even remove entries and add your own, including a custom skin and item name!
A “loot table” is perhaps not the right term, as the list contains individual chances of a “caught” item being of a particular kind. There can be only 1 item caught at a time, and the table defines random weights for every possible entry. The larger the weight (compared to the sum of all weights), the bigger chance of encountering a particular item. So if you have 10 entries and each of them have a weight of 1, each item will have an equal 10% chance of being one of the random entries in the list (as the weights sum up to 10).
Thus you can have some items really common, and some of them really rare. Here’s 2 sample entries from the list:
Shortname is the most important bit – make sure it’s correct! You can find a link to a full list of those names above.
CustomName lets you give items caught in the netting different names. You can leave that null to leave a default item name. In this example, the two items are water foundations – the proper name for those items will be applied automatically by the plugin anyway. Whatever you type there, make sure to encompass it in quotes, like “CustomName”: “My Custom Item Name” if it’s not null!
SkinID is pretty self explanatory – it’s the long number in the URL of a Steam Workshop item. By default it’s 0 (no skin).
RandomChanceWeight lets you decide the item’s rarity when spawning – relative to the rarity of other items. Increase or decrease this number (it can be fractional) to make the item more or less rare.
MinRandomAmount and MaxRandomAmount are what they sound like – they should both be larger than 0 (whole numbers) and when that particular item is caught, the stack will contain an amount between these two numbers.
Translation support (oxide/lang/en/WaterBases.json)
Almost every string the players see, including names for the water foundation items and messages displaying in the chat and the GUI, can be edited. Just load the plugin and let it generate the file – after you edit it, reload the plugin.