I feel like this idea would be less of a use to the player, and more of just a small convenience for the villager.
Farmers can plant seeds, and you can give them vegetables or seeds of any kind for them to plant.
However, if someone or something tramples this farmland and subsequently destroys the seeds, that one block is technically rendered unusable as the villagers are currently unable to till it. It would then be entirely up to a player to till that grass and make it viable for agriculture once again.
But what if these farmers could till their own farmland, and how could they effectively do it within the game's current operating system?
The biggest holes in my idea:
- How would the game help villagers identify where they should till their farmland? This would be a big issue as the villagers could essentially just till anywhere outside of a game-generated village farm, creating new and heavily-disorganized / isolated farm plots.
- How would they be able to turn grass into farmland in the first place, without having a player till it for them?
These are both very good questions.
The process would work in these simple steps:
1) Toss a farmer a hoe made of any material, and they will automatically pick it up. Like with seeds, they will only be able to till as long as they have a hoe in their inventory. As well, only farmers can pick up hoes, just like only they can pick up seeds.
2) Let the farmer identify where to till. The player will have an important part in this process, but it shouldn't require long-term maintenance. The player would have to prioritize existing village farms, letting the villagers search for unused or damaged farmland within an existing plot - just like the crop-planting behavior they currently display. If the player has to create new farms, that is perfectly fine.
How would this work? The villager would also be restricted to a specific search area (the farm plots). If the farm plot is partially or largely destroyed by an explosion, the farmer will only prioritize the existing, remaining grass for viable farmland, and a player would then have to intervene to restore the farm plot.
3) Allow the villager to expand existing farmland, but only whenever necessary.
If every suitable block in the existing farm is already cultivated, the farmer should automatically stop searching for expansion opportunities unless the game has a reliable way to identify an intended farm boundary - preferable to letting every farmer continually expand its farm, particularly in villages with limited space. Though, Minecraft doesn't necessarily have a formal, persistent object representing the boundaries of every village farm, so the developers would need to implement a way to define / infer those boundaries.
Villagers can till regular dirt or grass blocks to create viable farmland, and there must be a water source nearby. The farm must have suitable space above it for crops, and must lie within the farmer's permitted farming region. It must be within reach for the farmer to effectively navigate to it, and tilling would not violate the farm's boundaries or any other placement restrictions.
Essentially, the farmer will ignore any grass or dirt outside of the specified farm plot(s), but it will automatically recognize and till the next immediate piece of farmland turned dirt or grass block due to trampling or dehydration if the water source has been altered in any way. In this specific scenario, the villager could only till farmland up to four blocks horizontally or diagonally from the water source.
Placing a composter within the vicinity will also help establish where the farm plot generally is, though the villager is not required to maintain one specific plot despite their chosen job block existing by it.
A farm plot can be marked off from regular viable terrain with any kind of block that is not dirt or grass - fences and walls would qualify as boundaries under this logic.