UNPKG

bedrock-development

Version:

APIs for creating and editing files related to Minecraft Bedrock development.

58 lines (49 loc) 1.83 kB
import { Directories } from "../../file_manager.js"; import { NameData, currentFormatVersion } from "../../utils.js"; import { MinecraftDataType } from "../minecraft.js"; import { FormatVersion, Identifier } from "../shared_types.js"; export interface IClientItem { format_version: FormatVersion; ["minecraft:item"]: IClientItemItem; } export interface IClientItemItem { description: IClientItemDescription; components: IClientItemComponents; } export interface IClientItemDescription { identifier: Identifier; category?: string; } export interface IClientItemComponents { ["minecraft:icon"]?: string; ["minecraft:render_offsets"]?: string; } export class ClientItem extends MinecraftDataType implements IClientItem { format_version: FormatVersion; ["minecraft:item"]: IClientItemItem; public static get DirectoryPath(): string { return Directories.RESOURCE_PATH + 'items/'; } constructor(filepath: string, template: IClientItem) { super(filepath, template); this.format_version = template.format_version; this["minecraft:item"] = template["minecraft:item"]; } public static createFromTemplate(nameData: NameData): ClientItem { return new ClientItem(this.createFilePath(nameData), { format_version: currentFormatVersion, "minecraft:item": { description: { identifier: nameData.fullname as Identifier, }, components: { "minecraft:icon": nameData.fullname, } } }); } setDisplayData(name: NameData) { this["minecraft:item"].description.identifier = name.fullname as Identifier; this["minecraft:item"].components["minecraft:icon"] = name.fullname; } }