Farming blocks placement check and drops

PR splitting as expected in #374.
Seems it's ready to be reviewed. 
For sanity, `else throw new IllegalArgumentException("insert message");` with the proper formatting :3