Útmutató
Hogyan készíts Folia plugint
Frissítve: 2026. október 18.
A Folia a Paper egy forkja, amely régiókra osztja a világot, és ezeket különböző szálakon tickeli, így a nagy szerverek sok CPU-magot használhatnak. Nincs többé egyetlen főszál, és ez elrontja a szokásos Bukkit-ütemezőt. Egy Folia plugin erre a modellre írt Paper-plugin, és ezt a plugin.yml fájljában jeleznie is kell.
Egy példa a Folia által igényelt időzítési részletekkel.
Generáld ezt a Codexe-szelLépésről lépésre
1.Ellenőrizd, hogy tényleg Folia kell-e
A Folia azoknak a szervereknek segít, ahol sok játékos van szétszórva a világban. A legtöbb szerver Papert futtat; sok népszerű plugin nem támogatja a Folia szervert, ezért előbb nézd meg azokat, amelyekre építesz.
2.Buildelj a Folia API-ra
Használd a verziódhoz tartozó
folia-apifüggőséget a PaperMC repositoryból,providedscope-pal, egy Maven- vagy Gradle-projektben.3.Cseréld le a Bukkit-ütemezőt
A
Bukkit.getScheduler()nem működik Folia alatt. Használd a régióütemezőt egy adott helyen végzett munkához, az entitásütemezőt egy játékoson vagy mobon végzett munkához, a globális régióütemezőt az egész világra kiterjedő feladatokhoz, és az aszinkron ütemezőt az I/O-hoz.4.Mindenhez csak a saját régiójából nyúlj
Egy blokkot vagy entitást csak az azt birtokló szálon módosíts. A
teleporthelyett használd ateleportAsynchívást, és módosítás előtt ütemezz a cél régiójára.5.Jelezd a Folia-támogatást
Add hozzá a
folia-supported: truesort aplugin.ymlfájlhoz. Enélkül a Folia nem hajlandó betölteni a plugint.6.Tesztelj Folia szerveren
A fordítás azt bizonyítja, hogy a kód buildelhető a Folia API-ra, azt nem, hogy szálbiztos. Futtasd egy Folia-tesztszerveren több játékossal különböző helyeken.
A négy ütemező
| Ütemező | Lekérése | Mire használd |
|---|---|---|
| Régió | Bukkit.getRegionScheduler() | Munka egy világbeli helyen: blokkok lerakása, spawnolás |
| Entitás | entity.getScheduler() | Munka egy játékoson vagy mobon, régiókon át követi őket |
| Globális régió | Bukkit.getGlobalRegionScheduler() | Világidő, időjárás, helyhez nem kötött dolgok |
| Aszinkron | Bukkit.getAsyncScheduler() | Adatbázis, fájlok, webes kérések, soha nem a világ |
Ami általában elromlik
- Ismétlődő feladatok minden játékosnak: egyetlen ciklus az összes online játékoson már nem működik; helyette ütemezz feladatot minden játékos entitásütemezőjére.
- Teleportok és várakozások: a „teleport 3 másodperc után” az entitásütemezőt és a
teleportAsynchívást igényli. - Megosztott adatok: a több régióból használt mapeknek és számlálóknak szálbiztosnak kell lenniük, például konkurens kollekciók.
- Függőségek: egy könyvtár, amely a Bukkit-ütemezőt hívja, Folia alatt
UnsupportedOperationExceptionkivételt dob.
Egy plugin Paper és Folia szerverekhez
A régió-, entitás-, globális és aszinkron ütemezők a jelenlegi verziókban a Paper API-nak is részei, így egy plugin, amely csak ezeket használja, és jelzi a folia-supported: true sort, Paperen és Folia szerveren is futhat. Gyakran ez a legjobb cél: egy .jar minden szerverhez.
A Codexe-szel
Válaszd a Folia típust. A generált plugin a régió-, entitás-, globális régió- és aszinkron ütemezőkkel ütemezi a munkát, jelzi a folia-supported: true sort, és Mavennel buildel a Folia API-ra. Fordítás és ellenőrzés után lesz Kész.
Írd bele az időzítési részleteket a kérésbe („percenként minden online játékosnak”, „teleport 3 másodperc után”): itt tér el leginkább a Folia kód. A Próbáld ki most még nem futtat Folia szervereket, ezért a .jar fájlt a saját Folia szervereden teszteld.
Kérdések
Futnak a Paper-pluginok Folia alatt?
Csak ha erre írták őket, és jelzik a folia-supported: true sort. Egy normál Paper-plugin, amely a Bukkit-ütemezőt használja, elutasításra kerül vagy hibára fut.
Fut egy Folia plugin Paperen?
Igen, ha csak olyan API-kat használ, amelyek a Paperben is megvannak, és ez a jelenlegi Paper-verziókban a Folia ütemezőit is magában foglalja.
A Folia pluginom kivételt dob az ütemezővel kapcsolatban
Valamelyik kódrész, gyakran egy könyvtárból, még mindig a Bukkit-ütemezőt használja. Kérd meg a projekt chatjét, hogy tegye át a régió- vagy entitásütemezőre.
Készíts Folia plugint
Ez a prompt küldésre készen nyílik meg:
“Egy Folia 1.21.4 plugin RTP néven: a /rtp 5000 blokkon belüli véletlenszerű biztonságos helyre teleportálja a játékost egy 3 másodperces várakozás után, amely mozgáskor megszakad, az entitásütemezővel és a teleportAsync hívással, játékosonként 10 perces cooldown SQLite-ban mentve, folia-supported: true, sugár, cooldown és üzenetek a config.yml-ben.”
Generáld ezt a Codexe-szel