mdkjs
Version:
mdk is a framework for developing Datapacks for Minecraft. It uses the typescript language.
101 lines (100 loc) • 3.69 kB
TypeScript
import { int, float, EnchantmentId, RangeObject } from 'mdk-nbt';
import { FileAbstract, FileAbstractOptions, FileInfo } from '../FileAbstract';
import { DataObject, ObjectMap } from "../../../tools/typings";
declare type EntityTargetType = 'this' | 'killer' | 'killer_player';
export interface IPredicateItem {
condition: string;
[name: string]: any;
}
export declare type PredicateMap<D extends DataObject> = ObjectMap<PredicateFile<D>>;
export declare type PredicateItemMap = ObjectMap<IPredicateItem>;
export interface PredicateOptions<D extends DataObject = {}> extends FileAbstractOptions<D> {
/** 渲染入口 */
render: (context: PredicateFile<any>) => D | void;
}
export declare class PredicateFile<D extends DataObject> extends FileAbstract<D> {
#private;
constructor(options: PredicateOptions<D>);
add(item: IPredicateItem): void;
load(cached?: boolean): boolean;
getData(cached?: boolean): D;
create(dir: string): FileInfo;
toString(): string;
}
export declare class PredicateItem {
/**
* 将该列表中的每一个参数项用"or"连接起来
*/
static alternative(items: IPredicateItem[]): {
condition: string;
terms: IPredicateItem[];
};
/**
* 把参数项中条件的判断结果取反
*/
static inverted(item: IPredicateItem): {
condition: string;
term: IPredicateItem;
};
/**
* 检查方块状态的属性 // TODO 方块状态
*/
static blockStateProperty(blockId: string, properties: any): IPredicateItem;
/**
* 检查伤害来源的属性
*/
static damageSourceProperties(damagePredicate: any): IPredicateItem;
/**
* 实体的测试属性
*/
static entityProperties(entity: EntityTargetType, locationPredicate: any): IPredicateItem;
/**
* 测试实体的记分板分数
*/
static entityScores(entity: string, scores: Record<string, RangeObject<int>>): IPredicateItem;
/**
* 测试 killer_player实体是否可用
*/
static killedByPlayer(inverse?: boolean): IPredicateItem;
/**
* 检查是否匹配当前位置 // TODO 位置通用标签
*/
static locationCheck(offsetX: int, offsetY: int, offsetZ: int, locationPredicate: any): IPredicateItem;
/**
* 检查工具 // TODO 物品共通标签
*/
static matchTool(itemPredicate: any): IPredicateItem;
/**
* 测试一个0.0–1.0之间的随机数是不是小于给定值
*/
static randomChange(change: float): IPredicateItem;
/**
* 测试一个0.0–1.0之间的随机数是不是小于给定值,受killer实体身上的抢夺等级影响
*/
static randomChangeWithLooting(change: float, lootingMultiplier: float): IPredicateItem;
/**
* 测试另一个被引用的条件(谓词)是否通过
*/
static reference(name: string): IPredicateItem;
/**
* 1/爆炸半径的概率返回true
*/
static survivesExplosion(): IPredicateItem;
/**
* 以附魔等级为索引,从表中挑选概率通过
*/
static tableBonus(enchantment: EnchantmentId, chances: number[]): IPredicateItem;
/**
* 检查当前时间
*/
static timeCheck(value: RangeObject<int>, period: int): IPredicateItem;
/**
* 检查当前的天气状态
*/
static weatherCheck(raining: boolean, thundering: boolean): IPredicateItem;
/**
* 检查当前的天气状态
*/
static valueCheck(value: RangeObject<int>, range: RangeObject<int>): IPredicateItem;
}
export {};