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

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

Discussion in 'Разработка плагинов для новичков' started by stminne77, Mar 10, 2017.

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

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

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

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    да
     
  4. AxmeD

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

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

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

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

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

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

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

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

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

    Trophy Points:
    16
    Имя в Minecraft:
    stminne77
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

    Куда как правильнее слушать ивент получения дамага.
    Code:
    @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 Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    С одной ифкой это вообще ниочем.
     
  13. Blc_Dragon

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Share This Page