File information

Last updated

Original upload

Created by

acidzebra

Uploaded by

acidzebra

Virus scan

Safe to use

Tags for this mod

About this mod

Perfect grass that doesn't clip through objects: Lawnmower will clean grassmods faster, better, and more consistently than you can. It removes 99% of unwanted & clipping grass. Comes with already-processed patches for popular grass mods, and an autoclean esp that will take it to 100%.

Requirements
Permissions and credits
Mirrors
Changelogs
Do you love grass mods but hate grass clipping through your shrines, entrances, and campfires?
Do you hate not being able to find your plants and flowers for alchemy because grass covers it all?
Do you make/manage mods and dread having to make another compatibility patch?

I can fix that for you!

Introducing Lawnmower, Grassblocker, Grassclipper, and Weedwhacker to make your life easier. Iincludes lawnmowered patches for your favorite grass mods!

TLDR:
I'm not great at writing documentation, but the inimitable MassiveJuice has worked hard on a wiki article:
https://morrowind-modding.github.io/guides/groundcover/lawnmower-tutorial

if you're feeling adventurous, read on below.

0. if you're not interested in running scripts, you can stop reading and just grab a pregenerated patch for the supported grass mods.
(I would recommend reading the "using the patches" section below though)

1. Lawnmower will clean grassmods faster, better, and more consistently than you can and removes 99% of unwanted&clipping grass.
2. batch-chaining these scripts can make your post-modding grass patch generation completely hands-off.
3. includes grassblocker for mod authors/patch maintainers. It will clean that final 1% automatically for you on any mod update (some setup required).


Using the Patches:

YOU WILL NEED THE ORIGINAL MOD(S) FOR THE TEXTURES+MESHES. Then just drop the patches for the mod(s) you use in your data folder and
overwrite when asked.

OpenMWusers are done at this point (assuming they already had the groundcover entries active) and can enjoy the non-clipping grass bonanza, MGE users will have to regenerate distant terrain I think. I've not manually cleaned out the patches further, so there might still be some grass in odd places, but I think you'll agree it's a lot cleaner.

Aside from updating my own grass mod with lawnmower (+some extra manual cleaning love), I made and included lawnmowered patches for Aesthesia Reworked, Remiros' groundcover, Ozzy's groundcover (not on Nexus), and Vurt's groundcover.

Note: I lawnmowered the 3rd party mods with the v21 version of TR as that is the one they used. If you don't use v21, you will have floating grass. If you want a mod that's compatible with v22, my grass mod is (or you can generate and lawnmower one of the other mods against v22 yourself)

Using the Scripts:

Prerequisites:
  • the source mods, scripts, and tes3conv all need to be in the same folder to run. If you use MO2 or some other VFS shenanigans, it's on you to figure out how to make that happen (using VFS explorer, perhaps?). Afterwards you can move the standalone output file wherever you want and do whatever with it.
  • Python 3.5 or later: https://www.python.org/downloads/windows/
  • tes3conv - https://github.com/Greatness7/tes3conv/releases
  • English-language Morrowind and OS, I think it will work on any other as long as they didn't rename the refIDs or something, but I can't test.
  • Windows OS - python can run on other OSes but I've used some os and sys calls,I've no idea if they work as-is. You might have to change some code. The bulk of the code will run, you will need a working version of tes3conv for your OS.

Lawnmower - removes clipping and unwanted grass
REMOVES GRASS CLIPPING WITH ANY OBJECT IN ANY MOD
Lawnmower will take an input esp/esm file, a grass mod, and an output file as commandline arguments. It will compare them and if there is any clipping detected between the grass and objects in the mod, it will move the grass out of sight. The new grass file will have almost no clipping, guaranteed (or your money back). You can chain commands in a batch file to process multiple masters and mods:

CLEANING VANILLA GRASSMODS:
python lawnmower.py morrowind.esm yourfreshgrassmod.esp tempfile.esp
python lawnmower.py "the beautiful cities of morrowind.esp" tempfile.esp tempfile.esp  <--- if you use BCOM
python lawnmower.py anymodatall.esp tempfile.esp tempfile.esp <--- any mod adding stuff in your grass region
python lawnmower.py autoclean_cities_vanilla.esp tempfile.esp yoursupercleanfreshgrassmod.esp

And that's it - never manually clean a city again. Will also take care of some grass growing on hills and other random places like bridges and plantations and such.

CLEANING TAMRIEL REBUILT GRASSMODS:
python lawnmower.py TR_Mainland.esm yourmessyTRgrassmod.esp tempfile.esp
python lawnmower.py autoclean_cities_TR.ESP tempfile.esp yoursupercleanTRgrassmod.esp

boom - all that beautiful content with zero grass clipping or growing through objects. If you use preview or other unreleased/old TR content, run those files against the grassmod(s) too using lawnmower. Due to the size of the content and amount of objects, running lawnmower against TR will take a little longer to complete.

DO NOT LOAD THE AUTOCLEAN ESPS IN YOUR GAME, THEY ARE ONLY FOR USE WITH LAWNMOWER.

