Comment modifier Minecraft en toute simplicité avec TypeScript

Habituellement, la modification de Minecraft nécessite un codage en Java et beaucoup d'échafaudage. Vous pouvez maintenant écrire et partager des mods Minecraft en utilisant TypeScript / Javascript.

ScriptCraft est une bibliothèque de modding JavaScript Minecraft open source, et nous avons écrit un support pour TypeScript, et un tas d'outils pour créer une expérience de développeur familière pour ceux qui viennent de JavaScript land (y compris Yeoman et NPM).

Dans cet article, je vais vous expliquer comment configurer et créer votre premier mod TypeScript Minecraft en moins d'une heure - aussi peu que 20 minutes, en fonction de votre connexion Internet.

Dans cette vidéo (cliquez ici si l'intégration ne fonctionne pas ci-dessus), je vous montre comment écrire un mod Minecraft de base en utilisant TypeScript et l'exécuter sur votre ordinateur local avec à la fois un ordinateur de bureau et un serveur Minecraft mobile.

Ci-dessous, je vais vous guider à travers les étapes, avec des liens vers des ressources.

Conditions préalables

Vous aurez besoin d'un logiciel installé sur votre ordinateur pour exécuter le serveur Minecraft et les outils pour écrire votre plugin. Installez les quatre éléments suivants:

  • Docker - une solution de conteneurisation.
  • Node.js - un moteur d'exécution et une bibliothèque JavaScript.
  • Portainer - une interface graphique Web pour la gestion des conteneurs Docker.
  • Visual Studio Code - un éditeur de code.

Client Minecraft

Vous avez besoin d'un client Minecraft pour tester votre plugin.

Installez au moins l'un des éléments suivants:

  • Minecraft Java Edition - un client de bureau, si vous souhaitez tester sur un serveur Bukkit.
  • Minecraft Pocket Edition - un client mobile, si vous souhaitez tester contre un serveur Nukkit (téléphone / tablette / Xbox). Si vous utilisez cela, vous pouvez utiliser Minecraft Pocket Edition Bedrock Launcher pour exécuter le client mobile sur votre ordinateur.

Installation

Maintenant que les prérequis sont installés, il est temps d'installer les outils pour le serveur et pour le développement de plugins.

  1. Exécutez la commande suivante:
npm i -g smac yo generator-sma-plugin typescript

Cela installera quatre choses sur votre ordinateur:

  • smac- Scriptcraft Modular Architecture Controller, un programme qui exécute des serveurs Minecraft pour vos plugins.
  • yo- Yeoman , un outil d'échafaudage.
  • generator-sma-plugin - un plugin Yeoman pour générer un nouveau plugin Minecraft en utilisant l'architecture modulaire Scriptcraft.
  • typescript - le transpilateur TypeScript, pour convertir du code TypeScript en JavaScript ES5 pouvant fonctionner dans Minecraft

Créer un nouveau plugin

Maintenant que l'ensemble d'outils est installé, créez un nouveau plugin en exécutant cette commande:

yo sma-plugin

Cela démarre l'assistant du plugin:

➜ yo sma-plugin
 _-----_ ╭──────────────────────────╮ | | │ Welcome to the │ |--(o)--| │ Scriptcraft SMA Plugin │ `---------´ │ generator by │ ( _´U`_ ) │ Magikcraft.io! │ /___A___\ /╰──────────────────────────╯ | ~ | __'.___.'__ ´ ` |° ´ Y `
? Your package name (workspace)

Il n'y a qu'une seule question à laquelle vous devez répondre ici - le nom de votre plugin. L'assistant créera un nouveau dossier avec le nom du plugin et y placera les fichiers du nouveau plugin.

Ce screencast vous montre le processus:

Échafauder un plugin Minecraft en utilisant Magikcraft

Magikcraft.io vous permet d'écrire des plugins Minecraft en TypeScript / JavaScript qui fonctionneront sur Desktop / Mobile. asciinema.org

