UNPKG

bedrock-development

Version:

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

252 lines (251 loc) 8.1 kB
import { NameData } from "../../utils.js"; import { MinecraftDataType } from "../minecraft.js"; import { EffectNames, FormatVersion, Identifier, MolangTripleArray } from "../shared_types.js"; import { ServerAnimationName } from "./animation"; import { ServerACName } from "./animation_controller"; import { IServerItemComponents } from "./item"; export type DamageType = string; export type Range = number | [number, number]; export type ServerEntityTarget = 'block' | 'damager' | 'other' | 'parent' | 'player' | 'self' | 'target'; export interface IServerEntity { format_version: FormatVersion; ["minecraft:entity"]: { description: IServerEntityDescription; component_groups?: IServerEntityComponentGroups; components: IServerEntityComponents; events: IServerEntityEvents; }; } export interface IServerEntityDescription { identifier: Identifier; runtime_identifier?: Identifier; is_spawnable: boolean; is_summonable: boolean; is_experimental: boolean; properties?: IServerEntityProperties; animations?: { [key: string]: ServerAnimationName | ServerACName; }; scripts?: { animate?: (string | { [key: string]: string; })[]; }; } export interface IServerEntityProperties { [key: Identifier]: { type: 'bool' | 'enum' | 'int' | 'float'; range?: [number, number]; values?: string[]; client_sync?: boolean; default?: boolean | string | number; }; } export interface IServerEntityComponentGroups { [key: string]: IServerEntityComponents; } export interface IServerEntityComponents { ["minecraft:addrider"]?: { entity_type: string; spawn_event: string; }; ["minecraft:area_attack"]?: { case: DamageType; damage_cooldown?: number; damage_per_tick?: number; damage_range?: number; entity_filter: IServerEntityFilters; play_attack_sound?: boolean; }; ["minecraft:attack"]?: { damage: Range; effect_duration?: number; effect_name?: EffectNames; }; ["minecraft:boss"]?: { hud_range?: number; name: string; should_darken_sky?: boolean; }; ["minecraft:break_blocks"]?: { breakable_blocks: Identifier[]; }; ["minecraft:collision_box"]?: { height?: number; width?: number; }; ["minecraft:custom_hit_test"]?: { hitboxes: { height: number; width: number; pivot: MolangTripleArray; }[]; }; ["minecraft:damage_sensor"]?: { triggers: IServerEntityDamageSensor | IServerEntityDamageSensor[]; }; ["minecraft:despawn"]?: { despawn_from_change?: boolean; despawn_from_distance?: { max_distance?: number; min_distance?: number; }; despawn_from_inactivity?: boolean; despawn_from_simulation_edge?: boolean; filters?: IServerEntityFilters; min_range_inactivity_timer?: number; min_range_random_chance?: number; remove_child_entities?: boolean; }; ["minecraft:environment_sensor"]?: { triggers: IServerEntityTrigger[]; }; ["minecraft:hurt_on_condition"]?: { damage_conditions: { filters: IServerEntityFilters; cause: DamageType; damage_per_tick: number; }[]; }; ["minecraft:instant_despawn"]?: { remove_child_entities?: boolean; }; ["minecraft:interact"]?: { interactions: { interact_text?: string; on_interact?: IServerEntityTrigger; [key: string]: any; }; }; ["minecraft:loot"]?: { table: string; }; ["minecraft:physics"]?: { has_collision?: boolean; has_gravity?: boolean; push_towards_closest_space?: boolean; }; ["minecraft:projectile"]?: { on_hit?: { impact_damage?: { damage?: Range; knockback?: boolean; semi_random_diff_damage?: boolean; destroy_on_hit?: boolean; }; stick_in_ground?: { shake_time?: number; }; arrow_effect?: { apply_effect_to_blocking_targets?: boolean; }; definition_event?: { event_trigger: { event: string; target: ServerEntityTarget; }; }; }; hit_sound?: string; power: number; gravity: number; uncertainty_base: number; uncertainty_multiplier: number; anchor: number; should_bounce?: boolean; offset: MolangTripleArray; [key: string]: any; }; ["minecraft:pushable"]?: { is_pushable?: boolean; is_pushable_by_piston?: boolean; }; ["minecraft:type_family"]?: { family: string[]; }; [key: string]: any; } export interface IServerEntityFilters { test: string; subject?: ServerEntityTarget; operator?: string; domain?: string; value?: string | number | boolean; } export interface IServerEntityDamageSensor { on_damage?: IServerEntityTrigger; deals_damage?: boolean; damage_modifier?: number; damage_multiplier?: number; cause?: DamageType; on_damage_sound_event?: string; } export interface IServerEntityTrigger { filters?: IServerEntityFilters; event?: string; target?: ServerEntityTarget; } export interface IServerEntityEvents { [key: string]: IServerEntityEvent; } export interface IServerEntityEvent { add?: { component_groups: string[]; }; remove?: { component_groups: string[]; }; filters?: IServerEntityFilters; emit_vibration?: { vibration: string; }; queue_command?: { command: string | string[]; }; set_property?: { [key: Identifier]: string | number | boolean; }; trigger?: IServerEntityTrigger | string; randomize?: IServerEntityEvent[]; sequence?: IServerEntityEvent[]; wheight?: number; } export interface IServerEntityComponentGroupOptions { addEvent: boolean; removeEvent: boolean; } export interface IServerEntityPropertiesOptions { createEvents: boolean; } export interface IServerEntityAnimationOptions { createScriptEntry: boolean; } export interface IServerEntityDamageSensorOptions { prepend: boolean; } export declare class ServerEntity extends MinecraftDataType implements IServerEntity { format_version: FormatVersion; ["minecraft:entity"]: { description: IServerEntityDescription; component_groups?: IServerEntityComponentGroups; components: IServerEntityComponents; events: IServerEntityEvents; }; static get DirectoryPath(): string; get Identifier(): Identifier; get NameData(): NameData; constructor(filepath: string, template: IServerEntity); static createFromTemplate(nameData: NameData): ServerEntity; setComponents(components: IServerItemComponents, handleExisting?: 'overwrite' | 'merge' | 'ignore'): void; setComponentGroups(groups: IServerEntityComponentGroups, handleExisting?: 'overwrite' | 'merge' | 'ignore', options?: IServerEntityComponentGroupOptions): void; setEvents(events: IServerEntityEvents, handleExisting?: 'overwrite' | 'merge' | 'ignore'): void; setProperties(properties: IServerEntityProperties, handleExisting?: 'overwrite' | 'merge' | 'ignore', options?: IServerEntityPropertiesOptions): void; setDamageSensor(sensor: IServerEntityDamageSensor, options?: IServerEntityDamageSensorOptions): void; setAnimations(animations: { [key: string]: ServerAnimationName | ServerACName; }, handleExisting?: 'overwrite' | 'merge' | 'ignore', options?: IServerEntityAnimationOptions): void; setAnimateScripts(...animations: (string | { [key: string]: string; })[]): void; hasFamilyTypes(...family: string[]): boolean; }