Генерация руд В ЭНДЕ

Версия Minecraft
1.16+
API
Forge
25
1
Хочу чтобы моя руда генерировалась в энде. Сделал вот это:

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

    private static ConfiguredFeature oreConfiguredFeature;

    private static ConfiguredFeature oreConfiguredFeature() {
        if (oreConfiguredFeature == null) {
            oreConfiguredFeature = new ReplaceBlockFeature(ReplaceBlockConfig.CODEC) {
                @Override
                public boolean generate(ISeedReader reader, ChunkGenerator generator, Random rand, BlockPos pos, ReplaceBlockConfig config) {
                    return super.generate(reader, generator, rand, pos, config);
                }
            }.withConfiguration(new ReplaceBlockConfig(Blocks.END_STONE.getDefaultState(), RegistryHandler.CATAZ_END_ORE.get().getDefaultState()))
                    .withPlacement(new Height4To32(NoPlacementConfig.CODEC) {
                        @Override
                        public Stream<BlockPos> getPositions(Random random, NoPlacementConfig config, BlockPos pos) {
                            return IntStream.range(200, 201 + random.nextInt(3)).mapToObj((count) -> {
                                int j = random.nextInt(16) + pos.getX();
                                int k = random.nextInt(16) + pos.getZ();
                                int startY = 1;
                                int endY = 255;
                                int l = startY+random.nextInt(endY-startY+1);
                                return new BlockPos(j, l, k);
                            });
                        }
                    }.configure(IPlacementConfig.NO_PLACEMENT_CONFIG));
        }

        return oreConfiguredFeature;
    }

    @SubscribeEvent
    public static void registerOreAtBiomes(BiomeLoadingEvent event) {
        if (event.getCategory().equals(Biome.Category.THEEND)) {
            event.getGeneration().withFeature(GenerationStage.Decoration.UNDERGROUND_ORES, oreConfiguredFeature());
        }
    }

}
Она не генерируется. Подскажите где я прокололся.
 
Решение
генератор руд в энде:
@Mod.EventBusSubscriber
public class EndOreGen {
    private static final ArrayList<ConfiguredFeature<?, ?>> endOres = new ArrayList<>();

    private static <FC extends IFeatureConfig> ConfiguredFeature<FC, ?> register(String name, ConfiguredFeature<FC, ?> configuredFeature) {
        return Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, ModId + ":" + name, configuredFeature);
    }

    public static void registerOres() {
        endOres.add(generateEndOre(Registration.END_IRON_ORE.get(), 0, 128, 10, 100));
    }

    public static ConfiguredFeature<?, ?> generateEndOre(Block block, int minHeight, int maxHeight, int veinSize, int amountOfVeinInChunk) {
        DimOre.LOGGER.info("Registered end ore: " +...
88
4
6
88
4
6
Попробуй это:
 @SubscribeEvent(priority = EventPriority.HIGHEST)
    public static void generateOres(BiomeLoadingEvent event) {
        BiomeGenerationSettingsBuilder generation = event.getGeneration();
        if (event.getCategory().equals(Biome.Category.THEEND)) {
            for (ConfiguredFeature<?, ?> ore : endOres) {
                if (ore != null) generation.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, ore);
            }
        }
        DimOre.LOGGER.info("Ore Generated!");
    }
 
88
4
6
88
4
6
генератор руд в энде:
@Mod.EventBusSubscriber
public class EndOreGen {
    private static final ArrayList<ConfiguredFeature<?, ?>> endOres = new ArrayList<>();

    private static <FC extends IFeatureConfig> ConfiguredFeature<FC, ?> register(String name, ConfiguredFeature<FC, ?> configuredFeature) {
        return Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, ModId + ":" + name, configuredFeature);
    }

    public static void registerOres() {
        endOres.add(generateEndOre(Registration.END_IRON_ORE.get(), 0, 128, 10, 100));
    }

    public static ConfiguredFeature<?, ?> generateEndOre(Block block, int minHeight, int maxHeight, int veinSize, int amountOfVeinInChunk) {
        DimOre.LOGGER.info("Registered end ore: " + Objects.requireNonNull(block.getRegistryName()).getPath());
        return register(Objects.requireNonNull(block.getRegistryName()).getPath(), Feature.ORE.configured(new OreFeatureConfig(ModOreFeature.FillerBlockType.end_stone, block.defaultBlockState(), veinSize)).decorated(Placement.RANGE.configured(new TopSolidRangeConfig(minHeight, 0, maxHeight))).squared().count(amountOfVeinInChunk));
    }

    @SubscribeEvent(priority = EventPriority.HIGHEST)
    public static void generateOres(BiomeLoadingEvent event) {
        BiomeGenerationSettingsBuilder generation = event.getGeneration();
        if (event.getCategory().equals(Biome.Category.THEEND)) {
            for (ConfiguredFeature<?, ?> ore : endOres) {
                if (ore != null) generation.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, ore);
            }
        }
    }
}

и чтобы работало, ещё один класс

ModOreFeature class:
public class ModOreFeature implements IFeatureConfig {
    public static final Codec<DimOreFeature> CODEC = RecordCodecBuilder.create((p_236568_0_) -> p_236568_0_.group(RuleTest.CODEC.fieldOf("target").forGetter((p_236570_0_) -> p_236570_0_.target), BlockState.CODEC.fieldOf("state").forGetter((p_236569_0_) -> p_236569_0_.state), Codec.intRange(0, 64).fieldOf("size").forGetter((p_236567_0_) -> p_236567_0_.size)).apply(p_236568_0_, DimOreFeature::new));
    public final RuleTest target;
    public final int size;
    public final BlockState state;

    public ModOreFeature(RuleTest p_i241989_1_, BlockState p_i241989_2_, int p_i241989_3_) {
        this.size = p_i241989_3_;
        this.state = p_i241989_2_;
        this.target = p_i241989_1_;
        DimOre.LOGGER.debug("DimOreFeature is Loaded!");
    }

    public static final class FillerBlockType {
        public static final RuleTest end_stone = new BlockMatchRuleTest(Blocks.END_STONE);
    }
}

регистрация всего этого:

Java:
public static void init(final FMLCommonSetupEvent event) {
        EndOreGen.registerOres();
    }
 
Последнее редактирование:
88
4
6
если что, то работает, я буквально сейчас проверил
1637221229838.png
 
Сверху