@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
353 lines (338 loc) • 7.36 kB
text/typescript
import { world, BlockPermutation, Vector3 } from "@minecraft/server";
import { MinecraftDimensionTypes } from "@minecraft/vanilla-data";
export const CHARFONT: { [index: string]: string[][] } = {
a: [
[" ", "x", "x", " "],
["x", " ", " ", "x"],
["x", "x", "x", "x"],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
],
b: [
["x", "x", "x", " "],
["x", " ", " ", "x"],
["x", "x", "x", " "],
["x", " ", " ", "x"],
["x", "x", "x", " "],
],
c: [
[" ", "x", "x"],
["x", " ", " "],
["x", " ", " "],
["x", " ", " "],
[" ", "x", "x"],
],
d: [
["x", "x", "x", " "],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", "x", "x", " "],
],
e: [
["x", "x", "x"],
["x", " ", " "],
["x", "x", " "],
["x", " ", " "],
["x", "x", "x"],
],
f: [
["x", "x", "x"],
["x", " ", " "],
["x", "x", " "],
["x", " ", " "],
["x", " ", " "],
],
g: [
[" ", "x", "x", " "],
["x", " ", " ", " "],
["x", "x", "x", " "],
["x", " ", " ", "x"],
["x", "x", "x", " "],
],
h: [
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", "x", "x", "x"],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
],
i: [
["x", "x", "x"],
[" ", "x", " "],
[" ", "x", " "],
[" ", "x", " "],
["x", "x", "x"],
],
j: [
[" ", " ", "x"],
[" ", " ", "x"],
[" ", " ", "x"],
[" ", " ", "x"],
["x", "x", " "],
],
k: [
["x", " ", " "],
["x", " ", "x"],
["x", "x", " "],
["x", "x", " "],
["x", " ", "x"],
],
l: [
["x", " ", " "],
["x", " ", " "],
["x", " ", " "],
["x", " ", " "],
["x", "x", "x"],
],
m: [
["x", " ", " ", " ", "x"],
["x", "x", " ", "x", "x"],
["x", " ", "x", " ", "x"],
["x", " ", " ", " ", "x"],
["x", " ", " ", " ", "x"],
],
n: [
["x", " ", " ", " ", "x"],
["x", "x", " ", " ", "x"],
["x", " ", "x", " ", "x"],
["x", " ", " ", "x", "x"],
["x", " ", " ", " ", "x"],
],
o: [
[" ", "x", "x", " "],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
[" ", "x", "x", " "],
],
p: [
["x", "x", "x", " "],
["x", " ", " ", "x"],
["x", "x", "x", " "],
["x", " ", " ", " "],
["x", " ", " ", " "],
],
q: [
[" ", "x", "x", " ", " "],
["x", " ", " ", "x", " "],
["x", " ", " ", "x", " "],
["x", " ", "x", "x", " "],
[" ", "x", "x", "x", "x"],
],
r: [
["x", "x", "x", "x"],
["x", " ", " ", "x"],
["x", "x", "x", " "],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
],
s: [
[" ", "x", "x"],
["x", " ", " "],
[" ", "x", " "],
[" ", " ", "x"],
["x", "x", " "],
],
t: [
["x", "x", "x"],
[" ", "x", " "],
[" ", "x", " "],
[" ", "x", " "],
[" ", "x", " "],
],
u: [
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", " ", " ", "x"],
["x", "x", "x", "x"],
],
v: [
["x", " ", "x"],
["x", " ", "x"],
["x", " ", "x"],
["x", " ", "x"],
[" ", "x", " "],
],
w: [
["x", " ", " ", " ", "x"],
["x", " ", " ", " ", "x"],
["x", " ", " ", " ", "x"],
["x", " ", "x", " ", "x"],
["x", "x", " ", "x", "x"],
],
x: [
["x", " ", " ", " ", "x"],
[" ", "x", " ", "x", " "],
[" ", " ", "x", " ", " "],
[" ", "x", " ", "x", " "],
["x", " ", " ", " ", "x"],
],
y: [
["x", " ", " ", " ", "x"],
[" ", "x", " ", "x", " "],
[" ", " ", "x", " ", " "],
[" ", " ", "x", " ", " "],
[" ", " ", "x", " ", " "],
],
z: [
["x", "x", "x"],
[" ", " ", "x"],
[" ", "x", " "],
["x", " ", " "],
["x", "x", "x"],
],
1: [
[" ", "x", " "],
["x", "x", " "],
[" ", "x", " "],
[" ", "x", " "],
["x", "x", "x"],
],
2: [
[" ", "x", " "],
["x", " ", "x"],
[" ", "x", " "],
["x", " ", " "],
["x", "x", "x"],
],
3: [
["x", "x", " "],
[" ", " ", "x"],
[" ", "x", " "],
[" ", " ", "x"],
["x", "x", " "],
],
4: [
["x", " ", "x"],
["x", " ", "x"],
["x", "x", "x"],
[" ", " ", "x"],
[" ", " ", "x"],
],
5: [
["x", "x", "x"],
["x", " ", " "],
[" ", "x", " "],
[" ", " ", "x"],
["x", "x", " "],
],
6: [
["x", "x", "x"],
["x", " ", " "],
["x", "x", "x"],
["x", " ", "x"],
["x", "x", "x"],
],
7: [
["x", "x", "x"],
[" ", " ", "x"],
[" ", " ", "x"],
[" ", "x", " "],
["x", " ", " "],
],
8: [
["x", "x", "x"],
["x", " ", "x"],
["x", "x", "x"],
["x", " ", "x"],
["x", "x", "x"],
],
9: [
["x", "x", "x"],
["x", " ", "x"],
["x", "x", "x"],
[" ", " ", "x"],
["x", "x", "x"],
],
0: [
["x", "x", "x"],
["x", " ", "x"],
["x", " ", "x"],
["x", " ", "x"],
["x", "x", "x"],
],
" ": [
[" ", " "],
[" ", " "],
[" ", " "],
[" ", " "],
[" ", " "],
],
};
export default class Utilities {
static writeTextFlatX(
text: string,
nwb: { x: number; y: number; z: number },
letterPixelBlockPerm: BlockPermutation,
emptyPixelBlockPerm: BlockPermutation
) {
let textClean = text.toLowerCase();
let ow = world.getDimension(MinecraftDimensionTypes.Overworld);
let xStart = nwb.x;
for (let k = 0; k < textClean.length; k++) {
let fontChar = CHARFONT[textClean[k]];
if (fontChar) {
for (let i = 0; i < fontChar.length; i++) {
let line = fontChar[i];
for (let j = 0; j < line.length; j++) {
let bl = { x: xStart + j, y: nwb.y, z: nwb.z + i };
let block = ow.getBlock(bl);
if (block) {
if (line[j] === "x") {
block.setPermutation(letterPixelBlockPerm);
} else {
block.setPermutation(emptyPixelBlockPerm);
}
}
}
}
xStart += fontChar[0].length;
for (let i = 0; i < fontChar.length; i++) {
let bl = { x: xStart, y: nwb.y, z: nwb.z + i };
let block = ow.getBlock(bl);
if (block) {
block.setPermutation(emptyPixelBlockPerm);
}
}
xStart++;
}
}
}
static lerp(from: Vector3, to: Vector3, percent: number): Vector3 {
return {
x: from.x + (to.x - from.x) * percent,
y: from.y + (to.y - from.y) * percent,
z: from.z + (to.z - from.z) * percent,
};
}
static fillBlock(
perm: BlockPermutation,
fromX: number,
fromY: number,
fromZ: number,
toX: number,
toY: number,
toZ: number
) {
let overworld = world.getDimension(MinecraftDimensionTypes.Overworld);
const fromXa = Math.min(fromX, toX);
const fromYa = Math.min(fromY, toY);
const fromZa = Math.min(fromZ, toZ);
const toXa = Math.max(fromX, toX);
const toYa = Math.max(fromY, toY);
const toZa = Math.max(fromZ, toZ);
for (let i = fromXa; i <= toXa; i++) {
for (let j = fromYa; j <= toYa; j++) {
for (let k = fromZa; k <= toZa; k++) {
let bl = { x: i, y: j, z: k };
let block = overworld.getBlock(bl);
if (block) {
block.setPermutation(perm);
}
}
}
}
}
}