Spawnen eines Entitys

Wenn du ein Entity spawnen möchtest, benötigst du drei Dinge: Eine Location, ein Extent und einen EntityType. Der Weg all dies zu bekommen, ist recht einfach, du musst nur eine Location irgendwo in deinem Plugin Code auftreiben und den Typ der Entity auswählen, den du spawnen möchtest.

Zum Beispiel könnten wir versuchen einen Creeper zu spawnen:

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

Dies holt die Welt von deiner Location, die wir für den eigentlichen Spawn-Prozess benötigen. Als nächstes verwenden wir EntityUniverse#createEntity(EntityType, Vector3d) um die Entity zu überzeugen. Bitte beachte, dass dies die Entity noch nicht in der Welt spawnt, sondern nur erzeugt. Wir müssen hierfür die Art der Entity angeben, die wie spawnen möchten, sowie die Koordinaten unserer Location`.

Sobald wir eine Entity erstellt haben, können wir die Welt benutzen um Entity` zu spawnen. Für das Spawnen müssen wir zudem einen Grund (Cause) angeben. Zum Spawnen von `` Entity``s ist es am Besten, wenn einen SpawnCause als Quellursache verwendet. In diesem Beispiel geben wir an, dass unsere Entity durch ein Plugin gespawnt wurde, aber wir können hier jeglichen Grund angeben, der am Besten beschreibt, warum wir diese spawnen, beispielsweise ein Monsterspawner (Siehe MobSpawnerSpawnCause), oder ein Spawnei (Siehe EntitySpawnCause).