bc-minecraft-project
Version:
A library that provides object and handling for minecraft projects
160 lines • 6.52 kB
TypeScript
/** Severity level for a lint rule */
export type MCLintSeverity = 'off' | 'warn' | 'error' | 0 | 1 | 2;
/** A rule value is either a severity or an array of [severity, ...options] */
export type MCLintRuleValue = MCLintSeverity | [MCLintSeverity, ...unknown[]];
/** Rule definitions supported by MCLint */
export interface MCLintRules {
/**
* Validate that identity strings follow the `namespace:name` format.
* When enabled, identifiers that do not contain a colon separator are flagged.
*/
'identity.format'?: MCLintRuleValue;
/**
* Allow only listed namespaces.
* Options: `[severity, [allowedNamespace1, allowedNamespace2, ...]]`
*/
'namespace.allow'?: MCLintRuleValue;
/**
* Deny listed namespaces.
* Options: `[severity, [deniedNamespace1, deniedNamespace2, ...]]`
*/
'namespace.deny'?: MCLintRuleValue;
/**
* Require that identifiers for items, entities, blocks, and similar types always include a namespace.
* When enabled, identifiers that do not contain a colon separator (e.g. `zombie` instead of `minecraft:zombie`)
* are flagged.
*/
'namespace.required'?: MCLintRuleValue;
/**
* Validate animation IDs against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'animation.naming'?: MCLintRuleValue;
/**
* Validate animation controller IDs against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'animation-controller.naming'?: MCLintRuleValue;
/**
* Validate animation controller state IDs against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'animation-state.naming'?: MCLintRuleValue;
/**
* Validate biome identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'biome.naming'?: MCLintRuleValue;
/**
* Validate block identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'block.naming'?: MCLintRuleValue;
/**
* Validate bone names against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'bone.naming'?: MCLintRuleValue;
/**
* Validate entity identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'entity.naming'?: MCLintRuleValue;
/**
* Validate feature identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'feature.naming'?: MCLintRuleValue;
/**
* Validate feature rule identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'feature-rule.naming'?: MCLintRuleValue;
/**
* Validate fog setting identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'fog.naming'?: MCLintRuleValue;
/**
* Validate item identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'item.naming'?: MCLintRuleValue;
/**
* Validate model/geometry identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'model.naming'?: MCLintRuleValue;
/**
* Validate molang variable names against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'molang.variable.naming'?: MCLintRuleValue;
/**
* Validate particle identifiers against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'particle.naming'?: MCLintRuleValue;
/**
* Validate render controller IDs against a regular expression pattern.
* Options: `[severity, "regexPattern"]`
*/
'render-controller.naming'?: MCLintRuleValue;
/**
* Validate that sound file paths use only allowed file extensions.
* When a sound path in `sound_definitions.json` explicitly specifies an extension,
* it must be one of the allowed extensions.
* Options: `[severity, [".ogg", ".wav"]]` — defaults to `[".ogg", ".wav"]` when omitted.
*/
'sound.extensions'?: MCLintRuleValue;
/**
* Validate mcfunction file names (function IDs) against a regular expression pattern.
* The function ID is the path relative to the `functions/` directory, without the `.mcfunction` extension.
* Options: `[severity, "regexPattern"]`
*/
'mcfunction.naming'?: MCLintRuleValue;
/**
* Validate fake player names against a regular expression pattern.
* Fake players are non-selector target values used in commands such as `scoreboard`.
* Options: `[severity, "regexPattern"]`
*/
'fake-player.naming'?: MCLintRuleValue;
/** Additional user-defined rules */
[]: MCLintRuleValue | undefined;
}
/** The MCLint configuration object, parsed from a `.mclint` file */
export interface MCLint {
/** The lint rules configuration */
rules: MCLintRules;
}
/** Namespace providing utilities for working with MCLint configuration */
export declare namespace MCLint {
/** The default filename for MCLint configuration */
const filename = ".mclint";
/** Creates an empty MCLint configuration */
function createEmpty(): MCLint;
/** Checks whether the given value implements the MCLint interface */
function is(value: unknown): value is MCLint;
/**
* Parses a JSON string as MCLint configuration.
* Returns an empty configuration if the input is invalid.
*/
function parse(content: string): MCLint;
/** Loads the MCLint configuration from a file synchronously */
function loadSync(filepath: string): MCLint;
/** Loads the MCLint configuration from a file asynchronously */
function load(filepath: string): Promise<MCLint>;
/**
* Resolves the effective severity string of a rule.
* Returns `'off'` when the rule is undefined or explicitly disabled.
*/
function getSeverity(rule: MCLintRuleValue | undefined): 'off' | 'warn' | 'error';
/**
* Gets the options array for a rule (all elements after the severity).
* Returns an empty array when the rule has no options or is a plain severity value.
*/
function getOptions(rule: MCLintRuleValue | undefined): unknown[];
/** Returns `true` when the rule is enabled (not `'off'`) */
function isEnabled(rule: MCLintRuleValue | undefined): boolean;
}
//# sourceMappingURL=mclint.d.ts.map