Here's a simple illustration of my concept.
OOOOOOOOOO22222X77777722222X777777OOOOOOOOOOWhere
O = wall
X = new floodgate with *allow water flow* set to 2
2 = 2/7 water
7 = 7/7 water
My idea is to implement a new but simple, practical, and realistic function to the existing floodgates we have now.
Give floodgates the option of allowing a certain level of water to go past them.
Basically, the way this works is that when a floodgate is placed down, we also get the option of allowing a certain level of water to flow past them. Floodgates default with *block all water* (what the current floodgate is now), but after putting down a floodgate, it's "water blocking rate" can be adjusted in a similar manner to adjusting the sensitivity of a pressure plate. If the water blocking rate is set to 7, it'll let all water through, although with its pressure reduced.
Assuming the floodgates are propped up against a large water source (eg. river), here will be the general effects of each degree of water blockage.
With *allow water flow* set to 1, it will essentially be a tiny trickle that can only wetten the ground behind the floodgate
With *allow water flow* set to 2, there will be a small stream spilling out behind the floodgate (good for smaller tree farms)
With *allow water flow* set to 4, there will be a moderate river like flow coming out, enough to fill and maintain a nice swimming pool.
With *allow water flow* set to 7, it'll basically be the same as an unrestricted water flow from a river except with the pressure reduced
Opening a floodgate with a lever will still allow all water to flow past unhindered. This idea only applies to when floodgates are closed.
Note: I am perfectly aware that the same effect of water level control can be achieved with careful pressure plate and mechanism wiring, but the disadvantages of such are that...
1. It requires measurement and timing and possibly quite a bit of trial and error to achieve the desired result.
2. The constant need to detect water levels and switch floodgates consumes fps.
3. Closing floodgates destroys any liquid beneath them. This can be a problem for maps with limited surface water.
4. The constantly changing and dynamic nature of a pressure plate based water-level controller means that if something gets stuck in the floodgates while they're open, the results might produce a bit more FUN than the player intended.
Alternatively, we could also implement a new building called the "dam", although I prefer the number of new introduced buildings kept to a minimum
NEW FLOODGATES!!!