TypeScript
TypeScript是由微软开发和维护的编程语言。它是JavaScript的严格语法超集,并为该语言添加了可选的静态类型系统。TypeScript专为大型应用程序开发而设计,可编译成JavaScript。由于TypeScript是JavaScript的超集,现有的JavaScript程序也是有效的TypeScript程序。
在为Minecraft附加包开发脚本时,使用TypeScript具有显著优势。现有的一些库可以帮助开发Minecraft附加包,为事件的广播和监听提供智能感知和类型安全。
工作原理
TypeScript是一种需要编译成JavaScript的语言。Minecraft无法直接处理.ts文件,因此需要配置一些工具来利用TypeScript构建附加包。
首先,需要通过TypeScript编译器将TypeScript文件编译成JavaScript。然后这些文件才能被Minecraft的脚本系统使用。
既然已经有了构建步骤,我们还可以整合其他系统来实现文件分离和代码共享。Minecraft的脚本系统只会处理各自文件夹中的脚本文件,使用的是Mojang自有的JavaScript解释器。因此,任何跨多个文件的逻辑都必须合并成一个大文件。这时就需要用到webpack和browserify等工具。
脚本API
先决条件
- Minecraft基岩版(Windows 10)
- 代码编辑器如Visual Studio Code(虽然记事本理论上也够用,但本教程假设使用VSCode)
- JavaScript基础知识(本教程不会教授JavaScript编程,假定读者已掌握基础知识)
- 需要安装Node.js来安装工具并将TypeScript编译成JavaScript
- TypeScript知识
设置指南
本指南介绍如何使用TypeScript编译器设置脚本API的TypeScript项目。
开始使用
打开终端(Windows上是命令提示符),导航到项目所在位置。可以是任何位置。在Windows 10上,也可以在文件资源管理器中按Shift + 右键并选择"在PowerShell中打开"。
如果尚未设置,请运行cd命令将终端的工作目录切换到项目所在目录。
cd 项目路径接下来需要安装TypeScript来创建附加包。输入以下命令:
以下命令全局安装TypeScript:
npm install -g typescript以下命令在当前目录创建package.json文件:
npm init -y以下命令安装脚本API模块。本示例使用Beta版API:
npm install @minecraft/server@beta
npm install @minecraft/server-ui@beta
npm install @minecraft/server-gametest@beta
npm install @minecraft/server-admin@beta
npm install @minecraft/server-net@beta现在你的文件夹结构应包含以下目录:
- 📝node_modules
- 📝package-lock.json
- 📝package.json
TIP
如果收到类似command npm not found的错误,请确保已安装Node.js并已添加到PATH环境变量中。
现在可以初始化项目了。下一步是在当前目录创建tsconfig.json文件,包含以下配置,用于模拟Minecraft脚本API的文件系统。
{
"compilerOptions": {
"module": "ES2020",
"target": "ES2021",
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true,
"baseUrl": "./src",
"rootDir": "./src",
"outDir": "./scripts"
},
"exclude": [ "node_modules" ],
"include": [ "src" ]
}创建项目后,可以在你选择的IDE中打开它。如果使用VS Code,可以cd进入项目目录并运行code .来打开项目。
项目结构
- 📝node_modules
- 📝Main.ts
- 📝manifest.json
- 🖼️pack_icon.png
- 📝package-lock.json
- 📝package.json
- 📝tsconfig.json
除非你知道自己在做什么,否则只需要关注src文件夹内的内容。所有开发工作都应该在这个文件夹中进行。
编写脚本
现在在src目录中编写你的第一个TypeScript代码,例如:
import { Player, EntityQueryOptions, GameMode, Vector3, world } from '@minecraft/server';
// 使用提供类型的示例函数
function findPlayersInSurvivalMode(location: Vector3): Player[] {
const options: EntityQueryOptions = {
gameMode: GameMode.survival,
location: location,
};
const players: Player[] = world.getPlayers(options);
return players;
}
// 示例用法
const playerLocation: Vector3 = { x: 10, y: 20, z: 30 };
const playersInSurvivalMode: Player[] = findPlayersInSurvivalMode(playerLocation);
console.log(playersInSurvivalMode);命令
开发项目时最常用的命令如下:
tsctsc会将脚本文件夹中的所有TS文件编译到行为包文件夹中。
tsc --watch--watch会监视src目录中的任何更改,并自动重新安装附加包。
- 📝node_modules
- 📝Main.js
- 📝Main.ts
- 📝manifest.json
- 🖼️pack_icon.png
- 📝package-lock.json
- 📝package.json
- 📝tsconfig.json
现在src/Main.ts文件应该已被转译为scripts/Main.js,包含以下代码:
import { GameMode, world } from '@minecraft/server';
// 使用提供类型的示例函数
function findPlayersInSurvivalMode(location) {
const options = {
gameMode: GameMode.survival,
location: location,
};
const players = world.getPlayers(options);
return players;
}
// 示例用法
const playerLocation = { x: 10, y: 20, z: 30 };
const playersInSurvivalMode = findPlayersInSurvivalMode(playerLocation);
console.log(playersInSurvivalMode);打包
要在Minecraft中运行代码,需要将行为包压缩并导入到Minecraft世界中。你的行为包中只需包含以下文件,其余文件不需要包含在.mcpack压缩文件中。
- 📝Main.js
- 📝manifest.json
- 🖼️pack_icon.png
恭喜,你已经为脚本API创建了第一个TypeScript项目。







