bedrock-development
Version:
APIs for creating and editing files related to Minecraft Bedrock development.
53 lines (52 loc) • 1.99 kB
JavaScript
import { Directories } from "../../file_manager.js";
import { currentFormatVersion } from "../../utils.js";
import { MinecraftDataType } from "../minecraft.js";
export class ServerBlock extends MinecraftDataType {
static get DirectoryPath() {
return Directories.BEHAVIOR_PATH + 'blocks/';
}
constructor(filepath, template) {
super(filepath, template);
this.format_version = template.format_version;
this["minecraft:block"] = template["minecraft:block"];
}
static createFromTemplate(nameData) {
return new ServerBlock(this.createFilePath(nameData), {
format_version: currentFormatVersion,
"minecraft:block": {
description: {
identifier: nameData.fullname,
},
components: {}
}
});
}
setDisplayData(name) {
this["minecraft:block"].description.identifier = name.fullname;
this["minecraft:block"].components["minecraft:display_name"] = `tile.${name.fullname}.name`;
this["minecraft:block"].components["minecraft:material_instances"] = {
"*": {
texture: name.shortname
}
};
}
setExplosionResistance(resistance) {
if (typeof (resistance) === 'boolean') {
this["minecraft:block"].components["minecraft:destructible_by_explosion"] = resistance;
}
else {
this["minecraft:block"].components["minecraft:destructible_by_explosion"] = {
explosion_resistance: resistance
};
}
}
setFriction(friction = 0.4) {
this["minecraft:block"].components["minecraft:friction"] = friction;
}
setLightEmission(emission) {
this["minecraft:block"].components["minecraft:light_emission"] = emission;
}
setLootTable(table = "loot_tables/blocks/empty.json") {
this["minecraft:block"].components["minecraft:loot"] = table;
}
}