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