Ú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-szel

Lépésről lépésre

  1. 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. 2.Buildelj a Folia API-ra

    Használd a verziódhoz tartozó folia-api függőséget a PaperMC repositoryból, provided scope-pal, egy Maven- vagy Gradle-projektben.

  3. 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. 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 teleport helyett használd a teleportAsync hívást, és módosítás előtt ütemezz a cél régiójára.

  5. 5.Jelezd a Folia-támogatást

    Add hozzá a folia-supported: true sort a plugin.yml fájlhoz. Enélkül a Folia nem hajlandó betölteni a plugint.

  6. 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éseMire használd
RégióBukkit.getRegionScheduler()Munka egy világbeli helyen: blokkok lerakása, spawnolás
Entitásentity.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
AszinkronBukkit.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 teleportAsync hí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 UnsupportedOperationException kivé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
Hogyan készíts Folia plugint (régióütemezők) | Codexe