diff --git a/src/datagen/java/appeng/data/Entrypoint.java b/src/datagen/java/appeng/data/Entrypoint.java index ae8209c69..436fc34f2 100644 --- a/src/datagen/java/appeng/data/Entrypoint.java +++ b/src/datagen/java/appeng/data/Entrypoint.java @@ -11,6 +11,7 @@ import net.minecraft.data.DataGenerator; import appeng.data.providers.loot.BlockDropProvider; import appeng.data.providers.recipes.SlabStairRecipes; import appeng.data.providers.tags.ConventionTagProvider; +import appeng.data.providers.tags.ToolTagProviders; public class Entrypoint implements PreLaunchEntrypoint { @@ -21,6 +22,7 @@ public class Entrypoint implements PreLaunchEntrypoint { generator.install(new BlockDropProvider(output)); generator.install(new SlabStairRecipes(output)); generator.install(new ConventionTagProvider(output)); + generator.install(new ToolTagProviders(output)); generator.run(); } diff --git a/src/datagen/java/appeng/data/providers/tags/ConventionTagProvider.java b/src/datagen/java/appeng/data/providers/tags/ConventionTagProvider.java index 3fdc1247b..d223e9adf 100644 --- a/src/datagen/java/appeng/data/providers/tags/ConventionTagProvider.java +++ b/src/datagen/java/appeng/data/providers/tags/ConventionTagProvider.java @@ -11,7 +11,7 @@ import appeng.core.AppEng; public class ConventionTagProvider extends TagProvider { public ConventionTagProvider(Path outputPath) { - super(outputPath); + super("c", outputPath); } @Override diff --git a/src/datagen/java/appeng/data/providers/tags/TagProvider.java b/src/datagen/java/appeng/data/providers/tags/TagProvider.java index 95f728e3a..28cfcbdbd 100644 --- a/src/datagen/java/appeng/data/providers/tags/TagProvider.java +++ b/src/datagen/java/appeng/data/providers/tags/TagProvider.java @@ -24,15 +24,17 @@ import appeng.data.providers.IAE2DataProvider; public abstract class TagProvider implements IAE2DataProvider { private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - protected static final String CONVENTION_NAMESPACE = "c"; protected static final String TYPE_ITEMS = "items"; protected static final String TYPE_BLOCKS = "blocks"; + private final String defaultNamespace; + private final Path outputPath; private DataCache cache; - protected TagProvider(Path outputPath) { + protected TagProvider(String defaultNamespace, Path outputPath) { + this.defaultNamespace = defaultNamespace; this.outputPath = outputPath; } @@ -49,15 +51,19 @@ public abstract class TagProvider implements IAE2DataProvider { protected abstract void generate() throws IOException; protected void addItemTag(String name, ItemConvertible... items) throws IOException { + Identifier id = parseId(name); + List itemIds = Arrays.stream(items).map(ItemConvertible::asItem).map(Registry.ITEM::getId) .map(Identifier::toString).collect(Collectors.toList()); - writeTagFile(CONVENTION_NAMESPACE, TYPE_ITEMS, name, itemIds); + writeTagFile(id.getNamespace(), TYPE_ITEMS, id.getPath(), itemIds); } protected void addBlockTag(String name, Block... blocks) throws IOException { + Identifier id = parseId(name); + List itemIds = Arrays.stream(blocks).map(Registry.BLOCK::getId).map(Identifier::toString) .collect(Collectors.toList()); - writeTagFile(CONVENTION_NAMESPACE, TYPE_BLOCKS, name, itemIds); + writeTagFile(id.getNamespace(), TYPE_BLOCKS, id.getPath(), itemIds); } protected void writeTagFile(String namespace, String tagType, String tagName, List entries) @@ -75,7 +81,15 @@ public abstract class TagProvider implements IAE2DataProvider { @Override public String getName() { - return AppEng.MOD_NAME + " Convention Tags"; + return AppEng.MOD_NAME + " Tags (" + defaultNamespace + ")"; + } + + private Identifier parseId(String name) { + if (name.contains(":")) { + return new Identifier(name); + } else { + return new Identifier(defaultNamespace, name); + } } } diff --git a/src/datagen/java/appeng/data/providers/tags/ToolTagProviders.java b/src/datagen/java/appeng/data/providers/tags/ToolTagProviders.java new file mode 100644 index 000000000..4fd1f716c --- /dev/null +++ b/src/datagen/java/appeng/data/providers/tags/ToolTagProviders.java @@ -0,0 +1,28 @@ +package appeng.data.providers.tags; + +import java.io.IOException; +import java.nio.file.Path; + +import appeng.core.AppEng; + +public class ToolTagProviders extends TagProvider { + + public ToolTagProviders(Path outputPath) { + super("fabric", outputPath); + } + + @Override + protected void generate() throws IOException { + addItemTag("axes", ITEMS.netherQuartzAxe(), ITEMS.certusQuartzAxe()); + addItemTag("hoes", ITEMS.netherQuartzHoe(), ITEMS.certusQuartzHoe()); + addItemTag("pickaxes", ITEMS.netherQuartzPick(), ITEMS.certusQuartzPick()); + addItemTag("shovels", ITEMS.netherQuartzShovel(), ITEMS.certusQuartzShovel()); + addItemTag("swords", ITEMS.netherQuartzSword(), ITEMS.certusQuartzSword()); + } + + @Override + public String getName() { + return AppEng.MOD_NAME + " Tool Tags"; + } + +}