diff --git a/src/main/generated/assets/acesbs/models/item/prisma_armor_trim_smithing_template.json b/src/main/generated/assets/acesbs/models/item/prisma_armor_trim_smithing_template.json new file mode 100644 index 0000000..f18ffa2 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/prisma_armor_trim_smithing_template.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/prisma_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/misc/prisma.json b/src/main/generated/data/acesbs/advancement/recipes/misc/prisma.json new file mode 100644 index 0000000..a008935 --- /dev/null +++ b/src/main/generated/data/acesbs/advancement/recipes/misc/prisma.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_smithing_trim_template": { + "conditions": { + "items": [ + { + "items": "acesbs:prisma_armor_trim_smithing_template" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "acesbs:prisma" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_smithing_trim_template" + ] + ], + "rewards": { + "recipes": [ + "acesbs:prisma" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/recipe/prisma.json b/src/main/generated/data/acesbs/recipe/prisma.json new file mode 100644 index 0000000..c98ffa7 --- /dev/null +++ b/src/main/generated/data/acesbs/recipe/prisma.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing_trim", + "addition": { + "tag": "minecraft:trim_materials" + }, + "base": { + "tag": "minecraft:trimmable_armor" + }, + "template": { + "item": "acesbs:prisma_armor_trim_smithing_template" + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/trim_material/prisma_steel.json b/src/main/generated/data/acesbs/trim_material/prisma_steel.json new file mode 100644 index 0000000..cef7650 --- /dev/null +++ b/src/main/generated/data/acesbs/trim_material/prisma_steel.json @@ -0,0 +1,9 @@ +{ + "asset_name": "prisma_steel", + "description": { + "color": "#B16491", + "translate": "trim_material.acesbs.prisma_steel" + }, + "ingredient": "acesbs:prisma_steel", + "item_model_index": 1.0 +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/trim_pattern/prisma.json b/src/main/generated/data/acesbs/trim_pattern/prisma.json new file mode 100644 index 0000000..d2389bb --- /dev/null +++ b/src/main/generated/data/acesbs/trim_pattern/prisma.json @@ -0,0 +1,8 @@ +{ + "asset_id": "acesbs:prisma", + "decal": false, + "description": { + "translate": "trim_pattern.acesbs.prisma" + }, + "template_item": "acesbs:prisma_armor_trim_smithing_template" +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/trim_materials.json b/src/main/generated/data/minecraft/tags/item/trim_materials.json new file mode 100644 index 0000000..c40f18d --- /dev/null +++ b/src/main/generated/data/minecraft/tags/item/trim_materials.json @@ -0,0 +1,5 @@ +{ + "values": [ + "acesbs:prisma_steel" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/item/trim_templates.json b/src/main/generated/data/minecraft/tags/item/trim_templates.json new file mode 100644 index 0000000..b9cac6b --- /dev/null +++ b/src/main/generated/data/minecraft/tags/item/trim_templates.json @@ -0,0 +1,5 @@ +{ + "values": [ + "acesbs:prisma_armor_trim_smithing_template" + ] +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java b/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java index f8f15e5..98bb3d7 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java @@ -1,8 +1,12 @@ package com.acethewildfire.acesbs; import com.acethewildfire.acesbs.datagen.*; +import com.acethewildfire.acesbs.trim.ModTrimMaterials; +import com.acethewildfire.acesbs.trim.ModTrimPatterns; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; +import net.minecraft.registry.RegistryBuilder; +import net.minecraft.registry.RegistryKeys; public class AcesBSDataGenerator implements DataGeneratorEntrypoint { @Override @@ -14,5 +18,12 @@ public class AcesBSDataGenerator implements DataGeneratorEntrypoint { pack.addProvider(ModLootTableProvider::new); pack.addProvider(ModModelProvider::new); pack.addProvider(ModRecipeProvider::new); + pack.addProvider(ModRegistryDataGenerator::new); + } + + @Override + public void buildRegistry(RegistryBuilder registryBuilder) { + registryBuilder.addRegistry(RegistryKeys.TRIM_MATERIAL, ModTrimMaterials::bootstrap); + registryBuilder.addRegistry(RegistryKeys.TRIM_PATTERN, ModTrimPatterns::bootstrap); } } diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java index 90f8ae8..8660d56 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModItemTagProvider.java @@ -44,5 +44,10 @@ public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { .add(ModItems.PRISMA_STEEL_CHESTPLATE) .add(ModItems.PRISMA_STEEL_LEGGINGS) .add(ModItems.PRISMA_STEEL_BOOTS); + getOrCreateTagBuilder(ItemTags.TRIM_MATERIALS) + .add(ModItems.PRISMA_STEEL); + getOrCreateTagBuilder(ItemTags.TRIM_TEMPLATES) + .add(ModItems.PRISMA_SMITHING_TEMPLATE); + } } diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index 3867a5d..1e16024 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -55,6 +55,7 @@ public class ModModelProvider extends FabricModelProvider { itemModelGenerator.register(ModItems.STABLE_ENTROPY, Models.GENERATED); itemModelGenerator.register(ModItems.WAND, Models.HANDHELD_ROD); itemModelGenerator.register(ModItems.PRISMA_STEEL, Models.GENERATED); + itemModelGenerator.register(ModItems.PRISMA_SMITHING_TEMPLATE, Models.GENERATED); itemModelGenerator.register(ModItems.PRISMA_STEEL_SWORD, Models.HANDHELD); itemModelGenerator.register(ModItems.PRISMA_STEEL_PICKAXE, Models.HANDHELD); diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java index 3a34ceb..7ec55ff 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java @@ -168,6 +168,8 @@ public class ModRecipeProvider extends FabricRecipeProvider { ShovelRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_SHOVEL, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); HoeRecipeJsonBuilder(recipeExporter, ModItems.PRISMA_STEEL_HOE, ModItems.PRISMA_STEEL, Items.STICK, ModItems.PRISMA_STEEL); + offerSmithingTrimRecipe(recipeExporter, ModItems.PRISMA_SMITHING_TEMPLATE, Identifier.of(AcesBS.MOD_ID, "prisma")); + // For 2+ recipes with the same RESULT use // .offerTo(recipeExporter, Identifier.of(AcesBS.MOD_ID, "output_item_from_input_item")); } diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java new file mode 100644 index 0000000..848ad15 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java @@ -0,0 +1,25 @@ +package com.acethewildfire.acesbs.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; + +import java.util.concurrent.CompletableFuture; + +public class ModRegistryDataGenerator extends FabricDynamicRegistryProvider { + public ModRegistryDataGenerator(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) { + entries.addAll(registries.getWrapperOrThrow(RegistryKeys.TRIM_MATERIAL)); + entries.addAll(registries.getWrapperOrThrow(RegistryKeys.TRIM_PATTERN)); + } + + @Override + public String getName() { + return ""; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index c90bc85..ac42003 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -25,6 +25,7 @@ public class ModItemGroups { entries.add(ModItems.GREEN_BRICKS); entries.add(ModItems.WAND); entries.add(ModItems.PRISMA_STEEL); + entries.add(ModItems.PRISMA_SMITHING_TEMPLATE); }) .build()); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index 867a9fe..538c947 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -16,13 +16,14 @@ import net.minecraft.potion.Potion; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.resource.featuretoggle.FeatureFlag; +import net.minecraft.resource.featuretoggle.FeatureFlags; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import java.util.List; public class ModItems { - private static final RegistryEntry BLINDNESS = registerPotion("blindness", new Potion(new StatusEffectInstance(StatusEffects.BLINDNESS, 200))); public static final Item ORACLE_LEMON = registerItem("oracle_lemon", new OracleLemon(new Item.Settings().component(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(BLINDNESS)))); public static final Item WAND = registerItem("wand", new Wand(new Item.Settings().maxDamage(32))); @@ -87,6 +88,9 @@ public class ModItems { new ModArmorItem(ModArmorMaterials.PRISMA_STEEL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Settings() .maxDamage(ArmorItem.Type.BOOTS.getMaxDamage(15)))); + public static final Item PRISMA_SMITHING_TEMPLATE = registerItem("prisma_armor_trim_smithing_template", + SmithingTemplateItem.of(Identifier.of(AcesBS.MOD_ID, "prisma"), FeatureFlags.VANILLA)); + private static Item registerItem(String name, Item item){ return Registry.register(Registries.ITEM, Identifier.of(AcesBS.MOD_ID, name), item); } diff --git a/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java new file mode 100644 index 0000000..0ef2693 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimMaterials.java @@ -0,0 +1,39 @@ +package com.acethewildfire.acesbs.trim; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.item.ModItems; +import net.minecraft.item.Item; +import net.minecraft.item.trim.ArmorTrimMaterial; +import net.minecraft.registry.Registerable; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.text.Style; +import net.minecraft.text.Text; +import net.minecraft.text.TextColor; +import net.minecraft.util.Identifier; +import net.minecraft.util.Util; + +import java.util.Map; + +public class ModTrimMaterials { + + public static final RegistryKey PRISMA_STEEL = RegistryKey.of(RegistryKeys.TRIM_MATERIAL, + Identifier.of(AcesBS.MOD_ID, "prisma_steel")); + + public static void bootstrap (Registerable registerable){ + register(registerable, PRISMA_STEEL, Registries.ITEM.getEntry(ModItems.PRISMA_STEEL), + Style.EMPTY.withColor(TextColor.parse("#B16491").getOrThrow()), 1.0f); + } + + + private static void register(Registerable registerable, RegistryKey armorTrimKey, + RegistryEntry item, Style style, float itemModelIndex) { + ArmorTrimMaterial trimMaterial = new ArmorTrimMaterial(armorTrimKey.getValue().getPath(), item, itemModelIndex, Map.of(), + Text.translatable(Util.createTranslationKey("trim_material", armorTrimKey.getValue())).fillStyle(style)); + + registerable.register(armorTrimKey, trimMaterial); + } + +} diff --git a/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java new file mode 100644 index 0000000..8b9785e --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/trim/ModTrimPatterns.java @@ -0,0 +1,30 @@ +package com.acethewildfire.acesbs.trim; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.item.ModItems; +import net.minecraft.item.Item; +import net.minecraft.item.trim.ArmorTrimPattern; +import net.minecraft.registry.Registerable; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.minecraft.util.Util; + +public class ModTrimPatterns { + public static final RegistryKey PRISMA = RegistryKey.of(RegistryKeys.TRIM_PATTERN, + Identifier.of(AcesBS.MOD_ID, "prisma")); + + public static void bootstrap(Registerable context) { + register(context, ModItems.PRISMA_SMITHING_TEMPLATE, PRISMA); + } + + private static void register(Registerable context, Item item, RegistryKey key) { + ArmorTrimPattern trimPattern = new ArmorTrimPattern(key.getValue(), Registries.ITEM.getEntry(item), + Text.translatable(Util.createTranslationKey("trim_pattern", key.getValue())), false); + + context.register(key, trimPattern); + } + +} diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index 8e3cebd..8b89bcb 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -24,6 +24,7 @@ "item.acesbs.prisma_steel_chestplate": "Prisma Steel Chestplate", "item.acesbs.prisma_steel_leggings": "Prisma Steel Leggings", "item.acesbs.prisma_steel_boots": "Prisma Steel Boots", + "item.acesbs.prisma_armor_trim_smithing_template": "Prisma Smithing Template", "block.acesbs.entropy_block": "Block of Entropy", "block.acesbs.prisma_steel_block": "Block of Prisma Steel", @@ -43,6 +44,8 @@ "block.acesbs.evil_block": "Evil Block", + + "itemgroup.acesbs.items": "Ace's BS Items", "itemgroup.acesbs.blocks": "Ace's BS Blocks", "itemgroup.acesbs.combat": "Ace's BS Combat", @@ -54,5 +57,8 @@ "tooltip.acesbs.green_bricks": "Hold §eShift§r for item description.", "tooltip.acesbs.entropy_block.tooltip2": "Has a 1/20 chance of turning an apple into a lemon.", "tooltip.acesbs.wand.shift_down": "Changes blocks using Entropy", - "tooltip.acesbs.wand": "Hold §eShift§r for item description." + "tooltip.acesbs.wand": "Hold §eShift§r for item description.", + + "trim_material.acesbs.prisma_steel": "Prisma Steel Material", + "trim_pattern.acesbs.prisma": "Prisma Armor Pattern" } \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/textures/item/prisma_armor_trim_smithing_template.png b/src/main/resources/assets/acesbs/textures/item/prisma_armor_trim_smithing_template.png new file mode 100644 index 0000000..17fd7ac Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/prisma_armor_trim_smithing_template.png differ diff --git a/src/main/resources/assets/acesbs/textures/trims/color_palettes/prisma_steel.png b/src/main/resources/assets/acesbs/textures/trims/color_palettes/prisma_steel.png new file mode 100644 index 0000000..70a1c5f Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/trims/color_palettes/prisma_steel.png differ diff --git a/src/main/resources/assets/acesbs/textures/trims/models/armor/prisma.png b/src/main/resources/assets/acesbs/textures/trims/models/armor/prisma.png new file mode 100644 index 0000000..1b4745f Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/trims/models/armor/prisma.png differ diff --git a/src/main/resources/assets/acesbs/textures/trims/models/armor/prisma_leggings.png b/src/main/resources/assets/acesbs/textures/trims/models/armor/prisma_leggings.png new file mode 100644 index 0000000..3d38d25 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/trims/models/armor/prisma_leggings.png differ diff --git a/src/main/resources/assets/minecraft/atlases/armor_trims.json b/src/main/resources/assets/minecraft/atlases/armor_trims.json new file mode 100644 index 0000000..b763c22 --- /dev/null +++ b/src/main/resources/assets/minecraft/atlases/armor_trims.json @@ -0,0 +1,63 @@ +{ + "replace": false, + "sources": [ + { + "type": "paletted_permutations", + "textures": [ + "trims/models/armor/coast", + "trims/models/armor/coast_leggings", + "trims/models/armor/sentry", + "trims/models/armor/sentry_leggings", + "trims/models/armor/dune", + "trims/models/armor/dune_leggings", + "trims/models/armor/wild", + "trims/models/armor/wild_leggings", + "trims/models/armor/ward", + "trims/models/armor/ward_leggings", + "trims/models/armor/eye", + "trims/models/armor/eye_leggings", + "trims/models/armor/vex", + "trims/models/armor/vex_leggings", + "trims/models/armor/tide", + "trims/models/armor/tide_leggings", + "trims/models/armor/snout", + "trims/models/armor/snout_leggings", + "trims/models/armor/rib", + "trims/models/armor/rib_leggings", + "trims/models/armor/spire", + "trims/models/armor/spire_leggings", + "trims/models/armor/wayfinder", + "trims/models/armor/wayfinder_leggings", + "trims/models/armor/shaper", + "trims/models/armor/shaper_leggings", + "trims/models/armor/silence", + "trims/models/armor/silence_leggings", + "trims/models/armor/raiser", + "trims/models/armor/raiser_leggings", + "trims/models/armor/host", + "trims/models/armor/host_leggings", + "acesbs:trims/models/armor/prisma", + "acesbs:trims/models/armor/prisma_leggings" + + ], + "palette_key": "trims/color_palettes/trim_palette", + "permutations": { + "quartz": "trims/color_palettes/quartz", + "iron": "trims/color_palettes/iron", + "gold": "trims/color_palettes/gold", + "diamond": "trims/color_palettes/diamond", + "netherite": "trims/color_palettes/netherite", + "redstone": "trims/color_palettes/redstone", + "copper": "trims/color_palettes/copper", + "emerald": "trims/color_palettes/emerald", + "lapis": "trims/color_palettes/lapis", + "amethyst": "trims/color_palettes/amethyst", + "iron_darker": "trims/color_palettes/iron_darker", + "gold_darker": "trims/color_palettes/gold_darker", + "diamond_darker": "trims/color_palettes/diamond_darker", + "netherite_darker": "trims/color_palettes/netherite_darker", + "prisma_steel": "acesbs:trims/color_palettes/prisma_steel" + } + } + ] +} \ No newline at end of file