Opas
Miten tehdä Folia-plugin
Päivitetty 18. lokakuuta 2026
Folia on Paperin haarukka, joka jakaa maailman alueisiin ja ajaa niiden tickit eri säikeissä, jotta suuret palvelimet voivat käyttää montaa suoritinydintä. Yhtä pääsäiettä ei enää ole, ja se rikkoo tavallisen Bukkit-ajastimen. Folia-plugin on tälle mallille kirjoitettu Paper-plugin, ja sen täytyy kertoa siitä tiedostossaan plugin.yml.
Esimerkki, jossa on Folian tarvitsemat ajoituksen yksityiskohdat.
Generoi tämä CodexellaVaihe vaiheelta
1.Tarkista, että tarvitset Folian
Folia auttaa palvelimia, joilla on paljon ympäri maailmaa levittäytyneitä pelaajia. Useimmat palvelimet käyttävät Paperia; monet suositut pluginit eivät tue Foliaa, joten tarkista ensin ne, joihin luotat.
2.Kokoa Folia API:a vasten
Käytä versiosi
folia-api-riippuvuutta PaperMC-repositoriostaprovided-näkyvyydellä Maven- tai Gradle-projektissa.3.Korvaa Bukkit-ajastin
Bukkit.getScheduler()ei toimi Folialla. Käytä alueajastinta sijaintiin liittyvään työhön, entiteettiajastinta pelaajaan tai mobiin kohdistuvaan työhön, globaalia alueajastinta koko maailman tehtäviin ja asynkronista ajastinta I/O:hon.4.Kosketa asioita vain niiden omalta alueelta
Muuta kuutiota tai entiteettiä vain siinä säikeessä, joka omistaa sen. Käytä
teleportAsync-kutsuateleport-kutsun sijaan ja ajasta työ kohteen alueelle ennen sen muuttamista.5.Ilmoita Folia-tuki
Lisää
folia-supported: truetiedostoonplugin.yml. Ilman sitä Folia kieltäytyy lataamasta pluginia.6.Testaa Folia-palvelimella
Kääntäminen todistaa, että koodi kääntyy Folia API:a vasten, ei sitä, että se on säieturvallinen. Aja sitä Folia-testipalvelimella niin, että useita pelaajia on eri paikoissa.
Neljä ajastinta
| Ajastin | Mistä se saadaan | Käyttötarkoitus |
|---|---|---|
| Alue | Bukkit.getRegionScheduler() | Työ maailman sijainnissa: kuutioiden asettaminen, syntyminen |
| Entiteetti | entity.getScheduler() | Työ yhden pelaajan tai mobin parissa, seuraa sitä alueelta toiselle |
| Globaali alue | Bukkit.getGlobalRegionScheduler() | Maailman aika, sää, asiat, jotka eivät liity sijaintiin |
| Asynkroninen | Bukkit.getAsyncScheduler() | Tietokanta, tiedostot, verkkopyynnöt, ei koskaan maailma |
Mikä yleensä hajoaa
- Toistuvat tehtävät kaikille pelaajille: yksi silmukka kaikkien paikalla olevien pelaajien yli ei enää toimi; ajasta sen sijaan tehtävä jokaisen pelaajan entiteettiajastimeen.
- Teleportit ja valmisteluajat: "teleporttaa 3 sekunnin kuluttua" vaatii entiteettiajastimen ja
teleportAsync-kutsun. - Jaettu data: useilta alueilta käytettävien mappien ja laskurien täytyy olla säieturvallisia, esimerkiksi rinnakkaiskokoelmia.
- Riippuvuudet: kirjasto, joka kutsuu Bukkit-ajastinta, heittää Folialla poikkeuksen
UnsupportedOperationException.
Yksi plugin Paperille ja Folialle
Alue-, entiteetti-, globaali ja asynkroninen ajastin ovat nykyversioissa myös osa Paper API:a, joten plugin, joka käyttää vain niitä ja ilmoittaa folia-supported: true, voi toimia sekä Paperilla että Folialla. Se on usein paras kohde: yksi .jar jokaiselle palvelimelle.
Codexella
Valitse tyypiksi Folia. Generoitu plugin ajastaa työn alue-, entiteetti-, globaalin alue- ja asynkronisen ajastimen avulla, ilmoittaa folia-supported: true ja kootaan Folia API:a vasten Mavenilla. Se käännetään ja tarkistetaan ennen kuin se on valmis.
Kirjoita ajoitukseen liittyvät yksityiskohdat pyyntöön ("joka minuutti jokaiselle paikalla olevalle pelaajalle", "teleporttaa 3 sekunnin kuluttua"): juuri niissä Folia-koodi eroaa eniten. Kokeile heti ei vielä aja Folia-palvelimia, joten testaa .jar omalla Folia-palvelimellasi.
Kysymykset
Toimivatko Paper-pluginit Folialla?
Vain, jos ne on kirjoitettu sille ja ne ilmoittavat folia-supported: true. Tavallinen Bukkit-ajastinta käyttävä Paper-plugin hylätään tai se kaatuu.
Toimiiko Folia-plugin Paperilla?
Kyllä, kun se käyttää vain API:ita, jotka Paperissakin on, ja nykyisissä Paper-versioissa niihin kuuluvat myös Folian ajastimet.
Folia-pluginini heittää ajastimeen liittyvän poikkeuksen
Jokin koodi, usein kirjastosta, käyttää yhä Bukkit-ajastinta. Pyydä projektin chatissa siirtämään se alue- tai entiteettiajastimelle.
Tee Folia-plugin
Tämä kehote aukeaa valmiina lähetettäväksi:
“Folia 1.21.4 -plugin nimeltä RTP: /rtp teleporttaa pelaajan satunnaiseen turvalliseen paikkaan 5000 kuution säteellä 3 sekunnin valmistelun jälkeen, joka peruuntuu liikkuessa, käyttäen entiteettiajastinta ja teleportAsync-kutsua, 10 minuutin pelaajakohtainen jäähtymisaika tallennettuna SQLiteen, folia-supported: true, säde, jäähtymisaika ja viestit config.yml-tiedostossa.”
Generoi tämä Codexella