Водич

Како направити Folia плагин

Ажурирано 18. октобар 2026.

Folia је fork Paper-а који дели свет на регионе и тикује их на различитим нитима, па велики сервери могу да користе много језгара процесора. Више не постоји једна главна нит, и то квари уобичајени Bukkit scheduler. Folia плагин је Paper плагин написан за тај модел и то мора да наведе у свом plugin.yml.

Пример са детаљима о времену који требају Folia-и.

Генериши ово уз Codexe

Корак по корак

  1. 1.Провери да ли ти треба Folia

    Folia помаже серверима са много играча раштрканих по свету. Већина сервера користи Paper; многи популарни плагини не подржавају Folia-у, па прво провери оне на које се ослањаш.

  2. 2.Прави билд над Folia API-јем

    Користи зависност folia-api за своју верзију из PaperMC репозиторијума, са provided scope-ом, у Maven или Gradle пројекту.

  3. 3.Замени Bukkit scheduler

    Bukkit.getScheduler() не ради на Folia-и. Користи region scheduler за посао на некој локацији, entity scheduler за посао на играчу или мобу, global region scheduler за задатке на нивоу целог света и async scheduler за I/O.

  4. 4.Дирај ствари само из њиховог региона

    Мењај блок или ентитет само на нити која га поседује. Користи teleportAsync уместо teleport и закажи посао у региону циља пре него што га промениш.

  5. 5.Пријави подршку за Folia-у

    Додај folia-supported: true у plugin.yml. Без тога Folia одбија да учита плагин.

  6. 6.Тестирај на Folia серверу

    Компајлирање доказује да се код гради над Folia API-јем, а не да је безбедан за рад у нитима. Покрени га на Folia тест серверу са више играча на различитим местима.

Четири scheduler-а

SchedulerДобија се саКористи га за
РегионBukkit.getRegionScheduler()Посао на локацији у свету: постављање блокова, стварање ентитета
Ентитетentity.getScheduler()Посао на једном играчу или мобу, прати га кроз регионе
Глобални регионBukkit.getGlobalRegionScheduler()Време у свету, временске прилике, ствари које нису везане за локацију
АсинхрониBukkit.getAsyncScheduler()База података, фајлови, веб захтеви, никада свет

Шта се обично поквари

  • Задаци који се понављају за све играче: једна петља преко свих играча онлајн више не ради; уместо тога закажи задатак у entity scheduler-у сваког играча.
  • Телепортовања и загревања: „телепортуј после 3 секунде“ тражи entity scheduler и teleportAsync.
  • Дељени подаци: мапе и бројачи које користи више региона морају да буду безбедни за нити, на пример concurrent колекције.
  • Зависности: библиотека која позива Bukkit scheduler баца UnsupportedOperationException на Folia-и.

Један плагин за Paper и Folia-у

Region, entity, global и async scheduler-и су на актуелним верзијама део и Paper API-ја, па плагин који користи само њих и пријављује folia-supported: true може да ради и на Paper-у и на Folia-и. То је често најбољи циљ: један .jar за сваки сервер.

Уз Codexe

Изабери тип Folia. Генерисани плагин заказује посао преко region, entity, global region и async scheduler-а, пријављује folia-supported: true и гради се над Folia API-јем уз Maven. Компајлира се и проверава пре него што буде Спремно.

Стави детаље о времену у захтев („сваког минута за сваког играча онлајн“, „телепортуј после 3 секунде“): ту се Folia код највише разликује. „Испробај одмах“ још не покреће Folia сервере, па тестирај .jar на свом Folia серверу.

Питања

Да ли Paper плагини раде на Folia-и?

Само ако су написани за њу и пријављују folia-supported: true. Обичан Paper плагин који користи Bukkit scheduler бива одбијен или пада.

Да ли Folia плагин ради на Paper-у?

Да, кад користи само API-је које има и Paper, а то на актуелним верзијама Paper-а укључује и Folia scheduler-е.

Мој Folia плагин баца изузетак у вези са scheduler-ом

Неки код, често из библиотеке, и даље користи Bukkit scheduler. Затражи у чету пројекта да се пребаци на region или entity scheduler.

Направи Folia плагин

Овај промпт се отвара спреман за слање:

“Folia 1.21.4 плагин под називом RTP: /rtp телепортује играча на насумично безбедно место у кругу од 5000 блокова после загревања од 3 секунде које се прекида при кретању, уз entity scheduler и teleportAsync, cooldown од 10 минута по играчу сачуван у SQLite-у, folia-supported: true, полупречник, cooldown и поруке у config.yml.”

Генериши ово уз Codexe
Како направити Folia плагин (region scheduler-и) | Codexe