Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Оптимизация плагина MoreHearts

Тема в разделе "Разработка плагинов для новичков", создана пользователем scrik78, 24 май 2016.

  1. Автор темы
    scrik78

    scrik78 Старожил Пользователь

    Баллы:
    123
    Всем привет,наблюдается сильная нагрузка ,когда файл с данными игроками слишком большой. Плагин писал не я ,ссылка на источник, версия плагина 2.1.2, версия сервера 1.7.10 KCauldron #201
    Большая нагрузка получается ,когда игрок в/god (Essentials) или в привате прописан флаг invincible:allow (WorldGuard) и игрок находится в лаве,то плагин создает нагрузку в ивенте EntityDamageEvent,наверно это связано с тем,что слишком часто он обращается к файлу и перезаписывает ,хотя стоит SSD
    Ивенты ,которые выделились в таймингах PlayerJoinEvent, PlayerTeleportEvent, EntityRegainHealthEvent, EntityDamageEvent

    Помогите пожалуйста советами,что можно предпринять,а то тайминги зашкаливают от него

    Код:
    Playerlistener.java ТЫК
    main.java ТЫК
     
    Последнее редактирование: 24 май 2016
  2. Хостинг MineCraft
    <
  3. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Так это, всё же просто вроде?
    Делай return в евенте EntityDamageEvent, если у игрока есть /god режим.

    Если можешь, то перепиши плагин под базу данных. Тоесть, для хранения используй любой тип БД, MySQL к примеру.

    Если всё совсем плохо, то можно сделать хэшмап, и в него заносить игрока который зашёл на сервер и его здоровье. После выхода - перезаписывать значение здоровья в БД и чистить ключ в хэшмапе с игроком. После изменения - перезаписывать значение здоровья в хэшмап. Таким образом плагин будет работать только с мапой (в основном).

    Главное не забыть - после выключения сервера или отключения плагина перезаписывать ключи и значения из мапы в базу данных, а потом уже её чистить.
     
  4. Автор темы
    scrik78

    scrik78 Старожил Пользователь

    Баллы:
    123
    Примерно так?
    Переписывать под БД ,увы, не могу
    Код:
    public static List<String> god = new ArrayList();
    public void pde(EntityDamageEvent e) {
          if(e.getEntity() instanceof Player) {
             Player p = (Player)e.getEntity();
             if(!god.contains(((Player) p).getName())){
                 return;
             }
             if(this.plugin.worlds.contains(p.getWorld().getName())) {
                this.plugin.getConfig().set("Players." + p.getUniqueId() + ".HP", Double.valueOf(p.getHealth()));
                this.plugin.saveConfig();
             }
          }
    
       }
     
  5. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Примерно - так. Только, увы, работоспособность проверить не могу.
     
  6. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Essentials ess = (Essentials) Bukkit.getPluginManager().getPlugin("Essentials");
    if (ess.getUser(p).isGodModeEnabled()) {
    return;
    }
     
  7. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Сразу видно, человек уже и API Essentials'а успел изучить :)
     

Поделиться этой страницей