From 5a30bffae1f845f1c2101340ab761ca738926f6c Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 19 Jul 2025 18:11:20 +0200 Subject: [PATCH] added ruby armor --- .../gta/gdp/item/ModArmorMaterials.java | 30 ++++++++++++++++++ .../de/jottyfan/gta/gdp/item/ModItems.java | 14 +++++--- .../assets/gtagdp/equipment/ruby.json | 14 ++++++++ .../assets/gtagdp/items/ruby_boots.json | 6 ++++ .../assets/gtagdp/items/ruby_chestplate.json | 6 ++++ .../assets/gtagdp/items/ruby_helmet.json | 6 ++++ .../assets/gtagdp/items/ruby_leggings.json | 6 ++++ .../resources/assets/gtagdp/lang/de_de.json | 4 +++ .../resources/assets/gtagdp/lang/en_us.json | 4 +++ .../assets/gtagdp/models/item/ruby_boots.json | 6 ++++ .../gtagdp/models/item/ruby_chestplate.json | 6 ++++ .../gtagdp/models/item/ruby_helmet.json | 6 ++++ .../gtagdp/models/item/ruby_leggings.json | 6 ++++ .../entity/equipment/humanoid/ruby_top.png | Bin 0 -> 5932 bytes .../humanoid_leggings/ruby_bottom.png | Bin 0 -> 5171 bytes .../gtagdp/textures/item/ruby_boots.png | Bin 0 -> 4816 bytes .../gtagdp/textures/item/ruby_chestplate.png | Bin 0 -> 4914 bytes .../gtagdp/textures/item/ruby_helmet.png | Bin 0 -> 4845 bytes .../gtagdp/textures/item/ruby_leggings.png | Bin 0 -> 4828 bytes .../data/gtagdp/recipe/shaped_ruby_boots.json | 14 ++++++++ .../gtagdp/recipe/shaped_ruby_chestplate.json | 15 +++++++++ .../gtagdp/recipe/shaped_ruby_helmet.json | 14 ++++++++ .../gtagdp/recipe/shaped_ruby_leggings.json | 15 +++++++++ 23 files changed, 168 insertions(+), 4 deletions(-) create mode 100644 src/main/java/de/jottyfan/gta/gdp/item/ModArmorMaterials.java create mode 100644 src/main/resources/assets/gtagdp/equipment/ruby.json create mode 100644 src/main/resources/assets/gtagdp/items/ruby_boots.json create mode 100644 src/main/resources/assets/gtagdp/items/ruby_chestplate.json create mode 100644 src/main/resources/assets/gtagdp/items/ruby_helmet.json create mode 100644 src/main/resources/assets/gtagdp/items/ruby_leggings.json create mode 100644 src/main/resources/assets/gtagdp/models/item/ruby_boots.json create mode 100644 src/main/resources/assets/gtagdp/models/item/ruby_chestplate.json create mode 100644 src/main/resources/assets/gtagdp/models/item/ruby_helmet.json create mode 100644 src/main/resources/assets/gtagdp/models/item/ruby_leggings.json create mode 100644 src/main/resources/assets/gtagdp/textures/entity/equipment/humanoid/ruby_top.png create mode 100644 src/main/resources/assets/gtagdp/textures/entity/equipment/humanoid_leggings/ruby_bottom.png create mode 100644 src/main/resources/assets/gtagdp/textures/item/ruby_boots.png create mode 100644 src/main/resources/assets/gtagdp/textures/item/ruby_chestplate.png create mode 100644 src/main/resources/assets/gtagdp/textures/item/ruby_helmet.png create mode 100644 src/main/resources/assets/gtagdp/textures/item/ruby_leggings.png create mode 100644 src/main/resources/data/gtagdp/recipe/shaped_ruby_boots.json create mode 100644 src/main/resources/data/gtagdp/recipe/shaped_ruby_chestplate.json create mode 100644 src/main/resources/data/gtagdp/recipe/shaped_ruby_helmet.json create mode 100644 src/main/resources/data/gtagdp/recipe/shaped_ruby_leggings.json diff --git a/src/main/java/de/jottyfan/gta/gdp/item/ModArmorMaterials.java b/src/main/java/de/jottyfan/gta/gdp/item/ModArmorMaterials.java new file mode 100644 index 0000000..ddb552e --- /dev/null +++ b/src/main/java/de/jottyfan/gta/gdp/item/ModArmorMaterials.java @@ -0,0 +1,30 @@ +package de.jottyfan.gta.gdp.item; + +import java.util.EnumMap; + +import de.jottyfan.gta.gdp.GTAGDP; +import net.minecraft.item.equipment.ArmorMaterial; +import net.minecraft.item.equipment.EquipmentAsset; +import net.minecraft.item.equipment.EquipmentType; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Identifier; +import net.minecraft.util.Util; + +/** + * + * @author jotty + * + */ +public class ModArmorMaterials { + static RegistryKey> REGISTRY_KEY = RegistryKey.ofRegistry(Identifier.ofVanilla("equipment_asset")); + public static final RegistryKey RUBY_KEY = RegistryKey.of(REGISTRY_KEY, Identifier.of(GTAGDP.MOD_ID, "ruby")); + public static final ArmorMaterial RUBY_ARMOR_MATERIAL = new ArmorMaterial(500, Util.make(new EnumMap<>(EquipmentType.class), map -> { + map.put(EquipmentType.BOOTS, 2); + map.put(EquipmentType.LEGGINGS, 3); + map.put(EquipmentType.CHESTPLATE, 4); + map.put(EquipmentType.HELMET, 1); + map.put(EquipmentType.BODY, 4); + }), 20, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 0, 0, null, RUBY_KEY); +} diff --git a/src/main/java/de/jottyfan/gta/gdp/item/ModItems.java b/src/main/java/de/jottyfan/gta/gdp/item/ModItems.java index d6465f2..9d97ad1 100644 --- a/src/main/java/de/jottyfan/gta/gdp/item/ModItems.java +++ b/src/main/java/de/jottyfan/gta/gdp/item/ModItems.java @@ -5,6 +5,7 @@ import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.item.Item; import net.minecraft.item.Item.Settings; import net.minecraft.item.ItemGroups; +import net.minecraft.item.equipment.EquipmentType; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; @@ -18,11 +19,12 @@ import net.minecraft.util.Identifier; */ public class ModItems { - public static final Item STUB = registerStubItem( - Identifier.of(GTAGDP.MOD_ID, "stub"), - new Item.Settings().food(ModFoodComponents.DELICIOUS_STUB)); - + public static final Item STUB = registerStubItem(Identifier.of(GTAGDP.MOD_ID, "stub"), new Item.Settings().food(ModFoodComponents.DELICIOUS_STUB)); public static final Item RUBYBALL = registerItem(Identifier.of(GTAGDP.MOD_ID, "rubyball"), new Item.Settings()); + public static final Item ARMOR_RUBY_HELMET = registerItem(Identifier.of(GTAGDP.MOD_ID, "ruby_helmet"), new Item.Settings().maxCount(1).armor(ModArmorMaterials.RUBY_ARMOR_MATERIAL, EquipmentType.HELMET)); + public static final Item ARMOR_RUBY_CHESTPLATE = registerItem(Identifier.of(GTAGDP.MOD_ID, "ruby_chestplate"), new Item.Settings().maxCount(1).armor(ModArmorMaterials.RUBY_ARMOR_MATERIAL, EquipmentType.CHESTPLATE)); + public static final Item ARMOR_RUBY_LEGGINGS = registerItem(Identifier.of(GTAGDP.MOD_ID, "ruby_leggings"), new Item.Settings().maxCount(1).armor(ModArmorMaterials.RUBY_ARMOR_MATERIAL, EquipmentType.LEGGINGS)); + public static final Item ARMOR_RUBY_BOOTS = registerItem(Identifier.of(GTAGDP.MOD_ID, "ruby_boots"), new Item.Settings().maxCount(1).armor(ModArmorMaterials.RUBY_ARMOR_MATERIAL, EquipmentType.BOOTS)); private static Item registerItem(Identifier identifier, Settings settings) { return Registry.register(Registries.ITEM, identifier, @@ -40,6 +42,10 @@ public class ModItems { ItemGroupEvents.modifyEntriesEvent(ItemGroups.TOOLS).register(entries -> { entries.add(STUB); entries.add(RUBYBALL); + entries.add(ARMOR_RUBY_HELMET); + entries.add(ARMOR_RUBY_CHESTPLATE); + entries.add(ARMOR_RUBY_LEGGINGS); + entries.add(ARMOR_RUBY_BOOTS); }); } } diff --git a/src/main/resources/assets/gtagdp/equipment/ruby.json b/src/main/resources/assets/gtagdp/equipment/ruby.json new file mode 100644 index 0000000..81672a2 --- /dev/null +++ b/src/main/resources/assets/gtagdp/equipment/ruby.json @@ -0,0 +1,14 @@ +{ + "layers": { + "humanoid": [ + { + "texture": "gtagdp:ruby_top" + } + ], + "humanoid_leggings": [ + { + "texture": "gtagdp:ruby_bottom" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/items/ruby_boots.json b/src/main/resources/assets/gtagdp/items/ruby_boots.json new file mode 100644 index 0000000..a8187f6 --- /dev/null +++ b/src/main/resources/assets/gtagdp/items/ruby_boots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "gtagdp:item/ruby_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/items/ruby_chestplate.json b/src/main/resources/assets/gtagdp/items/ruby_chestplate.json new file mode 100644 index 0000000..801bf60 --- /dev/null +++ b/src/main/resources/assets/gtagdp/items/ruby_chestplate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "gtagdp:item/ruby_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/items/ruby_helmet.json b/src/main/resources/assets/gtagdp/items/ruby_helmet.json new file mode 100644 index 0000000..3e921e4 --- /dev/null +++ b/src/main/resources/assets/gtagdp/items/ruby_helmet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "gtagdp:item/ruby_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/items/ruby_leggings.json b/src/main/resources/assets/gtagdp/items/ruby_leggings.json new file mode 100644 index 0000000..5e0fc13 --- /dev/null +++ b/src/main/resources/assets/gtagdp/items/ruby_leggings.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "gtagdp:item/ruby_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/lang/de_de.json b/src/main/resources/assets/gtagdp/lang/de_de.json index 7ad5616..fd4706e 100644 --- a/src/main/resources/assets/gtagdp/lang/de_de.json +++ b/src/main/resources/assets/gtagdp/lang/de_de.json @@ -1,6 +1,10 @@ { "item.gtagdp.stub": "Stummel", "item.gtagdp.rubyball": "Rubinball", + "item.gtagdp.ruby_helmet": "Rubinhelm", + "item.gtagdp.ruby_chestplate": "Rubinbrustpanzer", + "item.gtagdp.ruby_leggings": "Rubinhose", + "item.gtagdp.ruby_boots": "Rubinstiefel", "block.gtagdp.ruby_block": "Rubinblock", "block.gtagdp.ruby_ore": "Rubinerz", diff --git a/src/main/resources/assets/gtagdp/lang/en_us.json b/src/main/resources/assets/gtagdp/lang/en_us.json index 0b21abd..36556bd 100644 --- a/src/main/resources/assets/gtagdp/lang/en_us.json +++ b/src/main/resources/assets/gtagdp/lang/en_us.json @@ -1,6 +1,10 @@ { "item.gtagdp.stub": "Stub", "item.gtagdp.rubyball": "Ruby ball", + "item.gtagdp.ruby_helmet": "Ruby helmet", + "item.gtagdp.ruby_chestplate": "Ruby chestplate", + "item.gtagdp.ruby_leggings": "Ruby leggings", + "item.gtagdp.ruby_boots": "Ruby boots", "block.gtagdp.ruby_block": "Ruby block", "block.gtagdp.ruby_ore": "Ruby ore", diff --git a/src/main/resources/assets/gtagdp/models/item/ruby_boots.json b/src/main/resources/assets/gtagdp/models/item/ruby_boots.json new file mode 100644 index 0000000..abd4b74 --- /dev/null +++ b/src/main/resources/assets/gtagdp/models/item/ruby_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/coal", + "textures": { + "layer0": "gtagdp:item/ruby_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/models/item/ruby_chestplate.json b/src/main/resources/assets/gtagdp/models/item/ruby_chestplate.json new file mode 100644 index 0000000..af24ea2 --- /dev/null +++ b/src/main/resources/assets/gtagdp/models/item/ruby_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/coal", + "textures": { + "layer0": "gtagdp:item/ruby_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/models/item/ruby_helmet.json b/src/main/resources/assets/gtagdp/models/item/ruby_helmet.json new file mode 100644 index 0000000..5291490 --- /dev/null +++ b/src/main/resources/assets/gtagdp/models/item/ruby_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/coal", + "textures": { + "layer0": "gtagdp:item/ruby_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/models/item/ruby_leggings.json b/src/main/resources/assets/gtagdp/models/item/ruby_leggings.json new file mode 100644 index 0000000..0ebfaef --- /dev/null +++ b/src/main/resources/assets/gtagdp/models/item/ruby_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/coal", + "textures": { + "layer0": "gtagdp:item/ruby_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtagdp/textures/entity/equipment/humanoid/ruby_top.png b/src/main/resources/assets/gtagdp/textures/entity/equipment/humanoid/ruby_top.png new file mode 100644 index 0000000000000000000000000000000000000000..11699d15c22b93d123158fa41adb42d13242892d GIT binary patch literal 5932 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 o{+@3*6-@=;6T~nas@n?)`oD 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 EAK{;+LI3~& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtagdp/textures/item/ruby_chestplate.png b/src/main/resources/assets/gtagdp/textures/item/ruby_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..4511e55730b38bebcfe695dcbc7db24e56518f66 GIT binary patch literal 4914 zcmeHLdsGzH86T0jVSOQjqL{{*F{zCTt_s&8g$F*W zwXTh*?A_1QM;TCF#wQY$D~BD^oA&v>jE&sTIHc8^KKk>aUlr%Yofw&;L6BZc(-2}h+45(pS`oD+PN~gmfkX# zz1WvoHT`ch*YBA7+a3SBVCgsXb~V^`bc9{IB6o54AnmoS?`Y$SW)x?R6$>U@Js)3m zKkCzH|MdE%56g#>P21wX?_YN3_?R?jspB7`4&6IP#|w!CLkr9!F5f#@G-Gt)tzn-W z8TVku;F|lRY7ZagQ|ixBzM@ly-?E{ zPW19XA9VYm@DLT=9Z-04dO1#)VsA51Gv%MwZp z1xD0O7_UtTvJk)x6b=o#U7i3NwCX~*EIe1c4LUSrq7+(nxy}qU+3N==sVDU~W)I5q zOuF$}G{G-QY^H5e2L!yb>IxLa#~KVJB_;Y2LhtqG8;lIY7;uxpWWt~Y7MSl*xFF^U zJg-8uW7t4I@XJ0$_IgkiljFU`idCnBX;-BaH&U7=afti^$MsGfs#&L3V+1cmfLN5r7H>!Syo4 z;V9mWb0UKQVB#@S0s_XHMG?bIxJ2U&Zj!jJ5b1sys*-bcjY@?QArxT}B*M%{m?#k> zMp86`aex3Ag;O-i;bwxP+o42(o#geqIap5F&E*4w&yybtQze|8nBlPMOnUrrPlk(A zBx!N&txvKvfOIF(JK#cX0oBW^L#7Lul@$41$}AAm|!F^#ysgAlbWEKCLx z%c(kr03i>U3!Cf*oZ|IodA%;HP7MiFJv)b;a5;&b!r3?lKv3LdW^oH^WU`Dji<6Lr zmv9q{cd_@1vNZp{S*wc&O=vH9svLmx&kuFAuc&FDsQs$_(j|wM5{iZv13)?{9%UZL6zIz-|_p3GkYeT{-P*mIps{RyIp+%J$NTg{&?r{+utG|giUTdZdv^>{LJ?Kzp4ygoghQb5Qja@ Kwk>JS;{O1DpW8+N literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtagdp/textures/item/ruby_helmet.png b/src/main/resources/assets/gtagdp/textures/item/ruby_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..b1272b3e6a47e0d64b5d8e2b2203c8a2b04a6bbb GIT binary patch literal 4845 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 Tc@Mt