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

Помогите Выпадение из мира

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

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

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

    Баллы:
    16
    Имя в Minecraft:
    stminne77
    Можно ли сделать плагин,чтобы если упали в низ где ты начинаешь умирать,не убивало.а телепортировало на определнную точку?
     
  2. Хостинг MineCraft
    <
  3. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    да
     
  4. AxmeD

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

    Баллы:
    103
    Skype:
    ahmed136323
    Ну типа отследить ивент получения урона от void и отправить игрока на координату
     
  5. Автор темы
    stminne77

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

    Баллы:
    16
    Имя в Minecraft:
    stminne77
    Можете написать код ?
     
  6. OsipXD

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Тут суть форума немного в другом. Тебе дают наводки, а ты сам делаешь.
    Наводки - слушать событие получения урона, смотреть чтобы источник был VOID
     
  7. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Еще нужно фал дамаг убрать, а то разобьется при тпшке.
     
  8. Автор темы
    stminne77

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

    Баллы:
    16
    Имя в Minecraft:
    stminne77
    Код:
    public class pluginplugin
      extends JavaPlugin
      implements Listener
    {
      public void onEnable()
      {
        saveDefaultConfig();
        Bukkit.getPluginManager().registerEvents(this, this);
        load();
        save();
        _log.info("Plugin enable!");
      }
    
      public void onDisable()
      {
        _log.info("Plugin Disable!");
      }
    
      public void save()
      {
        getConfig().set("Text", this.upal);
        saveConfig();
      }
    
      public void load()
      {
        reloadConfig();
        this.upal = getConfig().getString("Text");
      }
    
      @EventHandler
      public void onPlayerMoveEvent(PlayerMoveEvent e)
      {
        Player p = e.getPlayer();
        int y = p.getLocation().getBlockY();
        Location spawn = p.getWorld().getSpawnLocation();
        if (y < -1)
        {
          p.teleport(spawn);
          p.sendMessage(this.upal);
        }
      }
    
      private boolean ReloadCFG(CommandSender sender)
      {
        if (sender != null) {
          sender.sendMessage(ChatColor.DARK_GREEN + "config reload!");
        }
        load();
        return true;
      }
    
      public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args)
      {
        if (args.length == 0) {
          return false;
        }
        Player player = (sender instanceof Player) ? (Player)sender : null;
        if (args[0].equalsIgnoreCase("reload"))
        {
          if ((player == null) || (player.hasPermission("plugin.reload"))) {
            return ReloadCFG(sender);
          }
          return false;
        }
        return true;
      }
    
      public static final Logger _log = Logger.getLogger("Minecraft");
      String upal;
    }
    
    Как теперь реализовать,чтобы это работало в определенном мире?
     
  9. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    p.getWorld().getName().equalsIgnoreCase("Нужный мир").
    так же есть смысл вынести имя нужного мира в конфиг.
     
  10. OsipXD

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    А еще лучше сделать не один мир, а список миров в конфиге.
     
  11. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Вообще, слушать ивент движения не целесообразно.
    он вызывается постоянно, и при онлайне в 100 человек и слабом хосте, сервер может уже лагать, от такого количества лишних обработок.

    Куда как правильнее слушать ивент получения дамага.
    Код:
    @EventHandler (priority=EventPriority.LOWEST,ignoreCancelled=true) //игнорируем отмену ивента (иначе игроки в режиме /god будут лететь до скончания веков), приоритет такой по тем же причинам
    public void onEntityDamage(EntityDamageEvent e){
        if (e.getEntityType()==EntityType.PLAYER){//проверям, кто получает дамаг
            if (e.getCause()==DamageCause.VOID){//проверяем причину получения дамага. VOID - пропасть
                //здесь то что нам нужно
                if (!e.getEntity().getWorld().getName().equalsIgnoreCase("world name")) return; //если это не тот мир, то не выполняем код дальше
                e.getEntity().teleport(e.getEntity().getWorld().getSpawnLocation());
                e.getEntity().setFallDistance(0); //что бы не разбился
                e.setDamage(0);//убираем дамаг.
            }
        }
    }
    ну это уже пусть сам думает как.
     
  12. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    С одной ифкой это вообще ниочем.
     
  13. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    агаа, а ты до ифа взгляни
    он же переменные до ифа объявляет
     
  14. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    И? Лузверь и его локация. Это все уже и так присвоено игроку.
     
  15. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    как показывает практика, это все будет лежать не ссылкой, а объектом, что покушает ОЗУ
    ну или я где то накурился, но тогда моя тема про то что плуг уже есть - магия и не иначе
     
  16. Автор темы
    stminne77

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

    Баллы:
    16
    Имя в Minecraft:
    stminne77
    Что в этом такого,что переменные до ифа объявляю?
     
  17. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Да нормально там все, чувак глючит.
     
  18. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    объясните мне, я чего то не понимаю.

    Создание и хранение переменных в огромном количестве это нормально?
     
  19. AtomicInteger

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

    Баллы:
    46
    Во-первых, где тут огромное количество?Во-вторых, если они нужны, то почему нет?Странная логика.
     
  20. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Зачем каждый раз инициализировать переменные, инициализируй их, только тогда, когда y <= -1
     
  21. AtomicInteger

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

    Баллы:
    46
    Для проверки по y нужна ссылка player, какой смысл инициализировать после?
     

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