Une fois l'assistant terminé, il émet un message similaire à celui-ci (j'ai choisi le nom my-sma-plugindans cet exemple):

Modifiez votre nouveau plugin

Démarrez Visual Studio Code et ouvrez le répertoire contenant votre nouveau plugin.

Voici une description des fichiers de votre nouveau plugin:

  • __tests__- un répertoire contenant des tests unitaires pour votre plugin. Ceux-ci sont exécutés avec Jasmine. Ajoutez plus de tests ici au fur et à mesure que vous développez votre plugin.
  • .vscode - paramètres pour le code Visual Studio.
  • autoload- tous les fichiers ici sont automatiquement exécutés lorsque votre plugin est activé sur le serveur Minecraft. Utilisez-le pour les tâches d'initialisation, l'enregistrement des gestionnaires d'événements, etc.
  • lib- Un endroit où vous pouvez placer les fichiers qui ne devraient pas être chargés automatiquement (ou qui sont requis à partir de vos fichiers chargés automatiquement). Si votre plugin fournit des fonctionnalités à d'autres plugins, vous les exportez via lib/index.ts.
  • node_modules- les modules de npm sont installés ici. Vous ne pouvez pas utiliser de modules de npm qui utilisent des API V8 (comme fs ou http). La plupart des fonctionnalités dont vous avez besoin sont fournies par l'API Scriptcraft et par le @magikcraft/corepackage.
  • .editorconfig - les paramètres de l'éditeur.
  • .gitattributes- paramètres pour git.
  • .gitignore- les fichiers à ignorer git.
  • .prettierrc - les paramètres de formatage du code.
  • package-lock.json : Versions des dépendances installées.
  • package.json —configuration for this plugin, including dependencies and scripts.
  • README.md — instructions for developing and testing your plugin.
  • smac-nukkit.json — a configuration for running a Nukkit server with your plugin loaded.
  • smac.json — a configuration for running a Bukkit server with your plugin loaded.
  • tsconfig.json — the TypeScript configuration for transpiling your plugin to JavaScript.

Open autoload/index.ts:

This file is automatically executed when the plugin is loaded. Changes that you make here will be visible when you (re)load the plugin.

Start a development server

You can load your plugin in a development server. There are two servers that you can use — one for the desktop Java client, and the other for the mobile Pocket Edition client.

Start the desktop server

Run this to start a desktop server:

npm run start:bukkit

This will:

  1. Pull the Bukkit server image from Docker Hub.
  2. Start the Bukkit server with your plugin loaded.
  3. Start the TypeScript transpiler to transpile your code to ES5.

You can now connect to the server with your desktop client. Click on Multiplayer then Direct Connect, then use the server address 127.0.0.1:

Start the mobile server

Run this command to start a mobile server:

npm run start:nukkit

This will:

  1. Pull the Nukkit server image from Docker Hub.
  2. Start the Nukkit server with your plugin loaded.
  3. Start the TypeScript transpiler to transpile your code to ES5.

You can now connect to the server with your pocket edition client. Click on Play then Servers, then add a server with the address 127.0.0.1:

Reload changes to your plugin

As you change your plugin and save the changed TypeScript, it will automatically be transpiled to JavaScript.

To reload the changes in the development server, type the following in the server console:

ts onrefresh()

See the screencast below to see what this looks like.

Stop the server

To stop the server, type this command at the server console:

smac stop

See the screencast below to see what it looks like when you run this command.

Screencast: Start, Reload, and Stop

This screencast shows you starting the desktop server, reloading the plugin code, and also stopping the development server.

Start a Magikcraft Development Server

Start a Magikcraft Development Server.asciinema.org

Further Resources

  • Magikcraft on GitHub
  • Magikcraft on YouTube
  • MCT1 Source Code (Example Plugin)
  • ScriptCraft on GitHub
  • Bukkit API Docs