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

Помогите Как достать оффлайн игроков

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    WiZaPaNXD
    Ребята, как лучше достать всех оффлайн игроков сервера и затем проверить инвентарь всех игроков на наличие предмета?!
     
  2. Alexrage

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

    Баллы:
    76
    Имя в Minecraft:
    Egorka
    Плагин OpenInv (Даёт возможность проверять enderchest и инвентарь когда игрока нету на сервере)
     
  3. MrHaber

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

    Баллы:
    66
    Создай папку(куда будут сохранятся ники игроков и их инвентарь)
    И при заходе игрока активируй метод создания yml файла с ником игрока и его данными об инвентаре. И после того как он вышел получи имя файла(его офлайн ник) и его содержимое (мета-инвентарь).
     
  4. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Интересно. А в OpenInv так сделано?
     
  5. Alexrage

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

    Баллы:
    76
    Имя в Minecraft:
    Egorka
    в OpenInv всё куда проще :)
     
  6. Alexrage

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

    Баллы:
    76
    Имя в Minecraft:
    Egorka
    Ты втираешь нам какую-то дичь!
     
  7. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Расскажи.
     
  8. Alexrage

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

    Баллы:
    76
    Имя в Minecraft:
    Egorka
     
  9. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Ты мне показываешь, как работает OpenInv? Гениально. Я думал, ты расскажешь, как там в коде всё реализовано. Многим будет интересно узнать, наверное.
     
  10. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    А что там рассказывать? Для онлайн игроков просто player#getInventory, для офлайн игроков загружаешь инвентарь из файла мира
     
  11. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Код?
     
  12. InterWall

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

    Баллы:
    173
  13. Автор темы
    WiZaPaNXD

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

    Баллы:
    61
    Имя в Minecraft:
    WiZaPaNXD
    Пока что это лучшее предложение)))
     
  14. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Что за бред? Что за лучшее предложение? Зачем дублировать данные, при этом всем не будет гарантирована целостность данных...
     
  15. Автор темы
    WiZaPaNXD

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

    Баллы:
    61
    Имя в Minecraft:
    WiZaPaNXD
    А разве нельзя никак достать оффлайн игроков?! Я все ищу данный способ
     
  16. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    В BukkitAPI есть Bukkit.getOfflinePlayers(), но их инвентарей он тебе не отдаст
     
  17. alexandrage

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

    Баллы:
    173
    https://github.com/alexandrage/NBT
    Код:
            File[] folder = new File("Путь/до/сервера/world/playerdata").listFiles();
            for(File file : folder) {
                try {
                    NBTTagCompound nbt = CompressedStreamTools.readCompressed(new FileInputStream(file));
                    //TODO
                    CompressedStreamTools.writeCompressed(nbt, new FileOutputStream(file));
                   
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
  18. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    И не надо никогда вызывать getOfflinePlayers, сервер здохнет и все
     
  19. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Даже если с другого потока, он будет синхронизироваться с главным?
     
  20. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Нет, не будет, но все же зачем, метод юзлесс, руками все намного легче достать
     

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