Posted January 23, 20223 yr I have tried for a long time now, but can't seem to figure out how to spawn a custom entity in a custom biome. I tried json, in the modbiomes folder and the modentitygeneration folder. Has anyone done this before and tell me how they've done it? Or maybe see if there's a fix for my code, have been stuck on this for a long while now. See code below. Note that any other mob is spawning fine in the biome, my other mobs (bandit here) spawn fine in other biomes. The entity I want to spawn in the custom biome (volcano monster), I've also tried to spawn in it in other vanilla biomes and it worked fine. public class ModEntityGeneration { //entities that spawn in specific biomes public static void onEntitySpawn(final BiomeLoadingEvent event) { RegistryKey key = RegistryKey.create(Registry.BIOME_REGISTRY, event.getName()); Set types = BiomeDictionary.getTypes(key); if (types.contains(BiomeDictionary.Type.PLAINS) || types.contains(BiomeDictionary.Type.HOT) || types.contains(BiomeDictionary.Type.COLD)) // Only spawns in plains { //Weight of spawn: 100, minimum: 4, max: 6 event.getSpawns().addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityInit.BANDIT.get(), 400, 3, 4)).build(); } if (event.getName().equals(ModBiomes.GRAND_MAGIC_ZONE_VOLCANO.get().getRegistryName())) { event.getSpawns().addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityInit.VOLCANO_MONSTER.get(), 600, 1, 2)).build(); } } //entities that spawn in specific structures public static void onEntitySpawnInStructure(final StructureSpawnListGatherEvent event) { if (event.getEntitySpawns().containsKey(EntityClassification.CREATURE)) { boolean isCamp = event.getStructure().equals(StructuresInit.BANDIT_CAMP.get()); if (isCamp) { event.addEntitySpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityInit.BANDIT.get(), 200, 5, 5)); } } } } public class ModBiomes { public static final DeferredRegister<Biome> BIOMES = DeferredRegister.create(ForgeRegistries.BIOMES, Main.MODID); public static final RegistryObject<Biome> GRAND_MAGIC_ZONE_VOLCANO = BIOMES.register("volcano_zone", () -> makeVolcanoBiome(() -> ModConfiguredSurfaceBuilders.GRAND_MAGIC_ZONE_VOLCANO, 0.18f, 0.15f)); private static Biome makeVolcanoBiome(final Supplier<ConfiguredSurfaceBuilder<?>> surfaceBuilder, float depth, float scale) { MobSpawnInfo.Builder mobspawninfo$builder = new MobSpawnInfo.Builder(); DefaultBiomeFeatures.farmAnimals(mobspawninfo$builder); DefaultBiomeFeatures.commonSpawns(mobspawninfo$builder); mobspawninfo$builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.BLAZE, 45, 7, 10)); //TODO make it generate mobspawninfo$builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityInit.VOLCANO_MONSTER.get(), 200, 1, 2)); mobspawninfo$builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityInit.VOLCANO_MONSTER.get(), 40, 1, 2)).build(); BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()).surfaceBuilder(surfaceBuilder); biomegenerationsettings$builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); DefaultBiomeFeatures.addDefaultCarvers(biomegenerationsettings$builder); DefaultBiomeFeatures.addDefaultMonsterRoom(biomegenerationsettings$builder); DefaultBiomeFeatures.addDefaultUndergroundVariety(biomegenerationsettings$builder); DefaultBiomeFeatures.addDefaultOres(biomegenerationsettings$builder); DefaultBiomeFeatures.addSwampClayDisk(biomegenerationsettings$builder); DefaultBiomeFeatures.addDefaultMushrooms(biomegenerationsettings$builder); DefaultBiomeFeatures.addDesertExtraVegetation(biomegenerationsettings$builder); biomegenerationsettings$builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); DefaultBiomeFeatures.addSurfaceFreezing(biomegenerationsettings$builder); return (new Biome.Builder()).precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.DESERT).depth(depth).scale(scale) .temperature(1.5F).downfall(0.9F).specialEffects((new BiomeAmbience.Builder()).waterColor(-3407872).waterFogColor(-16777216) .fogColor(-65536).skyColor(getSkyColorWithTemperatureModifier(0.8F)).foliageColorOverride(-3407872).grassColorOverride(-3407872) .ambientParticle(new ParticleEffectAmbience(ParticleTypes.LAVA, 0.003f)).skyColor(-65536) .ambientLoopSound(SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP) .ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_WARPED_FOREST_MOOD, 6000, 8, 2.0D)) .ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)) .backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.AMBIENT_NETHER_WASTES_LOOP)) .build()) .mobSpawnSettings(mobspawninfo$builder.build()).generationSettings(biomegenerationsettings$builder.build()).build(); } private static int getSkyColorWithTemperatureModifier(float temperature) { float lvt_1_1_ = temperature / 3.0F; lvt_1_1_ = MathHelper.clamp(lvt_1_1_, -1.0F, 1.0F); return MathHelper.hsvToRgb(0.2460909F - lvt_1_1_ * 0.05F, 0.5F + lvt_1_1_ * 0.1F, 1.0F); } public static void register(IEventBus eventBus) { BIOMES.register(eventBus); } } { "spawners": { "creature": [ { "type": "blackclover:volcano_monster", "weight": 40, "minCount": 2, "maxCount": 4 } ] } } First time on the forum, but I think I'm on the right place?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.