mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-12-03 21:08:06 +00:00
Reformat JSON by wrapping CachedOutput
Rather than mixing-in to CachedOutput, we just wrap our DataProviders to use a custom CachedOutput which reformats the JSON before writing. This allows us to drop mixins for common+non-client code.
This commit is contained in:
@@ -36,20 +36,28 @@ import java.util.function.Consumer;
|
||||
public class FabricDataGenerators implements DataGeneratorEntrypoint {
|
||||
@Override
|
||||
public void onInitializeDataGenerator(FabricDataGenerator generator) {
|
||||
var pack = generator.createPack();
|
||||
DataProviders.add(new PlatformGeneratorsImpl(pack));
|
||||
pack.addProvider((out, reg) -> addName("Conventional Tags", new MoreConventionalTagsProvider(out, reg)));
|
||||
var pack = new PlatformGeneratorsImpl(generator.createPack());
|
||||
DataProviders.add(pack);
|
||||
pack.addWithRegistries((out, reg) -> addName("Conventional Tags", new MoreConventionalTagsProvider(out, reg)));
|
||||
}
|
||||
|
||||
private record PlatformGeneratorsImpl(FabricDataGenerator.Pack generator) implements DataProviders.GeneratorSink {
|
||||
public <T extends DataProvider> T addWithFabricOutput(FabricDataGenerator.Pack.Factory<T> factory) {
|
||||
return generator.addProvider((FabricDataOutput p) -> new PrettyDataProvider<>(factory.create(p))).provider();
|
||||
}
|
||||
|
||||
public <T extends DataProvider> T addWithRegistries(FabricDataGenerator.Pack.RegistryDependentFactory<T> factory) {
|
||||
return generator.addProvider((r, p) -> new PrettyDataProvider<>(factory.create(r, p))).provider();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends DataProvider> T add(DataProvider.Factory<T> factory) {
|
||||
return generator.addProvider(factory);
|
||||
return generator.addProvider((PackOutput p) -> new PrettyDataProvider<>(factory.create(p))).provider();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void addFromCodec(String name, PackType type, String directory, Codec<T> codec, Consumer<BiConsumer<ResourceLocation, T>> output) {
|
||||
generator.addProvider((FabricDataOutput out) -> {
|
||||
addWithFabricOutput((FabricDataOutput out) -> {
|
||||
var ourType = switch (type) {
|
||||
case SERVER_DATA -> PackOutput.Target.DATA_PACK;
|
||||
case CLIENT_RESOURCES -> PackOutput.Target.RESOURCE_PACK;
|
||||
@@ -71,7 +79,7 @@ public class FabricDataGenerators implements DataGeneratorEntrypoint {
|
||||
@Override
|
||||
public void lootTable(List<LootTableProvider.SubProviderEntry> tables) {
|
||||
for (var table : tables) {
|
||||
generator.addProvider((FabricDataOutput out) -> new SimpleFabricLootTableProvider(out, table.paramSet()) {
|
||||
addWithFabricOutput((FabricDataOutput out) -> new SimpleFabricLootTableProvider(out, table.paramSet()) {
|
||||
@Override
|
||||
public void generate(BiConsumer<ResourceLocation, LootTable.Builder> exporter) {
|
||||
table.provider().get().generate(exporter);
|
||||
@@ -82,7 +90,7 @@ public class FabricDataGenerators implements DataGeneratorEntrypoint {
|
||||
|
||||
@Override
|
||||
public TagsProvider<Block> blockTags(Consumer<TagProvider.TagConsumer<Block>> tags) {
|
||||
return generator.addProvider((out, registries) -> new FabricTagProvider.BlockTagProvider(out, registries) {
|
||||
return addWithRegistries((out, registries) -> new FabricTagProvider.BlockTagProvider(out, registries) {
|
||||
@Override
|
||||
protected void addTags(HolderLookup.Provider registries) {
|
||||
tags.accept(x -> new TagProvider.TagAppender<>(RegistryWrappers.BLOCKS, getOrCreateRawBuilder(x)));
|
||||
@@ -92,7 +100,7 @@ public class FabricDataGenerators implements DataGeneratorEntrypoint {
|
||||
|
||||
@Override
|
||||
public TagsProvider<Item> itemTags(Consumer<TagProvider.ItemTagConsumer> tags, TagsProvider<Block> blocks) {
|
||||
return generator.addProvider((out, registries) -> new FabricTagProvider.ItemTagProvider(out, registries, (FabricTagProvider.BlockTagProvider) blocks) {
|
||||
return addWithRegistries((out, registries) -> new FabricTagProvider.ItemTagProvider(out, registries, (FabricTagProvider.BlockTagProvider) blocks) {
|
||||
@Override
|
||||
protected void addTags(HolderLookup.Provider registries) {
|
||||
var self = this;
|
||||
@@ -113,7 +121,7 @@ public class FabricDataGenerators implements DataGeneratorEntrypoint {
|
||||
|
||||
@Override
|
||||
public void models(Consumer<BlockModelGenerators> blocks, Consumer<ItemModelGenerators> items) {
|
||||
generator.addProvider((FabricDataOutput out) -> new FabricModelProvider(out) {
|
||||
addWithFabricOutput((FabricDataOutput out) -> new FabricModelProvider(out) {
|
||||
@Override
|
||||
public void generateBlockStateModels(BlockModelGenerators generator) {
|
||||
blocks.accept(generator);
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
]
|
||||
},
|
||||
"mixins": [
|
||||
"computercraft.mixins.json",
|
||||
"computercraft.fabric.mixins.json",
|
||||
{
|
||||
"config": "computercraft-client.mixins.json",
|
||||
|
||||
Reference in New Issue
Block a user