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

Помогите Как очистить КЭШ миров после удаления? (NMS?)

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

Статус темы:
Закрыта.
  1. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    1.13-1.17.1
    Столкнулся с проблемой, что при удалении дополнительного мира (папки с миром) - в ней остаются папки "entities", "poi", которые содержат файлы типа ".mca", я так понимаю это какие-то кэшированные файлы баккита, удалить их нельзя даже вручную. На чистом CraftBukkit эти файлы пропадают сами по себе через несколько минут, на paper - через несколько часов.
    Но суть в том, что они пропадают, а значит этот метод есть. Так вот как и где мне его искать? Я хочу запускать этот метод перед методом удаления всей папки с миром.

    Видео-демонстрация проблемы -
     
  2. alexandrage

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

    Баллы:
    173
    Эти папки появились с 1.17 вроде. Жди когда плагин обновят и научат их чистить.
    Напиши в тему разработчика плагина, так быстрее.
     
  3. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Версию я указал, о каком плагине идёт речь не понимаю. Это проблема баккита, а не какого-то плагина.
     
  4. alexandrage

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

    Баллы:
    173
    Ну тогда идешь на спигот и пишешь о проблеме. Если это бакитовский метод. Как я уже сказал, эти папки новые, от сюда и такие проблемы.
     
  5. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Уже написал, но фиксить они, как я понял, не спешат. Поэтому я пытаюсь найти этот метод "очистки" самостоятельно, думал, может тут кто знает об этом.
     
  6. alexandrage

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

    Баллы:
    173
    Тогда иди на форум бумаги, те не такие лентяи. А пока можешь вручную через свой java код чисить.
    File dir = new File(this.plugin.getDataFolder().getParentFile(), worldname); //TODO
     
    Последнее редактирование: 26 авг 2021
  7. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Написал и на бумагу bug report. Вдруг пофиксят)

    Если ты имеешь в виду удалять папку кодом, то это конечно же не работает. Эти файлы никак не удаляются (пока не пройдёт ~2 часа).
     
  8. ВukkitPrоfi

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

    Баллы:
    76
    папки надо рекурсивно удалять, в ядре есть либа от гугла, которая поможет в этом FileUtils.deleteDirectory(file)
     
  9. alexandrage

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

    Баллы:
    173
    Папку нельзя удалить пока в ней файлы... Подумай еще раз что нужно сделать)
     
  10. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Я что, на другом языке говорю? НЕВОЗМОЖНО удалить эти файлы и папки, так как Буккит их судя по всему юзает.
     
  11. NuaN

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

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Насколько я знаю, что в Windows нельзя удалить файлы, пока они используются. А Linux пофиг на это. Просто потом могут ошибки вылазить во время работы, что файлы не найдены.
     
  12. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Попробую на Linux... Отпишу о результате
     
  13. alexandrage

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

    Баллы:
    173
    Подумай еще раз. Сперва мир выгрузи, потом удаляй. И да, на линуксе таких проблем не будет.
     
  14. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Спасибо за ответ, кэп) Я думал очевидно, что я его и так выгружаю...
    Bukkit#unloadWorld
     
  15. alexandrage

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

    Баллы:
    173
    С ведром всегда так, делай принудительное сохранение. /save-all flush Ну и там через какое то время удаляй.
     
  16. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Да, на линуксе проблема полностью исчезла, правда это сомнительное преимущество. Получается баккит будет ещё 2 часа в памяти держать ссылки на удаленные файлы, или как? Просто у меня за эти 2 часа могут сотни миров удалятся, не будет ли утечек памяти из-за этого?
     
  17. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Может и будут. Какая конечная задача у тебя? Для чего столько миров?
     
  18. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Свой мир на каждого игрока
     
  19. alexandrage

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

    Баллы:
    173
    И /save-all flush не помогло освободить файлы после удаление мира?
     
  20. Автор темы
    Абсик

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

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    неа
     
Статус темы:
Закрыта.

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