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

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

Discussion in 'Разработка плагинов для новичков' started by scrik78, May 24, 2016.

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

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

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

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

    Код:
    Playerlistener.java ТЫК
    main.java ТЫК
     
    Last edited: May 24, 2016
  2. Хостинг MineCraft
    <
  3. CoolBoy

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

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

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

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

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

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

    Trophy Points:
    123
    Примерно так?
    Переписывать под БД ,увы, не могу
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

Share This Page