Class SpawnPlacementRegisterEvent
java.lang.Object
net.neoforged.bus.api.Event
net.neoforged.neoforge.event.entity.SpawnPlacementRegisterEvent
- All Implemented Interfaces:
net.neoforged.fml.event.IModBusEvent
public class SpawnPlacementRegisterEvent
extends net.neoforged.bus.api.Event
implements net.neoforged.fml.event.IModBusEvent
This event allows each
EntityType to have a SpawnPlacements.SpawnPredicate registered or modified.
Spawn Predicates are checked whenever an Entity of the given EntityType spawns in the world naturally.
If registering your own entity's spawn placements, you should use register(EntityType, SpawnPlacementType, Heightmap.Types, SpawnPlacements.SpawnPredicate, Operation)
So that you ensure that your entity has a heightmap type and placement type registered.
If modifying vanilla or another mod's spawn placements, you can use three operations:
REPLACE: checked first, the last mod to replace the predicate wipes out all other predicates. Listen with a low EventPriority if you need to do this.
OR: checked second, only one of these predicates must pass along with the original predicate
AND: checked third, these predicates must all pass along with the original predicate
This event is not cancellable and does not
.
invalid reference
have a result
Fired on the Mod bus IModBusEvent.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic enum -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<EntityType<?>, SpawnPlacementRegisterEvent.MergedSpawnPredicate<?>> -
Constructor Summary
ConstructorsConstructorDescriptionSpawnPlacementRegisterEvent(Map<EntityType<?>, SpawnPlacementRegisterEvent.MergedSpawnPredicate<?>> map) -
Method Summary
Modifier and TypeMethodDescription<T extends Entity>
voidregister(EntityType<T> entityType, @Nullable SpawnPlacementType placementType, Heightmap.Types heightmap, SpawnPlacements.SpawnPredicate<T> predicate, SpawnPlacementRegisterEvent.Operation operation) Register apredicatefor a givenentityTypeandoperationWith the option of changing theplacementTypeandheightmap.<T extends Entity>
voidregister(EntityType<T> entityType, SpawnPlacements.SpawnPredicate<T> predicate) Register an optional spawn placementpredicatefor a givenentityType<T extends Entity>
voidregister(EntityType<T> entityType, SpawnPlacements.SpawnPredicate<T> predicate, SpawnPlacementRegisterEvent.Operation operation) Register apredicatefor a givenentityTypewith a givenoperationfor handling
-
Field Details
-
map
-
-
Constructor Details
-
SpawnPlacementRegisterEvent
@Internal public SpawnPlacementRegisterEvent(Map<EntityType<?>, SpawnPlacementRegisterEvent.MergedSpawnPredicate<?>> map)
-
-
Method Details
-
register
public <T extends Entity> void register(EntityType<T> entityType, SpawnPlacements.SpawnPredicate<T> predicate) Register an optional spawn placementpredicatefor a givenentityType -
register
public <T extends Entity> void register(EntityType<T> entityType, SpawnPlacements.SpawnPredicate<T> predicate, SpawnPlacementRegisterEvent.Operation operation) Register apredicatefor a givenentityTypewith a givenoperationfor handling -
register
public <T extends Entity> void register(EntityType<T> entityType, @Nullable @Nullable SpawnPlacementType placementType, @Nullable Heightmap.Types heightmap, SpawnPlacements.SpawnPredicate<T> predicate, SpawnPlacementRegisterEvent.Operation operation) Register apredicatefor a givenentityTypeandoperationWith the option of changing theplacementTypeandheightmap. These are only applied ifSpawnPlacementRegisterEvent.Operation.REPLACEis used. Usenullfor the placement or heightmap to leave them as is (which should be done in almost every case)
-