Hello, I am currently trying to get custom ore generation to work and I have tried to imitate every last bit of code from the tutorials, I've edited and I have even tried using an older version of Forge but it still isn't working. I have spent hours working on this for nothing
public Lightsaber_Main() {
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
itemInit.Items.register(bus);
BlockInit.Blocks.register(bus);
ModSounds.register(bus);
configuredFeatureInit.CONFIGURED_FEATURES.register(bus);
PlacedFeaturesInit.Placed_Feature.register(bus);
MinecraftForge.EVENT_BUS.register(this);
}
public class configuredFeatureInit {
private static final RuleTest END_STONE = new BlockMatchTest(Blocks.STONE);
public static final DeferredRegister<ConfiguredFeature<?, ?>> CONFIGURED_FEATURES
= DeferredRegister.create(Registry.CONFIGURED_FEATURE_REGISTRY, Lightsaber_Main.MOD_ID);
public static final Supplier<List<OreConfiguration.TargetBlockState>> END_KYBER_CRYSTAL_ORE
= Suppliers.memoize(() -> List.of(
OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES,
BlockInit.kyber_crystal_ore.get().defaultBlockState()),
OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES,
BlockInit.kyber_crystal_ore.get().defaultBlockState())
));
public static final RegistryObject<ConfiguredFeature<?, ?>> END_ORE_GENERATION
= CONFIGURED_FEATURES.register("kyber_crystal_ore",
() -> new ConfiguredFeature<>(Feature.ORE,
new OreConfiguration(END_KYBER_CRYSTAL_ORE.get(), 14)));
}
public class PlacedFeaturesInit {
public static final DeferredRegister<PlacedFeature> Placed_Feature = DeferredRegister.create(Registry.PLACED_FEATURE_REGISTRY, Lightsaber_Main.MOD_ID);
public static final RegistryObject<PlacedFeature> END_ORE = Placed_Feature.register("kyber_crystal_ore_placed",
() -> new PlacedFeature(configuredFeatureInit.END_ORE_GENERATION.getHolder().get(),
commonOrePlacement(50,
HeightRangePlacement.uniform(
VerticalAnchor.aboveBottom(-64),
VerticalAnchor.belowTop(319)
)
)
)
);
public static List<PlacementModifier> commonOrePlacement(int countPerChunk, PlacementModifier height) {
return orePlacement(CountPlacement.of(countPerChunk), height);
}
public static List<PlacementModifier> orePlacement(PlacementModifier count, PlacementModifier height) {
return List.of(count, InSquarePlacement.spread(), BiomeFilter.biome());
}
public static List<PlacementModifier> rareOrePlacement(int count, PlacementModifier height) {
return orePlacement(RarityFilter.onAverageOnceEvery(count), height);
}
}
add_kyber_crystal_ore.json:
{
"type": "forge:add_features",
"biomes": "#minecraft:is_overworld",
"features": "lightsabermod:kyber_crystal_ore_placed",
"step": "underground_ores"
}