接口 EntityQueryOptions实验性

Contains options for selecting entities within an area.

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);
});
}
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);
}
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");
});
});
}
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);
}
});
}
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,
});
});
});
}
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);
}
}
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();
}
}
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);
}
}
}
}
interface EntityQueryOptions {
    closest?: number;
    excludeFamilies?: string[];
    excludeGameModes?: GameMode[];
    excludeNames?: string[];
    excludeTags?: string[];
    excludeTypes?: string[];
    families?: string[];
    farthest?: number;
    gameMode?: GameMode;
    location?: Vector3;
    maxDistance?: number;
    maxHorizontalRotation?: number;
    maxLevel?: number;
    maxVerticalRotation?: number;
    minDistance?: number;
    minHorizontalRotation?: number;
    minLevel?: number;
    minVerticalRotation?: number;
    name?: string;
    propertyOptions?: EntityQueryPropertyOptions[];
    scoreOptions?: EntityQueryScoreOptions[];
    tags?: string[];
    type?: string;
    volume?: Vector3;
}

层级 (查看完整内容)

属性

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.

excludeFamilies?: string[]

Excludes entities that match one or more of the specified families.

excludeGameModes?: GameMode[]

Excludes entities if have a specific gamemode that matches the specified gamemode.

excludeNames?: string[]

Excludes entities that have a name that match one of the specified values.

excludeTags?: string[]

Excludes entities with a tag that matches one of the specified values.

excludeTypes?: string[]

Excludes entities if they are one of the specified types.

families?: string[]

If specified, includes entities that match all of the specified families.

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.

gameMode?: GameMode

If specified, includes entities with a gamemode that matches the specified gamemode.

location?: Vector3

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

maxDistance?: number

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

maxHorizontalRotation?: number

If specified, will only include entities that have at most this horizontal rotation.

maxLevel?: number

If defined, only players that have at most this level are returned.

maxVerticalRotation?: number

If specified, only entities that have at most this vertical rotation are returned.

minDistance?: number

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

minHorizontalRotation?: number

If specified, will only include entities that have at a minimum this horizontal rotation.

minLevel?: number

If defined, only players that have at least this level are returned.

minVerticalRotation?: number

If specified, will only include entities that have at least this vertical rotation.

name?: string

Includes entities with the specified name.

propertyOptions?: EntityQueryPropertyOptions[]
scoreOptions?: EntityQueryScoreOptions[]

Gets/sets a collection of EntityQueryScoreOptions objects with filters for specific scoreboard objectives.

tags?: string[]

Includes entities that match all of the specified tags.

type?: string

If defined, entities that match this type are included.

volume?: Vector3

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