3.0 version::
Прогрес... Всё переделали по моим словам, но перестарались теперь, слишком красиво, но на деле фигня. (Потели, переделывали, но опять фигня. Хотяб знания получилили и приключения).
1) Вы меня не совсем поняли на счёт хранения данных конфигурационного файла в классе, Мы делаем поле
String BlockLimiterChunkMessage
к примеру
При создании класса путём указываем в методе нейма класса к примеру наш кфг файл, так как будем создавать из мейн класса, то от JavaPlugin гетним FileConfiguration
DataConfig dataConfig = new DataConfig(getConfig())
в классе DataConfig делаем следующее:
String BlockLimiterChunkMessage;
DataConfig(FileConfiguration config) {
this.BlockLimiterChunkMessage = Utils.colorize(config.getString("path_config_message"));
}
String getBlockLimiterChunkMessage() {
return this.BlockLimiterChunkMessage;
}
Таким образом Мы гетаем данные из кфг и заполняем их в класс, то есть в оперативочку и файл гетать мы больше не будем, а обращаемся к созданной части в оперативке, тем самым обеспечиваем оптимизацию, ведь каждый раз гетая файл Мы получаем его заного и обратаем ВСЕ ДАННЫЕ ЗАНОСЯ В ОПЕРАТИВКУ (в файле больше данных, чем в стринге...).
2) Из-за того что Вы не отгружаете все слушатели-событий, то к ним могут обращаться некоторые файлы и гетать их, точнее это "недоработка" баккита, а хотя может и приколюха.
Поэтому когда Вы плагмэном еб*шите плагин реалодите, отгружаете он у вас оставляет слушатели-событий в хандлер листах (ну в списках классов буккита, спигота и т.д)...
Поэтому в onDisable указывайте
HandlerList.unregisterAll(this)
это означает отгрузку всех слушателей-событий от плагина (this - JavaPlugin, вы от него экстендитесь в главном классе).
3) Зачем отдельные метолы для кмд и слушателей-комманд не понятно, ну ладно... (p.s: лишний код, места меньше)
4) Метод registerEvents в главном классе теперь обладает листом и парсом через фореач, нафига не понятно... Надо было просто создать PluginManager от Bukkit.getPluginManager и к нему обращаться, если бы у вас было хотя бы 20 слушателей-событий это было уже оправдано, а там есть схемы и покруче
5) Метод registerCmd в главном классе имеет регистр комманды в табкомплете, какого-то фига в публичное поле в классе, а не в методе пишется Arrays.asList(reload) ?????????
Чё то бессмысленно сделано... + в классе команды могли дописать имплемент табкомплете и там всё писать, а не создавать отдельно в мейн классе (если бы мапа была, то можно было кмд хоть в одном классе писать, всё равно не вилека и в мапу путим не через баккит, а через филды).
6) Заметил в таб-комплете отключение через кфг проверки, но эвент выполняется всё-равно и обрабатывается вашим плагом, лучше просто при регистрации слушателей-команд делать проверку на это значение к кфг и регать/не регать этот слушатель-события...
3/5 видимо ваш минимум, 4/5 пока что максимум.
Была бы 10 бальная шкала, оставлял бы 6/10 - min 8/10 max
---------
2.0 version::
Обновление сделало только хуже.
Всё из-за того что Вы получаете кфг кучу раз, в эвенте BlockPlaceEvent в классе ChunkLimiter, я знаю что разные декомпилы показывают Iterator, а не for, но на самом деле Вы в for стринглиста из кфг ещё форите блоки, как бы это жёстко систему нагружает.
- Сделайте отдельный класс и туда складируйте значения кфг.
- Отдельный класс с утилками, где будет реплейс колора, не через .replace и String.format, а тот который ChatColor.translateAlternative...
- Какого фига класс с табкомплите называется TabCoplite, если даже нейм метода в классе TabComplete?? Почему m нету и вместо e стоит i??
- Создайте отдельный метод для команды и регайте комманду без коммандМапа (я вижу что он вам не посилен), без проверок на command.getName(), просто регните класс с нью командой, в плагин.умл не забудьте её указать. Команда смысла НИФИГА НЕ ИМЕЕТ у вас сейчас которая, в начале перм чек, а потом чек на консоле сендера???? Делается проверка на консоль или на плауера так:
if(sender instanceof Player) или if(!(sender intanceof Player))
писать аргументы 0 не надо, тупо сделайте так что бы если был 1 аргумент и он равен reload, то чекаем на перм в нём, если есть пермы = релоадим, нету = перм нету, а если ифка не прошла (которая с reload, то просто другой результат это хелп по коммандам).
- Гетать плагинманагер 300 раз не надо, у вас есть возможность скоротить это всё:
PluginManager pm = Bukkit.getPluginManager();
pm.registerEvents(new SkamEvent(), this);
pm.registerEvents(new Skam2Event(), this);
pm.registerEvents(new Skam3Event(), this);