diff --git a/gradle.properties b/gradle.properties index 43d86cb..f53bdeb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -48,7 +48,7 @@ mod_name=Nugget Mod # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=MIT # The mod version. See https://semver.org/ -mod_version=1.1.0 +mod_version=1.1.1 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java b/src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java index 14d48a0..e15f49e 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java +++ b/src/main/java/xyz/sillyangel/nugget/datagen/DataGenerators.java @@ -35,5 +35,7 @@ public class DataGenerators { generator.addProvider(event.includeClient(), new ModItemModelProvider(packOutput, existingFileHelper)); generator.addProvider(event.includeClient(), new ModBlockStateProvider(packOutput, existingFileHelper)); + + generator.addProvider(event.includeServer(), new ModDatapackEntries(packOutput, lookupProvider)); } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModDatapackEntries.java b/src/main/java/xyz/sillyangel/nugget/datagen/ModDatapackEntries.java new file mode 100644 index 0000000..e4a1070 --- /dev/null +++ b/src/main/java/xyz/sillyangel/nugget/datagen/ModDatapackEntries.java @@ -0,0 +1,24 @@ +package xyz.sillyangel.nugget.datagen; + +import xyz.sillyangel.nugget.NuggetMod; +import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; +import xyz.sillyangel.nugget.trim.ModTrimMaterials; +import xyz.sillyangel.nugget.trim.ModTrimPatterns; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; + +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +public class ModDatapackEntries extends DatapackBuiltinEntriesProvider { + public static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.TRIM_MATERIAL, ModTrimMaterials::bootstrap) + .add(Registries.TRIM_PATTERN, ModTrimPatterns::bootstrap); + + public ModDatapackEntries(PackOutput output, CompletableFuture registries) { + super(output, registries, BUILDER, Set.of(NuggetMod.MOD_ID)); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java index d06c610..11e7aff 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java +++ b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java @@ -41,6 +41,7 @@ public class ModItemModelProvider extends ItemModelProvider { @Override protected void registerModels() { + basicItem(ModItems.NUGGET_HORSE_ARMOR.get()); basicItem(ModItems.NUGGET.get()); basicItem(ModItems.RAW_NUGGET.get()); diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java index 7568d3f..be9dcdd 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java +++ b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java @@ -34,5 +34,9 @@ public class ModItemTagProvider extends ItemTagsProvider { .add(ModItems.NUGGET_CHESTPLATE.get()) .add(ModItems.NUGGET_LEGGINGS.get()) .add(ModItems.NUGGET_BOOTS.get()); + tag(ItemTags.TRIM_MATERIALS) + .add(ModItems.NUGGET.get()); + tag(ItemTags.TRIM_TEMPLATES) + .add(ModItems.NUGGET_SMITHING_TEMPLATE.get()); } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java b/src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java index c2ee966..d64c2f6 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java +++ b/src/main/java/xyz/sillyangel/nugget/datagen/ModRecipeProvider.java @@ -7,6 +7,7 @@ import xyz.sillyangel.nugget.item.ModItems; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; @@ -122,6 +123,8 @@ public class ModRecipeProvider extends RecipeProvider implements IConditionBuild .define('A', ModItems.NUGGET.get()) .unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(pRecipeOutput); + trimSmithing(pRecipeOutput, ModItems.NUGGET_SMITHING_TEMPLATE.get(), ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); + oreSmelting(pRecipeOutput, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 200, "nugget"); oreBlasting(pRecipeOutput, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 100, "nugget"); diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java b/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java index 2c137dc..243a8ae 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java +++ b/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java @@ -32,6 +32,9 @@ public class ModCreativeModeTabs { output.accept(ModItems.NUGGET_LEGGINGS.get()); output.accept(ModItems.NUGGET_BOOTS.get()); + output.accept(ModItems.NUGGET_HORSE_ARMOR.get()); + output.accept(ModItems.NUGGET_SMITHING_TEMPLATE.get()); + }).build()); public static final RegistryObject NUGGET_BLOCKS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_blocks_tab", diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModItems.java b/src/main/java/xyz/sillyangel/nugget/item/ModItems.java index 3648a2e..b1d14d0 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModItems.java +++ b/src/main/java/xyz/sillyangel/nugget/item/ModItems.java @@ -5,6 +5,7 @@ import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.registries.RegistryObject; import net.minecraft.world.item.*; import java.util.List; @@ -55,8 +56,13 @@ public class ModItems { public static final RegistryObject NUGGET_BOOTS = ITEMS.register("nugget_boots", () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().durability(ArmorItem.Type.BOOTS.getDurability(25)))); - - + // horse armor + public static final RegistryObject NUGGET_HORSE_ARMOR = ITEMS.register("nugget_horse_armor", + () -> new AnimalArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, AnimalArmorItem.BodyType.EQUESTRIAN, + false, new Item.Properties().stacksTo(1))); + // smithing temp + public static final RegistryObject NUGGET_SMITHING_TEMPLATE = ITEMS.register("nugget_armor_trim_smithing_template", + () -> SmithingTemplateItem.createArmorTrimTemplate(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"))); public static void register(IEventBus eventBus) { ITEMS.register(eventBus); } diff --git a/src/main/java/xyz/sillyangel/nugget/trim/ModTrimMaterials.java b/src/main/java/xyz/sillyangel/nugget/trim/ModTrimMaterials.java new file mode 100644 index 0000000..87cc81e --- /dev/null +++ b/src/main/java/xyz/sillyangel/nugget/trim/ModTrimMaterials.java @@ -0,0 +1,31 @@ +package xyz.sillyangel.nugget.trim; + +import xyz.sillyangel.nugget.NuggetMod; +import xyz.sillyangel.nugget.item.ModItems; +import net.minecraft.Util; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextColor; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.armortrim.TrimMaterial; + +import java.util.Map; + +public class ModTrimMaterials { + public static final ResourceKey NUGGET = + ResourceKey.create(Registries.TRIM_MATERIAL, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); + + public static void bootstrap(BootstrapContext context) { + register(context, NUGGET, ModItems.NUGGET.get(), Style.EMPTY.withColor(TextColor.parseColor("#f9b042").getOrThrow()), 0.1F); + } + private static void register(BootstrapContext context, ResourceKey trimKey, Item item, + Style style, float itemModelIndex) { + TrimMaterial trimmaterial = TrimMaterial.create(trimKey.location().getPath(), item, itemModelIndex, + Component.translatable(Util.makeDescriptionId("trim_material", trimKey.location())).withStyle(style), Map.of()); + context.register(trimKey, trimmaterial); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/trim/ModTrimPatterns.java b/src/main/java/xyz/sillyangel/nugget/trim/ModTrimPatterns.java new file mode 100644 index 0000000..aa0612f --- /dev/null +++ b/src/main/java/xyz/sillyangel/nugget/trim/ModTrimPatterns.java @@ -0,0 +1,28 @@ +package xyz.sillyangel.nugget.trim; + +import xyz.sillyangel.nugget.NuggetMod; +import xyz.sillyangel.nugget.item.ModItems; +import net.minecraft.Util; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.armortrim.TrimPattern; +import net.minecraftforge.registries.ForgeRegistries; + +public class ModTrimPatterns { + public static final ResourceKey NUGGET = ResourceKey.create(Registries.TRIM_PATTERN, + ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")); + + public static void bootstrap(BootstrapContext context) { + register(context, ModItems.NUGGET_SMITHING_TEMPLATE.get(), NUGGET); + } + + private static void register(BootstrapContext context, Item item, ResourceKey key) { + TrimPattern trimPattern = new TrimPattern(key.location(), ForgeRegistries.ITEMS.getHolder(item).get(), + Component.translatable(Util.makeDescriptionId("trim_pattern", key.location())), false); + context.register(key, trimPattern); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/util/ModItemProperites.java b/src/main/java/xyz/sillyangel/nugget/util/ModItemProperites.java new file mode 100644 index 0000000..dac47e2 --- /dev/null +++ b/src/main/java/xyz/sillyangel/nugget/util/ModItemProperites.java @@ -0,0 +1,5 @@ +package xyz.sillyangel.nugget.util; + +public class ModItemProperites { + +} 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..cf03301 --- /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", + "nuggetmod:trims/models/armor/nugget", + "nuggetmod:trims/models/armor/nugget_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", + "nugget": "nuggetmod:trims/color_palettes/nugget" + } + } + ] + } \ No newline at end of file diff --git a/src/main/resources/assets/nuggetmod/lang/en_us.json b/src/main/resources/assets/nuggetmod/lang/en_us.json index e1a8432..6ddba48 100644 --- a/src/main/resources/assets/nuggetmod/lang/en_us.json +++ b/src/main/resources/assets/nuggetmod/lang/en_us.json @@ -12,6 +12,7 @@ "item.nuggetmod.nugget_shovel": "Nugget Shovel", "item.nuggetmod.nugget_axe": "Nugget Axe", "item.nuggetmod.nugget_hoe": "Nugget Hoe", + "item.nuggetmod.nugget_horse_armor": "Nugget Horse Armor", "item.nuggetmod.nugget_helmet": "Nugget Helmet", "item.nuggetmod.nugget_chestplate": "Nugget Chestplate", @@ -21,5 +22,8 @@ "creativetab.nuggetmod.nugget_items": "Nugget Mod Items", "creativetab.nuggetmod.nugget_blocks": "Nugget Mod Blocks", - "item.nuggetmod.nugget.tooltip": "THE NUGGET" + "item.nuggetmod.nugget.tooltip": "THE NUGGET", + + "trim_pattern.nuggetmod.nugget": "Nugget Armor Trim", + "trim_material.nuggetmod.nugget": "Nugget Material" } \ No newline at end of file diff --git a/src/main/resources/assets/nuggetmod/textures/entity/horse/armor/nugget_horse_armor.png b/src/main/resources/assets/nuggetmod/textures/entity/horse/armor/nugget_horse_armor.png new file mode 100644 index 0000000..963fbfe Binary files /dev/null and b/src/main/resources/assets/nuggetmod/textures/entity/horse/armor/nugget_horse_armor.png differ diff --git a/src/main/resources/assets/nuggetmod/textures/trims/color_palettes/nugget.png b/src/main/resources/assets/nuggetmod/textures/trims/color_palettes/nugget.png new file mode 100644 index 0000000..9af58e7 Binary files /dev/null and b/src/main/resources/assets/nuggetmod/textures/trims/color_palettes/nugget.png differ diff --git a/src/main/resources/assets/nuggetmod/textures/trims/models/armor/nugget.png b/src/main/resources/assets/nuggetmod/textures/trims/models/armor/nugget.png new file mode 100644 index 0000000..ca590d1 Binary files /dev/null and b/src/main/resources/assets/nuggetmod/textures/trims/models/armor/nugget.png differ diff --git a/src/main/resources/assets/nuggetmod/textures/trims/models/armor/nugget_leggings.png b/src/main/resources/assets/nuggetmod/textures/trims/models/armor/nugget_leggings.png new file mode 100644 index 0000000..685f1f1 Binary files /dev/null and b/src/main/resources/assets/nuggetmod/textures/trims/models/armor/nugget_leggings.png differ