类 MobSpawnEvent.FinalizeSpawn
- 封闭类:
MobSpawnEvent
Mob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.EntitySpawnReason, 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.EntitySpawnReason, 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 MinecraftForge.EVENT_BUS
, and is only fired on the logical server.
- 另请参阅:
- API Note:
- Callers do not need to check if the entity's spawn was cancelled, as the spawn will be blocked by Forge.
-
嵌套类概要
从类继承的嵌套类/接口 net.minecraftforge.event.entity.living.MobSpawnEvent
MobSpawnEvent.AllowDespawn, MobSpawnEvent.FinalizeSpawn, MobSpawnEvent.PositionCheck, MobSpawnEvent.SpawnPlacementCheck
从类继承的嵌套类/接口 net.minecraftforge.event.entity.EntityEvent
EntityEvent.EnteringSection, EntityEvent.EntityConstructing
从类继承的嵌套类/接口 net.minecraftforge.eventbus.api.Event
net.minecraftforge.eventbus.api.Event.HasResult, net.minecraftforge.eventbus.api.Event.Result
-
字段概要
字段修饰符和类型字段说明private DifficultyInstance
private @Nullable SpawnGroupData
private final @Nullable BaseSpawner
private final EntitySpawnReason
private @Nullable CompoundTag
-
构造器概要
构造器构造器说明FinalizeSpawn
(Mob entity, ServerLevelAccessor level, double x, double y, double z, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnData, @Nullable CompoundTag spawnTag, @Nullable BaseSpawner spawner) -
方法概要
修饰符和类型方法说明Retrieves theDifficultyInstance
for the chunk where the mob is about to be spawned.@Nullable SpawnGroupData
Retrieves theSpawnGroupData
for this entity.@Nullable BaseSpawner
Retrieves the underlyingBaseSpawner
instance if this mob was created by a Mob Spawner of some form.Retrieves the type of mob spawn that happened (the event that caused the spawn).@Nullable CompoundTag
This is the NBT data the entity was loaded from, if applicable.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.EntitySpawnReason, 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.void
setSpawnTag
(@Nullable CompoundTag tag) Sets the spawn data for this event, which will be propagated toMob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.EntitySpawnReason, net.minecraft.world.entity.SpawnGroupData)
unless cancelled.从类继承的方法 net.minecraftforge.eventbus.api.Event
getListenerList, getPhase, getResult, hasResult, isCancelable, isCanceled, setCanceled, setPhase, setResult
-
字段详细资料
-
spawnReason
-
spawner
-
difficulty
-
spawnData
-
spawnTag
-
-
构造器详细资料
-
FinalizeSpawn
@Internal public FinalizeSpawn(Mob entity, ServerLevelAccessor level, double x, double y, double z, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable @Nullable SpawnGroupData spawnData, @Nullable @Nullable CompoundTag spawnTag, @Nullable @Nullable BaseSpawner spawner) - API Note:
- Do not construct directly. Access via
ForgeEventFactory.onFinalizeSpawn(net.minecraft.world.entity.Mob, net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.EntitySpawnReason, net.minecraft.world.entity.SpawnGroupData)
/ForgeEventFactory.onFinalizeSpawnSpawner(net.minecraft.world.entity.Mob, net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.SpawnGroupData, net.minecraft.nbt.CompoundTag, net.minecraft.world.level.BaseSpawner)
.
-
-
方法详细资料
-
getDifficulty
Retrieves theDifficultyInstance
for the chunk where the mob is about to be spawned.- 返回:
- 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.EntitySpawnReason, 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.- 参数:
inst
- The new difficulty instance.
-
getSpawnReason
Retrieves the type of mob spawn that happened (the event that caused the spawn). The enum names are self-explanatory.- 返回:
- The mob spawn type.
- 另请参阅:
-
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.- 返回:
- 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.EntitySpawnReason, net.minecraft.world.entity.SpawnGroupData)
will not be called.- 参数:
data
- The new spawn data- 另请参阅:
-
getSpawnTag
This is the NBT data the entity was loaded from, if applicable. It is unknown if the entity has already been loaded from this data, or if it will be loaded later. Callers should not modify this data. If you need to change the data, you can create a copy, modify it, and set it viasetSpawnTag(net.minecraft.nbt.CompoundTag)
- 返回:
- The spawn data this entity was or will be loaded from, if any.
-
setSpawnTag
Sets the spawn data for this event, which will be propagated toMob.finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor, net.minecraft.world.DifficultyInstance, net.minecraft.world.entity.EntitySpawnReason, net.minecraft.world.entity.SpawnGroupData)
unless cancelled. The only vanilla mob known to use this tag for anything in finalize is tropical fish for setting the variant when spawned via bucket.- 参数:
tag
- The new spawn tag
-
getSpawner
Retrieves the underlyingBaseSpawner
instance if this mob was created by a Mob Spawner of some form. This is always null unlessgetSpawnReason()
isEntitySpawnReason.SPAWNER
, and may still be null even then.- 返回:
- The BaseSpawner 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.EntitySpawnReason, 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.EntitySpawnReason, 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.- 参数:
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)
.- 返回:
- If this mob's spawn is cancelled or not.
- Implementation Note:
- This is enforced in
ForgeInternalHandler.builtinMobSpawnBlocker(net.minecraftforge.event.entity.EntityJoinLevelEvent)
and a patch in引用无效
WorldGenRegion#addEntity
-