Create/src/main/java/com/simibubi/create/infrastructure/data/CreateDatagen.java
PepperCode1 4cda09e0e7 Controllable Catalysts
- Add tags to allow controlling which blocks and fluids act as catalysts
for certain fan processing types
- Fix unexpected and incorrect fan processing air current behaviors
- Fix unlit campfires providing boiler heat
- Rename consumeLang to provideLang in all places
- Remove unused advancement-related classes
2023-08-31 19:09:20 -07:00

103 lines
3.8 KiB
Java

package com.simibubi.create.infrastructure.data;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.BiConsumer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen;
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.ponder.PonderLocalization;
import com.simibubi.create.foundation.utility.FilesHelper;
import com.simibubi.create.infrastructure.ponder.AllPonderTags;
import com.simibubi.create.infrastructure.ponder.GeneralText;
import com.simibubi.create.infrastructure.ponder.PonderIndex;
import com.simibubi.create.infrastructure.ponder.SharedText;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
public class CreateDatagen {
public static void gatherData(GatherDataEvent event) {
addExtraRegistrateData();
DataGenerator generator = event.getGenerator();
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
if (event.includeClient()) {
generator.addProvider(AllSoundEvents.provider(generator));
}
if (event.includeServer()) {
generator.addProvider(new CreateRecipeSerializerTagsProvider(generator, existingFileHelper));
generator.addProvider(new AllAdvancements(generator));
generator.addProvider(new StandardRecipeGen(generator));
generator.addProvider(new MechanicalCraftingRecipeGen(generator));
generator.addProvider(new SequencedAssemblyRecipeGen(generator));
ProcessingRecipeGen.registerAll(generator);
// AllOreFeatureConfigEntries.gatherData(event);
}
}
private static void addExtraRegistrateData() {
CreateRegistrateTags.addGenerators();
// Really all additional lang entries should be added using AbstractRegistrate#addRawLang,
// but doing so would change the generated lang entry order and potentially mess up Crowndin.
Create.REGISTRATE.addLangPostprocessor(entries -> {
Map<String, String> newEntries = new LinkedHashMap<>(entries);
BiConsumer<String, String> langConsumer = (key, value) -> {
String oldValue = newEntries.put(key, value);
if (oldValue != null) {
Create.LOGGER.warn("Value of lang key '" + key + "' was overridden!");
}
};
AllAdvancements.provideLang(langConsumer);
provideDefaultLang("interface", langConsumer);
AllSoundEvents.provideLang(langConsumer);
provideDefaultLang("tooltips", langConsumer);
providePonderLang(langConsumer);
return newEntries;
});
}
private static void provideDefaultLang(String fileName, BiConsumer<String, String> consumer) {
String path = "assets/create/lang/default/" + fileName + ".json";
JsonElement jsonElement = FilesHelper.loadJsonResource(path);
if (jsonElement == null) {
throw new IllegalStateException(String.format("Could not find default lang file: %s", path));
}
JsonObject jsonObject = jsonElement.getAsJsonObject();
for (Entry<String, JsonElement> entry : jsonObject.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().getAsString();
consumer.accept(key, value);
}
}
private static void providePonderLang(BiConsumer<String, String> consumer) {
// Register these since FMLClientSetupEvent does not run during datagen
AllPonderTags.register();
PonderIndex.register();
SharedText.gatherText();
PonderLocalization.generateSceneLang();
GeneralText.provideLang(consumer);
PonderLocalization.provideLang(Create.ID, consumer);
}
}