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

Помогите Удаление игрока из мира

Тема в разделе "Разработка плагинов для новичков", создана пользователем Mykahailo_Levandovskyi, 25 июл 2015.

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

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

    Баллы:
    61
    Как сделать так, чтоб если игрок выходит из сервера, его удаляло из world?
     
  2. Хостинг MineCraft
    <
  3. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Отдельным плагином только.
     
  4. Автор темы
    Mykahailo_Levandovskyi

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

    Баллы:
    61
    Мне нужна помощь в коде, а не плагин
     
  5. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Есть ивент PlayerQuitEvent, отлавливаешь, дальше сам ищешь файл и удаляешь.
     
  6. Автор темы
    Mykahailo_Levandovskyi

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

    Баллы:
    61
    О PlayerQuitEvent я знаю, но как сделать чтоб файл удалило?
     
  7. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Гугл в помощь или подучи Java.
     
  8. leonmark061

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

    Баллы:
    76
    Сначала ищите файл в папке с миром: создайте объект типа File и в конструкторе укажите путь к папке мира /playerdata/ + уникальный ID игрока + .dat. Уникальный ID получается методом player.getUniqueId().toString(). Далее вызывайте у вашего File метод delete(). Суньте этот код в ваш хэндлер. Profit.

    Удаление данных игрока по его uniqueId:
    Код:
        public boolean delete(Player player, String world)
        {
            UUID pid = player.getUniqueId();
    
            File f = new File(PLUGIN.getDataFolder().getAbsolutePath() + "/../../" + world + "/playerdata/" + pid.toString() + ".dat");
    
            if(!f.exists())
                return false;
    
            if(!f.delete())
                return false;
    
            return true;
        }
    Код:
        @EventHandler
        public void onQuit(PlayerQuitEvent e)
        {
            e.getPlayer().getWorld().getPlayers().remove(e.getPlayer());//на всякий случай
     
            Bukkit.getScheduler().runTaskLaterAsynchronously(this, new Runnable()
            {
                @Override
                public void run()
                {
                    if(delete(e.getPlayer(), e.getPlayer().getWorld().getName()))
                        Bukkit.getLogger().info("deleted");
                    else
                        Bukkit.getLogger().info("cannot be deleted");
                }
            }, 60L);//Удалять через 3 сек.
        }
     
    Последнее редактирование: 26 июл 2015
  9. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Пожалуйста, хватит так делать. Вы не помогаете людям - вы делаете их тупыми.
    Объясните принцип, расскажите как гуглить, но не надо давать готовый код. Не надо.
     
  10. leonmark061

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

    Баллы:
    76
    Они задают свои вопросы с целью получить четкий, ясный ответ.
    Полагаю, я отвечаю на их вопросы. К тому же, я не пишу ни за кого готовые плагины, так? Так что, это не так уж и плохо.

    Если бы я всех отправлял в гугл, смысл раздела был бы потерян.
     
  11. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Смысл раздела - получать помощь в ответе на те вопросы на которые нельзя / трудно / человек не смог ответить с помощью гугла.

    Тут же видно что человек даже не пытался
    [​IMG]

    Отвечать на подобные вопросы - есть поощрение лени и ведет к тому что человек не учится находить информацию сам
     
  12. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Мне когда то давали готовый код, лучше в мусор его кинуть, ничего не понятно, потом пришлось разбирать код на части и учить.
     
  13. leonmark061

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

    Баллы:
    76
    Вас же никто не заставляет использовать готовый код. Вам его предоставляют с целью ознакомиться и узнать, что и как делается.
     
  14. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Когда я даю "готовый код" в лс, я по пунктам описиваю его.
     
  15. leonmark061

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

    Баллы:
    76
    У меня ведь тоже все понятно)
    Первый блок с кодом - сам метод удаления игрока.
    Второй - пример хэндлера с использование метода.[DOUBLEPOST=1437871002,1437869745][/DOUBLEPOST]По крайней мере мои ответы немного лучше, чем "Гугл в помощь", "учи матчасть", "учи Java" и т.д..
    Хотя, как знать...
     
  16. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Они могут быть не понятны для тс.
    Согласен, ответ лучшый.
     
  17. leonmark061

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

    Баллы:
    76
    ТС просил код, он его получил))
     

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