Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
YAML Files
Updated 3 weeks agoFive YAML files sit next to the .cfg in BepInEx/config. Each is written with explanatory comments on the first start when it does not exist yet.
| File | What it holds |
|---|---|
EarthWright.Brushes.yml |
Starting sizes and limits per entry or per tool |
EarthWright.Costs.yml |
Costs per entry |
EarthWright.Entries.yml |
Custom menu entries that run console commands |
EarthWright.Limits.yml |
Height limits per biome |
EarthWright.Zones.yml |
Admin zones (kept by the server) |
How they behave:
- Saved changes are picked up within about five seconds;
ew reload(admin) reloads every file at once. - Extra files named like the main one with anything added before
.yml(for exampleEarthWright.Brushes.MyServer.yml), in the config folder or next toEarthWright.dll, are read as well. This does not apply to the zones file, which is one file. - A file with an error is rejected as a whole and the previous version stays in force. Errors and warnings name the exact place (for example
entries[2]: ...) in the BepInEx log; unknown keys are warned about. - While the server's
Lock Configurationis on, players use the server's files and their own are ignored. With it off, every player uses their own. Admin zones always come from the server. - Indent with spaces, two per level, as in the examples.
EarthWright.Brushes.yml
Starting values and radius limits of the hoe and cultivator entries. Every key is optional. A missing value falls back to the entry's tool, then to the .cfg (Minimum Radius, Maximum Radius, Default Level Style), then to the entry's own values.
families:by tool:hoe,cultivator,modded(terrain pieces other mods add).entries:by piece prefab name: the game'smud_road_v2(Level ground),raise_v2(Raise ground),path_v2(Pathen),paved_road_v2(Paved road),cultivate_v2(Cultivate),replant_v2(Replant); EarthWright'sew_lower,ew_smooth,ew_paint,ew_reset,ew_ramp,ew_road,ew_groundbreaker,ew_clear,ew_terraform,ew_till,ew_uproot; custom entries asew_custom_<id>; and any modded terrain piece.
| Key | Meaning |
|---|---|
radius |
Starting radius in metres (a circle's radius, a square's half side), up to 100. Without it the entry starts at its own size times the .cfg Size Multiplier. |
minRadius |
Smallest radius for this entry, replacing the .cfg Minimum Radius. |
maxRadius |
Largest radius, replacing the .cfg Maximum Radius (tool levels and the skill cap may still lower it). |
amount |
Starting raise or lower amount per click in metres (the .cfg amount range still applies). |
maxStep |
Starting max step per click for the Ease and Step level styles, in metres. |
strength |
Starting smoothing strength, 0 to 1. |
hardness |
Starting edge hardness, 0 (soft) to 1 (hard). |
style |
Starting level style: Ease, Step or Instant. |
shape |
Starting shape: Circle, Square, Rectangle, Ring or Frame. |
resizable |
false keeps the entry at its starting radius; the size keys do not change it. |
families:
hoe:
cultivator:
maxRadius: 12
modded:
entries:
mud_road_v2:
hardness: 0.5
style: Step
paved_road_v2:
radius: 2
shape: Square
replant_v2:
resizable: false
Saving the file makes every entry start again from its new values (what players changed in game is forgotten).
EarthWright.Costs.yml
Costs of single entries; whatever an entry does not set follows section 8 of the .cfg. Under entries:, each key is an entry's prefab name (as above). Every value is optional:
| Key | Meaning |
|---|---|
resources |
The items one swing costs, ItemPrefab: amount. Replaces the entry's own materials; resources: {} makes it free. Still grows with the brush as Material Radius Exponent says, and Charge Materials = false still switches it off. |
stamina |
Stamina per swing, replacing Stamina Mode for this entry (the stamina skill still lowers it). |
durability |
Multiplies the entry's tool wear: 0 none, 0.5 half, 2 double. |
station |
Prefab name of the crafting station the entry needs instead of its own, for example piece_workbench, piece_stonecutter, forge or blackforge. |
stationRequired |
true or false: whether the entry needs a station at all, whatever the per-tool switches say. |
entries:
raise_v2:
resources:
Stone: 3
stamina: 8
station: piece_workbench
paved_road_v2:
stationRequired: false
mud_road_v2:
durability: 0.5
ew_ramp:
resources:
Wood: 2
EarthWright.Entries.yml
Custom menu entries: any console command as an entry in the hoe's or the cultivator's build menu. Only id and command are required.
| Key | Meaning |
|---|---|
id |
Letters, digits, _ and -, unique across the files. The piece is named ew_custom_<id>. |
name |
The name in the menu, as written (default: the id). The menu's search finds it. |
description |
The text under the name, as written. Name and description may use the game's own $words. |
icon |
The icon of any piece or item by prefab name (mud_road_v2, Stone, Hoe ...), or one of EarthWright's: lower, smooth, paint, reset, ramp, road, clear, groundbreaker, terraform, till, uproot, custom. |
tool |
hoe or cultivator (default hoe). |
position |
The place in the tool's menu, 0 first (default: right after EarthWright's own entries). |
radius |
The brush radius the entry starts with (more than 0). |
height |
The brush amount in metres the entry starts with, for {height}. |
shape |
The shape the entry starts with: circle, square, rectangle, ring or frame. |
command |
The console command a click runs, as you would type it in the console (F5). Put it in quotes when it starts with { or contains : . |
repeat |
true runs the command again while the button is held, every Custom Entry Repeat Interval (0.25 s). |
admin |
true lists the entry only for admins and refuses it for everyone else. |
Placeholders in the command, filled from your brush (numbers with a dot, at most three decimals):
| Placeholder | Value |
|---|---|
{x} {y} {z} |
The brush centre |
{radius} {radius2} |
The brush radius and its second size (rectangle depth, ring inner radius, frame band) |
{height} |
The brush amount |
{target} |
The target height of levelling |
{rotation} |
The brush rotation in degrees |
{shape} |
circle, square, rectangle, ring or frame |
{player} |
Your character's name (may contain spaces) |
entries:
- id: level_big
name: Big level
description: Levels a large square at the brush to the target height.
icon: terraform
tool: hoe
radius: 12
command: ew terrain level {radius} {target} at=brush shape=square
admin: true
- id: reset_here
name: Reset around me
description: Resets the ground around you to the world's original height and texture.
icon: reset
tool: hoe
radius: 6
command: ew reset {radius}
- The command runs on your machine through the game's console, as if you had typed it, so the command's own rules apply: admin-only
ewcommands stay admin-only, and the game's cheat commands need what they always need. - A click is charged like one swing of an EarthWright entry before the command runs, and tool levels can lock a custom entry (
custom_<id>inLevel Unlocks). - The shipped file has no entries (
entries: []); the two above are its commented examples.
EarthWright.Limits.yml
Height limits per biome. A biome that is not listed, or a value that is left out, uses Raise Limit and Dig Limit from section 6. Values are metres from 0.5 to 512 (outside values are clamped with a warning).
Biomes: Meadows, BlackForest, Swamp, Mountain, Plains, Mistlands, AshLands, DeepNorth, Ocean.
biomes:
Swamp: { raise: 4, dig: 2 }
Mountain: { raise: 16, dig: 8 }
AshLands: { raise: 8, dig: 4 }
The shipped file lists every biome commented out. A biome uncommented without its two-space indent is still applied, with a warning to indent it.
EarthWright.Zones.yml
The admin zones, kept by the server (see Limits and Protection). Admins normally change them in game with ew zone add and ew zone remove; the server then rewrites this file. It may also be edited by hand on the server; it is reloaded within five seconds and sent to every player.
zones:
- name: spawn
x: 0
z: 0
radius: 60
- name: bobs_farm
x: 1250
z: -340
radius: 40
player: "Bob"
name: letters, digits,-and_, at most 32, unique (a second zone of the same name is skipped).x,z: the world position of the centre (required).radius: 5 to 200 m (clamped); 20 m when left out.player: optional character name; the zone is then that player's.- At most 100 zones; any beyond are dropped with a warning.
Translation files
EarthWright's texts are English by default. A file EarthWright.Language.<Language>.yml, where <Language> is the game's language name (German, French, Spanish, Russian, Polish, Portuguese_Brazilian, Chinese, Japanese ...), replaces them key by key while the game runs in that language. Files are read from the plugin's folder and then from BepInEx/config, which wins.
ew language writewritesEarthWright.Language.English.ymlwith every text intoBepInEx/config.- Copy it to
EarthWright.Language.<Language>.ymland translate the texts on the right. Keep the keys, the$1$2placeholders and any<color>tags. Leave out what you do not translate; it stays English. ew language reloadapplies the file without a restart.
While the game is in English the written English file itself replaces the built-in texts, so delete it when you are done. Custom entries' texts come from EarthWright.Entries.yml as written.