Spawnowanie Entity (Moba)

You will need four things for spawning in 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.

Na przykład, spróbujmy zespawnować Creeper’a:

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());
}

Spowoduje to przechwycenie świata z naszego Location, którego będziemy potrzebować do faktycznego spawnu. Następnie używamy EntityUniverse#createEntity(EntityType, Vector3d) do utworzenia encji, ale pamiętaj, że to jeszcze nie powoduje pojawienia się obiektu w świecie, tylko po prostu go stworzy. Będziemy musieli określić typ Entity, aby ją zespawnować, oraz wyciągnąć współrzędne z naszego Location.

Once we have created our Entity we can then use the world for spawning the Entity. We will need to specify a Cause for the spawning. For spawning Entitys, it is best to use a SpawnCause as the root of the cause. In this example, we stated that our entity was spawned from a plugin, however we can make it any cause that best describes why we are spawning this in, such as a mob spawner (See MobSpawnerSpawnCause), or spawn egg (See EntitySpawnCause).