My main comment after reading through the source would be to read up on https://en.wikipedia.org/wiki/Don't_repeat_yourself. A lot of things I was seeing could be a bit more generic and re-used.
Things such as https://github.com/frannytheman/lava/blob/master/tasks/bank/BankTask.java. Where it is doing if not contains, withdraw, for a set amount of items. This should written in a more generic fashion so you could re-use that logic and just pass a list of items or a list of predicates.