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