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

Помогите Вопросы по WorldGuard API

Тема в разделе "Разработка плагинов для новичков", создана пользователем MaрШутЧик, 1 авг 2016.

  1. This_is_GoOD

    This_is_GoOD Новичок Пользователь

    Баллы:
    21
    Ловишь PlayerMoveEvent тогда и e.setTo(e.setFrom); и он телепортируется назад[DOUBLEPOST=1470042284,1470042237][/DOUBLEPOST]
    Так чем она лучше моей?
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну если мечтаешь убить тпс, то мове ивент доя тебя. Такое лучше по таймеру проверять.
     
  4. Автор темы
    MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
    А теперь русским языком
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    BukkitRunnable
     
  6. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    о мой бог бл**ь.
    Если вызывать PlayerMoveEvent СЛИШКОМ ЧАСТО, то у тебя сервер будет лагать
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тут не в частоте дело. А в овербольшом листе регионов, который будет вайл труе при движение каждого игрока.
     
  8. This_is_GoOD

    This_is_GoOD Новичок Пользователь

    Баллы:
    21
    Это да.[DOUBLEPOST=1470044350,1470044039][/DOUBLEPOST]
    Вы все-таки очень умный.. Ивенты вызывает сервер, плагин их слушает.(Можно вроде вызвать и плагином, но не в данном случае) А лагает из за того, что при каждом движении игрока будет идти проверка на регион(Как уже сказал alexandrage). Нагрузку можно сильно убавить, если проверять это только тогда, когда игрок переходит с блока на блок, но это тоже будет сложно для сервера.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Вот почему лучше шедулер раз в N секунд запускать.
     
  10. This_is_GoOD

    This_is_GoOD Новичок Пользователь

    Баллы:
    21
    Да) Но там нужно будет немного больше кода, ну и головой больше подумать. Просто игрок может просто пробежать регион, если таймер не успеет. Потом еще нужно куда-то его телепортировать, а локацию где-то брать нужно, но это тоже решаемо.
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    С региона и брать локацию. И я не думаю что игрок далеко убежит за пару сек.
     
  12. Автор темы
    MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
    +
    Можно дать нормальный код, я тоже могу себе ответить ссылкой на мануал
     
  13. This_is_GoOD

    This_is_GoOD Новичок Пользователь

    Баллы:
    21
    Вам дать код проверки через шедулер?
     
  14. Автор темы
    MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
     
  15. This_is_GoOD

    This_is_GoOD Новичок Пользователь

    Баллы:
    21
    Я не дам вам готовый плагин! Я дал вам проверку, парни подсказали когда лучше проверять и как тпхать назад. Теперь сами!
    P.S. Если что мы подскажем.
     
  16. Автор темы
    MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
    Разделы умею читать, ща попробую сам что-нибудь написать в эклипсе.[DOUBLEPOST=1470047655,1470047263][/DOUBLEPOST]Ребят, я создал WGapi.java
    Код:
    package me.serega100.expelling;
    
    import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    import com.sk89q.worldguard.protection.ApplicableRegionSet;
    import com.sk89q.worldguard.protection.managers.RegionManager;
    import com.sk89q.worldguard.protection.regions.ProtectedRegion;
    import java.util.Iterator;
    import java.util.List;
    import org.bukkit.Location;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import pl.invcheckrg.InvCheckRG;
    public class WGapi extends JavaPlugin implements Listener
    {
      private WorldGuardPlugin myWorldGuardPlugin;
      public WGapi(Plugin wg)
      {
        this.myWorldGuardPlugin = ((WorldGuardPlugin)wg);
      }
      public ProtectedRegion getRegion(Location loc)
      {
        ApplicableRegionSet set = this.myWorldGuardPlugin.getRegionManager(loc.getWorld()).getApplicableRegions(loc);
        Iterator it = set.iterator();
        while (it.hasNext())
        {
          ProtectedRegion each = (ProtectedRegion)it.next();
          if (each != null) {
            return each;
          }
        }
        return null;
      }
    }
    
    Как к нему обращаться с главного класса(mainClass.java)?[DOUBLEPOST=1470048706][/DOUBLEPOST]
    (я походу всем надоел)
     
  17. Mr_RoboMan

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

    Баллы:
    123
    (ты прав)
     
  18. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    extends JavaPlugin inplements Listener - зачем, Карл..
     
  19. Автор темы
    MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
    ЕвентХандлер робить не будет
     
  20. This_is_GoOD

    This_is_GoOD Новичок Пользователь

    Баллы:
    21
    Он будет работать.
    В главном классе getServer().getPluginManager().registerEvents(new Wgapi(pl), this);
    И убери там extends JavaPlugin
     
  21. Автор темы
    MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
    Что за pl??? У меня эклипс на импорт и на getServer().getPluginManager().registerEvents(new Wgapi(pl), this); жалуется.
     

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