По идее мне нужно идти на StackOverFlow или ещё куда-то... Но моя идея будет осуществлять свою реализацию в Sponge плагине и я знаю, что здесь находятся люди с неплохими знаниями Java.
У меня проблема вот в чём. Дан enum под названием Groups и в него входят три константы: "BlackList, Default, Admin". Собственно, чтобы создать метод в самой константе, его нужно создать сначала в перечислении как абстрактный, а дальше уже реализовать внутри константы переопределив.
В моём случае, как для тестирования я взял метод sayWord(), который просто делает sout в консоль с определенной фразой, от названия метода понятно. Причём константа BlackList ПО ИДЕИ не должна вообще иметь этот метод, так как это группа заблокированных людей и у них нет доступа к sayWord/"Говорению слова", но его придется тоже переопределять иначе ошибка. Окей... Переопределили с return null;
Но если я хочу создать метод исключительно для группы людей Admin, естественно с админскими возможностями, где будет у нас метод changeRoot(), который имеет два параметра на вход, когда первый это User, а второй это новая его группа. То есть этим методом мы можем поменять группу у определенного юзера, к примеру с Default на BlackList. Но суть то в том, что этот метод мы должны и переопределить в остальных константах, аля Default и BlackList, но ведь этот метод должен быть только у Admin!
И значит, что в принципе обычный человек с группой Default (обычный юзер), сможет Админу поменять права и бросить его в Черный список? = BRED.
Окей... Окей... Возьми и переопредели в остальных константах метод так, чтобы ничего не происходило.
Но если у меня в группе Admin будет очень огромный функционал, который должен быть доступен только для этой группы и получается мне нужно писать каждый метод в каждую константу? = BRED + YoptaCode.
Помогите добиться такого, что при Groups.Default после точки в конце Default в "окне вариантов" даже не будет метода changeRoot(), так как он должен быть только у Admin! Как это сделать? Как ограничить какие-то константы по некоторым методам, чтобы они были исключительно доступны к конкретной константе в этом перечислении!
Please...

