1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Событие смены мира

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    Здравствуйте не подскажете как я могу узнать когда игрок меняет мир на другой. Знаю есть события PlayerChangeWorldEvent, но как в его случае получить мир в который он телепортировался? Если брать за мир в который онтелепортировался p.getWorld(), то почему не срабатывает данный кусок кода?
    Код:
    if(p.getWorld() == Bukkit.getWorld("world")||p.getWorld() == from || !p.getWorld().getName().startsWith(Main.getInstance().getConfig().getString("worldprefix"))) return;
    По логике он должен ретурнуть метод(Ну это логично) Если мир в который он телепортировался равен дефолтному миру майна или если смена мира не удалась или мир в который он телепортировался не начинается с "dc_"(у меня так миры персональные начинаются). Однако судя по тому что я вижу, (ниже ифа написано отправка сообщения) Сообщение о смене мира отправляет как когда я тепаюсь в дефолтный мир так и когда я тепаюсь в свой персональный мир. Как исправить и в чем моя ошибка?
     
  2. deadanykey

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

    Баллы:
    96
    Если использоватьб другой ивент? Например, PlayerTeleportEvent?
     
  3. __Void__

    __Void__ Участник Пользователь

    Баллы:
    36
    Потому что нельзя сравнивать ссылки через ==
    Используйте
    Код:
    someWorld.equals(otherWorld)
    для этого
     
  4. Автор темы
    Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    А в нем есть смена миров?
     
  5. Автор темы
    Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    Спасибо, помогло, совсем забыл об этом если честно))
     
  6. Автор темы
    Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    А почему не срабатывает удаление Предмета из инвенторя в этом случае
    Код:
    Player p = e.getPlayer();
            World from = e.getFrom();
            
            if(p.getWorld().equals(from) || !from.getName().startsWith(Main.getInstance().getConfig().getString("worldprefix")) || !p.getWorld().equals(Bukkit.getWorld("world"))) return;
            
            ItemStack item = new ItemStack(Material.FEATHER);
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName("Настройки мира");
            item.setItemMeta(meta);
            
            if(p.getInventory().contains(item))p.getInventory().removeItem(item);
            
            item = new ItemStack(Material.WOOD_DOOR);
            meta = item.getItemMeta();   
            meta.setDisplayName("Покинуть мир");
            item.setItemMeta(meta);
            
            if(p.getInventory().contains(item))p.getInventory().removeItem(item);
            
            p.sendMessage("Добро пожаловать в обычный мир");
     
  7. Автор темы
    Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    А нет все работает просто я долбаеб :)
     
  8. Автор темы
    Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    Можете подсказать как лучше сохранять инветарь игрока ? (где нить в файле или бд) Просто надо чтобы при выходе с мира инвентарь очищался но при попадании обратно он возвращался
     
  9. deadanykey

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

    Баллы:
    96
    Сериализация.
     
  10. Автор темы
    Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    А если примером кода? Я прекрасно понимаю что сериализация но как осуществить хрен знает если честно.
     

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