Hello. I tried to add what the link was asking for and I added the json file, but it doesn't work, on the contrary: it deletes every mob in my world.
These are the various files:
BiomeInit:
package com.loris.tutorialmod.init;
import com.loris.tutorialmod.ExampleBiomeModifier;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.minecraftforge.common.world.BiomeModifier;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class BiomeInit {
static DeferredRegister<Codec<? extends BiomeModifier>> BIOME_MODIFIER_SERIALIZERS =
DeferredRegister.create(ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, "tutorialmod");
public static RegistryObject<Codec<ExampleBiomeModifier>> EXAMPLE_CODEC = BIOME_MODIFIER_SERIALIZERS.register("example", () ->
RecordCodecBuilder.create(builder -> builder.group(
// declare fields
Biome.LIST_CODEC.fieldOf("biomes").forGetter(ExampleBiomeModifier::biomes),
PlacedFeature.CODEC.fieldOf("feature").forGetter(ExampleBiomeModifier::feature)
// declare constructor
).apply(builder, ExampleBiomeModifier::new)));
}
ExampleBiomeModifier:
package com.loris.tutorialmod;
import com.loris.tutorialmod.init.BiomeInit;
import com.mojang.serialization.Codec;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.minecraftforge.common.world.BiomeModifier;
import net.minecraftforge.common.world.ModifiableBiomeInfo.BiomeInfo.Builder;
public record ExampleBiomeModifier(HolderSet<Biome> biomes, Holder<PlacedFeature> feature) implements BiomeModifier
{
public void modify(Holder<Biome> biome, Phase phase, Builder builder)
{
// add a feature to all specified biomes
if (phase == Phase.ADD && biomes.contains(biome)) {
}
}
@Override
public Codec<? extends BiomeModifier> codec() {
// TODO Auto-generated method stub
return BiomeInit.EXAMPLE_CODEC.get();
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return false;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return null;
}
}
biome_modifier_serializers.json (I'm not sure it should be called that, is that the problem?):
{
"type": "forge:add_spawns",
"biomes": "#tutorialmod:is_overworld",
"spawners":
{
"type": "tutorialmod:raccoon", // Type of mob to spawn
"weight": 100, // int, spawn weighting
"minCount": 1, // int, minimum pack size
"maxCount": 4 // int, maximum pack size
}
}
Could you help me?