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

76 lines
4.1 KiB
Java
Raw Normal View History

2021-02-27 16:33:00 +01:00
package de.ellpeck.actuallyadditions.data;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
2022-12-30 01:02:38 +01:00
import de.ellpeck.actuallyadditions.mod.config.conditions.BoolConfigCondition;
2024-03-03 01:20:53 +01:00
import de.ellpeck.actuallyadditions.mod.misc.ActuallyDamageTypes;
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;
2022-12-30 01:02:38 +01:00
import net.minecraftforge.common.crafting.CraftingHelper;
2024-03-03 17:49:29 +01:00
import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider;
2021-02-27 16:33:00 +01:00
import net.minecraftforge.common.data.ExistingFileHelper;
2024-03-03 01:20:53 +01:00
import net.minecraftforge.data.event.GatherDataEvent;
2021-02-27 16:33:00 +01:00
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
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) {
2022-12-30 01:02:38 +01:00
CraftingHelper.register(BoolConfigCondition.Serializer.INSTANCE);
2021-02-27 16:33:00 +01:00
DataGenerator generator = event.getGenerator();
2024-03-03 01:20:53 +01:00
PackOutput packOutput = generator.getPackOutput();
CompletableFuture<HolderLookup.Provider> lookupProvider = CompletableFuture.supplyAsync(ActuallyAdditionsData::getProvider);
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));
generator.addProvider(true, new DamageTypeTagsGenerator(packOutput, lookupProvider, helper));
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 SoundsGenerator(packOutput, helper));
2024-03-03 17:49:29 +01:00
generator.addProvider(event.includeServer(), new DatapackBuiltinEntriesProvider(
packOutput, lookupProvider, Set.of(ActuallyAdditions.MODID)));
2024-03-03 01:20:53 +01:00
}
private static HolderLookup.Provider getProvider() {
final RegistrySetBuilder registryBuilder = new RegistrySetBuilder();
registryBuilder.add(Registries.DAMAGE_TYPE, (context) -> {
context.register(ActuallyDamageTypes.ATOMIC_RECONSTRUCTOR, new DamageType("actuallyadditions.atomic_reconstructor", 0.0F));
});
// We need the BIOME registry to be present, so we can use a biome tag, doesn't matter that it's empty
registryBuilder.add(Registries.BIOME, context -> {
});
RegistryAccess.Frozen regAccess = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY);
return registryBuilder.buildPatch(regAccess, VanillaRegistries.createLookup());
2021-02-27 16:33:00 +01:00
}
}