Sådan ændres Minecraft på den nemme måde med TypeScript

Normalt kræver ændring af Minecraft kodning i Java og meget stillads. Nu kan du skrive og dele Minecraft-mods ved hjælp af TypeScript / Javascript.

ScriptCraft er et open source JavaScript Minecraft modding-bibliotek, og vi har skrevet support til TypeScript og en masse værktøjer til at skabe en velkendt udvikleroplevelse for dem, der kommer fra JavaScript-land (inklusive Yeoman og NPM).

I denne artikel leder jeg dig igennem, hvordan du opretter og bygger din første TypeScript Minecraft mod på under en time - så lidt som 20 minutter, afhængigt af din internetforbindelse.

I denne video (klik her, hvis integreringen ikke fungerer ovenfor), viser jeg dig, hvordan du skriver en grundlæggende Minecraft-mod ved hjælp af TypeScript, og kører den på din lokale computer med både en desktop og en mobil Minecraft-server.

Nedenfor leder jeg dig gennem trinnene med links til ressourcer.

Forudsætninger

Du har brug for software installeret på din computer for at køre Minecraft-serveren og værktøjerne til at skrive dit plugin. Installer alle de fire følgende:

  • Docker - en containeriseringsløsning.
  • Node.js - en JavaScript-udførelsesmotor og et bibliotek.
  • Portainer - en webbaseret GUI til styring af Docker-containere.
  • Visual Studio Code - en kodeditor.

Minecraft klient

Du har brug for en Minecraft- klient for at teste dit plugin.

Installer mindst et af følgende:

  • Minecraft Java Edition - en desktopklient, hvis du vil teste mod en Bukkit-server.
  • Minecraft Pocket Edition - en mobil klient, hvis du vil teste mod en Nukkit-server (telefon / tablet / Xbox). Hvis du bruger dette, kan du bruge Minecraft Pocket Edition Bedrock Launcher til at køre mobilklienten på din computer.

Installation

Nu hvor du har installeret forudsætningerne, er det tid til at installere værktøjerne til serveren og til udvikling af plugin.

  1. Kør følgende kommando:
npm i -g smac yo generator-sma-plugin typescript

Dette installerer fire ting på din computer:

  • smac- Scriptcraft Modular Architecture Controller, et program, der kører Minecraft-servere til dine plugins.
  • yo- Yeoman , et stilladsværktøj.
  • generator-sma-plugin - et Yeoman-plugin til generering af et nyt Minecraft-plugin ved hjælp af Scriptcraft Modular Architecture.
  • typescript - TypeScript-transpilleren til konvertering af TypeScript-kode til ES5 JavaScript, der kan køre i Minecraft.

Opret et nyt plugin

Nu hvor værktøjssættet er installeret, skal du oprette et nyt plugin ved at køre denne kommando:

yo sma-plugin

Dette starter plugin-guiden:

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

Der er kun et spørgsmål, du skal besvare her - navnet på dit plugin. Guiden opretter en ny mappe med navnet på pluginet og placerer filerne til det nye plugin i den.

Denne screencast viser dig processen:

Stillads et Minecraft-plugin ved hjælp af Magikcraft

Magikcraft.io giver dig mulighed for at skrive Minecraft-plugins i TypeScript / JavaScript, der kører på Desktop / Mobile. asciinema.org

Når guiden er færdig, udsender den en besked svarende til denne (jeg valgte navnet my-sma-plugini dette eksempel):

Rediger dit nye plugin

Start Visual Studio Code, og åbn biblioteket, der indeholder dit nye plugin.

Her er en beskrivelse af filerne i dit nye plugin:

  • __tests__- en mappe, der indeholder enhedstest til dit plugin. Disse køres med Jasmine. Tilføj flere tests herinde, når du udvikler dit plugin.
  • .vscode - indstillinger for Visual Studio-kode.
  • autoload- alle filer herinde udføres automatisk, når dit plugin er aktiveret på Minecraft-serveren. Brug dette til initialiseringsopgaver, registrering af begivenhedshåndterere osv.
  • lib- Et sted for dig at placere filer, der ikke automatisk skal indlæses (eller som kræves af dine autoladede filer). Hvis dit plugin leverer funktionalitet til andre plugins, eksporterer du det via lib/index.ts.
  • node_modules- moduler fra npm er installeret her. Du kan ikke bruge moduler fra npm, der bruger V8 API'er (som fs eller http). Mange af de funktioner, du har brug for, leveres af Scriptcraft API og af @magikcraft/corepakken.
  • .editorconfig - indstillinger for editoren.
  • .gitattributes- indstillinger for git.
  • .gitignore- filer at ignorere for git.
  • .prettierrc - indstillinger for kodeformatering.
  • package-lock.json —Versioner af installerede afhængigheder.
  • package.json —Konfiguration til dette plugin, inklusive afhængigheder og scripts.
  • README.md - instruktioner til udvikling og test af dit plugin.
  • smac-nukkit.json - en konfiguration til at køre en Nukkit-server med dit plugin indlæst.
  • smac.json - en konfiguration til at køre en Bukkit-server med dit plugin indlæst.
  • tsconfig.json - TypeScript-konfigurationen til transpilering af dit plugin til JavaScript.

Åben autoload/index.ts:

Denne fil udføres automatisk, når pluginet indlæses. Ændringer, du foretager her, vil være synlige, når du (genindlæser) pluginet.

Start en udviklingsserver

Du kan indlæse dit plugin på en udviklingsserver. Der er to servere, som du kan bruge - den ene til Java-klienten til desktop og den anden til den mobile Pocket Edition-klient.

Start desktop-serveren

Kør dette for at starte en desktop-server:

npm run start:bukkit

Dette vil:

  1. Træk Bukkit-serverbilledet fra 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()

Se screencast nedenfor for at se, hvordan dette ser ud.

Stop serveren

For at stoppe serveren skal du skrive denne kommando på serverkonsollen:

smac stop

Se screencast nedenfor for at se, hvordan det ser ud, når du kører denne kommando.

Screencast: Start, Genindlæs og Stop

Denne screencast viser dig at starte desktop-serveren, genindlæse plugin-koden og også stoppe udviklingsserveren.

Start en Magikcraft Development Server

Start en Magikcraft Development Server. asciinema.org

Yderligere ressourcer

  • Magikcraft på GitHub
  • Magikcraft på YouTube
  • MCT1-kildekode (eksempel på plugin)
  • ScriptCraft på GitHub
  • Bukkit API-dokumenter