Спавн Сущности
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
спавна. Для спавна Entity
s, лучше всего использовать SpawnCause в качестве корневой причины. В этом примере мы заявили что наша сущность была заспавнена из плагина, однако мы можем сделать любую причину, которая наилучшим образом описывает, почему мы спавним её, например спавнер мобов (Смотрите MobSpawnerSpawnCause), или яйцо призыва (Смотрите: EntitySpawnCause).