Kotlin · Bukkit · Spigot · Paper

KOTLIN-PLUGIN GENERAATTORI

Sama Bukkit-API, kirjoitettuna Kotlinilla. Kuvaile, mitä pluginin pitäisi tehdä, ja Codexe luo Gradle-projektin Kotlin-lähdehakemistolla, oikean plugin.yml-tiedoston ja JAR-tiedoston, jonka se voi kääntää puolestasi ennen lataamista.

Miksi generoida Kotlin-plugin

Null-turvallisuus siellä, missä Bukkit sitä tarvitsee

Bukkit palauttaa nullin jatkuvasti - offline-pelaajat, puuttuvat maailmat, puuttuvat asetusavaimet. Kotlin tekee nämä tapaukset eksplisiittisiksi käännösaikana eikä vasta kello 2 yöllä palvelimesi konsolissa.

Oikea Gradle-projekti

build.gradle.kts, joka on säädetty Kotlin JVM -pluginille ja Paper/Spigot-repositorioille, vakiolähdehakemistorakenteella. Ei yksittäistä tiedostoa, jolle pitäisi keksiä paikka.

Paljon vähemmän toistokoodia

Data-luokat asetusmalleille, laajennusfunktiot Playerille ja ItemStackille sekä scope-funktiot sisäkkäisten null-tarkistusten sijaan. Sama logiikka huomattavasti vähemmällä koodilla.

Kohteena myös Folia ja proxyt

Jos käytät Paperin monisäikeistä haarukkaa, huomaa, että Folia poistaa yksittäisen pääsäikeen ja vaatii aluetietoista ajoitusta - valitse Folia-kohde plugingeneraattorissa, jotta ajoitus on oikein alusta asti. Verkkotason työhön käytä proxy-plugingeneraattoria. Plugin-dokumentaatio selittää erot.

Esimerkkikehotteet

> Kotlin-plugin Paper 1.21:lle, jossa on /kit-komento, joka antaa säädettävän esinesarjan, pelaajakohtainen jäähtymisaika tallennettuna data-luokkaan sekä YAML-asetukset oletusarvoilla.
> Kotlin-plugin, joka kirjaa jokaisen lohkon rikkomisen maailmakohtaiseen tiedostoon asynkronisesti ja lisää komennon /blocklog <player> viimeisen 20 merkinnän lukemiseen.
> Kotlin-plugin, joka lisää mukautetun valmistusreseptin lumotulle esineelle sekä kuuntelijan, joka estää sen käytön Netherin ulkopuolella.
> Kotlin-plugin, jossa on sivutettu GUI, joka listaa paikalla olevat pelaajat, ja teleporttaus napsauttamalla käyttöoikeusnoodin takana.

Kotlin-plugingeneraattorin UKK

Toimivatko Kotlin-pluginit tavallisella Spigot- tai Paper-palvelimella?

+

Kyllä. Kotlin kääntyy tavalliseksi JVM-tavukoodiksi, joten palvelin ei tiedä eikä välitä, millä kielellä plugin on kirjoitettu. Se latautuu täsmälleen kuten Java-plugin.

Tarvitseeko palvelimelle asentaa jotain?

+

Ei. Kotlinin standardikirjasto sisällytetään JAR-tiedostoon (shade) koonnin yhteydessä, joten plugin on itsenäinen. Tämä tekee JAR:sta suuremman kuin vastaavasta Java-pluginista.

Maven vai Gradle?

+

Gradle. Kotlin-kohde käyttää Gradlen Kotlin-pluginia, joka on JVM:n Kotlinin vakiotyökalusarja. Java-kohteet käyttävät Mavenia.

Mitä hyötyä Kotlinista oikeasti on?

+

Lähinnä null-turvallisuus ja vähemmän seremoniaa. Bukkit-API:t palauttavat null monessa paikassa - getPlayer, getWorld, asetushaut - ja Kotlinin tyyppijärjestelmä pakottaa käsittelemään sen käännösaikana sen sijaan, että löytäisit sen NullPointerExceptionina tuotannossa. Data-luokat, laajennusfunktiot ja scope-funktiot vähentävät myös paljon toistokoodia asetus- ja kuuntelijakoodista.

Voinko yhdistää Javaa ja Kotlinia yhdessä pluginissa?

+

Generaattori tuottaa Kotlin-lähdehakemiston. Gradle osaa kääntää sekalähteitä, joten voit lisätä Java-tiedostoja jälkikäteen, mutta generoitu projekti on ensisijaisesti Kotlinia.

Pitäisikö valita Kotlin vai Java?

+

Valitse Java, jos haluat maksimaalisen yhteensopivuuden oppaiden, olemassa olevien koodinpätkien ja muiden koodin kanssa, sillä lähes kaikki Bukkit-materiaali olettaa Javan. Valitse Kotlin, jos se on sinulle tuttu ja haluat ytimekkäämpää, null-turvallista koodia - API-pinta on kummassakin sama.

Prefer Java, or working somewhere else in the stack? Codexe also generates:

Miten Codexe rakentaa ja tarkistaa nämä projektit, mitä pyyntöön kannattaa kirjoittaa ja yleiset ongelmat: Spigot and Paper plugins (Java or Kotlin)-opas.

VALMIINA UUTEEN PLUGINIIN?

Free-taso täyttyy päivittäin 50K tokenilla, mikä riittää pienen Kotlin-pluginin julkaisuun kerralla.

ALOITA TAONTA
Kotlin-Minecraft-plugingeneraattori - tekoälyllä tehdyt Bukkit-pluginit Kotlinilla | Codexe