ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/data/ActuallyAdditionsData.java

94 lines
5.5 KiB
Java
Raw Normal View History

2021-02-27 16:33:00 +01:00
package de.ellpeck.actuallyadditions.data;
2024-03-06 00:10:49 +01:00
import de.ellpeck.actuallyadditions.data.patchouli.PachouliGenerator;
2021-02-27 16:33:00 +01:00
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
2024-03-05 16:58:45 +01:00
import de.ellpeck.actuallyadditions.mod.gen.ActuallyBiomeModifiers;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyConfiguredFeatures;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyPlacedFeatures;
2024-03-11 19:17:59 +01:00
import de.ellpeck.actuallyadditions.mod.gen.ActuallyProcessorLists;
2024-03-03 01:20:53 +01:00
import de.ellpeck.actuallyadditions.mod.misc.ActuallyDamageTypes;
2024-03-04 20:21:48 +01:00
import net.minecraft.core.Cloner;
2024-03-03 01:20:53 +01:00
import net.minecraft.core.HolderLookup;
import net.minecraft.core.RegistryAccess;
import net.minecraft.core.RegistrySetBuilder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.registries.Registries;
2021-02-27 16:33:00 +01:00
import net.minecraft.data.DataGenerator;
2024-03-03 01:20:53 +01:00
import net.minecraft.data.PackOutput;
import net.minecraft.data.registries.VanillaRegistries;
import net.minecraft.world.damagesource.DamageType;
2024-03-04 22:38:59 +01:00
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.Mod;
2024-03-04 20:21:48 +01:00
import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import net.neoforged.neoforge.data.event.GatherDataEvent;
2024-03-05 16:58:45 +01:00
import net.neoforged.neoforge.registries.NeoForgeRegistries;
2024-03-03 01:20:53 +01:00
2024-03-03 17:49:29 +01:00
import java.util.Set;
2024-03-03 01:20:53 +01:00
import java.util.concurrent.CompletableFuture;
2021-02-27 16:33:00 +01:00
@Mod.EventBusSubscriber(modid = ActuallyAdditions.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ActuallyAdditionsData {
@SubscribeEvent
public static void runGenerator(GatherDataEvent event) {
DataGenerator generator = event.getGenerator();
2024-03-03 01:20:53 +01:00
PackOutput packOutput = generator.getPackOutput();
2024-03-04 20:21:48 +01:00
CompletableFuture<RegistrySetBuilder.PatchedRegistries> patchedProvider = CompletableFuture.supplyAsync(ActuallyAdditionsData::getProvider);
CompletableFuture<HolderLookup.Provider> lookupProvider = CompletableFuture.supplyAsync(() -> ActuallyAdditionsData.getProvider().full());
2021-02-27 16:33:00 +01:00
ExistingFileHelper helper = event.getExistingFileHelper();
// generator.addProvider(new GeneratorLanguage(generator));
2024-03-03 01:20:53 +01:00
BlockTagsGenerator generatorBlockTags = new BlockTagsGenerator(packOutput, lookupProvider, helper);
generator.addProvider(true, new LootTableGenerator(packOutput));
generator.addProvider(true, new BlockRecipeGenerator(packOutput));
generator.addProvider(true, new ItemRecipeGenerator(packOutput));
generator.addProvider(true, generatorBlockTags);
generator.addProvider(true, new ItemTagsGenerator(packOutput, lookupProvider, generatorBlockTags, helper));
2024-03-11 20:48:18 +01:00
generator.addProvider(true, new PoiTypeTagsGenerator(packOutput, lookupProvider, helper));
2024-03-03 01:20:53 +01:00
generator.addProvider(true, new DamageTypeTagsGenerator(packOutput, lookupProvider, helper));
2024-03-13 16:50:01 +01:00
generator.addProvider(true, new BannerPatternTagsGenerator(packOutput, lookupProvider, helper));
2024-03-03 01:20:53 +01:00
generator.addProvider(true, new BlockStateGenerator(packOutput, helper));
generator.addProvider(true, new ItemModelGenerator(packOutput, helper));
generator.addProvider(true, new AdvancementGenerator(packOutput, lookupProvider, helper));
generator.addProvider(true, new LaserRecipeGenerator(packOutput));
generator.addProvider(true, new ColorChangeGenerator(packOutput));
generator.addProvider(true, new EmpoweringRecipeGenerator(packOutput));
generator.addProvider(true, new CrushingRecipeGenerator(packOutput));
generator.addProvider(true, new FuelRecipeGenerator(packOutput));
generator.addProvider(true, new MiscMachineRecipeGenerator(packOutput));
generator.addProvider(true, new MiningLensGenerator(packOutput));
generator.addProvider(true, new CoffeeIngredientGenerator(packOutput));
2024-03-03 01:20:53 +01:00
generator.addProvider(true, new SoundsGenerator(packOutput, helper));
2024-03-03 17:49:29 +01:00
2024-03-06 00:10:49 +01:00
generator.addProvider(true, new PachouliGenerator(packOutput));
generator.addProvider(true, new GlobalLootModifierGenerator(packOutput));
2024-03-03 17:49:29 +01:00
generator.addProvider(event.includeServer(), new DatapackBuiltinEntriesProvider(
2024-03-04 20:21:48 +01:00
packOutput, patchedProvider, Set.of(ActuallyAdditions.MODID)));
2024-03-03 01:20:53 +01:00
}
2024-03-04 20:21:48 +01:00
private static RegistrySetBuilder.PatchedRegistries getProvider() {
2024-03-03 01:20:53 +01:00
final RegistrySetBuilder registryBuilder = new RegistrySetBuilder();
registryBuilder.add(Registries.DAMAGE_TYPE, (context) -> {
context.register(ActuallyDamageTypes.ATOMIC_RECONSTRUCTOR, new DamageType("actuallyadditions.atomic_reconstructor", 0.0F));
});
2024-03-05 16:58:45 +01:00
registryBuilder.add(Registries.CONFIGURED_FEATURE, ActuallyConfiguredFeatures::bootstrap);
registryBuilder.add(Registries.PLACED_FEATURE, ActuallyPlacedFeatures::bootstrap);
2024-03-11 19:17:59 +01:00
registryBuilder.add(Registries.PROCESSOR_LIST, ActuallyProcessorLists::bootstrap);
2024-03-05 16:58:45 +01:00
registryBuilder.add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, ActuallyBiomeModifiers::bootstrap);
2024-03-03 01:20:53 +01:00
// We need the BIOME registry to be present, so we can use a biome tag, doesn't matter that it's empty
2024-03-04 20:21:48 +01:00
registryBuilder.add(Registries.BIOME, $ -> {
2024-03-03 01:20:53 +01:00
});
RegistryAccess.Frozen regAccess = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY);
2024-03-04 20:21:48 +01:00
Cloner.Factory cloner$factory = new Cloner.Factory();
net.neoforged.neoforge.registries.DataPackRegistriesHooks.getDataPackRegistriesWithDimensions().forEach(data -> data.runWithArguments(cloner$factory::addCodec));
return registryBuilder.buildPatch(regAccess, VanillaRegistries.createLookup(), cloner$factory);
2021-02-27 16:33:00 +01:00
}
}