Як легко змінити Minecraft за допомогою TypeScript

Зазвичай модифікація Minecraft вимагає кодування на Java та багато лісів. Тепер ви можете писати та ділитися модами Minecraft за допомогою TypeScript / Javascript.

ScriptCraft - це бібліотека моддингу з відкритим кодом JavaScript Minecraft, і ми написали підтримку TypeScript та купу інструментів для створення знайомого досвіду для розробників для тих, хто походить із JavaScript (включаючи Yeoman та NPM).

У цій статті я розповім вам про те, як налаштувати і створити свій перший мод TypeScript Minecraft менш ніж за годину - лише 20 хвилин, залежно від вашого Інтернет-з'єднання.

У цьому відео (натисніть тут, якщо вбудова не працює вище) я покажу вам, як написати базовий мод Minecraft за допомогою TypeScript, і запустити його на своєму локальному комп’ютері як із настільним, так і з мобільним сервером Minecraft.

Нижче я проведу вас по кроках із посиланнями на ресурси.

Передумови

Вам знадобиться деяке програмне забезпечення, встановлене на вашому комп’ютері, для запуску сервера Minecraft та інструментів для написання вашого плагіна. Встановіть усі наступні чотири:

  • Docker - розчин для контейнеризації.
  • Node.js - механізм виконання та бібліотека JavaScript.
  • Portainer - веб-графічний інтерфейс для управління контейнерами 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, які працюватимуть на робочому столі / мобільному. asciinema.org

Після завершення роботи майстра він видає повідомлення, подібне до цього (я вибрав ім'я my-sma-pluginв цьому прикладі):

Відредагуйте свій новий плагін

Запустіть Visual Studio Code і відкрийте каталог, що містить ваш новий плагін.

Ось опис файлів у вашому новому плагіні:

  • __tests__- каталог, що містить модульні тести для вашого плагіна. Вони працюють з Жасмином. Додайте сюди більше тестів, коли ви розробляєте свій плагін.
  • .vscode - налаштування коду Visual Studio.
  • autoload- будь-які файли тут виконуються автоматично, коли ваш плагін увімкнено на сервері Minecraft. Використовуйте це для завдань ініціалізації, реєстрації обробників подій тощо.
  • lib- Місце для розміщення файлів, які не слід завантажувати автоматично (або які потрібні з автоматично завантажених файлів). Якщо ваш плагін надає функціональність іншим плагінам, ви експортуєте його через lib/index.ts.
  • node_modules- тут встановлені модулі з npm. Ви не можете використовувати модулі з npm, які використовують API V8 (наприклад, fs або http). Багато функцій, які вам потрібні, надаються API Scriptcraft та @magikcraft/coreпакетом.
  • .editorconfig - налаштування для редактора.
  • .gitattributes- налаштування для git.
  • .gitignoreФайли для ігнорування - git.
  • .prettierrc - налаштування форматування коду.
  • package-lock.json —Версії встановлених залежностей.
  • package.json —Конфігурація цього плагіна, включаючи залежності та сценарії.
  • README.md - інструкції з розробки та тестування вашого плагіна.
  • smac-nukkit.json - конфігурація для запуску сервера Nukkit із завантаженим плагіном.
  • smac.json - конфігурація для запуску сервера Bukkit із завантаженим плагіном.
  • tsconfig.json - конфігурація TypeScript для транпіляції вашого плагіна до JavaScript.

Відкрито autoload/index.ts:

Цей файл автоматично виконується при завантаженні плагіна. Зміни, які ви внесете тут, будуть видимими, коли ви (повторно) завантажите плагін.

Запустіть сервер розробки

Ви можете завантажити свій плагін на сервер розробки. Ви можете використовувати два сервери - один для настільного клієнта Java, а другий для мобільного клієнта Pocket Edition.

Запустіть настільний сервер

Запустіть це, щоб запустити настільний сервер:

npm run start:bukkit

Це буде:

  1. Витягніть образ сервера Bukkit із 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