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

You will need three things for spawning an Entity: a Location, an Extent, and an EntityType. The process for getting these is quite simple, you just need to grab a Location from somewhere in your plugin code and choose the type of Entity you wish to spawn.

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

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).