[add] mob spawning

This commit is contained in:
2026-09-28 11:34:15 +02:00
parent dab4010d6c
commit 5a24ad98ba
16 changed files with 370 additions and 0 deletions
@@ -0,0 +1,47 @@
package ovh.glitchlabs.masterwild.event;
import net.minecraft.world.entity.SpawnPlacementTypes;
import net.minecraft.world.entity.animal.Animal;
import net.minecraft.world.entity.animal.WaterAnimal;
import net.minecraft.world.level.levelgen.Heightmap;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.event.entity.RegisterSpawnPlacementsEvent;
import ovh.glitchlabs.masterwild.Masterwild;
import ovh.glitchlabs.masterwild.entity.ModEntities;
@EventBusSubscriber(modid = Masterwild.MODID)
public class ModSpawnPlacements {
@SubscribeEvent
public static void registerSpawnPlacements(RegisterSpawnPlacementsEvent event) {
event.register(ModEntities.RACCOON.get(), SpawnPlacementTypes.ON_GROUND,
Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules,
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.PINGUIN.get(), SpawnPlacementTypes.ON_GROUND,
Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules,
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.ROOSTER.get(), SpawnPlacementTypes.ON_GROUND,
Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules,
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.HEDGEHOG.get(), SpawnPlacementTypes.ON_GROUND,
Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules,
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.RED_PANDA.get(), SpawnPlacementTypes.ON_GROUND,
Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Animal::checkAnimalSpawnRules,
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.SHARK.get(), SpawnPlacementTypes.IN_WATER,
Heightmap.Types.OCEAN_FLOOR, WaterAnimal::checkSurfaceWaterAnimalSpawnRules,
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.FIREFLY.get(), SpawnPlacementTypes.NO_RESTRICTIONS,
Heightmap.Types.MOTION_BLOCKING,
(type, level, reason, pos, random) -> level.getLevel().isNight() && level.canSeeSky(pos),
RegisterSpawnPlacementsEvent.Operation.OR);
event.register(ModEntities.BUTTERFLY.get(), SpawnPlacementTypes.NO_RESTRICTIONS,
Heightmap.Types.MOTION_BLOCKING,
(type, level, reason, pos, random) -> level.getLevel().isDay() && level.canSeeSky(pos),
RegisterSpawnPlacementsEvent.Operation.OR);
}
}