Invoquer une Entité
Avertissement
These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!
Vous aurez besoin de trois choses pour faire apparaître une Entity : Une Location, un Extent et un EntityType. Le processus pour les obtenir est assez simple, vous devez simplement récupérer une Location
depuis un endroit dans le code de votre plugin et choisir le type de l” Entity
que vous souhaitez faire apparaître.
Par exemple, essayons d’invoquer un Creeper :
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.EntityTypes;
import org.spongepowered.api.event.CauseStackManager.StackFrame;
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());
// We need to push a new cause StackFrame to the stack so we can add our own causes
// In previous versions of the API you had to submit a Cause parameter
// that would often not contain the real root cause
// By default the current plugin's PluginContainer is already pushed to the stack.
try (StackFrame frame = Sponge.getCauseStackManager().pushCauseFrame()) {
frame.addContext(EventContextKeys.SPAWN_TYPE, SpawnTypes.PLUGIN);
world.spawnEntity(creeper);
}
}
Cela va récupérer le monde de notre Location
, dont nous aurons besoin pour l’apparition. Ensuite, il utilise EntityUniverse#createEntity(EntityType, Vector3d) pour créer l’entité, mais notez que ça ne va pas faire apparaître l’entité dans le monde, seulement la créer. Nous devrons spécifier le type de notre Entity
à faire apparaître, et les coordonnées de notre Location
.
Une fois que nous avons créé notre Entity
, nous pouvons utiliser le monde pour faire apparaître cette Entity
. Nous aurons besoin de spécifier une Cause
pour l’apparition, pour que les autres plugins puissent la gérer en conséquence. Pour faire apparaître des Entity
s, il est préférable d’utiliser un SpawnType dans le contexte. Dans cet exemple, nous avons déclaré que c’est un plugin qui a fait apparaître l’entité, mais nous pouvons mettre n’importe quel autre cause/contexte qui décrirait au mieux pourquoi on la fait apparaître, par exemple avec un mob spawner (Voir SpawnTypes#MOB_SPAWNER), ou un oeuf de créature (Voir SpawnTypes#SPAWN_EGG).