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

Помогите Сделал плагин. У игроков стало резко падать FPS и у сервера TPS.

Тема в разделе "Разработка плагинов для новичков", создана пользователем konfyciu98, 13 мар 2014.

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

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Сделал плагин для своего сервера. После стали падать FPS у игроков и TPS у сервера. Я понимаю, что я еще тот говн*кодер, но как это исправить(и можно ли вообще это исправить)? Видел такие хелки на других серверах, там все норм.
    Вот сам код:
    Код:
    package me.konfyciu.EBS;
    
    import java.util.logging.Logger;
    
    import me.confuser.barapi.BarAPI;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerRespawnEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class EnderBarStats extends JavaPlugin implements Listener {
    
       Logger log = Logger.getLogger("minecraft");
     
       @Override
       public void onEnable() {
         log.info("[EBS] ENABLE");
         getServer().getPluginManager().registerEvents(this, this);
         saveConfig();
       }
     
       @Override
       public void onDisable() {
         log.info("[EBS] DISABLE");
         saveConfig();
       }
     
       @EventHandler
       public void onJoin(PlayerJoinEvent event) {
         if(!getConfig().contains(event.getPlayer().getName())) {
         
           getConfig().set(event.getPlayer().getName()+".kill", -1);
           getConfig().set(event.getPlayer().getName()+".dead", -1);
         }
         saveConfig();
         BarAPI.setMessage(event.getPlayer(), ChatColor.GOLD+ "Kill: "+ChatColor.YELLOW+getConfig().getInt(event.getPlayer().getName()+".kill")+ChatColor.DARK_AQUA+"  Dead: "+ChatColor.AQUA+getConfig().getInt(event.getPlayer().getName()+".dead"));
         int kill = getConfig().getInt(event.getPlayer().getName()+".kill");
         int dead = getConfig().getInt(event.getPlayer().getName()+".dead");
         int sum = kill+dead;
         int heal = (100/sum)*kill;
         BarAPI.setHealth(event.getPlayer(), heal);
       }
     
       @EventHandler
       public void onDeath(PlayerDeathEvent event) {
         Player dead = event.getEntity().getPlayer();
         Player killer = event.getEntity().getKiller();
       
         //Killer!
         if (killer instanceof Player) {
           if(getConfig().getInt(killer.getName()+".kill") == -1) {
             getConfig().set(killer.getName()+".kill", -3);
             getConfig().set(killer.getName()+".dead", -3);
             saveConfig();
           }
           int count_kill = getConfig().getInt(killer.getName()+".kill");
           int count_end_kill = count_kill+1;
           getConfig().set(killer.getName()+".kill", count_end_kill);
           saveConfig();
         
           int kill_killer = getConfig().getInt(killer.getName()+".kill");
           int dead_killer = getConfig().getInt(killer.getName()+".dead");
           int sum_killer = kill_killer+dead_killer;
           int heal_killer = (100/sum_killer)*kill_killer;
       
         BarAPI.removeBar(killer); 
         BarAPI.setMessage(killer, ChatColor.GOLD+ "Kill: " + ChatColor.YELLOW+ getConfig().getInt(killer.getName()+".kill") +ChatColor.DARK_AQUA+"  Dead: " +ChatColor.AQUA+getConfig().getInt(killer.getName()+".dead"));
         BarAPI.setHealth(killer, heal_killer);
         }
         //Death!!!
         if(dead instanceof Player) {
           if(getConfig().getInt(dead.getName()+".dead") == -1) {
             getConfig().set(dead.getName()+".dead", 0);
             getConfig().set(dead.getName()+".kill", 0);
             saveConfig();
           }
           int count_dead = getConfig().getInt(dead.getName()+".dead");
           int count_end_dead = count_dead+1;
           getConfig().set(dead.getName()+".dead", count_end_dead);
         
           saveConfig();
         
           int kill_dead = getConfig().getInt(dead.getName()+".kill");
           int dead_dead = getConfig().getInt(dead.getName()+".dead");
           int sum_dead = kill_dead+dead_dead;
           int heal_dead = (100/sum_dead)*kill_dead;
       
         BarAPI.removeBar(dead);
         BarAPI.setMessage(dead, ChatColor.GOLD+ "Kill: " + ChatColor.YELLOW+ getConfig().getInt(dead.getName()+".kill") +ChatColor.DARK_AQUA+"  Dead: " +ChatColor.AQUA+getConfig().getInt(dead.getName()+".dead"));
         BarAPI.setHealth(dead, heal_dead);
         }
       }
    
     
       @EventHandler
       public void onRespawn(PlayerRespawnEvent event) {
         final Player player = event.getPlayer();
         Bukkit.getScheduler().runTaskLater(this, new Runnable() {
           public void run() {
           
             BarAPI.removeBar(player);
             BarAPI.setMessage(player, ChatColor.GOLD+ "Kill: "+ChatColor.YELLOW+getConfig().getInt(player.getName()+".kill")+ChatColor.DARK_AQUA+"  Dead: "+ChatColor.AQUA+getConfig().getInt(player.getName()+".dead"));
             int kill = getConfig().getInt(player.getName()+".kill");
             int dead = getConfig().getInt(player.getName()+".dead");
             int sum = kill+dead;
             int heal = (100/sum)*kill;
             BarAPI.setHealth(player, heal);
           }
         }, 40);
       }
     
       @EventHandler
       public void onentityDeath(EntityDeathEvent event) {
         Player player = event.getEntity().getKiller();
         /*if(event.getEntity().getType() == EntityType.PLAYER) {
           reloadConfig();
           if(getConfig().getInt(event.getEntityType().getName()+".dead",-1) == -1) {
             getConfig().set(event.getEntityType().getName()+".dead", 0);
             saveConfig();
           }
           int count_pl_ent = getConfig().getInt(event.getEntityType().getName()+".dead");
           int count_end_pl_ent = count_pl_ent+1;
           getConfig().set(event.getEntityType().getName()+".dead", count_end_pl_ent);
           saveConfig();
         }
         else {*/
         if(player instanceof Player) {
           if(getConfig().getInt(player.getName()+".kill") == -1) {
             getConfig().set(player.getName()+".kill", 0);
             getConfig().set(player.getName()+".dead", 0);
             saveConfig();
           }
           int count_pl_ent_kill = getConfig().getInt(player.getName()+".kill");
           int count_end_pl_ent_kill = count_pl_ent_kill+1;
           getConfig().set(player.getName()+".kill", count_end_pl_ent_kill);
           saveConfig();
         
             int killer_ent_kill = getConfig().getInt(player.getName()+".kill");
             int killer_ent_dead = getConfig().getInt(player.getName()+".dead");
             int sum_killer = killer_ent_kill+killer_ent_dead;
             int heal_killer = (100/sum_killer)*killer_ent_kill;
       
             BarAPI.removeBar(player);
             BarAPI.setMessage(player, ChatColor.GOLD+ "Kill: " + ChatColor.YELLOW+ getConfig().getInt(player.getName()+".kill") +ChatColor.DARK_AQUA+"  Dead: " +ChatColor.AQUA+getConfig().getInt(player.getName()+".dead"));
             BarAPI.setHealth(player, heal_killer);
         //}
         }
       }
    
    }
    
    А вот суть плагина
    -66574452_325213202.jpg
     
    Последнее редактирование модератором: 14 мар 2014
    eleon нравится это.
  2. Хостинг MineCraft
    <
  3. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Во первых!!!
    int heal = (100/sum)*kill;
    А если sum = 0?

    Во вторых... Какая задумка у плагина?
    Подсчет киллов и смертей? Тогда почему для этого не использовать scoreboard?

    В третьих - зачем столько работы с конфигами?
     
    eleon нравится это.
  4. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    1)Деление на ноль. Я все продумал! Изначально стата игрока -1 и -1, при первой смерти или при первом убийстве значение меняется, на 1(второе остается -1, пока не надо будет изменить).
    2)ScoreBoard у меня не работает, так как возникает конфликт с другим плагином.
    3)В конфигах я полный нуб!
     
  5. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Почему проседает фпс?
    Потому что это вечно обновляющийся дракон наверное?
     
    eleon нравится это.
  6. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Ну ладно.[DOUBLEPOST=1394801481,1394799243][/DOUBLEPOST]Но вот еще вопрос: почему стали в небе появляться взрывы динамита? Это может быть как то связано с EnderBar'om?
     
    eleon нравится это.
  7. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Вообще они должны быть под землёй поидее.
     
    eleon нравится это.
  8. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Но они в небе.[DOUBLEPOST=1394801823,1394801772][/DOUBLEPOST]С самого низа уходит в небо.
    3BgO1ahOHlg.jpg
     
    eleon нравится это.
  9. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Значит ты слишком часто убираеш бар вместо обновления.
     
    eleon нравится это.
  10. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Есть такое..каждый раз, как надо добавить - удаляю, потом ставлю.
     
    eleon нравится это.
  11. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    И на кой хрен?
     
    eleon нравится это.
  12. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Сам не знаю, я это исправил, но FPS все равно падает. Удалил. Все стало норм! Все таки интересно, а возможно ли сделать плагин такого типа, но без падения FPS?
     
    ПриветОтЛайки и eleon нравится это.

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