UNPKG

mdkjs

Version:

mdk is a framework for developing Datapacks for Minecraft. It uses the typescript language.

101 lines (100 loc) 3.69 kB
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 {};