Edit

EntityQueryOptions Interface

Extends

Contains options for selecting entities within an area.

Properties

closest

closest?: number;

Limits the number of entities to return, opting for the closest N entities as specified by this property. The location value must also be specified on the query options object.

Type: number

farthest

farthest?: number;

Limits the number of entities to return, opting for the farthest N entities as specified by this property. The location value must also be specified on the query options object.

Type: number

location

location?: Vector3;

Adds a seed location to the query that is used in conjunction with closest, farthest, limit, volume, and distance properties.

Type: Vector3

maxDistance

maxDistance?: number;

If specified, includes entities that are less than this distance away from the location specified in the location property.

Type: number

minDistance

minDistance?: number;

If specified, includes entities that are least this distance away from the location specified in the location property.

Type: number

volume

volume?: Vector3;

In conjunction with location, specified a cuboid volume of entities to include.

Type: Vector3

Examples

blockConditional.ts
import { DimensionLocation } from '@minecraft/server';

function blockConditional(targetLocation: DimensionLocation) {
  targetLocation.dimension
    .getEntities({
      type: 'fox',
    })
    .filter(entity => {
      const block = targetLocation.dimension.getBlock({
        x: entity.location.x,
        y: entity.location.y - 1,
        z: entity.location.z,
      });

      return block !== undefined && block.matches('minecraft:stone');
    })
    .forEach(entity => {
      targetLocation.dimension.spawnEntity('salmon', entity.location);
    });
}

(preview) Work with this sample on the MCTools.dev code sandbox.

findEntitiesHavingPropertyEqualsTo.ts
import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';

function findEntitiesHavingPropertyEqualsTo(targetLocation: DimensionLocation) {
  // Minecraft bees have a has_nectar boolean property
  const queryOption: EntityQueryOptions = {
    propertyOptions: [{ propertyId: 'minecraft:has_nectar', value: { equals: true } }],
  };

  const entities = targetLocation.dimension.getEntities(queryOption);
}

(preview) Work with this sample on the MCTools.dev code sandbox.

playSoundChained.ts
import { DimensionLocation } from '@minecraft/server';

function playSoundChained(targetLocation: DimensionLocation) {
  const targetPlayers = targetLocation.dimension.getPlayers();
  const originEntities = targetLocation.dimension.getEntities({
    type: 'armor_stand',
    name: 'myArmorStand',
    tags: ['dummyTag1'],
    excludeTags: ['dummyTag2'],
  });

  originEntities.forEach(entity => {
    targetPlayers.forEach(player => {
      player.playSound('raid.horn');
    });
  });
}

(preview) Work with this sample on the MCTools.dev code sandbox.

setScoreboardChained.ts
import { world, DimensionLocation } from '@minecraft/server';

function setScoreboardChained(targetLocation: DimensionLocation) {
  const objective = world.scoreboard.addObjective('scoreObjective1', 'dummy');
  targetLocation.dimension
    .getEntities({
      type: 'armor_stand',
      name: 'myArmorStand',
    })
    .forEach(entity => {
      if (entity.scoreboardIdentity !== undefined) {
        objective.setScore(entity.scoreboardIdentity, -1);
      }
    });
}

(preview) Work with this sample on the MCTools.dev code sandbox.

summonMobChained.ts
import { DimensionLocation } from '@minecraft/server';

function summonMobChained(targetLocation: DimensionLocation) {
  const armorStandArray = targetLocation.dimension.getEntities({
    type: 'armor_stand',
  });
  const playerArray = targetLocation.dimension.getPlayers({
    location: { x: 0, y: -60, z: 0 },
    closest: 4,
    maxDistance: 15,
  });
  armorStandArray.forEach(entity => {
    playerArray.forEach(player => {
      targetLocation.dimension.spawnEntity('pig', {
        x: player.location.x + 1,
        y: player.location.y,
        z: player.location.z,
      });
    });
  });
}

(preview) Work with this sample on the MCTools.dev code sandbox.

bounceSkeletons.ts
import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';

function bounceSkeletons(targetLocation: DimensionLocation) {
  const mobs = ['creeper', 'skeleton', 'sheep'];

  // create some sample mob data
  for (let i = 0; i < 10; i++) {
    targetLocation.dimension.spawnEntity(mobs[i % mobs.length], targetLocation);
  }

  const eqo: EntityQueryOptions = {
    type: 'skeleton',
  };

  for (const entity of targetLocation.dimension.getEntities(eqo)) {
    entity.applyKnockback(0, 0, 0, 1);
  }
}

(preview) Work with this sample on the MCTools.dev code sandbox.

tagsQuery.ts
import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';

function tagsQuery(targetLocation: DimensionLocation) {
  const mobs = ['creeper', 'skeleton', 'sheep'];

  // create some sample mob data
  for (let i = 0; i < 10; i++) {
    const mobTypeId = mobs[i % mobs.length];
    const entity = targetLocation.dimension.spawnEntity(mobTypeId, targetLocation);
    entity.addTag('mobparty.' + mobTypeId);
  }

  const eqo: EntityQueryOptions = {
    tags: ['mobparty.skeleton'],
  };

  for (const entity of targetLocation.dimension.getEntities(eqo)) {
    entity.kill();
  }
}

(preview) Work with this sample on the MCTools.dev code sandbox.

testThatEntityIsFeatherItem.ts
import { EntityItemComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';

function testThatEntityIsFeatherItem(
  log: (message: string, status?: number) => void,
  targetLocation: DimensionLocation
) {
  const items = targetLocation.dimension.getEntities({
    location: targetLocation,
    maxDistance: 20,
  });

  for (const item of items) {
    const itemComp = item.getComponent(EntityComponentTypes.Item) as EntityItemComponent;

    if (itemComp) {
      if (itemComp.itemStack.typeId.endsWith('feather')) {
        log('Success! Found a feather', 1);
      }
    }
  }
}

(preview) Work with this sample on the MCTools.dev code sandbox.