Architectury API (Fabric/Forge/NeoForge)

Architectury API (Fabric/Forge/NeoForge)

158M Downloads

World Generation via BiomeModifications on NeoForge does not work and another thing

Craftjakob opened this issue ยท 0 comments

commented

I tried many times in different versions to set up the World Generation for ores, etc., in Fabric and Forge it works, but not in NeoForge.

Example code, that I use, which works in Fabric and Forge:

BiomeModifications.addProperties((biomeContext, mutable) -> {
            if (biomeContext.hasTag(BiomeTags.IS_END)) {
                mutable.getGenerationProperties().addFeature(
                        GenerationStep.Decoration.UNDERGROUND_DECORATION,
                        ResourceKey.create(Registries.PLACED_FEATURE,
                                new ResourceLocation(EXAMPLE.MOD_ID "example_placed"))
                );
            }
});

And a question: there is another addFeture methode, where you need to but a PlacedFeature inside a Holder, but how can I use that? In Forge's dategen you never need a Holder with a PlacedFeature.
Only that for BiomeModifers:

private static Direct<PlacedFeature> feature(BootstapContext<BiomeModifier> context, ResourceKey<PlacedFeature> placedFeature) {
      return HolderSet.direct(context.lookup(Registries.PLACED_FEATURE).getOrThrow(placedFeature));
}

Another thing, that is annoying is a feature in the CreativeTabRegistry.
Here you need to give a CreativeModeTab, but If you want to use it like that: 'CreativeModeTabs.COMBAT', it does not work.
I get around the problem by using this: 'CreativeModeTabs.allTabs().get(7)'

CreativeTabRegistry.modifyBuiltin(CreativeModeTabs.allTabs().get(10), (flags, output, canUseGameMasterBlocks) -> {
            output.acceptAfter(Items.NETHERITE_INGOT, EXAMPLE_MOD_ITEM);
});

In Forge, you can use 'CreativeModeTabs.COMBAT':

private void addCreative(BuildCreativeModeTabContentsEvent event) {
		if (event.getTabKey() == CreativeModeTabs.COMBAT) {
		              event.getEntries().putAfter(new ItemStack(Items.NETHERITE_INGOT), new ItemStack(EXAMPLE_MOD_ITEM), TabVisibility.PARENT_AND_SEARCH_TABS);
		}
}

Hopefully you can implement or fix this, that would be very great!