Minestom est une bibliothèque open source qui permet aux développeurs de créer leur propre logiciel serveur Minecraft, sans aucun code de Mojang.
La principale différence entre le serveur vanilla de Mojang et un serveur basé sur minestom, c'est que le nôtre ne contient aucune fonctionnalité par défaut ! Cependant, nous disposons d’une API complète conçue pour vous permettre de rendre tout ce qui est possible, en toute simplicité.
Il s'agit d'une API de développeur non destinée à être utilisée par les utilisateurs finaux. Remplacer Bukkit/Forge/Sponge par ceci ne fonctionnera pas puisque nous n'implémentons aucune de leurs API.
Minestom n'est pas installé comme Bukkit/Forge/Sponge. Comme Minestom est une bibliothèque Java, elle doit être chargée de la même manière que n'importe quelle autre bibliothèque Java. Cela signifie que vous devez ajouter Minestom en tant que dépendance, ajouter votre code et compiler vous-même.
Minestom est disponible sur Maven Central et peut être installé comme suit (Gradle/Groovy) :
repositories {
mavenCentral()
maven { url ' https://jitpack.io ' }
}
dependencies {
implementation ' net.minestom:minestom-snapshots:<???> '
}
Un exemple d'utilisation de la bibliothèque Minestom est disponible ici. Vous pouvez également consulter le wiki officiel ou les javadocs.
Minecraft a beaucoup évolué depuis sa sortie, la plupart des serveurs d'aujourd'hui ne profitent pas des fonctionnalités vanilla et doivent même avoir du mal à cause d'elles. Notre public cible est constitué de ceux qui souhaitent créer un serveur bénéficiant peu des fonctionnalités vanilla. par exemple créatif, kitpvp. L’objectif est d’offrir plus de performances à ceux qui en ont besoin. En d'autres termes, il est logique d'utiliser Minestom lorsqu'il faut moins de temps pour implémenter toutes les fonctionnalités Vanilla manquantes que vous souhaitez que de supprimer toutes les fonctionnalités Vanilla qui vous ralentiront.
Minestom n'est pas parfait, nos choix le rendent bien meilleur dans certains cas, pire dans d'autres.
Même si nous n'incluons rien par défaut dans le jeu, nous simplifions la manière de les ajouter, en voici un aperçu.
C'est notre concept majeur, les mondes sont parfaits pour survivre entre amis, mais lorsqu'ils évoluent, ils peuvent devenir ingérables. Les meilleurs exemples peuvent être trouvés dans Skyblock ou dans les mini-jeux, ne pouvant pas séparer correctement chaque partie et étant obligé de tout sauvegarder dans des fichiers, sans parler de la surcharge causée par les données inutiles qu'ils contiennent. Les instances constituent une solution légère, car elles peuvent conserver chaque morceau en mémoire uniquement, le copier et l'envoyer à un autre lecteur en un rien de temps, avec une sérialisation personnalisée et bien plus encore...
Être capable de créer des instances directement en déplacement est indispensable, nous pensons que cela peut faire avancer beaucoup plus de projets.
Les instances présentent également des avantages en termes de performances, contrairement à d'autres qui seront entièrement monothread ou utilisant peut-être un thread par monde, nous utilisons un nombre défini de threads (pool) pour gérer tous les morceaux indépendamment des instances, ce qui signifie utiliser plus de puissance CPU.
Minestom par défaut ne sait pas ce qu'est un coffre, il faudra lui dire qu'il ouvre un inventaire. Tous les "blocs spéciaux" (qui ne sont pas seulement visuels) nécessitent un gestionnaire spécialisé. Après avoir appliqué ce gestionnaire, vous disposez d’un bloc qui peut être placé n’importe où simplement. Cependant, tous les blocs sont visuellement là, ils n'auront tout simplement pas d'interaction par défaut.
Les termes de monstres "passifs" ou "agressifs" n'existent pas, personne ne vous empêche de faire en sorte qu'un poulet volant se précipite sur les joueurs s'approchant trop près, le faire avec NMS est un véritable désastre à cause de l'obscurcissement et de l'héritage important.
C'est un domaine dans lequel Minecraft a beaucoup évolué, les inventaires sont désormais beaucoup utilisés comme interface client<->serveur avec éléments cliquables et rappel, nous supportons ces interactions nativement sans avoir besoin de programmer votre solution.
Les commandes constituent le moyen de communication le plus simple entre les clients et le serveur. Depuis la 1.13 Minecraft a incorporé une nouvelle bibliothèque baptisée "Brigadier", nous avons ensuite intégré une API conçue pour utiliser tout le potentiel des types args.
#mcdevs
- recherche sur les protocoles et les formats de fichiers.Voir le fichier de contribution ! Toutes les fonctionnalités WIP sont prévisualisées sous forme de projets de PR
Ce projet est sous licence Apache License Version 2.0.