Спавн Сущности

Вам потребуется четыре вещи для спавна :javadoc: Entity, :javadoc: Location, Extent, и EntityType. Процесс получения довольно простой, вам всего лишь нужно получить Location откуда-нибудь в коде вашего плагина и выбрать тип Entity который вы хотите заспавнить.

Например, давайте попытаемся заспавнить Крипера:

import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.EntityTypes;
import org.spongepowered.api.event.cause.Cause;
import org.spongepowered.api.event.cause.entity.spawn.SpawnCause;
import org.spongepowered.api.event.cause.entity.spawn.SpawnTypes;
import org.spongepowered.api.world.Location;
import org.spongepowered.api.world.World;

import java.util.Optional;

public void spawnEntity(Location<World> spawnLocation) {
    World world = spawnLocation.getExtent();
    Entity creeper = world
        .createEntity(EntityTypes.CREEPER, spawnLocation.getPosition());
    SpawnCause spawnCause = SpawnCause.builder().type(SpawnTypes.PLUGIN).build();
    world.spawnEntity(creeper, Cause.source(spawnCause).build());
}

Этот код будет брать мир из Location, который будет нам нужен для спавна. Далее, он использует EntityUniverse#createEntity(EntityType, Vector3d) для создания сущности, но уточним, что это не спавнит сущность в мире, он просто создает его. Нам требуется указать тип Entity для спавна и координаты из Location.

После того как мы создали Entity мы можем использовать мир для спавна Entity. Нам нужно указать Cause спавна. Для спавна Entitys, лучше всего использовать SpawnCause в качестве корневой причины. В этом примере мы заявили что наша сущность была заспавнена из плагина, однако мы можем сделать любую причину, которая наилучшим образом описывает, почему мы спавним её, например спавнер мобов (Смотрите MobSpawnerSpawnCause), или яйцо призыва (Смотрите: EntitySpawnCause).