Class FinalizeSpawnEvent
- All Implemented Interfaces:
net.neoforged.bus.api.ICancellableEvent
Mob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
is called.This allows mods to control mob initialization.
In vanilla code, this event is injected by a transformer and not via patch, so calls cannot be traced via call hierarchy (it is not source-visible).
Canceling this event will result in Mob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
not being called, and the returned value always being null, instead of propagating the SpawnGroupData.
The entity will still be spawned. If you want to prevent the spawn, use setSpawnCancelled(boolean)
, which will cause Forge to prevent the spawn.
This event is fired on NeoForge.EVENT_BUS
, and is only fired on the logical server.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class net.neoforged.neoforge.event.entity.living.MobSpawnEvent
MobSpawnEvent.PositionCheck, MobSpawnEvent.SpawnPlacementCheck
Nested classes/interfaces inherited from class net.neoforged.neoforge.event.entity.EntityEvent
EntityEvent.EnteringSection, EntityEvent.EntityConstructing, EntityEvent.Size
-
Field Summary
Modifier and TypeFieldDescriptionprivate DifficultyInstance
private @Nullable SpawnGroupData
private final @Nullable com.mojang.datafixers.util.Either
<BlockEntity, Entity> private final MobSpawnType
-
Constructor Summary
ConstructorDescriptionFinalizeSpawnEvent
(Mob entity, ServerLevelAccessor level, double x, double y, double z, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable SpawnGroupData spawnData, @Nullable com.mojang.datafixers.util.Either<BlockEntity, Entity> spawner) -
Method Summary
Modifier and TypeMethodDescriptionRetrieves theDifficultyInstance
for the chunk where the mob is about to be spawned.@Nullable SpawnGroupData
Retrieves theSpawnGroupData
for this entity.@Nullable com.mojang.datafixers.util.Either
<BlockEntity, Entity> Retrieves the underlyingBlockEntity
orEntity
that performed the spawn.Retrieves the type of mob spawn that happened (the event that caused the spawn).boolean
Returns the current spawn cancellation status, which can be changed viasetSpawnCancelled(boolean)
.void
Sets the difficulty instance for this event, which will be propagated toMob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
unless cancelled.void
setSpawnCancelled
(boolean cancel) This method can be used to cancel the spawn of this mob.void
setSpawnData
(@Nullable SpawnGroupData data) Sets the spawn data for this entity.Methods inherited from class net.neoforged.neoforge.event.entity.living.MobSpawnEvent
getEntity, getLevel, getX, getY, getZ
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.neoforged.bus.api.ICancellableEvent
isCanceled, setCanceled
-
Field Details
-
spawnType
-
spawner
-
difficulty
-
spawnData
-
-
Constructor Details
-
FinalizeSpawnEvent
@Internal public FinalizeSpawnEvent(Mob entity, ServerLevelAccessor level, double x, double y, double z, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable @Nullable SpawnGroupData spawnData, @Nullable @Nullable com.mojang.datafixers.util.Either<BlockEntity, Entity> spawner)
-
-
Method Details
-
getDifficulty
Retrieves theDifficultyInstance
for the chunk where the mob is about to be spawned.- Returns:
- The local difficulty instance
-
setDifficulty
Sets the difficulty instance for this event, which will be propagated toMob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
unless cancelled. The difficulty instance controls how likely certain random effects are to occur, or if certain mob abilities are enabled.- Parameters:
inst
- The new difficulty instance.
-
getSpawnType
Retrieves the type of mob spawn that happened (the event that caused the spawn). The enum names are self-explanatory.- Returns:
- The mob spawn type.
- See Also:
-
getSpawnData
Retrieves theSpawnGroupData
for this entity. When spawning mobs in a loop, this group data is used for the entire group and impacts future spawns. This is how entities like horses ensure that the whole group spawns as a single variant. How this is used varies on a per-entity basis.- Returns:
- The spawn group data.
-
setSpawnData
Sets the spawn data for this entity. If this event is cancelled, this value is not used, sinceMob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
will not be called.- Parameters:
data
- The new spawn data- See Also:
-
getSpawner
Retrieves the underlyingBlockEntity
orEntity
that performed the spawn. This may be aSpawnerBlockEntity
,TrialSpawnerBlockEntity
,MinecartSpawner
, or similar modded object.This is usually null unless the
spawn type
is aspawner type
, and may still be null even then.- Returns:
- The spawner responsible for triggering the spawn, or null if none is available.
-
setSpawnCancelled
public void setSpawnCancelled(boolean cancel) This method can be used to cancel the spawn of this mob.This method must be used if you want to block the spawn, as canceling the event only blocks the call to
Mob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
.Note that if the spawn is cancelled, but the event is not, then
Mob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.MobSpawnType, net.minecraft.world.entity.SpawnGroupData)
will still be called, but the entity will not be spawned. Usually that has no side effects, but callers should be aware.- Parameters:
cancel
- If the spawn should be cancelled (or not).
-
isSpawnCancelled
public boolean isSpawnCancelled()Returns the current spawn cancellation status, which can be changed viasetSpawnCancelled(boolean)
.- Returns:
- If this mob's spawn is cancelled or not.
-