@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
151 lines (150 loc) • 7.19 kB
TypeScript
import BlockBaseType from "./BlockBaseType";
import { BlockRenderType } from "./BlockRenderType";
import { IEventHandler } from "ste-events";
import IFile from "../storage/IFile";
import IComponent from "./IComponent";
import IBlockTypeBehaviorPack from "./IBlockTypeBehaviorPack";
import IManagedComponentSetItem from "./IManagedComponentSetItem";
import IManagedComponent from "./IManagedComponent";
import { ManagedComponent } from "./ManagedComponent";
import IDefinition from "./IDefinition";
import ManagedPermutation from "./ManagedPermutation";
import Project from "../app/Project";
import ProjectItem from "../app/ProjectItem";
import RelationsIndex from "../app/RelationsIndex";
import { IBlockResource } from "./IBlocksCatalog";
import { IBlockTypeCreationData } from "./IBlockTypeCreationData";
import { ITerrainTextureDataItem } from "./ITerrainTextureCatalog";
export declare enum BlockStateType {
string = 0,
boolean = 1,
number = 2
}
export default class BlockTypeDefinition implements IManagedComponentSetItem, IDefinition {
private _typeId;
private _typeData;
private _baseType?;
private _baseTypeId;
private _material;
private _isCustom;
private _wrapper;
private _file?;
private _id?;
private _isLoaded;
private _loadedWithComments;
_data?: IBlockTypeBehaviorPack;
private _managed;
private _onLoaded;
private _onComponentAdded;
private _onComponentRemoved;
private _onComponentChanged;
get data(): IBlockTypeBehaviorPack;
get numericId(): number;
get baseTypeId(): string;
get mapColor(): string;
get isCustom(): boolean;
get baseType(): BlockBaseType;
/**
* Returns true if this block uses a unit cube geometry.
* Unit cube blocks can be rendered with textures from blocks.json or material_instances.
*
* A block is considered a unit cube if:
* 1. It has minecraft:unit_cube component (legacy)
* 2. It has geometry = "minecraft:geometry.full_block" or "geometry.full_block"
* 3. It has no geometry component at all (defaults to unit cube)
*/
get isUnitCube(): boolean;
get geometryIdentifier(): any;
/**
* Gets the blocks.json catalog resource for this block, if it exists.
* Returns the IBlockResource which contains texture references for unit cube blocks.
*/
getBlockCatalogResource(project: Project): Promise<IBlockResource | undefined>;
setBlockCatalogTexture(project: Project, sideId: "north" | "east" | "west" | "south" | "up" | "down", textureId: string): Promise<void>;
setTerrainTexture(project: Project, terrainTextureId: string, textureData: ITerrainTextureDataItem): Promise<void>;
ensureBlockAndTerrainLinks(project: Project, creationData: IBlockTypeCreationData): Promise<void>;
getFormatVersionIsCurrent(): Promise<boolean>;
getMissingPermutations(): string[];
addNextPermutation(): void;
addPermutation(condition: string): void;
ensurePermutations(): void;
hasCustomPermutationConditions(): boolean;
ensureDescription(): void;
getManagedPermutations(): ManagedPermutation[];
getPermutations(): import("./IBlockTypeBehaviorPack").IBlockPermutation[];
getPlacementDirectionTrait(): import("./IBlockTraits").IPlacementDirectionBlockTrait;
getPlacementPositionTrait(): import("./IBlockTraits").IPlacementPositionBlockTrait;
ensurePlacementDirectionTrait(): void;
removePlacementDirectionTrait(): void;
ensurePlacementPositionTrait(): void;
removePlacementPositionTrait(): void;
ensureBlockTraits(): void;
removeState(stateName: string): void;
get formatVersion(): string | undefined;
getFormatVersion(): number[] | undefined;
getStateValues(stateId: string): string[] | number[] | boolean[];
getStates(): {
[id: string]: string[] | number[] | boolean[];
};
addState(stateName: string, stateType: BlockStateType): void;
getExpandedStateList(): any[];
getStateList(): any[];
set baseType(baseType: BlockBaseType);
get material(): string;
renderType: BlockRenderType;
get icon(): string;
get typeId(): string;
get shortTypeName(): string;
get title(): string;
constructor(name: string);
get id(): string;
set id(newId: string);
get onComponentAdded(): import("ste-events").IEvent<BlockTypeDefinition, IManagedComponent>;
get onComponentRemoved(): import("ste-events").IEvent<BlockTypeDefinition, string>;
get onComponentChanged(): import("ste-events").IEvent<BlockTypeDefinition, IManagedComponent>;
get isLoaded(): boolean;
get behaviorPackFile(): IFile | undefined;
get onLoaded(): import("ste-events").IEvent<BlockTypeDefinition, BlockTypeDefinition>;
set behaviorPackFile(newFile: IFile | undefined);
_handleFileUpdated(file: IFile, fileB: IFile): void;
get shortId(): string;
getPermutationByCondition(permutationCondition: string): import("./IBlockTypeBehaviorPack").IBlockPermutation;
static getComponentFromBaseFileName(name: string): string;
ensureComponent(id: string, defaultData?: IComponent | string | string[] | boolean | number[] | number | undefined): IManagedComponent | ManagedComponent;
getComponent(id: string): IManagedComponent;
getComponentsInBaseAndPermutations(id: string): IManagedComponent[];
notifyComponentUpdated(id: string): void;
getAllComponents(): IManagedComponent[];
getComponents(): IManagedComponent[];
addComponent(id: string, componentOrData: ManagedComponent | IComponent | string | string[] | boolean | number[] | number | undefined): ManagedComponent;
removeComponent(id: string): void;
getTextureItems(blockTypeProjectItem: ProjectItem, project?: Project): Promise<{
[name: string]: ProjectItem;
} | undefined>;
getGeometryList(): any[];
/**
* Gets the list of texture IDs used by this block.
* Checks both material_instances component and blocks.json catalog.
*/
getTextureList(): string[];
/**
* Gets texture IDs from blocks.json catalog for this block.
* Used for unit cube blocks that define textures via blocks.json.
*/
getTextureListFromBlocksCatalog(project: Project): Promise<string[]>;
_ensureBehaviorPackDataInitialized(): void;
getPackRootFolder(): any;
getCustomComponentIds(): string[];
getLootTablePaths(): string[];
addChildItems(project: Project, item: ProjectItem, index?: RelationsIndex): Promise<void>;
static ensureOnFile(file: IFile, loadHandler?: IEventHandler<BlockTypeDefinition, BlockTypeDefinition>, preserveComments?: boolean): Promise<BlockTypeDefinition>;
addCustomComponent(blockTypeItem: ProjectItem, componentName: string): Promise<void>;
persist(): boolean;
/**
* Loads the definition from the file.
* @param preserveComments If true, uses comment-preserving JSON parsing for edit/save cycles.
* If false (default), uses efficient standard JSON parsing.
* Can be called again with true to "upgrade" a read-only load to read/write.
*/
load(preserveComments?: boolean): Promise<void>;
}