[Ressource] Kpigot - Écrire du Kotlin simplement pour vos plugins

DiscowZombie

Développeur
Staff
Modérateur
Support
2 Mars 2017
2 659
1
931
298
Alsace
www.discowzombie.fr
Bonjour,

aujourd'hui je décide de vous parler de Kpigot, un wrapper que j'ai créé pour simplifier le développement de plugins Spigot avec le langage Kotlin.

Histoire :
Tout d'abord, je pense qu'il est important de faire un point d'histoire sur le langage Kotlin, car il est probable que vous ne le connaissiez pas. Le langage Kotlin est un langage JVM (du moins dans ses débuts), créé en 2011 par Jetbrains, principalement pour pallier les difficultés du Java, notamment la lenteur de ses mises à jour ou ses concepts pas assez poussés. Depuis, le langage Kotlin est devenu assez populaire car il a été supporté officiellement sur Android il y a de cas deux ans, beaucoup de développeurs qui en avaient "marre" du Java ont alors franchi le pas.

Au niveau syntaxique, le Kotlin est pour moi un mélange entre du Java et du Python. On y retrouve une structure relativement légère et une organisation qui a été pensé pour réduire au maximum les erreurs de programmation, comme la fameuse NullPointerException dont vous avez forcément entendu parler.

De plus, et surement le meilleur avantage de Kotlin, c'est son interopérabilité avec Java. Ceci signifie que vous pouvez utiliser Kotlin et Java dans le même projet sans aucun problème mais également que tous les codes et librairies écrits en Java fonctionnement avec Kotlin. Ceci inclut évidemment Spigot, il est donc très facile d’utiliser son API dans le langage Kotlin (exactement comme si on écrivait le code en Java).

Pourquoi Kpigot ?
Maintenant que vous en savez un peu plus, pourquoi devriez-vous utiliser mon wrapper pour vos plugins et projets divers ?

Comme vous le savez, mon wrapper n'est pas là pour vous permettre d'utiliser l'API Spigot en Kotlin (c'est déjà supporté nativement), mais bien pour vous faciliter la vie si vous décidez d'utiliser Kotlin !

Dans sa première version, Kpigot vous aide à :
  • Gérer les inventaires (menus/gui) facilement
  • Créer des items complexes en une ligne
  • Gérer plusieurs fichiers yaml simplement
  • Travailler avec les tâches asynchrones et synchrone sans difficulté
Ces quatre points n'ont évidement pas été choisis au hasard, j'ai décidé d'y concentrer mon travail car (1) ils sont fort utiles pour beaucoup de plugins (2) leur gestion avec le langage Kotlin était difficile : beaucoup de code répétitif à écrire.

Exemples :
Maintenant que nous avons la théorie, il est temps de passé au développent !

Les items sont probablement la chose la plus importante et aussi la plus simple approche possible :
c9826b33de247537f08d13d2b01093766b956de8


Comme vous le voyez, tout se passe simplement avec un constructeur. Grâce à Kotlin, nous utilisions les paramètres nommés et la syntaxe est alors enfantine ! Une fois fini, il suffit d'appeler la méthode build() qui nous retourne notre Itemstack.

Un deuxième point important de beaucoup de plugins sont les inventaires. En effet, c'est fort pratique pour les utilisateurs qui aiment avoir un retour visuel. Cependant, leur gestion en Java est bien moins agréable... Heureusement, Kotlin et Kpigot arrivent à la rescousse !
Note : Si vous êtes peu expérimenté avec Kotlin, j'espère pour vous que vous aimez les lambdas de Java 8

969defcf52468de6d69bf9cf7171d079119304cd


Comme vous le voyez, il m'a suffi d'une dizaine de lignes pour créer un inventaire persistant avec des actions pouvant être très complexes.

Cependant, Kpigot ne se limite pas à ces éléments ! Il est également capable de gérer les tâches et fichier et bien plus dans le futur ! Si vous souhaitez plus d'informations sur ces éléments, je vous invite à jeter un œil sur Github ou me demander au bas de ce poste !

Téléchargement :
Vous trouvez le code de Kpigot et ses mises à jour directement sur Github.

Contribuer à Kpigot :
Kpigot est un wrapper open-source sous licence MPL-2.0. Si vous souhaitez participer à son développement, n'hésitez pas à faire des Pull Requests. Votre contribution est importante pour aider Kpigot à grandir !

Si vous avez des questions et/ou propositions relatives au wrapper, à son code ou à ce poste, n’hésitez pas à me le faire savoir en répondant !


Merci d'avoir pris le temps de lire, en espérant que Kpigot vous sera utile,
DiscowZombie.