Allow using PackOutputs in Forge-added datagen classes (#9182)

This commit is contained in:
matyrobbrt authored and GitHub committed 2022-12-12 10:22:48 -08:00
1 parent e541201129
commit 2ea16d89ca
13 files changed
+75 -72

No files matched your search

@@ -16,7 +16,7 @@
stopwatch1.start();
hashcache.m_253116_(hashcache.m_253234_(p_254418_, p_253750_::m_213708_).join());
stopwatch1.stop();
@@ -56,6 +_,30 @@
@@ -56,6 +_,34 @@
public DataGenerator.PackGenerator m_253030_(boolean p_253826_, String p_254134_) {
Path path = this.f_244116_.m_247566_(PackOutput.Target.DATA_PACK).resolve("minecraft").resolve("datapacks").resolve(p_254134_);
return new DataGenerator.PackGenerator(p_253826_, p_254134_, new PackOutput(path));
@@ -30,6 +30,10 @@
+ return this.f_244116_;
+ }
+
+ public PackOutput getPackOutput(String path) {
+ return new PackOutput(f_243753_.resolve(path));
+ }
+
+ public <T extends DataProvider> T addProvider(boolean run, DataProvider.Factory<T> factory) {
+ return addProvider(run, factory.m_253034_(this.f_244116_));
+ }
@@ -5,7 +5,7 @@
package net.minecraftforge.client.model.generators;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.NotNull;
@@ -15,8 +15,8 @@ import org.jetbrains.annotations.NotNull;
*/
public abstract class BlockModelProvider extends ModelProvider<BlockModelBuilder> {
public BlockModelProvider(DataGenerator generator, String modid, ExistingFileHelper existingFileHelper) {
super(generator, modid, BLOCK_FOLDER, BlockModelBuilder::new, existingFileHelper);
public BlockModelProvider(PackOutput output, String modid, ExistingFileHelper existingFileHelper) {
super(output, modid, BLOCK_FOLDER, BlockModelBuilder::new, existingFileHelper);
}
@NotNull
@@ -14,7 +14,7 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.LinkedHashMap;
@@ -25,7 +25,6 @@ import java.util.function.Function;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
@@ -73,20 +72,20 @@ public abstract class BlockStateProvider implements DataProvider {
@VisibleForTesting
protected final Map<Block, IGeneratedBlockState> registeredBlocks = new LinkedHashMap<>();
private final DataGenerator generator;
private final PackOutput output;
private final String modid;
private final BlockModelProvider blockModels;
private final ItemModelProvider itemModels;
public BlockStateProvider(DataGenerator gen, String modid, ExistingFileHelper exFileHelper) {
this.generator = gen;
public BlockStateProvider(PackOutput output, String modid, ExistingFileHelper exFileHelper) {
this.output = output;
this.modid = modid;
this.blockModels = new BlockModelProvider(gen, modid, exFileHelper) {
this.blockModels = new BlockModelProvider(output, modid, exFileHelper) {
@Override public CompletableFuture<?> run(CachedOutput cache) { return CompletableFuture.allOf(); }
@Override protected void registerModels() {}
};
this.itemModels = new ItemModelProvider(gen, modid, this.blockModels.existingFileHelper) {
this.itemModels = new ItemModelProvider(output, modid, this.blockModels.existingFileHelper) {
@Override protected void registerModels() {}
@Override public CompletableFuture<?> run(CachedOutput cache) { return CompletableFuture.allOf(); }
@@ -862,7 +861,7 @@ public abstract class BlockStateProvider implements DataProvider {
private CompletableFuture<?> saveBlockState(CachedOutput cache, JsonObject stateJson, Block owner) {
ResourceLocation blockName = Preconditions.checkNotNull(key(owner));
Path outputPath = this.generator.getPackOutput().getOutputFolder(PackOutput.Target.RESOURCE_PACK)
Path outputPath = this.output.getOutputFolder(PackOutput.Target.RESOURCE_PACK)
.resolve(blockName.getNamespace()).resolve("blockstates").resolve(blockName.getPath() + ".json");
return DataProvider.saveStable(cache, stateJson, outputPath);
}
@@ -5,7 +5,7 @@
package net.minecraftforge.client.model.generators;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraftforge.common.data.ExistingFileHelper;
@@ -20,8 +20,8 @@ import java.util.Objects;
*/
public abstract class ItemModelProvider extends ModelProvider<ItemModelBuilder> {
public ItemModelProvider(DataGenerator generator, String modid, ExistingFileHelper existingFileHelper) {
super(generator, modid, ITEM_FOLDER, ItemModelBuilder::new, existingFileHelper);
public ItemModelProvider(PackOutput output, String modid, ExistingFileHelper existingFileHelper) {
super(output, modid, ITEM_FOLDER, ItemModelBuilder::new, existingFileHelper);
}
public ItemModelBuilder basicItem(Item item)
@@ -16,7 +16,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.function.BiFunction;
import java.util.function.Function;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
@@ -34,7 +33,7 @@ public abstract class ModelProvider<T extends ModelBuilder<T>> implements DataPr
protected static final ResourceType MODEL_WITH_EXTENSION = new ResourceType(PackType.CLIENT_RESOURCES, "", "models");
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create();
protected final DataGenerator generator;
protected final PackOutput output;
protected final String modid;
protected final String folder;
protected final Function<ResourceLocation, T> factory;
@@ -45,9 +44,9 @@ public abstract class ModelProvider<T extends ModelBuilder<T>> implements DataPr
protected abstract void registerModels();
public ModelProvider(DataGenerator generator, String modid, String folder, Function<ResourceLocation, T> factory, ExistingFileHelper existingFileHelper) {
Preconditions.checkNotNull(generator);
this.generator = generator;
public ModelProvider(PackOutput output, String modid, String folder, Function<ResourceLocation, T> factory, ExistingFileHelper existingFileHelper) {
Preconditions.checkNotNull(output);
this.output = output;
Preconditions.checkNotNull(modid);
this.modid = modid;
Preconditions.checkNotNull(folder);
@@ -58,8 +57,8 @@ public abstract class ModelProvider<T extends ModelBuilder<T>> implements DataPr
this.existingFileHelper = existingFileHelper;
}
public ModelProvider(DataGenerator generator, String modid, String folder, BiFunction<ResourceLocation, ExistingFileHelper, T> builderFromModId, ExistingFileHelper existingFileHelper) {
this(generator, modid, folder, loc->builderFromModId.apply(loc, existingFileHelper), existingFileHelper);
public ModelProvider(PackOutput output, String modid, String folder, BiFunction<ResourceLocation, ExistingFileHelper, T> builderFromModId, ExistingFileHelper existingFileHelper) {
this(output, modid, folder, loc->builderFromModId.apply(loc, existingFileHelper), existingFileHelper);
}
public T getBuilder(String path) {
@@ -408,6 +407,6 @@ public abstract class ModelProvider<T extends ModelBuilder<T>> implements DataPr
protected Path getPath(T model) {
ResourceLocation loc = model.getLocation();
return this.generator.getPackOutput().getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(loc.getNamespace()).resolve("models").resolve(loc.getPath() + ".json");
return this.output.getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(loc.getNamespace()).resolve("models").resolve(loc.getPath() + ".json");
}
}
@@ -13,14 +13,12 @@ import com.google.gson.JsonObject;
import com.mojang.serialization.JsonOps;
import cpw.mods.modlauncher.api.LamdbaExceptionUtils;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.loot.IGlobalLootModifier;
import net.minecraftforge.common.loot.LootModifier;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
@@ -37,14 +35,14 @@ import java.util.stream.Collectors;
public abstract class GlobalLootModifierProvider implements DataProvider
{
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
private final DataGenerator gen;
private final PackOutput output;
private final String modid;
private final Map<String, JsonElement> toSerialize = new HashMap<>();
private boolean replace = false;
public GlobalLootModifierProvider(DataGenerator gen, String modid)
public GlobalLootModifierProvider(PackOutput output, String modid)
{
this.gen = gen;
this.output = output;
this.modid = modid;
}
@@ -66,8 +64,8 @@ public abstract class GlobalLootModifierProvider implements DataProvider
{
start();
Path forgePath = this.gen.getPackOutput().getOutputFolder(PackOutput.Target.DATA_PACK).resolve("forge").resolve("loot_modifiers").resolve("global_loot_modifiers.json");
Path modifierFolderPath = this.gen.getPackOutput().getOutputFolder(PackOutput.Target.DATA_PACK).resolve(this.modid).resolve("loot_modifiers");
Path forgePath = this.output.getOutputFolder(PackOutput.Target.DATA_PACK).resolve("forge").resolve("loot_modifiers").resolve("global_loot_modifiers.json");
Path modifierFolderPath = this.output.getOutputFolder(PackOutput.Target.DATA_PACK).resolve(this.modid).resolve("loot_modifiers");
List<ResourceLocation> entries = new ArrayList<>();
ImmutableList.Builder<CompletableFuture<?>> futuresBuilder = new ImmutableList.Builder<>();
@@ -32,7 +32,6 @@ import net.minecraft.server.packs.PackType;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.common.crafting.conditions.ICondition;
import net.minecraftforge.common.data.ExistingFileHelper.ResourceType;
import net.minecraftforge.data.event.GatherDataEvent;
import net.minecraftforge.registries.DataPackRegistriesHooks;
import org.slf4j.Logger;
@@ -48,7 +47,7 @@ import org.slf4j.Logger;
public class JsonCodecProvider<T> implements DataProvider
{
private static final Logger LOGGER = LogUtils.getLogger();
protected final DataGenerator dataGenerator;
protected final PackOutput output;
protected final ExistingFileHelper existingFileHelper;
protected final String modid;
protected final DynamicOps<JsonElement> dynamicOps;
@@ -59,14 +58,14 @@ public class JsonCodecProvider<T> implements DataProvider
protected Map<ResourceLocation, ICondition[]> conditions = Collections.emptyMap();
/**
* @param dataGenerator DataGenerator provided by {@link GatherDataEvent}.
* @param output {@linkplain PackOutput} provided by the {@link DataGenerator}.
* @param dynamicOps DynamicOps to encode values to jsons with using the provided Codec, e.g. {@link JsonOps#INSTANCE}.
* @param packType PackType specifying whether to generate entries in assets or data.
* @param directory String representing the directory to generate jsons in, e.g. "dimension" or "cheesemod/cheese".
* @param codec Codec to encode values to jsons with using the provided DynamicOps.
* @param entries Map of named entries to serialize to jsons. Paths for values are derived from the ResourceLocation's entryid:entrypath as specified above.
*/
public JsonCodecProvider(DataGenerator dataGenerator, ExistingFileHelper existingFileHelper, String modid, DynamicOps<JsonElement> dynamicOps, PackType packType,
public JsonCodecProvider(PackOutput output, ExistingFileHelper existingFileHelper, String modid, DynamicOps<JsonElement> dynamicOps, PackType packType,
String directory, Codec<T> codec, Map<ResourceLocation, T> entries)
{
// Track generated data so other dataproviders can validate if needed.
@@ -75,7 +74,7 @@ public class JsonCodecProvider<T> implements DataProvider
{
existingFileHelper.trackGenerated(id, resourceType);
}
this.dataGenerator = dataGenerator;
this.output = output;
this.existingFileHelper = existingFileHelper;
this.modid = modid;
this.dynamicOps = dynamicOps;
@@ -92,14 +91,14 @@ public class JsonCodecProvider<T> implements DataProvider
* be generated this way.
*
* @param <T> Registry element type, e.g. Biome
* @param dataGenerator DataGenerator provided by {@link GatherDataEvent}.
* @param output {@linkplain PackOutput} provided by the {@link DataGenerator}.
* @param modid namespace of the mod adding this DataProvider, for logging purposes.
* @param registryOps RegistryOps to encode values to json with.
* @param registryKey ResourceKey identifying the registry and its directory.
* @param entries Map of entries to encode and their ResourceLocations. Paths for values are derived from the ResourceLocation's entryid:entrypath.
*/
@SuppressWarnings("unchecked")
public static <T> JsonCodecProvider<T> forDatapackRegistry(DataGenerator dataGenerator, ExistingFileHelper existingFileHelper, String modid,
public static <T> JsonCodecProvider<T> forDatapackRegistry(PackOutput output, ExistingFileHelper existingFileHelper, String modid,
RegistryOps<JsonElement> registryOps, ResourceKey<Registry<T>> registryKey, Map<ResourceLocation, T> entries)
{
final ResourceLocation registryId = registryKey.location();
@@ -110,13 +109,13 @@ public class JsonCodecProvider<T> implements DataProvider
: registryId.getNamespace() + "/" + registryId.getPath();
RegistryDataLoader.RegistryData<?> registryData = DataPackRegistriesHooks.getDataPackRegistries().stream().filter(data -> data.key() == registryKey).findAny().orElseThrow();
final Codec<T> codec = (Codec<T>) registryData.elementCodec();
return new JsonCodecProvider<>(dataGenerator, existingFileHelper, modid, registryOps, PackType.SERVER_DATA, registryFolder, codec, entries);
return new JsonCodecProvider<>(output, existingFileHelper, modid, registryOps, PackType.SERVER_DATA, registryFolder, codec, entries);
}
@Override
public CompletableFuture<?> run(final CachedOutput cache)
{
final Path outputFolder = this.dataGenerator.getPackOutput().getOutputFolder(this.packType == PackType.CLIENT_RESOURCES
final Path outputFolder = this.output.getOutputFolder(this.packType == PackType.CLIENT_RESOURCES
? PackOutput.Target.RESOURCE_PACK
: PackOutput.Target.DATA_PACK);
ImmutableList.Builder<CompletableFuture<?>> futuresBuilder = new ImmutableList.Builder<>();
@@ -12,7 +12,6 @@ import java.util.TreeMap;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.world.effect.MobEffect;
@@ -24,12 +23,12 @@ import net.minecraft.world.level.block.Block;
public abstract class LanguageProvider implements DataProvider {
private final Map<String, String> data = new TreeMap<>();
private final DataGenerator gen;
private final PackOutput output;
private final String modid;
private final String locale;
public LanguageProvider(DataGenerator gen, String modid, String locale) {
this.gen = gen;
public LanguageProvider(PackOutput output, String modid, String locale) {
this.output = output;
this.modid = modid;
this.locale = locale;
}
@@ -41,7 +40,7 @@ public abstract class LanguageProvider implements DataProvider {
addTranslations();
if (!data.isEmpty())
return save(cache, this.gen.getPackOutput().getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(this.modid).resolve("lang").resolve(this.locale + ".json"));
return save(cache, this.output.getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(this.modid).resolve("lang").resolve(this.locale + ".json"));
return CompletableFuture.allOf();
}
@@ -13,7 +13,6 @@ import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
@@ -30,7 +29,7 @@ import org.apache.logging.log4j.Logger;
public abstract class SoundDefinitionsProvider implements DataProvider
{
private static final Logger LOGGER = LogManager.getLogger();
private final DataGenerator generator;
private final PackOutput output;
private final String modId;
private final ExistingFileHelper helper;
@@ -39,13 +38,13 @@ public abstract class SoundDefinitionsProvider implements DataProvider
/**
* Creates a new instance of this data provider.
*
* @param generator The data generator instance provided by the event you are initializing this provider in.
* @param output The {@linkplain PackOutput} instance provided by the data generator.
* @param modId The mod ID of the current mod.
* @param helper The existing file helper provided by the event you are initializing this provider in.
*/
protected SoundDefinitionsProvider(final DataGenerator generator, final String modId, final ExistingFileHelper helper)
protected SoundDefinitionsProvider(final PackOutput output, final String modId, final ExistingFileHelper helper)
{
this.generator = generator;
this.output = output;
this.modId = modId;
this.helper = helper;
}
@@ -63,7 +62,7 @@ public abstract class SoundDefinitionsProvider implements DataProvider
this.validate();
if (!this.sounds.isEmpty())
{
return this.save(cache, this.generator.getPackOutput().getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(this.modId).resolve("sounds.json"));
return this.save(cache, this.output.getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(this.modId).resolve("sounds.json"));
}
return CompletableFuture.allOf();
@@ -136,12 +136,12 @@ public class DataGeneratorTest
PackOutput packOutput = gen.getPackOutput();
CompletableFuture<HolderLookup.Provider> lookupProvider = event.getLookupProvider();
gen.addProvider(event.includeClient(), new Lang(gen));
gen.addProvider(event.includeClient(), new Lang(packOutput));
// Let blockstate provider see generated item models by passing its existing file helper
ItemModelProvider itemModels = new ItemModels(gen, event.getExistingFileHelper());
ItemModelProvider itemModels = new ItemModels(packOutput, event.getExistingFileHelper());
gen.addProvider(event.includeClient(), itemModels);
gen.addProvider(event.includeClient(), new BlockStates(gen, itemModels.existingFileHelper));
gen.addProvider(event.includeClient(), new SoundDefinitions(gen, event.getExistingFileHelper()));
gen.addProvider(event.includeClient(), new SoundDefinitions(packOutput, event.getExistingFileHelper()));
gen.addProvider(event.includeServer(), new Recipes(packOutput));
gen.addProvider(event.includeServer(), new Tags(packOutput, lookupProvider, event.getExistingFileHelper()));
@@ -334,9 +334,9 @@ public class DataGeneratorTest
private static final Logger LOGGER = LogManager.getLogger();
private final ExistingFileHelper helper;
public SoundDefinitions(final DataGenerator generator, final ExistingFileHelper helper)
public SoundDefinitions(final PackOutput output, final ExistingFileHelper helper)
{
super(generator, MODID, helper);
super(output, MODID, helper);
this.helper = helper;
}
@@ -589,7 +589,7 @@ public class DataGeneratorTest
public static class Lang extends LanguageProvider
{
public Lang(DataGenerator gen)
public Lang(PackOutput gen)
{
super(gen, MODID, "en_us");
}
@@ -611,7 +611,7 @@ public class DataGeneratorTest
{
private static final Logger LOGGER = LogManager.getLogger();
public ItemModels(DataGenerator generator, ExistingFileHelper existingFileHelper)
public ItemModels(PackOutput generator, ExistingFileHelper existingFileHelper)
{
super(generator, MODID, existingFileHelper);
}
@@ -15,6 +15,7 @@ import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.data.models.model.ModelLocationUtils;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.Connection;
@@ -139,17 +140,18 @@ public class CustomTransformTypeTest
public void gatherData(GatherDataEvent event)
{
DataGenerator gen = event.getGenerator();
final PackOutput output = gen.getPackOutput();
gen.addProvider(event.includeClient(), new ItemModels(gen, event.getExistingFileHelper()));
gen.addProvider(event.includeClient(), new BlockStateModels(gen, event.getExistingFileHelper()));
gen.addProvider(event.includeClient(), new ItemModels(output, event.getExistingFileHelper()));
gen.addProvider(event.includeClient(), new BlockStateModels(output, event.getExistingFileHelper()));
}
public static class BlockStateModels extends BlockStateProvider
{
public BlockStateModels(DataGenerator gen, ExistingFileHelper exFileHelper)
public BlockStateModels(PackOutput output, ExistingFileHelper exFileHelper)
{
super(gen, MODID, exFileHelper);
super(output, MODID, exFileHelper);
}
@Override
@@ -164,9 +166,9 @@ public class CustomTransformTypeTest
public static class ItemModels extends ItemModelProvider
{
public ItemModels(DataGenerator generator, ExistingFileHelper existingFileHelper)
public ItemModels(PackOutput output, ExistingFileHelper existingFileHelper)
{
super(generator, MODID, existingFileHelper);
super(output, MODID, existingFileHelper);
}
@Override
@@ -8,6 +8,7 @@ package net.minecraftforge.debug.client.model;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import net.minecraft.client.resources.model.ModelBaker;
import net.minecraft.data.PackOutput;
import net.minecraft.world.item.*;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
@@ -181,18 +182,19 @@ public class NewModelLoaderTest
private void datagen(GatherDataEvent event)
{
DataGenerator gen = event.getGenerator();
final PackOutput output = gen.getPackOutput();
// Let blockstate provider see generated item models by passing its existing file helper
ItemModelProvider itemModels = new ItemModels(gen, event.getExistingFileHelper());
ItemModelProvider itemModels = new ItemModels(output, event.getExistingFileHelper());
gen.addProvider(event.includeClient(), itemModels);
gen.addProvider(event.includeClient(), new BlockStates(gen, itemModels.existingFileHelper));
gen.addProvider(event.includeClient(), new BlockStates(output, itemModels.existingFileHelper));
}
public static class ItemModels extends ItemModelProvider
{
public ItemModels(DataGenerator generator, ExistingFileHelper existingFileHelper)
public ItemModels(PackOutput output, ExistingFileHelper existingFileHelper)
{
super(generator, MODID, existingFileHelper);
super(output, MODID, existingFileHelper);
}
@Override
@@ -215,9 +217,9 @@ public class NewModelLoaderTest
public static class BlockStates extends BlockStateProvider
{
public BlockStates(DataGenerator gen, ExistingFileHelper exFileHelper)
public BlockStates(PackOutput output, ExistingFileHelper exFileHelper)
{
super(gen, MODID, exFileHelper);
super(output, MODID, exFileHelper);
}
@Override
@@ -7,6 +7,7 @@ package net.minecraftforge.debug.item;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.data.loot.LootTableProvider;
import net.minecraft.resources.ResourceLocation;
@@ -112,8 +113,9 @@ public class TagBasedToolTypesTest
{
DataGenerator gen = event.getGenerator();
ExistingFileHelper existing = event.getExistingFileHelper();
final PackOutput output = gen.getPackOutput();
gen.addProvider(event.includeServer(), new BlockTagsProvider(gen.getPackOutput(), event.getLookupProvider(), MODID, existing)
gen.addProvider(event.includeServer(), new BlockTagsProvider(output, event.getLookupProvider(), MODID, existing)
{
@Override
protected void addTags(HolderLookup.Provider registry) {
@@ -143,7 +145,7 @@ public class TagBasedToolTypesTest
gen.addProvider(event.includeServer(), new LootTableProvider(event.getGenerator().getPackOutput(), Set.of(), List.of(new LootTableProvider.SubProviderEntry(TestBlockLootProvider::new, LootContextParamSets.BLOCK))));
gen.addProvider(event.includeClient(), new BlockStateProvider(gen, MODID, existing)
gen.addProvider(event.includeClient(), new BlockStateProvider(output, MODID, existing)
{
@Override
protected void registerStatesAndModels()
@@ -151,7 +153,7 @@ public class TagBasedToolTypesTest
simpleBlockWithItem(STONE.get(), models().cubeAll(STONE.getId().getPath(), mcLoc("block/debug")));
}
});
gen.addProvider(event.includeClient(), new ItemModelProvider(gen, MODID, existing)
gen.addProvider(event.includeClient(), new ItemModelProvider(output, MODID, existing)
{
@Override
protected void registerModels()