Spawnowanie Entity (Moba)
Potrzebujesz trzech rzeczy do stworzenia :javadoc:`Enity`: Location, Extent, oraz EntityType. Proces ich uzyskiwania jest dość prosty, musisz po prostu pozyskać Location
gdzieś w swoim pluginie i wybrać typ Entity
który chcesz stworzyć.
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 Entity
s, 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).