Skip to content

Aparición e IA de mobs 5.46.0 ​

VanillaMine hace aparecer los mobs como Bedrock. Los plugins pueden saber por qué existe un mob, impedir apariciones antes de que ocurran y decidir a quién atacan los mobs. La API usa los mismos nombres que Paper para que resulte familiar.

API: SpawnReason, Living::getSpawnReason(), MobPreSpawnEvent, EntityNaturalSpawnEvent, EntityTargetEvent.

Por qué existe un mob ​

php
use pocketmine\entity\SpawnReason;

$reason = $entity->getSpawnReason(); // p. ej. SpawnReason::NATURAL, SPAWN_EGG, SPAWNER, BREEDING, RAID…

Valores: default, natural, structure, wandering_trader, village_cat, patrol, raid, spawn_egg, spawner, breeding, custom. SpawnReason::NATURAL_REASONS contiene los naturales. Los mobs de clases de plugins son custom; los plugins pueden poner cualquier texto con setSpawnReason(). El motivo se guarda con el mob.

Impedir apariciones ​

MobPreSpawnEvent se lanza antes de que el sistema de aparición natural cree un mob o una manada. Todavía no existe nada, así que cancelar no cuesta nada: úsalo para controlar las apariciones (regiones, mundos, límites por tipo).

php
use pocketmine\event\entity\MobPreSpawnEvent;

public function onPreSpawn(MobPreSpawnEvent $event) : void{
	if($event->getEntityIdentifier() === "minecraft:phantom"){
		$event->cancel();
	}
	// $event->getPosition(), $event->getReason()
}

EntityNaturalSpawnEvent se lanza después de crear el mob y antes de que lo vean los jugadores (aparición natural, estructuras, comerciantes errantes, gatos de aldea). Cancelarlo elimina el mob. Úsalo cuando necesites la entidad.

Elegir objetivos ​

EntityTargetEvent se lanza cuando un mob elige un nuevo objetivo al que atacar. Cancélalo para dejar al mob sin objetivo, o cambia el objetivo.

php
use pocketmine\event\entity\EntityTargetEvent;

public function onTarget(EntityTargetEvent $event) : void{
	if($event->getTarget() instanceof MyNpc){
		$event->cancel();
	}
}

Plugins que hacen aparecer sus propios mobs ​

AjustePor defectoEfecto
mobs.spawning.count-all-mobs-for-spawningtrueTodos los mobs no persistentes cuentan para los límites de población, también los de huevos, generadores, reproducción y plugins. false = solo los naturales (como Paper con false).
mobs.spawning.spawn-limits.<tipo>-1Límites por cada 9×9 chunks para animal, monster, ambient, water_animal, pillager. -1 = vanilla (4, 8 en superficie / 16 bajo tierra, 2 bajo tierra, 36, 8). Un valor sustituye a la vez el límite de superficie y el subterráneo.
mobs.ignore-plugin-npcstrueLos mobs nunca atacan a los NPC de plugins: entidades vivas de clases de plugins que tienen nombre, están quietas para los clientes o no se guardan con el mundo.
mobs.spawning.enabledtruefalse desactiva la aparición natural y deja la aparición en manos de tu plugin.

Los mobs persistentes y los NPC de plugins nunca cuentan para los límites.

VanillaMine es un fork de PocketMine-MP mantenido por Luxury Nodes. Sin relación con el equipo de PMMP ni con Mojang.