Водич
Како направити Folia плагин
Ажурирано 18. октобар 2026.
Folia је fork Paper-а који дели свет на регионе и тикује их на различитим нитима, па велики сервери могу да користе много језгара процесора. Више не постоји једна главна нит, и то квари уобичајени Bukkit scheduler. Folia плагин је Paper плагин написан за тај модел и то мора да наведе у свом plugin.yml.
Пример са детаљима о времену који требају Folia-и.
Генериши ово уз CodexeКорак по корак
1.Провери да ли ти треба Folia
Folia помаже серверима са много играча раштрканих по свету. Већина сервера користи Paper; многи популарни плагини не подржавају Folia-у, па прво провери оне на које се ослањаш.
2.Прави билд над Folia API-јем
Користи зависност
folia-apiза своју верзију из PaperMC репозиторијума, саprovidedscope-ом, у Maven или Gradle пројекту.3.Замени Bukkit scheduler
Bukkit.getScheduler()не ради на Folia-и. Користи region scheduler за посао на некој локацији, entity scheduler за посао на играчу или мобу, global region scheduler за задатке на нивоу целог света и async scheduler за I/O.4.Дирај ствари само из њиховог региона
Мењај блок или ентитет само на нити која га поседује. Користи
teleportAsyncуместоteleportи закажи посао у региону циља пре него што га промениш.5.Пријави подршку за Folia-у
Додај
folia-supported: trueуplugin.yml. Без тога Folia одбија да учита плагин.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