Invoquer une Entité
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
de quelque part dans le code de votre plugin et choisir le type d”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.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());
}
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 ensuite utiliser le monde pour faire apparaître l”Entity
. Nous aurons besoin de spécifier une Cause
pour l’apparition. Pour faire apparaître des Entity
s, il est préférable d’utiliser un SpawnCause comme la racine de la cause. Dans cet exemple, nous avons déclaré que notre entité est apparue depuis un plugin, cependant nous pouvons mettre n’importe quel autre cause qui décrirait le mieux pourquoi on fait apparaître ceci, comme avec un mob spawner (Voir MobSpawnerSpawnCause), ou un oeuf de créature (Voir EntitySpawnCause).