Program speed depends on grass mod size and amount of objects in target mod file and your processor, vanilla morrowind regions take about two minutes per region for me. TR regions take noticeably longer because of the many, many objects placed and the large surface area.

Lawnmower has some additional user-configurable settings, open the file with a competent text editor to have a look, I've tried to document things in the code. The mod also comes with a set of example batch files I used to generate patches to help you set up your faster.

Weedwhacker - thins out grass
THINS OUT GRASS IN ANY GRASS MOD
Weedwhacker code was based on lawnmower. It will take a grass mod and a number between 1-99 as input, and will move a corresponding percentage of grass objects out of sight, effectively thinning it out by 1-99%. If you like a grass mod but think there's too much grass and don't want to regenerate the whole thing, this will quickly thin out the grass for you (openMW users can just control the density through config files of course, but this allows to control density of individual regions).

python weedwhacker.py "mygrassmod.esp" "myfiftypercentreducedgrassmod.esp" 50

Result: this will go through every cell of mygrassmod.esp, remove 50% of grass randomly (dice roll for each grass object found), and save the output to myfiftypercentreducedgrassmod.esp - it is recommended to verify/clean the output with tes3cmd.

Program speed: very fast

Grassclipper - fixes floating grass (advanced users/authors)
FIXES FLOATING GRASS BY INTEGRATING GRASS MODS
(probably more for mod authors, patch maintainers, and advanced users) Grassclipper code was based on lawnmower. It takes two grass mods as input. It will compare mod A with mod B and for any cell existing in both mods, it will overwrite the cells of mod A with the cells of mod B, then saving the combined output to a single output file. BOTH GRASS MODS NEED TO BE GENERATED FROM THE SAME INI FILE.

This can fix floating grass and speed up creating patches - example: you have your favorite grassmod but use BCOM and have some floating grass. You then run mesh generator to generate a new grass file with only the BCOM esp as input. Grassclipper can now combine the grassmods for you:

python grassclipper.py "myfavoritegrassmod.esp" "mynewlygeneratedBCOMgrasspatch.esp" "newfavoritegrassmod.esp"

Result: no more floating grass in BCOM areas with your favorite grass mod (I do recommend manual inspection and clean afterwards, but it will be much less painful). Do not use for anything other than grass, and again, the grass needs to come from the same ini file in both mods. It is recommended to verify/clean the output with tes3cmd.

Program speed: very fast

Grassblocker - makes your mod autoclean-compatible - never manually clean again after updating your mod
BUILD A CUSTOM ESP TO CLEAN OUT YOUR MOD AUTOMATICALLY EVERY TIME YOU GENERATE GRASS
if you have ever generated grass for vanilla lands, think of Pelagiad. There's a bunch of grass in the middle of the road and the castle. Lawnmower removes most of it, but because there are no meshes on the road or plaza, it can't cut grass there. Your mod might have similar issues.

Open the CS, add morrowind.esm etc and your mod as masters. Create new statics using the grassblocker meshes, various sizes are available (though I mostly use large and xl). Drop these statics on top of places where you want grass to be cut. You don't need to be very precise or worry about exact placement or clipping (ha) or really any  accidental touching of other objects, you will never load this into the game. Note that if the grassblocker mesh exceeds cell borders, any grass covered by it in the next cell(s) over will not be considered. Turn on cell borders in CSSE CS ("b" key) and place additional meshes in the other cells. When done, save this mod. Run the saved mod through tes3cmd clean.

SEE HOW IT WORKS: This mod comes with two example files I use in all my cleaning: autoclean_cities_vanilla.esp and autoclean_cities_TR.esp - have a look at cities and towns in these files to see how it works.

Now whenever you want to generate new grass for your mod (because of an update etc), run the grassblocker mod you created against your grassmod using Lawnmower:
python lawnmower.py "mynewgrassblockermod.esp" "mygrassmodwithgrassinstupidplaces.esp" "mycleangrassmod.esp"

add it to a batch file with the rest of the mods you want to clean against, and that's it. Whatever new versions of the mod appear, you will always be able to generate grass in just the right places (and nowhere else).

F.A.Q.

- the script cuts too much/not enough/no grass under some objects!
- open lawnmower.py with a text editor. defaultradius controls how much grass will be cut under any object where no other rules apply. skiplist contains objects to skip (no grass will be cut). The small/medium/large/xl lists all set a specific radius for grass to cut under objects. The first matching item in a list applies radius/skip from that list, which is why the lists are ordered the way they are and object names are set up the way they are. You can change any and all of this.

- can you make a patch for ...?
- no, that is why I have given you the tools.

- why make this at all?
- I spent a lot of time on making my grass mod. Then for v1.1 I spent a lot of time manually cleaning out grass. And then I realized I was forever married to that one specific cleaned version, if I wanted to make changes and regenerate grass, I would have to clean everything all over again. And while mindlessly deleting stuff in the TES CS is kind of relaxing, it takes many hours and that's not even taking TR into account. So lawnmower was born. The other two scripts were more of a "I guess the code can also..." thing.

Authors who maintain patches for grassmods also have to do a lot of manual cleaning every time, they can probably use their time better.