Как да модифицирате Minecraft по лесния начин с TypeScript

Обикновено модифицирането на Minecraft изисква кодиране в Java и много скелета. Сега можете да пишете и споделяте модове на Minecraft, като използвате TypeScript / Javascript.

ScriptCraft е библиотека за модиране с JavaScript с отворен код и ние сме написали поддръжка за TypeScript и куп инструменти, за да създадем познато изживяване за разработчици за тези, които идват от JavaScript земя (включително Yeoman и NPM).

В тази статия ще ви преведа през настройката и изграждането на първия ви TypeScript Minecraft мод за по-малко от час - само за 20 минути, в зависимост от вашата интернет връзка.

В това видео (щракнете тук, ако вграждането не работи по-горе) ще ви покажа как да напишете основен мод на Minecraft с помощта на TypeScript и да го стартирате на вашия локален компютър както с десктоп, така и с мобилен сървър на Minecraft.

По-долу ще ви преведа през стъпките с връзки към ресурси.

Предпоставки

Ще ви трябва малко софтуер, инсталиран на вашия компютър, за да стартирате сървъра на Minecraft и инструментите за писане на вашата приставка. Инсталирайте всички четири от следните:

  • Docker - решение за контейнеризиране.
  • Node.js - двигател и библиотека за изпълнение на JavaScript.
  • Portainer - уеб базиран GUI за управление на Docker контейнери.
  • Visual Studio Code - редактор на код.

Клиент на Minecraft

Трябва ви клиент на Minecraft, за да тествате вашата приставка.

Инсталирайте поне едно от следните:

  • Minecraft Java Edition - настолен клиент, ако искате да тествате срещу сървър Bukkit.
  • Minecraft Pocket Edition - мобилен клиент, ако искате да тествате срещу сървър Nukkit (телефон / таблет / Xbox). Ако използвате това, можете да използвате Minecraft Pocket Edition Bedrock Launcher, за да стартирате мобилния клиент на вашия компютър.

Инсталация

След като вече сте инсталирали предварителните условия, е време да инсталирате инструментите за сървъра и за разработка на приставки.

  1. Изпълнете следната команда:
npm i -g smac yo generator-sma-plugin typescript

Това ще инсталира четири неща на вашия компютър:

  • smac- Scriptcraft Modular Architecture Controller, програма, която изпълнява Minecraft сървъри за вашите приставки.
  • yo- Йеоман , инструмент за скеле.
  • generator-sma-plugin - Yeoman плъгин за генериране на нов плъгин Minecraft с помощта на модулната архитектура Scriptcraft.
  • typescript - TypeScript преводачът, за конвертиране на TypeScript код в ES5 JavaScript, който може да работи в Minecraft.

Създайте нов плъгин

След като вече имате инсталиран набор от инструменти, създайте нов плъгин, като изпълните тази команда:

yo sma-plugin

Това стартира съветника за приставки:

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

Има само един въпрос, на който трябва да отговорите тук - името на вашата приставка. Съветникът ще създаде нова папка с името на приставката и ще постави файловете за новата приставка в нея.

Тази скринкаст ви показва процеса:

Скелирайте приставка за Minecraft, използвайки Magikcraft

Magikcraft.io ви позволява да пишете приставки за Minecraft в TypeScript / JavaScript, които ще се изпълняват на Desktop / Mobile. asciinema.org

След като съветникът завърши, той издава съобщение, подобно на това (избрах името my-sma-pluginв този пример):

Редактирайте новия си плъгин

Стартирайте Visual Studio Code и отворете директорията, съдържаща новата ви приставка.

Ето описание на файловете в новия ви плъгин:

  • __tests__- директория, съдържаща модулни тестове за вашата приставка. Те се изпълняват с Жасмин. Добавете още тестове тук, докато разработвате приставката си.
  • .vscode - настройки за кода на Visual Studio.
  • autoload- всички файлове тук се изпълняват автоматично, когато вашата приставка е активирана в сървъра на Minecraft. Използвайте това за задачи за инициализация, регистриране на манипулатори на събития и т.н.
  • lib- Място за поставяне на файлове, които не трябва да се зареждат автоматично (или които се изискват от вашите автоматично заредени файлове). Ако вашият плъгин предоставя функционалност на други плъгини, тогава вие го експортирате чрез lib/index.ts.
  • node_modules- тук са инсталирани модули от npm. Не можете да използвате модули от npm, които използват V8 API (като fs или http). Много от функциите, от които се нуждаете, се предоставят от API на Scriptcraft и от @magikcraft/coreпакета.
  • .editorconfig - настройки за редактора.
  • .gitattributes- настройки за git.
  • .gitignoreФайлове за игнориране - git.
  • .prettierrc - настройки за форматиране на код.
  • package-lock.json —Версии на инсталирани зависимости.
  • 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