Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

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

Удаление данных игрока по его uniqueId:
Java:
    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;
    }
Java:
    @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 сек.
    }
 
Последнее редактирование:
Java:
    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;
    }
Java:
    @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 сек.
    }
Пожалуйста, хватит так делать. Вы не помогаете людям - вы делаете их тупыми.
Объясните принцип, расскажите как гуглить, но не надо давать готовый код. Не надо.
 
Они задают свои вопросы с целью получить четкий, ясный ответ.
Полагаю, я отвечаю на их вопросы. К тому же, я не пишу ни за кого готовые плагины, так? Так что, это не так уж и плохо.

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

Если бы я всех отправлял в гугл, смысл раздела был бы потерян.
Смысл раздела - получать помощь в ответе на те вопросы на которые нельзя / трудно / человек не смог ответить с помощью гугла.

Тут же видно что человек даже не пытался
a3a535f47d.png


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

Тут же видно что человек даже не пытался
a3a535f47d.png


Отвечать на подобные вопросы - есть поощрение лени и ведет к тому что человек не учится находить информацию сам
Мне когда то давали готовый код, лучше в мусор его кинуть, ничего не понятно, потом пришлось разбирать код на части и учить.
 
Мне когда то давали готовый код, лучше в мусор его кинуть, ничего не понятно, потом пришлось разбирать код на части и учить.
Вас же никто не заставляет использовать готовый код. Вам его предоставляют с целью ознакомиться и узнать, что и как делается.
 
Вас же никто не заставляет использовать готовый код. Вам его предоставляют с целью ознакомиться и узнать, что и как делается.
Когда я даю "готовый код" в лс, я по пунктам описиваю его.
 
Когда я даю "готовый код" в лс, я по пунктам описиваю его.
У меня ведь тоже все понятно)
Первый блок с кодом - сам метод удаления игрока.
Второй - пример хэндлера с использование метода.
По крайней мере мои ответы немного лучше, чем "Гугл в помощь", "учи матчасть", "учи Java" и т.д..
Хотя, как знать...
 
У меня ведь тоже все понятно)
Первый блок с кодом - сам метод удаления игрока.
Второй - пример хэндлера с использование метода.
По крайней мере мои ответы немного лучше, чем "Гугл в помощь", "учи матчасть", "учи Java" и т.д..
Хотя, как знать...
Они могут быть не понятны для тс.
Согласен, ответ лучшый.
 

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

Назад
Верх