Bir varlık yumurtlama

Uyarı

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!

Yumurtlamak için üç şey gerekecek :javadoc:`Varlık' :javadoc:`Location` Extent ve bir EntityType. Bunları alma süreci oldukça basit, sadece eklenti kodunuzdaki bir yerden bir Location’a koymanızve yumurtlamak istediğiniz Entity türünü seçmeniz gerekiyor.

Örneğin, Creeper(karakter) yumurtlayalım:

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

Bu, dünyayı gerçek yumurtlama için ihtiyacımız olan Location’a kapacaktır. Sonra, EntityUniverse#createEntity(EntityType, Vector3d) öğesini oluşturmak için kullanır, ancak bunun varlığı dünyaya teşvik etmediğini unutmayın, yalnızca onu oluşturacaktır. Yumurtlamak için Entity türünü ve Location koordinatlarını belirtmemiz gerekecek.

Once we have created our Entity we can then use the world for spawning the Entity. We should specify a Cause for the spawning so other plugins can handle it accordingly. For spawning Entitys, it is best to use a SpawnType as part of the context. In this example, we stated that our entity was spawned from a plugin, however we can make it any cause/context that best describes why we are spawning this in, such as a mob spawner (See SpawnTypes#MOB_SPAWNER), or spawn egg (See SpawnTypes#SPAWN_EGG).