Kotlin · Bukkit · Spigot · Paper

PLUGIN V KOTLINU GENERÁTOR

Totéž API Bukkitu, napsané v Kotlinu. Popiš, co má plugin dělat, a Codexe připraví projekt Gradle se zdrojovým setem Kotlin, správným plugin.yml a JARem, který ti může před stažením zkompilovat.

Proč generovat plugin v Kotlinu

Null safety tam, kde ji Bukkit potřebuje

Bukkit neustále vrací null - offline hráči, chybějící světy, chybějící klíče konfigurace. Kotlin tyto případy činí explicitními při kompilaci, ne ve 2 ráno v konzoli tvého serveru.

Skutečný projekt Gradle

build.gradle.kts nastavený pro plugin Kotlin JVM a repozitáře Paper/Spigot, se standardním rozložením zdrojů. Ani jeden soubor, pro který bys musel/a hledat místo.

Mnohem méně boilerplate

Data classes pro modely konfigurace, extension funkce nad Player a ItemStack a scope funkce místo vnořených kontrol null. Stejná logika s výrazně menším množstvím kódu.

Cílí také na Folia a proxy

Pokud používáš vícevláknový fork Paperu, pamatuj, že Folia odstraňuje jediné hlavní vlákno a potřebuje plánování podle regionů - vyber cíl Folia v generátoru pluginů, aby bylo plánování správné od začátku. Pro práci na úrovni sítě použij generátor proxy pluginů. Rozdíly vysvětluje dokumentace pluginů.

Příklady zadání

> Plugin v Kotlinu pro Paper 1.21 s příkazem /kit, který dá konfigurovatelnou sadu předmětů, cooldown pro každého hráče uložený v data class a YAML konfiguraci s výchozími hodnotami.
> Plugin v Kotlinu, který asynchronně loguje každé zničení bloku do souboru podle světa a přidá /blocklog <player> pro zpětné přečtení posledních 20 záznamů.
> Plugin v Kotlinu, který přidá vlastní craftovací recept na očarovaný předmět s listenerem, který zabrání jeho použití mimo nether.
> Plugin v Kotlinu se stránkovaným GUI se seznamem online hráčů a teleportem po kliknutí, zamčeným za oprávnění.

Časté dotazy ke generátoru pluginů v Kotlinu

Běží pluginy v Kotlinu na normálním serveru Spigot nebo Paper?

+

Ano. Kotlin se kompiluje do obyčejného bytekódu JVM, takže server neví ani ho nezajímá, v jakém jazyce byl plugin napsán. Načítá se úplně stejně jako plugin v Javě.

Musím na server něco instalovat?

+

Ne. Standardní knihovna Kotlinu se při buildu přibalí (shade) do JARu, takže je plugin samostatný. JAR je kvůli tomu větší než ekvivalentní plugin v Javě.

Maven, nebo Gradle?

+

Gradle. Cíl v Kotlinu používá plugin Gradle pro Kotlin, což je standardní toolchain pro Kotlin na JVM. Cíle v Javě používají Maven.

Co mi tady Kotlin vlastně přináší?

+

Hlavně null safety a méně rituálů. API Bukkitu na mnoha místech vrací null - getPlayer, getWorld, hledání v konfiguraci - a typový systém Kotlinu tě donutí to ošetřit už při kompilaci, místo abys to objevil/a jako NullPointerException v produkci. Data classes, extension funkce a scope funkce také ukrajují hodně boilerplate z kódu konfigurace a listenerů.

Můžu v jednom pluginu míchat Javu a Kotlin?

+

Generátor vytváří zdrojový set v Kotlinu. Gradle umí kompilovat smíšené zdroje, takže můžeš později přidat soubory v Javě, ale vygenerovaný projekt je především v Kotlinu.

Mám zvolit Kotlin, nebo Javu?

+

Zvol Javu, pokud chceš maximální kompatibilitu s návody, existujícími ukázkami a cizím kódem, protože téměř všechny materiály k Bukkitu počítají s Javou. Zvol Kotlin, pokud ho ovládáš a chceš stručnější, null-safe kód - API je v obou případech totéž.

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

Jak Codexe tyto projekty vytváří a kontroluje, co napsat do zadání a běžné potíže: návod Spigot and Paper plugins (Java or Kotlin).

PŘIPRAVEN NA NOVÝ PLUGIN?

Tarif Free každý den doplní 50K tokenů, což stačí na dodání malého pluginu v Kotlinu najednou.

ZAČNI KOVAT
Generátor pluginů pro Minecraft v Kotlinu – pluginy Bukkit v Kotlinu vytvořené AI | Codexe