Как изменить генерацию ванильных руд?

Версия Minecraft
1.15.2
75
1
2
Хочу переработать генерацию из мелких жил в редкие, но большие. Как изменить генерацию железа/золота или как удалить ванильную генерацию чтоб заменить своей?
 
7,099
324
1,510
Можно зарегистрировать свою фичу с registry name ванильной, тогда она ее перезапишет
 
7,099
324
1,510
Это такой ResourceLocation, который служит удобным идентификатором регистрируемым объектам

Пример перезапили ванильного эндерняка на свой (для 1.12.2, но концептуально ничем не отличается):
 
7,099
324
1,510
Зарегать свою фичу генерации с тем же registryc name, что и ванильная руда
 
75
1
2
Вот моя генерация железной руды. Работает, генерируется как было задумано, но все равно остается также и старая генерация. Как именно нужно зарегистрировать свою генерацию чтоб не просто добавить ее к фичам биома а заменить ей старую?

Java:
@Mod.EventBusSubscriber(modid = PetyasMod.MODID)
public class IronOre {

    private static ConfiguredFeature oreConfiguredFeature;

    private static ConfiguredFeature oreConfiguredFeature() {
        if (oreConfiguredFeature == null) {
            oreConfiguredFeature = new OreFeature(OreFeatureConfig::deserialize) {
                @Override
                public boolean place(IWorld worldIn, ChunkGenerator generator, Random rand, BlockPos pos, OreFeatureConfig config) {
                    if(rand.nextInt(64) == 2)
                        return super.place(worldIn, generator, rand, pos, config);
                    else
                        return false;
                }
            }.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, Blocks.IRON_ORE.getDefaultState(), 128))
                    .withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(1, 0, 0, 120)));
        }

        return oreConfiguredFeature;
    }

    @SubscribeEvent
    public static void registerOreAtBiomes(FMLCommonSetupEvent event) {
        for(Biome biome : ForgeRegistries.BIOMES)
            if (!biome.getCategory().equals(Biome.Category.NETHER) && !biome.getCategory().equals(Biome.Category.THEEND)) {
                biome.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, oreConfiguredFeature());
            }
    }


}
 
7,099
324
1,510
Хм, ок, это немного не то
Вот эта штука добавляет твою фичу куда-то в кишки биома. Нужно посмотреть куда, залезть туда и удалить ванильную фичу руды
 
75
1
2
Вот, нашел, кажется. Класс DefaultBiomeFeatures. Как теперь эту фичу изменить/удалить? Метод статический, значит @Override не пройдет.
Java:
public static void addOres(Biome biomeIn) {
      biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, COAL_ORE, 17)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(20, 0, 0, 128))));
      biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, IRON_ORE, 9)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(20, 0, 0, 64))));
      biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, GOLD_ORE, 9)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(2, 0, 0, 32))));
      biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, REDSTONE_ORE, 8)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(8, 0, 0, 16))));
      biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, DIAMOND_ORE, 8)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(1, 0, 0, 16))));
      biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, LAPIS_ORE, 7)).withPlacement(Placement.COUNT_DEPTH_AVERAGE.configure(new DepthAverageConfig(1, 16, 16))));
   }
 
7,099
324
1,510
Изучи, куда addFeature помещает фичу. Это должна быть какая-то коллекция. Скорее всего она приватная, поэтому чтобы получить ее нужно будет заюзать access transformers или рефлексию. После удалить нужные фичи из коллекции
 
7,099
324
1,510
Очевидно, это нужно делать после того, как в ней появятся ванильные фичи. Например, в обработчике события FMLCommonSetupEvent с низшим приоритетом.
Как её теперь изменять?
biomeIn.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, COAL_ORE, 17)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(20, 0, 0, 128))));
Типо, берем из мапы список на ключу UNDERGROUND_ORES и в нем ищем фичу для удаления
 
Сверху