diff --git a/CHANGELOG.MD b/CHANGELOG.MD new file mode 100644 index 0000000..9d7cb95 --- /dev/null +++ b/CHANGELOG.MD @@ -0,0 +1,19 @@ +# Changelog + + +## 1.10 +- added tools, and sword +- datagen for no more json files* +- new textures for the tools +- adds horse armor, and player armor + +* kinda + +## 1.02 +adds ores both deepslate and regular and it drops you can smelt the raw nugget it drops into nuggets and makes it so you can create raw nugget blocks and nugget block +## 1.01 +add two new blocks +- raw nugget block +- nugget block +## 1.00 +version 1 adds the nugget item diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java index 1fdd838..d61a39b 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java +++ b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemModelProvider.java @@ -11,8 +11,30 @@ import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; +import net.minecraft.world.item.armortrim.TrimMaterial; +import net.minecraft.world.item.armortrim.TrimMaterials; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.packs.PackType; +import net.minecraft.world.item.ArmorItem; +import net.minecraftforge.client.model.generators.ModelFile; + +import java.util.LinkedHashMap; public class ModItemModelProvider extends ItemModelProvider { + private static LinkedHashMap, Float> trimMaterials = new LinkedHashMap<>(); + static { + trimMaterials.put(TrimMaterials.QUARTZ, 0.1F); + trimMaterials.put(TrimMaterials.IRON, 0.2F); + trimMaterials.put(TrimMaterials.NETHERITE, 0.3F); + trimMaterials.put(TrimMaterials.REDSTONE, 0.4F); + trimMaterials.put(TrimMaterials.COPPER, 0.5F); + trimMaterials.put(TrimMaterials.GOLD, 0.6F); + trimMaterials.put(TrimMaterials.EMERALD, 0.7F); + trimMaterials.put(TrimMaterials.DIAMOND, 0.8F); + trimMaterials.put(TrimMaterials.LAPIS, 0.9F); + trimMaterials.put(TrimMaterials.AMETHYST, 1.0F); + } + public ModItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { super(output, NuggetMod.MOD_ID, existingFileHelper); } @@ -27,6 +49,49 @@ public class ModItemModelProvider extends ItemModelProvider { handheldItem(ModItems.NUGGET_SHOVEL); handheldItem(ModItems.NUGGET_AXE); handheldItem(ModItems.NUGGET_HOE); + + trimmedArmorItem(ModItems.NUGGET_HELMET); + trimmedArmorItem(ModItems.NUGGET_CHESTPLATE); + trimmedArmorItem(ModItems.NUGGET_LEGGINGS); + trimmedArmorItem(ModItems.NUGGET_BOOTS); + } + private void trimmedArmorItem(RegistryObject itemRegistryObject) { + final String MOD_ID = NuggetMod.MOD_ID; // Change this to your mod id + if (itemRegistryObject.get() instanceof ArmorItem armorItem) { + trimMaterials.forEach((trimMaterial, value) -> { + float trimValue = value; + String armorType = switch (armorItem.getEquipmentSlot()) { + case HEAD -> "helmet"; + case CHEST -> "chestplate"; + case LEGS -> "leggings"; + case FEET -> "boots"; + default -> ""; + }; + String armorItemPath = armorItem.toString(); + String trimPath = "trims/items/" + armorType + "_trim_" + trimMaterial.location().getPath(); + String currentTrimName = armorItemPath + "_" + trimMaterial.location().getPath() + "_trim"; + ResourceLocation armorItemResLoc = ResourceLocation.parse(armorItemPath); + ResourceLocation trimResLoc = ResourceLocation.parse(trimPath); // minecraft namespace + ResourceLocation trimNameResLoc = ResourceLocation.parse(currentTrimName); + // This is used for making the ExistingFileHelper acknowledge that this texture exist, so this will + // avoid an IllegalArgumentException + existingFileHelper.trackGenerated(trimResLoc, PackType.CLIENT_RESOURCES, ".png", "textures"); + // Trimmed armorItem files + getBuilder(currentTrimName) + .parent(new ModelFile.UncheckedModelFile("item/generated")) + .texture("layer0", armorItemResLoc.getNamespace() + ":item/" + armorItemResLoc.getPath()) + .texture("layer1", trimResLoc); + // Non-trimmed armorItem file (normal variant) + this.withExistingParent(itemRegistryObject.getId().getPath(), + mcLoc("item/generated")) + .override() + .model(new ModelFile.UncheckedModelFile(trimNameResLoc.getNamespace() + ":item/" + trimNameResLoc.getPath())) + .predicate(mcLoc("trim_type"), trimValue).end() + .texture("layer0", + ResourceLocation.fromNamespaceAndPath(MOD_ID, + "item/" + itemRegistryObject.getId().getPath())); + }); + } } private ItemModelBuilder handheldItem(RegistryObject item) { diff --git a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java index f9b591d..7568d3f 100644 --- a/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java +++ b/src/main/java/xyz/sillyangel/nugget/datagen/ModItemTagProvider.java @@ -4,6 +4,7 @@ import xyz.sillyangel.nugget.NuggetMod; import xyz.sillyangel.nugget.item.ModItems; import xyz.sillyangel.nugget.util.ModTags; import net.minecraft.core.HolderLookup; +import net.minecraft.tags.ItemTags; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.world.item.Items; @@ -27,5 +28,11 @@ public class ModItemTagProvider extends ItemTagsProvider { .add(Items.COAL) .add(Items.STICK) .add(Items.COMPASS); + + tag(ItemTags.TRIMMABLE_ARMOR) + .add(ModItems.NUGGET_HELMET.get()) + .add(ModItems.NUGGET_CHESTPLATE.get()) + .add(ModItems.NUGGET_LEGGINGS.get()) + .add(ModItems.NUGGET_BOOTS.get()); } } \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModArmorMaterials.java b/src/main/java/xyz/sillyangel/nugget/item/ModArmorMaterials.java new file mode 100644 index 0000000..bab5d9e --- /dev/null +++ b/src/main/java/xyz/sillyangel/nugget/item/ModArmorMaterials.java @@ -0,0 +1,46 @@ +package xyz.sillyangel.nugget.item; + +import xyz.sillyangel.nugget.NuggetMod; +import net.minecraft.Util; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.Ingredient; + +import java.util.EnumMap; +import java.util.List; +import java.util.function.Supplier; + +public class ModArmorMaterials { + public static final Holder NUGGET_ARMOR_MATERIAL = register("nugget", Util.make(new EnumMap<>(ArmorItem.Type.class), + attribute -> { + attribute.put(ArmorItem.Type.BOOTS, 5); + attribute.put(ArmorItem.Type.LEGGINGS, 7); + attribute.put(ArmorItem.Type.CHESTPLATE, 9); + attribute.put(ArmorItem.Type.HELMET, 5); + attribute.put(ArmorItem.Type.BODY, 11); + }), 20, 4.5f, 0.5f, () -> ModItems.NUGGET.get()); + + private static Holder register(String name, EnumMap typeProtection, + int enchantability, float toughness, float knockbackResistance, + Supplier ingredientItem) { + ResourceLocation location = ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name); + Holder equipSound = SoundEvents.ARMOR_EQUIP_NETHERITE; + Supplier ingredient = () -> Ingredient.of(ingredientItem.get()); + List layers = List.of(new ArmorMaterial.Layer(location)); + + EnumMap typeMap = new EnumMap<>(ArmorItem.Type.class); + for (ArmorItem.Type type : ArmorItem.Type.values()) { + typeMap.put(type, typeProtection.get(type)); + } + + return Registry.registerForHolder(BuiltInRegistries.ARMOR_MATERIAL, location, + new ArmorMaterial(typeProtection, enchantability, equipSound, ingredient, layers, toughness, knockbackResistance)); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java b/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java index 61d30d1..2c137dc 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java +++ b/src/main/java/xyz/sillyangel/nugget/item/ModCreativeModeTabs.java @@ -27,6 +27,11 @@ public class ModCreativeModeTabs { output.accept(ModItems.NUGGET_AXE.get()); output.accept(ModItems.NUGGET_HOE.get()); + output.accept(ModItems.NUGGET_HELMET.get()); + output.accept(ModItems.NUGGET_CHESTPLATE.get()); + output.accept(ModItems.NUGGET_LEGGINGS.get()); + output.accept(ModItems.NUGGET_BOOTS.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 5ad4421..3648a2e 100644 --- a/src/main/java/xyz/sillyangel/nugget/item/ModItems.java +++ b/src/main/java/xyz/sillyangel/nugget/item/ModItems.java @@ -41,6 +41,22 @@ public class ModItems { () -> new HoeItem(ModToolTiers.NUGGET, new Item.Properties() .attributes(HoeItem.createAttributes(ModToolTiers.NUGGET, 0, -3.0f)))); + // armor things + + public static final RegistryObject NUGGET_HELMET = ITEMS.register("nugget_helmet", + () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorItem.Type.HELMET, + new Item.Properties().durability(ArmorItem.Type.HELMET.getDurability(25)))); + public static final RegistryObject NUGGET_CHESTPLATE = ITEMS.register("nugget_chestplate", + () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, + new Item.Properties().durability(ArmorItem.Type.CHESTPLATE.getDurability(25)))); + public static final RegistryObject NUGGET_LEGGINGS = ITEMS.register("nugget_leggings", + () -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, + new Item.Properties().durability(ArmorItem.Type.LEGGINGS.getDurability(25)))); + 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)))); + + public static void register(IEventBus eventBus) { ITEMS.register(eventBus); } diff --git a/src/main/resources/assets/nuggetmod/lang/en_us.json b/src/main/resources/assets/nuggetmod/lang/en_us.json index f2ffd6c..e1a8432 100644 --- a/src/main/resources/assets/nuggetmod/lang/en_us.json +++ b/src/main/resources/assets/nuggetmod/lang/en_us.json @@ -13,6 +13,11 @@ "item.nuggetmod.nugget_axe": "Nugget Axe", "item.nuggetmod.nugget_hoe": "Nugget Hoe", + "item.nuggetmod.nugget_helmet": "Nugget Helmet", + "item.nuggetmod.nugget_chestplate": "Nugget Chestplate", + "item.nuggetmod.nugget_leggings": "Nugget Leggings", + "item.nuggetmod.nugget_boots": "Nugget Boots", + "creativetab.nuggetmod.nugget_items": "Nugget Mod Items", "creativetab.nuggetmod.nugget_blocks": "Nugget Mod Blocks",