Менее 2-ух часов, т.е. "очень легко". Фактически уже почти зделано.
С такими взглядами из любой ситуации можно "высосать" конфликт![]()
Конфликта не будет, потому как Вашему observer'у будет доступен лишь метод "kick(Player player, String reason)". Одним словом "чужой" код будет довольствоваться тем малым что не сможет вызвать конфликта интересов![]()