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

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_"(у меня так миры персональные начинаются). Однако судя по тому что я вижу, (ниже ифа написано отправка сообщения) Сообщение о смене мира отправляет как когда я тепаюсь в дефолтный мир так и когда я тепаюсь в свой персональный мир. Как исправить и в чем моя ошибка?
 
Если использоватьб другой ивент? Например, PlayerTeleportEvent?
 
Потому что нельзя сравнивать ссылки через ==
Используйте
Код:
someWorld.equals(otherWorld)
для этого
 
А почему не срабатывает удаление Предмета из инвенторя в этом случае
Код:
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("Добро пожаловать в обычный мир");
 
А нет все работает просто я долбаеб :)
 
Можете подсказать как лучше сохранять инветарь игрока ? (где нить в файле или бд) Просто надо чтобы при выходе с мира инвентарь очищался но при попадании обратно он возвращался
 
Можете подсказать как лучше сохранять инветарь игрока ? (где нить в файле или бд) Просто надо чтобы при выходе с мира инвентарь очищался но при попадании обратно он возвращался
Сериализация.
 
Назад
Верх