From 90d7f6068dda619adb0916734ccbc6e433e9b78c Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 27 Dec 2024 00:51:55 +0200 Subject: [PATCH 1/7] add material armors --- .../resources/assets/gtceu/lang/en_ud.json | 5 +- .../resources/assets/gtceu/lang/en_us.json | 5 +- .../api/data/chemical/material/Material.java | 8 + .../material/properties/ArmorProperty.java | 220 ++++++++++++++++++ .../properties/MaterialProperties.java | 14 +- .../material/properties/PropertyKey.java | 9 +- .../gtceu/api/item/tool/ToolHelper.java | 11 + .../renderer/item/ArmorItemRenderer.java | 49 ++++ .../renderer/item/TagPrefixItemRenderer.java | 5 - .../gtceu/common/data/GTItems.java | 1 + .../gtceu/common/data/GTMaterialItems.java | 52 ++++- .../data/materials/ElementMaterials.java | 16 ++ .../data/materials/FirstDegreeMaterials.java | 25 ++ .../data/materials/HigherDegreeMaterials.java | 7 + .../data/materials/SecondDegreeMaterials.java | 9 + .../UnknownCompositionMaterials.java | 5 +- .../gtceu/common/item/armor/GTArmorItem.java | 74 ++++++ .../common/item/armor/GTDyeableArmorItem.java | 19 ++ .../gregtechceu/gtceu/core/MixinHelpers.java | 32 ++- .../core/mixins/HumanoidArmorLayerMixin.java | 86 +++++++ .../gtceu/core/mixins/ModelManagerMixin.java | 2 + .../gtceu/data/lang/LangHandler.java | 6 + .../recipe/generated/ToolRecipeHandler.java | 36 ++- .../integration/kjs/GregTechKubeJSPlugin.java | 2 + .../assets/gtceu/models/item/armor/boots.json | 68 ++++++ .../gtceu/models/item/armor/chestplate.json | 68 ++++++ .../gtceu/models/item/armor/helmet.json | 68 ++++++ .../gtceu/models/item/armor/leggings.json | 68 ++++++ .../armor/trimmed/boots_amethyst_trim.json | 7 + .../item/armor/trimmed/boots_copper_trim.json | 7 + .../armor/trimmed/boots_diamond_trim.json | 7 + .../armor/trimmed/boots_emerald_trim.json | 7 + .../item/armor/trimmed/boots_gold_trim.json | 7 + .../item/armor/trimmed/boots_iron_trim.json | 7 + .../item/armor/trimmed/boots_lapis_trim.json | 7 + .../armor/trimmed/boots_netherite_trim.json | 7 + .../item/armor/trimmed/boots_quartz_trim.json | 7 + .../armor/trimmed/boots_redstone_trim.json | 7 + .../trimmed/chestplate_amethyst_trim.json | 7 + .../armor/trimmed/chestplate_copper_trim.json | 7 + .../trimmed/chestplate_diamond_trim.json | 7 + .../trimmed/chestplate_emerald_trim.json | 7 + .../armor/trimmed/chestplate_gold_trim.json | 7 + .../armor/trimmed/chestplate_iron_trim.json | 7 + .../armor/trimmed/chestplate_lapis_trim.json | 7 + .../trimmed/chestplate_netherite_trim.json | 7 + .../armor/trimmed/chestplate_quartz_trim.json | 7 + .../trimmed/chestplate_redstone_trim.json | 7 + .../item/armor/trimmed/chestplate_trim.json | 7 + .../armor/trimmed/helmet_amethyst_trim.json | 7 + .../armor/trimmed/helmet_copper_trim.json | 7 + .../armor/trimmed/helmet_diamond_trim.json | 7 + .../armor/trimmed/helmet_emerald_trim.json | 7 + .../item/armor/trimmed/helmet_gold_trim.json | 7 + .../item/armor/trimmed/helmet_iron_trim.json | 7 + .../item/armor/trimmed/helmet_lapis_trim.json | 7 + .../armor/trimmed/helmet_netherite_trim.json | 7 + .../armor/trimmed/helmet_quartz_trim.json | 7 + .../armor/trimmed/helmet_redstone_trim.json | 7 + .../armor/trimmed/leggings_amethyst_trim.json | 7 + .../armor/trimmed/leggings_copper_trim.json | 7 + .../armor/trimmed/leggings_diamond_trim.json | 7 + .../armor/trimmed/leggings_emerald_trim.json | 7 + .../armor/trimmed/leggings_gold_trim.json | 7 + .../armor/trimmed/leggings_iron_trim.json | 7 + .../armor/trimmed/leggings_lapis_trim.json | 7 + .../trimmed/leggings_netherite_trim.json | 7 + .../armor/trimmed/leggings_quartz_trim.json | 7 + .../armor/trimmed/leggings_redstone_trim.json | 7 + .../gtceu/textures/item/armor/boots.png | Bin 0 -> 5607 bytes .../gtceu/textures/item/armor/chestplate.png | Bin 0 -> 5638 bytes .../gtceu/textures/item/armor/helmet.png | Bin 0 -> 5574 bytes .../gtceu/textures/item/armor/leggings.png | Bin 0 -> 5612 bytes .../textures/models/armor/metal_layer_1.png | Bin 0 -> 15093 bytes .../models/armor/metal_layer_1_overlay.png | Bin 0 -> 13043 bytes .../textures/models/armor/metal_layer_2.png | Bin 0 -> 13558 bytes .../models/armor/metal_layer_2_overlay.png | Bin 0 -> 6028 bytes src/main/resources/gtceu.mixins.json | 5 +- 78 files changed, 1224 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java create mode 100644 src/main/resources/assets/gtceu/models/item/armor/boots.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/chestplate.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/helmet.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/leggings.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/boots.png create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/chestplate.png create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/helmet.png create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/leggings.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 18580338c0..b5f904edb8 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1742,7 +1742,6 @@ "config.gtceu.option.enableCleanroom": "ɯooɹuɐǝןƆǝןqɐuǝ", "config.gtceu.option.enableFEConverters": "sɹǝʇɹǝʌuoƆƎℲǝןqɐuǝ", "config.gtceu.option.enableMaintenance": "ǝɔuɐuǝʇuıɐWǝןqɐuǝ", - "config.gtceu.option.enableMoreDualHatchAbility": "ʎʇıןıqⱯɥɔʇɐHןɐnᗡǝɹoWǝןqɐuǝ", "config.gtceu.option.enableResearch": "ɥɔɹɐǝsǝᴚǝןqɐuǝ", "config.gtceu.option.enableTieredCasings": "sbuısɐƆpǝɹǝı⟘ǝןqɐuǝ", "config.gtceu.option.enableWorldAccelerators": "sɹoʇɐɹǝןǝɔɔⱯpןɹoMǝןqɐuǝ", @@ -3648,6 +3647,10 @@ "item.gtceu.ancient_gold_coin.tooltip": "suınᴚ ʇuǝıɔuɐ uı punoℲㄥ§", "item.gtceu.anvil_casting_mold": ")ןıʌuⱯ( pןoW buıʇsɐƆ", "item.gtceu.anvil_casting_mold.tooltip": "sןıʌuⱯ buıdɐɥs ɹoɟ pןoWㄥ§", + "item.gtceu.armor.boots": "sʇooᗺ %s", + "item.gtceu.armor.chestplate": "ǝʇɐןdʇsǝɥƆ %s", + "item.gtceu.armor.helmet": "ʇǝɯןǝH %s", + "item.gtceu.armor.leggings": "sbuıbbǝꞀ %s", "item.gtceu.ash_dust": "sǝɥsⱯ", "item.gtceu.avanced_nanomuscle_chestplate": "ǝʇɐןdʇsǝɥƆ ǝʇınS ™ǝןɔsnWouɐN pǝɔuɐʌpⱯ", "item.gtceu.axe_extruder_mold.tooltip": "sǝxⱯ buıʞɐɯ ɹoɟ ǝdɐɥS ɹǝpnɹʇxƎㄥ§", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index b3fdb619c0..19f49a1ce7 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1742,7 +1742,6 @@ "config.gtceu.option.enableCleanroom": "enableCleanroom", "config.gtceu.option.enableFEConverters": "enableFEConverters", "config.gtceu.option.enableMaintenance": "enableMaintenance", - "config.gtceu.option.enableMoreDualHatchAbility": "enableMoreDualHatchAbility", "config.gtceu.option.enableResearch": "enableResearch", "config.gtceu.option.enableTieredCasings": "enableTieredCasings", "config.gtceu.option.enableWorldAccelerators": "enableWorldAccelerators", @@ -3648,6 +3647,10 @@ "item.gtceu.ancient_gold_coin.tooltip": "§7Found in ancient Ruins", "item.gtceu.anvil_casting_mold": "Casting Mold (Anvil)", "item.gtceu.anvil_casting_mold.tooltip": "§7Mold for shaping Anvils", + "item.gtceu.armor.boots": "%s Boots", + "item.gtceu.armor.chestplate": "%s Chestplate", + "item.gtceu.armor.helmet": "%s Helmet", + "item.gtceu.armor.leggings": "%s Leggings", "item.gtceu.ash_dust": "Ashes", "item.gtceu.avanced_nanomuscle_chestplate": "Advanced NanoMuscle™ Suite Chestplate", "item.gtceu.axe_extruder_mold.tooltip": "§7Extruder Shape for making Axes", diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 7c03e2c974..afc92796c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -1024,6 +1024,14 @@ public Builder toolStats(ToolProperty toolProperty) { return this; } + /** + * Use {@link ArmorProperty.Builder} to create an Armor Property. + */ + public Builder armorStats(ArmorProperty armorProperty) { + properties.setProperty(PropertyKey.ARMOR, armorProperty); + return this; + } + public Builder rotorStats(int power, int efficiency, float damage, int durability) { properties.setProperty(PropertyKey.ROTOR, new RotorProperty(power, efficiency, damage, durability)); return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java new file mode 100644 index 0000000000..ad8b8a8b89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java @@ -0,0 +1,220 @@ +package com.gregtechceu.gtceu.api.data.chemical.material.properties; + +import com.google.common.base.Preconditions; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.utils.SupplierMemoizer; +import lombok.Getter; +import lombok.Setter; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Range; + +import java.util.EnumMap; +import java.util.Map; +import java.util.function.Supplier; + +// TODO document +public class ArmorProperty implements IMaterialProperty { + + @Setter + @Range(from = 0, to = Integer.MAX_VALUE) + private int durabilityMultiplier; + @Setter + private Map protectionValues; + @Setter + private int enchantability; + private Supplier sound; + @Setter + private float toughness; + @Setter + private float knockbackResistance; + + @Nullable + @Setter + private Supplier<@NotNull Ingredient> repairIngredient; + private boolean noRepair; + + @Setter + private String name = "gtceu:metal"; + @Getter + @Setter + private CustomTextureGetter customTextureGetter = (stack, entity, slot, overlay) -> null; + + @Getter + @Setter + private boolean dyeable; + + @Getter + private final ArmorMaterial armorMaterial; + private Material material; + + public ArmorProperty(int durabilityMultiplier, int[] protectionValues) { + this.durabilityMultiplier = durabilityMultiplier; + this.protectionValues = Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + for (int i = 0; i < ArmorItem.Type.values().length; i++) { + map.put(ArmorItem.Type.values()[i], protectionValues[i]); + } + }); + this.sound = SupplierMemoizer.memoize(() -> SoundEvents.ARMOR_EQUIP_IRON); + this.toughness = 0; + this.knockbackResistance = 0; + this.armorMaterial = new ArmorMaterial(); + } + + public void setSound(Supplier sound) { + this.sound = SupplierMemoizer.memoize(sound); + } + + @Override + public void verifyProperty(MaterialProperties properties) { + if (this.material == null) { + this.material = properties.getMaterial(); + } + if (this.repairIngredient == null && !noRepair) { + this.repairIngredient = + SupplierMemoizer.memoize(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, material))); + } + } + + public static class Builder { + + private final ArmorProperty armorProperty; + + public static ArmorProperty.Builder of(int durabilityMultiplier, int[] protectionValues) { + Preconditions.checkArgument(protectionValues != null && protectionValues.length == 4, + "protectionValues must have 4 entries!"); + return new ArmorProperty.Builder(durabilityMultiplier, protectionValues); + } + + private Builder(int durabilityMultiplier, int[] protectionValues) { + armorProperty = new ArmorProperty(durabilityMultiplier, protectionValues); + } + + public ArmorProperty.Builder unbreakable() { + armorProperty.durabilityMultiplier = 0; + return this; + } + + public ArmorProperty.Builder enchantability(int enchantability) { + armorProperty.enchantability = enchantability; + return this; + } + + public ArmorProperty.Builder protectionValue(ArmorItem.Type type, int value) { + armorProperty.protectionValues.put(type, value); + return this; + } + + public ArmorProperty.Builder protectionValues(Map protectionValues) { + armorProperty.protectionValues = protectionValues; + return this; + } + + public ArmorProperty.Builder repairIngredient(@Nullable Supplier<@NotNull Ingredient> repairIngredient) { + if (repairIngredient == null) { + armorProperty.repairIngredient = null; + armorProperty.noRepair = true; + } else { + armorProperty.repairIngredient = SupplierMemoizer.memoize(repairIngredient); + } + return this; + } + + public ArmorProperty.Builder toughness(float toughness) { + armorProperty.toughness = toughness; + return this; + } + + public ArmorProperty.Builder knockbackResistance(float knockbackResistance) { + armorProperty.knockbackResistance = knockbackResistance; + return this; + } + + public ArmorProperty.Builder dyeable(boolean dyeable) { + armorProperty.dyeable = dyeable; + return this; + } + + public ArmorProperty.Builder customTexture(ArmorProperty.@NotNull CustomTextureGetter textureGetter) { + armorProperty.customTextureGetter = textureGetter; + return this; + } + + public ArmorProperty build() { + return armorProperty; + } + } + + @FunctionalInterface + public interface CustomTextureGetter { + ResourceLocation getCustomTexture(ItemStack stack, Entity entity, EquipmentSlot slot, boolean overlay); + } + + public class ArmorMaterial implements net.minecraft.world.item.ArmorMaterial { + + private static final EnumMap HEALTH_FUNCTION_FOR_TYPE = Util.make(new EnumMap<>(ArmorItem.Type.class), (map) -> { + map.put(ArmorItem.Type.BOOTS, 13); + map.put(ArmorItem.Type.LEGGINGS, 15); + map.put(ArmorItem.Type.CHESTPLATE, 16); + map.put(ArmorItem.Type.HELMET, 11); + }); + + @Override + public int getDurabilityForType(ArmorItem.@NotNull Type type) { + return HEALTH_FUNCTION_FOR_TYPE.get(type) * ArmorProperty.this.durabilityMultiplier; + } + + @Override + public int getDefenseForType(ArmorItem.@NotNull Type type) { + return ArmorProperty.this.protectionValues.get(type); + } + + @Override + public int getEnchantmentValue() { + return ArmorProperty.this.enchantability; + } + + @Override + public @NotNull SoundEvent getEquipSound() { + return ArmorProperty.this.sound.get(); + } + + @Override + public @NotNull Ingredient getRepairIngredient() { + return ArmorProperty.this.repairIngredient != null ? + ArmorProperty.this.repairIngredient.get() : + Ingredient.EMPTY; + } + + @Override + public @NotNull String getName() { + return ArmorProperty.this.name; + } + + @Override + public float getToughness() { + return ArmorProperty.this.toughness; + } + + @Override + public float getKnockbackResistance() { + return ArmorProperty.this.knockbackResistance; + } + + public ArmorProperty getArmorProperty() { + return ArmorProperty.this; + } + } + +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java index 3838011fa3..97afdbf678 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java @@ -4,6 +4,8 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.lowdragmc.lowdraglib.Platform; +import lombok.Getter; +import lombok.Setter; import java.util.*; @@ -19,6 +21,8 @@ public static void addBaseType(PropertyKey baseTypeKey) { } private final Map, IMaterialProperty> propertyMap; + @Getter + @Setter private Material material; public MaterialProperties() { @@ -39,6 +43,8 @@ public boolean hasProperty(PropertyKey key) { public void setProperty(PropertyKey key, IMaterialProperty value) { if (value == null) throw new IllegalArgumentException("Material Property must not be null!"); + if (!key.getType().isInstance(value)) + throw new IllegalArgumentException("Material Property must be of the same type as the property key!"); if (hasProperty(key)) throw new IllegalArgumentException("Material Property " + key.toString() + " already registered!"); propertyMap.put(key, value); @@ -83,14 +89,6 @@ public void verify() { } } - public void setMaterial(Material material) { - this.material = material; - } - - public Material getMaterial() { - return material; - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java index 4778fe9182..7ed5ab0e05 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material.properties; +import lombok.Getter; + public class PropertyKey { public static final PropertyKey BLAST = new PropertyKey<>("blast", BlastProperty.class); @@ -16,6 +18,7 @@ public class PropertyKey { ItemPipeProperties.class); public static final PropertyKey ORE = new PropertyKey<>("ore", OreProperty.class); public static final PropertyKey TOOL = new PropertyKey<>("tool", ToolProperty.class); + public static final PropertyKey ARMOR = new PropertyKey<>("armor", ArmorProperty.class); public static final PropertyKey ROTOR = new PropertyKey<>("rotor", RotorProperty.class); public static final PropertyKey WIRE = new PropertyKey<>("wire", WireProperties.class); public static final PropertyKey WOOD = new PropertyKey<>("wood", WoodProperty.class); @@ -25,7 +28,9 @@ public class PropertyKey { // Empty property used to allow property-less Materials without removing base type enforcement public static final PropertyKey EMPTY = new PropertyKey<>("empty", EmptyProperty.class); + @Getter private final String key; + @Getter private final Class type; public PropertyKey(String key, Class type) { @@ -33,10 +38,6 @@ public PropertyKey(String key, Class type) { this.type = type; } - protected String getKey() { - return key; - } - protected T constructDefault() { try { return type.newInstance(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index 8b10ef6bf4..1df2fddd03 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -40,6 +40,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.item.Tiers; @@ -179,6 +180,16 @@ public static ItemStack get(GTToolType toolType, Material material) { return ItemStack.EMPTY; } + public static ItemStack getArmor(ArmorItem.Type armorType, Material material) { + if (material.hasProperty(PropertyKey.ARMOR)) { + var entry = GTMaterialItems.ARMOR_ITEMS.get(material, armorType); + if (entry != null) { + return entry.get().getDefaultInstance(); + } + } + return ItemStack.EMPTY; + } + public static boolean is(ItemStack stack, GTToolType toolType) { return getToolTypes(stack).contains(toolType); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java new file mode 100644 index 0000000000..e15f5a0e0c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.client.renderer.item; + +import com.google.gson.JsonObject; +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.item.tool.GTToolType; +import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.models.model.DelegatedModel; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +public class ArmorItemRenderer { + + private static final Set MODELS = new HashSet<>(); + + public static void reinitModels() { + for (ArmorItemRenderer model : MODELS) { + // read the base armor model JSON + JsonObject original; + try (BufferedReader reader = Minecraft.getInstance().getResourceManager() + .openAsReader(GTCEu.id("models/item/armor/%s.json".formatted(model.armorType.getName())))) { + original = GsonHelper.parse(reader, true); + } catch (IOException e) { + throw new RuntimeException(e); + } + + GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.item), original); + } + } + + private final Item item; + private final ArmorItem.Type armorType; + + protected ArmorItemRenderer(Item item, ArmorItem.Type armorType) { + this.item = item; + this.armorType = armorType; + } + + public static void create(Item item, ArmorItem.Type armorType) { + MODELS.add(new ArmorItemRenderer(item, armorType)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java index 701b5a17f9..0537d125a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java @@ -12,11 +12,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/16 - * @implNote TagPrefixItemRenderer - */ public class TagPrefixItemRenderer { private static final Set MODELS = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 3d6a960319..233ab82b5b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -2587,6 +2587,7 @@ public Component getItemName(ItemStack stack) { public static void init() { GTMaterialItems.generateMaterialItems(); GTMaterialItems.generateTools(); + GTMaterialItems.generateArmors(); } public static NonNullConsumer materialInfo(ItemMaterialInfo materialInfo) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index 3a8eac17cd..068ef9c2b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -11,6 +11,9 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; +import com.gregtechceu.gtceu.common.item.armor.GTDyeableArmorItem; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -22,6 +25,7 @@ import com.tterrag.registrate.util.entry.ItemProviderEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.function.Supplier; @@ -30,6 +34,7 @@ import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.TOOL; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; +@SuppressWarnings("UnstableApiUsage") public class GTMaterialItems { // Reference Table Builders @@ -39,6 +44,7 @@ public class GTMaterialItems { // Reference Maps public static final Map> toUnify = new HashMap<>(); public static final Map purifyMap = new HashMap<>(); + static { purifyMap.put(TagPrefix.crushed, TagPrefix.crushedPurified); purifyMap.put(TagPrefix.dustImpure, TagPrefix.dust); @@ -47,11 +53,16 @@ public class GTMaterialItems { // Reference Tables public static Table> MATERIAL_ITEMS; - public final static Table> TOOL_ITEMS = ArrayTable.create( + public static final Table> TOOL_ITEMS = ArrayTable.create( GTCEuAPI.materialManager.getRegisteredMaterials().stream() .filter(mat -> mat.hasProperty(PropertyKey.TOOL)) .toList(), GTToolType.getTypes().values().stream().toList()); + public static final Table> ARMOR_ITEMS = ArrayTable.create( + GTCEuAPI.materialManager.getRegisteredMaterials().stream() + .filter(mat -> mat.hasProperty(PropertyKey.ARMOR)) + .toList(), + Arrays.asList(ArmorItem.Type.values())); // Material Items public static void generateMaterialItems() { @@ -115,4 +126,43 @@ private static void generateTool(Material material, GTToolType toolType, GTRegis .color(() -> IGTTool::tintColor) .register()); } + + // Material Armors + public static void generateArmors() { + REGISTRATE.creativeModeTab(() -> TOOL); + for (ArmorItem.Type type : ArmorItem.Type.values()) { + for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { + GTRegistrate registrate = registry.getRegistrate(); + for (Material material : registry.getAllMaterials()) { + if (material.hasProperty(PropertyKey.ARMOR)) { + generateArmor(material, type, registrate); + } + } + } + } + } + + private static void generateArmor(final Material material, final ArmorItem.Type type, GTRegistrate registrate) { + var property = material.getProperty(PropertyKey.ARMOR); + if (property.isDyeable()) { + ARMOR_ITEMS.put(material, type, registrate + .item("%s_%s".formatted(material.getName(), type.getName()), + p -> new GTDyeableArmorItem(property.getArmorMaterial(), type, p, + material, property)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) + .model(NonNullBiConsumer.noop()) + .color(() -> GTArmorItem::tintColor) + .register()); + } else { + ARMOR_ITEMS.put(material, type, registrate + .item("%s_%s".formatted(material.getName(), type.getName()), + p -> new GTArmorItem(property.getArmorMaterial(), type, p, + material, property)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) + .model(NonNullBiConsumer.noop()) + .color(() -> GTArmorItem::tintColor) + .register()); + } + } + } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index acecab1ca3..05a52ae8e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -1,11 +1,14 @@ package com.gregtechceu.gtceu.common.data.materials; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; @@ -13,6 +16,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.common.data.GTElements; import com.gregtechceu.gtceu.common.data.GTMedicalConditions; +import net.minecraft.world.item.crafting.Ingredient; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; @@ -37,6 +41,8 @@ public static void register() { .element(GTElements.Al) .toolStats(ToolProperty.Builder.of(6.0F, 7.5F, 768, 2) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(29, new int[] { 3, 7, 6, 3 }) + .enchantability(10).build()) .rotorStats(100, 140, 2.0f, 128) .cableProperties(V[EV], 1, 1) .fluidPipeProperties(1166, 100, true) @@ -398,6 +404,10 @@ public static void register() { .element(GTElements.Fe) .toolStats(ToolProperty.Builder.of(2.0F, 2.0F, 256, 2) .enchantability(14).addTypes(GTToolType.MORTAR).build()) + .armorStats(ArmorProperty.Builder.of(16, new int[] { 2, 5, 6, 2 }) + .enchantability(9) + .repairIngredient(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, Iron))) + .build()) .rotorStats(115, 115, 2.5f, 256) .cableProperties(V[MV], 2, 3) .buildAndRegister(); @@ -859,6 +869,8 @@ public static void register() { .element(GTElements.Ti) .toolStats(ToolProperty.Builder.of(8.0F, 6.0F, 1536, 3) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(48, new int[] { 4, 9, 7, 4 }) + .enchantability(18).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(130, 115, 3.0f, 1600) .fluidPipeProperties(2426, 150, true) .blast(b -> b.temp(1941, GasTier.MID) @@ -991,6 +1003,8 @@ public static void register() { .element(GTElements.Nt) .toolStats(ToolProperty.Builder.of(180.0F, 100.0F, 65535, 6) .attackSpeed(0.5F).enchantability(33).magnetic().unbreakable().build()) + .armorStats(ArmorProperty.Builder.of(0, new int[] { 75, 200, 150, 75 }) + .enchantability(33).toughness(10.0f).knockbackResistance(1.0f).unbreakable().build()) .rotorStats(400, 250, 12.0f, 655360) .fluidPipeProperties(100_000, 5000, true, true, true, true) .radioactiveHazard(10) @@ -1015,6 +1029,8 @@ public static void register() { .element(GTElements.Dr) .toolStats(ToolProperty.Builder.of(14.0F, 12.0F, 8192, 5) .attackSpeed(0.3F).enchantability(33).magnetic().build()) + .armorStats(ArmorProperty.Builder.of(173, new int[] { 12, 24, 15, 12 }) + .enchantability(33).toughness(4.0f).knockbackResistance(0.5f).build()) .fluidPipeProperties(9625, 500, true, true, true, true) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index f4bea4af1b..4bc1908f6a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -1,17 +1,22 @@ package com.gregtechceu.gtceu.common.data.materials; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; import com.gregtechceu.gtceu.api.item.tool.GTToolType; +import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTMedicalConditions; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.enchantment.Enchantments; import static com.gregtechceu.gtceu.api.GTValues.*; @@ -105,6 +110,8 @@ public static void register() { .components(Tin, 1, Copper, 3) .toolStats(ToolProperty.Builder.of(3.0F, 2.0F, 192, 2) .enchantability(18).addTypes(GTToolType.MORTAR).build()) + .armorStats(ArmorProperty.Builder.of(17, new int[] { 3, 7, 6, 2 }) + .enchantability(8).build()) .rotorStats(115, 105, 2.5f, 192) .fluidPipeProperties(1696, 20, true) .buildAndRegister(); @@ -213,6 +220,8 @@ public static void register() { .components(Carbon, 1) .toolStats(ToolProperty.Builder.of(6.0F, 7.0F, 768, 3) .attackSpeed(0.1F).enchantability(18).build()) + .armorStats(ArmorProperty.Builder.of(16, new int[] { 3, 8, 6, 3 }) + .enchantability(18).toughness(2.0f).build()) .buildAndRegister(); Electrum = new Material.Builder(GTCEu.id("electrum")) @@ -301,6 +310,8 @@ public static void register() { .enchantability(18) .enchantment(Enchantments.BANE_OF_ARTHROPODS, 3) .enchantment(Enchantments.BLOCK_EFFICIENCY, 1).build()) + .armorStats(ArmorProperty.Builder.of(17, new int[] { 3, 7, 5, 3 }) + .enchantability(18).toughness(1.8f).build()) .rotorStats(130, 115, 3.0f, 512) .buildAndRegister(); @@ -415,6 +426,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(3.0F, 8.0F, 768, 2) .attackSpeed(0.3F).enchantability(33) .enchantment(Enchantments.SMITE, 3).build()) + .armorStats(ArmorProperty.Builder.of(29, new int[] { 4, 11, 8, 4 }) + .enchantability(33).toughness(3.0f).build()) .rotorStats(100, 160, 2.0f, 196) .itemPipeProperties(1024, 2) .blast(b -> b.temp(1700, GasTier.LOW) @@ -430,6 +443,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(12.0F, 2.0F, 768, 2) .enchantability(33) .enchantment(Enchantments.BLOCK_FORTUNE, 2).build()) + .armorStats(ArmorProperty.Builder.of(28, new int[] { 4, 11, 8, 4 }) + .enchantability(33).build()) .rotorStats(100, 170, 2.0f, 152) .itemPipeProperties(1024, 2) .blast(b -> b.temp(1600, GasTier.LOW) @@ -611,6 +626,8 @@ public static void register() { .components(Iron, 6, Chromium, 1, Manganese, 1, Nickel, 1) .toolStats(ToolProperty.Builder.of(7.0F, 5.0F, 1024, 3) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(56, new int[] { 5, 10, 7, 4 }) + .enchantability(14).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(160, 115, 4.0f, 480) .fluidPipeProperties(2428, 75, true, true, true, false) .blast(b -> b.temp(1700, GasTier.LOW) @@ -628,6 +645,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(5.0F, 3.0F, 512, 3) .addTypes(GTToolType.MORTAR) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(19, new int[] { 3, 7, 5, 2 }) + .enchantability(14).build()) .rotorStats(130, 105, 3.0f, 512) .fluidPipeProperties(1855, 50, true) .cableProperties(V[EV], 2, 2) @@ -680,6 +699,8 @@ public static void register() { .components(Cobalt, 5, Chromium, 2, Nickel, 1, Molybdenum, 1) .toolStats(ToolProperty.Builder.of(10.0F, 7.0F, 2048, 4) .attackSpeed(0.1F).enchantability(21).build()) + .armorStats(ArmorProperty.Builder.of(80, new int[] { 7, 14, 10, 7 }) + .enchantability(21).toughness(7.0f).knockbackResistance(0.8f).build()) .rotorStats(160, 130, 4.0f, 2048) .itemPipeProperties(128, 16) .blast(b -> b.temp(2700, GasTier.MID) @@ -722,6 +743,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(2.0F, 2.0F, 384, 2) .addTypes(GTToolType.MORTAR) .attackSpeed(-0.2F).enchantability(5).build()) + .armorStats(ArmorProperty.Builder.of(22, new int[] { 3, 8, 6, 3 }) + .enchantability(5).toughness(2.5f).build()) .rotorStats(145, 105, 3.5f, 384) .buildAndRegister(); Iron.getProperty(PropertyKey.INGOT).setSmeltingInto(WroughtIron); @@ -1112,6 +1135,8 @@ public static void register() { .components(Tungsten, 1, Carbon, 1) .toolStats(ToolProperty.Builder.of(60.0F, 2.0F, 1024, 4) .enchantability(21).build()) + .armorStats(ArmorProperty.Builder.of(56, new int[] { 5, 10, 7, 4 }) + .enchantability(18).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(160, 155, 4.0f, 1280) .fluidPipeProperties(3837, 200, true) .blast(b -> b.temp(3058, GasTier.MID) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java index 91668a033a..a10daac854 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; @@ -42,6 +43,8 @@ public static void register() { .components(RoseGold, 1, Brass, 1, Steel, 2, BlackSteel, 4) .toolStats(ToolProperty.Builder.of(7.0F, 6.0F, 2560, 3) .attackSpeed(0.1F).enchantability(21).build()) + .armorStats(ArmorProperty.Builder.of(68, new int[] { 3, 8, 6, 3 }) + .enchantability(23).toughness(3.0f).knockbackResistance(0.1f).build()) .blast(b -> b.temp(1813, GasTier.LOW) .blastStats(VA[HV], 1000)) .buildAndRegister(); @@ -53,6 +56,8 @@ public static void register() { .components(SterlingSilver, 1, BismuthBronze, 1, Steel, 2, BlackSteel, 4) .toolStats(ToolProperty.Builder.of(15.0F, 6.0F, 1024, 3) .attackSpeed(0.1F).enchantability(33).build()) + .armorStats(ArmorProperty.Builder.of(63, new int[] { 3, 8, 6, 3 }) + .enchantability(23).toughness(3.0f).knockbackResistance(0.1f).build()) .blast(b -> b.temp(1813, GasTier.LOW) .blastStats(VA[HV], 1000)) .buildAndRegister(); @@ -121,6 +126,8 @@ public static void register() { .components(HSSG, 6, Cobalt, 1, Manganese, 1, Silicon, 1) .toolStats(ToolProperty.Builder.of(5.0F, 10.0F, 3072, 4) .attackSpeed(0.3F).enchantability(33).build()) + .armorStats(ArmorProperty.Builder.of(145, new int[] { 7, 13, 9, 7 }) + .enchantability(33).toughness(5.0f).knockbackResistance(0.3f).build()) .rotorStats(280, 140, 8.0f, 5120) .blast(b -> b.temp(5000, GasTier.HIGH) .blastStats(VA[GTValues.EV], 1400) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java index 378d370c77..4799d77227 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -141,6 +142,8 @@ public static void register() { .components(Steel, 1, Tungsten, 1) .toolStats(ToolProperty.Builder.of(9.0F, 7.0F, 2048, 4) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(73, new int[] { 6, 12, 8, 6 }) + .enchantability(14).toughness(5.5f).knockbackResistance(0.3f).build()) .rotorStats(160, 120, 4.0f, 2560) .fluidPipeProperties(3587, 225, true) .cableProperties(V[IV], 3, 2) @@ -158,6 +161,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(2.5F, 2.0F, 1024, 2) .addTypes(GTToolType.MORTAR) .attackSpeed(-0.2F).enchantability(5).build()) + .armorStats(ArmorProperty.Builder.of(56, new int[] { 4, 9, 6, 4 }) + .enchantability(5).toughness(3.5f).build()) .rotorStats(100, 120, 2.0f, 256) .itemPipeProperties(2048, 1) .buildAndRegister(); @@ -305,6 +310,8 @@ public static void register() { .components(Vanadium, 1, Chromium, 1, Steel, 7) .toolStats(ToolProperty.Builder.of(3.0F, 3.0F, 1536, 3) .attackSpeed(-0.2F).enchantability(5).build()) + .armorStats(ArmorProperty.Builder.of(78, new int[] { 6, 12, 8, 6 }) + .enchantability(5).toughness(5.5f).knockbackResistance(0.3f).build()) .rotorStats(130, 115, 3.0f, 1920) .fluidPipeProperties(2073, 50, true, true, false, false) .blast(1453, GasTier.LOW) @@ -343,6 +350,8 @@ public static void register() { .components(Naquadah, 2, Osmiridium, 1, Trinium, 1) .toolStats(ToolProperty.Builder.of(40.0F, 12.0F, 3072, 5) .attackSpeed(0.3F).enchantability(33).magnetic().build()) + .armorStats(ArmorProperty.Builder.of(156, new int[] { 8, 14, 10, 8 }) + .enchantability(33).toughness(6.0f).knockbackResistance(0.5f).build()) .rotorStats(190, 120, 5.0f, 5120) .cableProperties(V[UV], 2, 4) .blast(b -> b.temp(7200, GasTier.HIGH) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index 4ebd2b5908..917cc0ea51 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; @@ -358,8 +359,10 @@ public static void register() { Netherite = new Material.Builder(GTCEu.id("netherite")) .ingot().color(0x4b4042).secondaryColor(0x474447) - .toolStats(ToolProperty.Builder.of(10.0F, 14.0F, 900, 4) + .toolStats(ToolProperty.Builder.of(10.0F, 4.0F, 2032, 4) .enchantability(21).build()) + .armorStats(ArmorProperty.Builder.of(37, new int[] { 3, 8, 6, 3 }) + .enchantability(21).toughness(3.0f).knockbackResistance(0.1f).build()) .buildAndRegister(); Glowstone = new Material.Builder(GTCEu.id("glowstone")) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java new file mode 100644 index 0000000000..6129d2c2fb --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java @@ -0,0 +1,74 @@ +package com.gregtechceu.gtceu.common.item.armor; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; +import com.lowdragmc.lowdraglib.Platform; +import net.minecraft.client.color.item.ItemColor; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Objects; + +public class GTArmorItem extends ArmorItem { + + public final Material material; + public final ArmorProperty armorProperty; + + + public GTArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Properties properties, + Material material, ArmorProperty armorProperty) { + super(armorMaterial, type, properties); + this.material = material; + this.armorProperty = armorProperty; + if (Platform.isClient()) { + ArmorItemRenderer.create(this, type); + } + } + + @OnlyIn(Dist.CLIENT) + public static ItemColor tintColor() { + return (itemStack, index) -> { + // TODO utilize 2nd material color + if (index == 0 && itemStack.getItem() instanceof GTArmorItem item) { + Material material = item.material; + return material.getLayerARGB(index); + } + return -1; + }; + } + + @Override + public @NotNull String getDescriptionId() { + return "item.gtceu.armor." + type.getName(); + } + + @Override + public @NotNull Component getDescription() { + return Component.translatable(getDescriptionId(), material.getLocalizedName()); + } + + @Override + public Component getName(ItemStack stack) { + return this.getDescription(); + } + + @Override + public @Nullable String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + ResourceLocation id = armorProperty.getCustomTextureGetter() + .getCustomTexture(stack, entity, slot, Objects.equals(type, "overlay")); + if (id != null) { + return id.toString(); + } + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java new file mode 100644 index 0000000000..a4bbdab066 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.common.item.armor; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; +import com.lowdragmc.lowdraglib.Platform; +import net.minecraft.world.item.*; + +public class GTDyeableArmorItem extends GTArmorItem implements DyeableLeatherItem { + + public GTDyeableArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Item.Properties properties, + Material material, ArmorProperty armorProperty) { + super(armorMaterial, type, properties, material, armorProperty); + if (Platform.isClient()) { + ArmorItemRenderer.create(this, type); + } + } + +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 871c95c47b..b0e95d252a 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -27,10 +27,7 @@ import net.minecraft.data.loot.BlockLootSubProvider; import net.minecraft.data.loot.packs.VanillaBlockLoot; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagEntry; -import net.minecraft.tags.TagKey; -import net.minecraft.tags.TagLoader; +import net.minecraft.tags.*; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantments; @@ -50,6 +47,7 @@ import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import com.tterrag.registrate.util.entry.BlockEntry; +import net.minecraftforge.common.Tags; import java.util.ArrayList; import java.util.List; @@ -88,6 +86,23 @@ public static void generateGTDynamicTags(Map { + map.forEach((type, item) -> { + if (item != null) { + var entry = new TagLoader.EntryWithSource(TagEntry.element(item.getId()), + GTValues.CUSTOM_TAG_SOURCE); + tagMap.computeIfAbsent(ItemTags.TRIMMABLE_ARMOR.location(), $ -> new ArrayList<>()) + .add(entry); + tagMap.computeIfAbsent(switch (type) { + case HELMET -> Tags.Items.ARMORS_HELMETS.location(); + case CHESTPLATE -> Tags.Items.ARMORS_CHESTPLATES.location(); + case LEGGINGS -> Tags.Items.ARMORS_LEGGINGS.location(); + case BOOTS -> Tags.Items.ARMORS_BOOTS.location(); + }, $ -> new ArrayList<>()).add(entry); + } + }); + }); } else if (registry == BuiltInRegistries.BLOCK) { GTMaterialBlocks.MATERIAL_BLOCKS.rowMap().forEach((prefix, map) -> { MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); @@ -114,7 +129,7 @@ public static void generateGTDynamicTags(Map { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(block.get()); tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[casingType.getHarvestLevel()].location(), - path -> new ArrayList<>()) + path -> new ArrayList<>()) .add(new TagLoader.EntryWithSource(TagEntry.element(blockId), GTValues.CUSTOM_TAG_SOURCE)); }); } else if (registry == BuiltInRegistries.FLUID) { @@ -131,7 +146,7 @@ public static void generateGTDynamicTags(Map new ArrayList<>()) + path -> new ArrayList<>()) .add(entry); tagMap.computeIfAbsent(fluidKeyTag, path -> new ArrayList<>()) .add(entry); @@ -143,7 +158,7 @@ public static void generateGTDynamicTags(Map new ArrayList<>()) + path -> new ArrayList<>()) .add(new TagLoader.EntryWithSource(TagEntry.element(moltenID), GTValues.CUSTOM_TAG_SOURCE)); } @@ -159,7 +174,7 @@ public static void addMaterialBlockTags(Map { tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), - path -> new ArrayList<>()) + path -> new ArrayList<>()) .add(new TagLoader.EntryWithSource(TagEntry.element(block.getId()), GTValues.CUSTOM_TAG_SOURCE)); @@ -291,4 +306,5 @@ public static void addFluidTexture(Material material, FluidStorage.FluidEntry va } } } + } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java new file mode 100644 index 0000000000..f743f5d368 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.core.mixins; + +import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.util.FastColor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(HumanoidArmorLayer.class) +public abstract class HumanoidArmorLayerMixin, A extends HumanoidModel> extends RenderLayer { + + public HumanoidArmorLayerMixin(RenderLayerParent renderer) { + super(renderer); + } + + /// Have to do the ModifyArg calls separately, thanks forge. + /// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + index = 6) + private float gtceu$modifyArmorTintR(float oldR, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float r = FastColor.ARGB32.red(argb) / 255.0F; + + if (oldR != 1.0f) { + return (r + oldR) / 2.0f; + } else { + return r; + } + } + return oldR; + } + + /// Have to do the ModifyArg calls separately, thanks forge. + /// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + index = 7) + private float gtceu$modifyArmorTintsG(float oldG, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float g = FastColor.ARGB32.green(argb) / 255.0F; + + if (oldG != 1.0f) { + return (g + oldG) / 2.0f; + } else { + return g; + } + } + return oldG; + } + + /// Have to do the ModifyArg calls separately, thanks forge. + /// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + index = 8) + private float gtceu$modifyArmorTintsB(float oldB, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float b = FastColor.ARGB32.blue(argb) / 255.0F; + + if (oldB != 1.0f) { + return (b + oldB) / 2.0f; + } else { + return b; + } + } + return oldB; + } + +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java index af815c8acd..3f955ad676 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.client.renderer.block.MaterialBlockRenderer; import com.gregtechceu.gtceu.client.renderer.block.OreBlockRenderer; import com.gregtechceu.gtceu.client.renderer.block.SurfaceRockRenderer; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; import com.gregtechceu.gtceu.common.data.GTModels; @@ -38,6 +39,7 @@ public abstract class ModelManagerMixin { TagPrefixItemRenderer.reinitModels(); OreBlockRenderer.reinitModels(); ToolItemRenderer.reinitModels(); + ArmorItemRenderer.reinitModels(); SurfaceRockRenderer.reinitModels(); GTModels.registerMaterialFluidModels(); GTCEu.LOGGER.info("GregTech Model loading took {}ms", System.currentTimeMillis() - startTime); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index ecd18e26a5..c5f0d0b892 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -247,6 +247,12 @@ public static void init(RegistrateLangProvider provider) { provider.add("item.gtceu.tool.aoe.rows", "Rows"); provider.add("item.gtceu.tool.aoe.columns", "Columns"); provider.add("item.gtceu.tool.aoe.layers", "Layers"); + + provider.add("item.gtceu.armor.helmet", "%s Helmet"); + provider.add("item.gtceu.armor.chestplate", "%s Chestplate"); + provider.add("item.gtceu.armor.leggings", "%s Leggings"); + provider.add("item.gtceu.armor.boots", "%s Boots"); + provider.add("item.gtceu.turbine_rotor.tooltip", "Turbine Rotors for your power station"); provider.add("metaitem.clipboard.tooltip", "Can be written on (without any writing Instrument). Right-click on Wall to place, and Shift-Right-Click to remove"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java index a6ea9db984..1130057f69 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java @@ -26,6 +26,7 @@ import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.data.recipes.SpecialRecipeBuilder; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -218,8 +219,21 @@ private static void processTool(TagPrefix prefix, Material material, ToolPropert addToolRecipe(provider, material, GTToolType.WRENCH, false, "PhP", " P ", " P ", 'P', plate); + + addArmorRecipe(provider, material, ArmorItem.Type.HELMET, + "PPP", "PhP", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.CHESTPLATE, + "PhP", "PPP", "PPP", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.LEGGINGS, + "PPP", "PhP", "P P", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.BOOTS, + "P P", "PhP", + 'P', plate); } else { - GTCEu.LOGGER.info("Did not find plate for " + material.getName() + + GTCEu.LOGGER.warn("Did not find plate for " + material.getName() + ", skipping mining hammer, spade, saw, axe, hoe, pickaxe, scythe, shovel, sword, hammer, file, knife, wrench recipes"); } @@ -240,10 +254,10 @@ private static void processTool(TagPrefix prefix, Material material, ToolPropert 'S', rod); } else if (!ArrayUtils.contains(softMaterials, material)) { GTCEu.LOGGER - .info("Did not find bolt for " + material.getName() + ", skipping wirecutter recipe"); + .warn("Did not find bolt for " + material.getName() + ", skipping wirecutter recipe"); } } else { - GTCEu.LOGGER.info("Did not find plate for " + material.getName() + + GTCEu.LOGGER.warn("Did not find plate for " + material.getName() + ", skipping wirecutter, butchery knife recipes"); } @@ -256,7 +270,7 @@ private static void processTool(TagPrefix prefix, Material material, ToolPropert "hDS", "DSD", "SDf", 'S', rod); } else if (!ArrayUtils.contains(softMaterials, material)) { - GTCEu.LOGGER.info("Did not find rod for " + material.getName() + + GTCEu.LOGGER.warn("Did not find rod for " + material.getName() + ", skipping wirecutter, butchery knife, screwdriver, crowbar recipes"); } } @@ -347,12 +361,12 @@ private static void processElectricTool(TagPrefix prefix, Material material, Too .EUt(8L * voltageMultiplier) .save(provider); } else { - GTCEu.LOGGER.info("Did not find gear for " + material.getName() + + GTCEu.LOGGER.warn("Did not find gear for " + material.getName() + ", skipping gear -> buzzsaw blade recipe"); } } } else { - GTCEu.LOGGER.info("Did not find plate for " + material.getName() + + GTCEu.LOGGER.warn("Did not find plate for " + material.getName() + ", skipping electric drill, chainsaw, wrench, wirecutter, buzzsaw recipe"); } @@ -367,7 +381,7 @@ private static void processElectricTool(TagPrefix prefix, Material material, Too "fR", " h", 'R', new UnificationEntry(TagPrefix.rodLong, material)); } else { - GTCEu.LOGGER.info("Did not find long rod for " + material.getName() + + GTCEu.LOGGER.warn("Did not find long rod for " + material.getName() + ", skipping electric screwdriver recipe"); } } @@ -406,6 +420,14 @@ public static void addToolRecipe(Consumer provider, @NotNull Mat } } + public static void addArmorRecipe(Consumer provider, @NotNull Material material, + @NotNull ArmorItem.Type armor, Object... recipe) { + ItemStack armorStack = ToolHelper.getArmor(armor, material); + if (armorStack.isEmpty()) return; + VanillaRecipeHelper.addShapedRecipe(provider, String.format("%s_%s", armor.getName(), material.getName()), + armorStack, recipe); + } + /** * {@code D} is inferred as the dye key */ diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index b35c1d05c3..c0888351c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; @@ -249,6 +250,7 @@ public void registerBindings(BindingsEvent event) { event.add("ChemicalHelper", ChemicalHelper.class); event.add("PropertyKey", PropertyKey.class); event.add("ToolProperty", ToolProperty.class); + event.add("ArmorProperty", ArmorProperty.class); event.add("GTToolType", GTToolType.class); // Block/Item related event.add("GTBlocks", GTBlocks.class); diff --git a/src/main/resources/assets/gtceu/models/item/armor/boots.json b/src/main/resources/assets/gtceu/models/item/armor/boots.json new file mode 100644 index 0000000000..caf4a41192 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/boots.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/boots_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/boots" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/chestplate.json b/src/main/resources/assets/gtceu/models/item/armor/chestplate.json new file mode 100644 index 0000000000..ff217abcf3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/chestplate.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/chestplate_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/chestplate" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/helmet.json b/src/main/resources/assets/gtceu/models/item/armor/helmet.json new file mode 100644 index 0000000000..6e3d5c3efb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/helmet.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/helmet_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/helmet" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/leggings.json b/src/main/resources/assets/gtceu/models/item/armor/leggings.json new file mode 100644 index 0000000000..6ee6a5ac71 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/leggings.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/leggings_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/leggings" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json new file mode 100644 index 0000000000..25d1681845 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json new file mode 100644 index 0000000000..9f4c71ebd9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json new file mode 100644 index 0000000000..6ea0a1c022 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json new file mode 100644 index 0000000000..b15e8d8083 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json new file mode 100644 index 0000000000..8880c5a66f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json new file mode 100644 index 0000000000..de0f2b79f1 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json new file mode 100644 index 0000000000..8ce74625db --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json new file mode 100644 index 0000000000..d869b31d15 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json new file mode 100644 index 0000000000..0dcdfa4814 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json new file mode 100644 index 0000000000..e4fbfce9ee --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json new file mode 100644 index 0000000000..78d0cf6cf0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json new file mode 100644 index 0000000000..fcf381af88 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json new file mode 100644 index 0000000000..6def911420 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json new file mode 100644 index 0000000000..18ee353632 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json new file mode 100644 index 0000000000..c05c67c2dc --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json new file mode 100644 index 0000000000..a31e2fa111 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json new file mode 100644 index 0000000000..462bd53c69 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json new file mode 100644 index 0000000000..6bc6a74f24 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json new file mode 100644 index 0000000000..3eb4cb6bda --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json new file mode 100644 index 0000000000..5e48b9c2e2 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json new file mode 100644 index 0000000000..a31e2fa111 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json new file mode 100644 index 0000000000..1b15271bba --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json new file mode 100644 index 0000000000..6a2a49f8fb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json new file mode 100644 index 0000000000..9c1ebe3e92 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json new file mode 100644 index 0000000000..d784a90311 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json new file mode 100644 index 0000000000..999ce64c16 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json new file mode 100644 index 0000000000..ab46900233 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json new file mode 100644 index 0000000000..a58ca08f05 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json new file mode 100644 index 0000000000..5ccaee60d7 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json new file mode 100644 index 0000000000..bb73b1d52e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json new file mode 100644 index 0000000000..a729778012 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json new file mode 100644 index 0000000000..ba591e9d89 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json new file mode 100644 index 0000000000..111a7c1644 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json new file mode 100644 index 0000000000..5a35a6afa7 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json new file mode 100644 index 0000000000..6375b5ea9f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json new file mode 100644 index 0000000000..922984b1e2 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json new file mode 100644 index 0000000000..a8dfdf244f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json new file mode 100644 index 0000000000..eeae6c4baf --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json new file mode 100644 index 0000000000..4ecf36097c --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json new file mode 100644 index 0000000000..fdf1301030 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json new file mode 100644 index 0000000000..dfb4cd01b9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/textures/item/armor/boots.png b/src/main/resources/assets/gtceu/textures/item/armor/boots.png new file mode 100644 index 0000000000000000000000000000000000000000..1296e2a164744cd4929ad54c32c047dd4c50aeaa GIT binary patch literal 5607 zcmeHKdsGuw8V~qFL=9>mP=#zyS@;`s$FZPwN|O}5+A6jSlK&)Kqz?jc+U2Zp2Iz7GIPK0 z_xRBwuwY$@%udfO7dy)Fam)-yDHK4ROvh3p_=N{(W4`05Hwm*NFV)fh4 z4%s?jd->z0mqY4;BWt0iTe5?~-m~e- zYxHl`3TpGH=qJgGgVDM%H!rT-4zWI_%o@13GHHOH%FmLU8I@f(JNC@3$WPHB z+?<^10;>Az+2O^eg)6JB4Zgp2bG|?O$iY?m{OT2&w4={^?9qhwoVmzbJRHg2hwWIw z?q)yjyYTS--Qx%Ta&AiK0yH9U_u3r`)$5O33R-+2F)e+=`{}zRi|&kr3Gb^TmaW;) zNEg3dAI5gRXI*mWqtyNWr*P8~xZ6wYNXkmX)E+(WB5-Od$HFFQQw>4;Ih#F?`b&i-rV2z0qgwUT$RVuv<2 zzOVR-_CWIa1BmI8c|pOq1xclQ=<2W?K^e85&;4rC{D80ne=;rhj|r3;DkjBUu_bT5 z)@%30vcP>4)ngS&i>5x#+~WN7L`i@T_Lk48n(eF}=hum-LEiDVLsO$fanX49fOk_r z48>-{^i65yjj{))D)G8C4r^eL3@hRz7T_>T%ZPWzS4Y z_M8hY%)3~$;VJ#1&!fCiMMbwhuaCYJC3xvnO1}AGW7vV*DUU9N1aaq>*1d?5Cp{|I zWy_w?Z`9nX`=8DFc4*&W0Ar_5X3Fh8ZjdEwch?~Y#& zonOQaYM_&ze-zr#_luEBZShx+tvdVbmLF2aG|;72EVuKUoHOd|5AIK%Vd_)ccnAr8 zBf)g1Vrp8+hxdlx-MYnmc~)qDcv_7Atb3!;E5c37VrLQc077 zd#~^qmqX$T?liF)R-4BXX=H4Mg_xWXr^PbnVltdNGRim7AqNCTf<`$GqrqgAI}}_O zuN-_cWrx8{yI34*K!b+uEFe2JU znCPLN6gbuzZ%(%uT+_iZK4Bn?0BQxJ3fc`Bqf#fdMlcejl18&D3W(hfNt60EvD)Rv zcwE!*Oaz3t^0q^}=k5Xnlv*uUQdl~Zo=U0UGULl}3L|m3>r;S9BLpahK@u4zgAj>W z0?CL7A^1UM2#&xKLZbJeQkkqYYQhMH3Xt|Al6@ z4=1vD(PK#~7~knKHSej(#JuKSbJsw+HWP>A+7@yYYo3A?wGp^0Pr%je!qQMvDgn-q zmV$NL$xezvhJj*0g?b2yAYib9G8rU8Q30eQa3Lbn<03>XYtL?_^t2td5TjFpjzB9= zpf0UAVJ%BFtUcbIMlkCDB!dJ(s7*2%m)|m3K67HYXB)}yphu(&;Bmx&xMmwTy1+@u zZ#@cI^kNR3-?6okKVj~I{}GA(&V<4l$5yqo!Q)&c5epA zwCd{WCa{dHM6a?l!QSl{K&Pgr=C>wSpRsr5>p;MuI|FuRW3U|vUIk>powW`G45+-k zyfbX4wpId0s7;$TbqZpPZql5b9G0iRE&|VB23T2H*@1|$F}{$H5SAxNYX*$d9h{w= z-HxEDs*2^dxiM})YoRb8ce`=pMu!4pe4eQ@{a4`_-yf)*N66%1&YkO+lvUAj%DrP| GXZ;uUpAcLC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png b/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..d56bdd01a7cd09e073817f650b74e2e94869120b GIT binary patch literal 5638 zcmeHKX;c(f7A^>i;t~`P2Di3d2A87uRT^YbL~S-3QR7x!T@3}j(Op0T(I_H=iiv`| zMrAZn2ZK>?h3F^|4nz`Mh>9T+L1l|XNyaUayw}i8qnI4$OwRn_om2hl-TU3|-uJ!b zbgc~y4jkm*?tmc3prDxn;h=YfPrtt4cXV4jh9K`WCClbh;aDO~r`IY;6+xqtbOens zl1c?*48cC`s9A!<-hhXibyVNq$1i2l1Rly|1o`PCtX|d z+wBUU(>MPm@Xjc4-hb&{cF1n*(BeF=J7v$Go%6m~A~o7G7Sxi)bl42JqC55K;&X60}n?V=L9y01MiZrXiuaP;2>A5YDpCB|1DwVSa#^p{h? z_7Mr|AC^`uK)=adKh;I_@V6gN=je9oQbw%U&=P;*sqn+Am)2Z4{Jic)N|pD6%qhn| z@`zuQT^+syeJbt8^2@bZQjoe7NxO{ZOq>^gA^gzEoBclvrKd0Y*ejy^`r(S@IkxNe z?7~)ESah>ubyJ#?tKjFh{b5mYWf6zU@-81wDV^%Nvv|ULmq$p4oEf@k2g2W4T&LV~ zuJXlAhk$uc7Orw_^WaAhyjL<(6PosX;dQ2~G4?@hL({(6N@>ZkAdi-UX>(Sc3$_&u z__5Zll996UKpx^T#Ls@?82di^+|Nwgbc8uzh{It=kJVznV@T*qzgmZ^mSbP++wi#G zhR8H!Po32zF9c<(v;w$ zO|-B8S(YNci5D#kt2!Wx(+j!&>w>aA-K?K+d0>6!Db5J}9-}^cZ|aV_PCNq#BHJz1Vi zzAM`w!P~RN{lnwA>0z4&rIy4EO;;LJ0W^|+S%h6O_>!hf3>fJ4cO$i4Vj@+BWo_w<9VwkM?^B2rJ z-2D5GjurlVzvjzpFSRx?CzkiSVmxsRYuu)wiyJ=N^~+ zu({^jU6Pt%qt)jDu1Ac&WbQHSBN1Vxh*QKUvfZ!J7er;!Q?J(4G7N_GB3G&wU_Ps~jY zmf^{U?ibOQECpso6{Imx zmC?yC0XMofww26i;myA>sb14k!$r5mQYz{~x?cD6L+m)v6?PSQHILTHI1_pcEK| z1z;2bNSSP|n8g;e`7)MJ%;Slfg2_y_m}!OADoAD0pP}LLp?P&I`b^RQ@+X;09cOAT z5!W&57^+CqVWQDY$3l$Z9aAu1353E_C*bOE;nA2TiU9XV=Y}=g$sRTX#udmh7C6;> z4iiJUgg}7G;W7$@Y!SxCco>Fvh-YCpXq8kVrYC%(fQ~>but7~)(L6erYGU_l5~B&Y z4nQ)L#YVd%6Ve%-lV!jg!#rCr#%p?bnE+N-42bKnfvXGLgbd47*r^w&^{;H5>+n~m zpwW7hyp_Jaa`npfRtmfoxOaE;%Jo(XycM{2cm2=ga_IV)A~fJ1P$KwLs{K9#2cKDe z<+B3=Kwp5g4;yCd4c_|eW-c%w$N(q!*dRN1y8)v;6(pT*-!RbKQP3|~eYY4v?1l#g z_{xMsY#i-cUjW4ax!J({0)e3Y)jG<`%1l19{SPtF30qTBQ+riaReMk1H(_ke8Je4$ z5%|ECl$6x1Di{oH));eKHv+R!EEZcx%)#TwkGCW+<6v)R9uyZBBW`YP2n4#gxFC=u zKR@5(Hdh7*w{PD@8X6kRVTh@M#>Pe@BO}A)fWhW~o=S$n5DQ~q>!vi=zU}4Z6#=I#I`eFI6w$}(C;EzcDl%S_9Fz8Ko%PN?etra%g%zaNj zix_4Q6w+uknwHdTgS}aOYXPDCH3DdaB(Q(Ay&C+g|GyeWq GrTz{-5>Oxj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/helmet.png b/src/main/resources/assets/gtceu/textures/item/armor/helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..06fb0808ad7adeb3d4df7b3f6665e4a3be6a0af2 GIT binary patch literal 5574 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/leggings.png b/src/main/resources/assets/gtceu/textures/item/armor/leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..3a822a87c9e8e1a34fa35c3fcbd8697ca8b80154 GIT binary patch literal 5612 zcmeHKc~BEs8V`u5fGZ#hUYH5q(n-2=bka*eB^((EWPlyOQlZn`2@T{RX-H&5XIMw^ zDDfCqyk?zIR?Bj|YbeEWTyarHMb{m4H0pXSA}EZamLn+pIvf(g-LYz?<{w_wqu=}9 z_xpX{`@QeIB1<*#F@wEEdT}_M!KzqgBKZ2UeV`}!JGQwE=WzO6EJ#je5^)>XY%%HR z9E!`#GgDm3PU|=v`?VV>X$S62@@c&vVD%X1R&;k?^wYsFU#zt^9LQeyNds9_IN0X z8F@q2#qS;+QV@!!d^6fK#gc20y&i_23B%JqY6MnmXgFt6AQ&%9K7wJmpzm(3!W2;=|W~I^=ee}i9lnt$iuV(K1aE+%lt$s$u(C~d14;T*AgjPg7ygqPOoKRYM zyFqtsj<71OKX25Kbhp4}Mw$^V^LLY@^>=3=}PvKDH#_N1Q!BS=A1NjK*GW) zpM@&D0~9YM15^$jhkxR7a7OHLPHM>GfYVbB`u}aUp9eK9#y!`q-#rETDY@jSJG%P* z<Z-~OlyIc=#9S@1*DNlkRUys7Y~`fUl}0|xP5_!ccr3plt8 z+cx))yQ0+_w|{nB|_%p>ge!PN9MQL z>HDHbWgitvhCRy|oLF5)b}6BH zq`K<()`pV{E>>^3z3v}puBSiN{jkM;_s@uaLS8yzyWj}9e67`|=JWj$?;S~h<+cd_ zMbwtwKh?Mgy)fa}qqc^{1)tQ9Z`RRs3R>6rYWA;uSa~yS)A37Rx9kkOx+Hvd`S&T2 zCw?yQub8>G20eW&>M4`be0~4zPuG6mcz49vlA80M6h-fO^{`}A2ED#Ca#85~zl>9? zu-)4rQ2lg#s>Mf zPT086*w){%qp=~ouJ|^%^Z7Km+o|d}j4&DaIBC*Se7nI6?mmYT7GXEzL^j26wUnMV zDtJv5-|@IKsomNI28zMCc0-QQirE!B zCocxZtXaV0I$fA-1us>t;YOM)6j#g_^Mz29oz6#i;a=P@3#r2rmC+p(V5Z<@GK?7$ z2y8YR-zMUlEP4Sfm&*l0M1UX=@PMrIj0|pvjMfmAqMbuYSqTemW@wX<%W~pcQy!z> z@xVH_Ge3h_t?r^XT02w#dI;>eSpf5e0)s)&9bsjn@&QRlLcJoa$>50;BvMvWo`s;I z@+l(|(w%}Ny71;aOOA6pBq5-3C7EFHck#M-ckbQk47}88OlczW*z{CN1&@u7ktTvBG3QW9Y7ta~;E+ToAtA9$ zNk~oBmU=pEaZ!%PB?oo7}ySw7H2CJ5IF5%H&~>F z!Wok#*<{L5@K_2ii|krfg9}CC46ei(3XlpBF$NKB5B>c z|K-hIA8uItp~uoz5PzQ2)PARusND8h`!t7kUM4Qrc`Y!UXy1Yr&!rfbc_wRP}B85 zN1zobP^VVhNgYQu+11~cNwMbuB!gfCdLtRk6Lf4=z`huryA2cc&?C(0(CvuXYle6nHP^zUu0e>%A0sFXz7M`oGEL z_2$PEWd#2L*}zXFeZ4361;+8z&Wurl?;%dx@Zs*^U^K`an`Y&3yoa*gjk9rc5HJp4 zRO+Y!bv`3~(aG)}PquJ49-~ys>B%xbH(!sY7U1z4H@COrqbS<;wyksi;K2jVty{Nx zU^>@1EV#bDzOA#dW471S)Hr)-X=xic9hU$eUFdFuhK2?X+uv?ML9D8-&E0j{KI;TK z91afK|6A*ofCaEXv)SzIm6et6*diviC^wH!*B2 V(C754s`X=otD@qSduC)5{Resb0DJ%d literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3680965237886bf10218470831006ee14029c5a GIT binary patch literal 15093 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..8063736e3c8c95bcce808bb7eb411b7cc1c76422 GIT binary patch literal 13043 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..581fcb567f9f773bade28582a35bdc8c4421c01e GIT binary patch literal 13558 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..97a7a0b25ded4433d3791af3c99889b712402223 GIT binary patch literal 6028 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 aO2B_J+GAv&bJb5Qtbu;P;tJomReuAM%x%2@ literal 0 HcmV?d00001 diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 808773400e..95143ee1c3 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -12,15 +12,16 @@ "GuiGraphicsAccessor", "GuiGraphicsMixin", "GuiHeartTypeMixin", + "HumanoidArmorLayerMixin", "LevelRendererMixin", "ModelManagerMixin", "MultiPlayerGameModeMixin", "journeymap.FullscreenMixin", "rei.FluidEntryRendererMixin", - "xaeroworldmap.GuiMapMixin", - "xaeroworldmap.MapElementRenderHandlerBuilderMixin", "xaerominimap.HighlighterRegistryMixin", "xaerominimap.MinimapFBORendererMixin", + "xaeroworldmap.GuiMapMixin", + "xaeroworldmap.MapElementRenderHandlerBuilderMixin", "xaeroworldmap.WorldMapSessionMixin" ], "mixins": [ From 6e401c3bcd20986d3d65b9c1cf3434af09e09856 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 27 Dec 2024 11:49:03 +0200 Subject: [PATCH 2/7] spotless --- .../material/properties/ArmorProperty.java | 27 ++++++++++--------- .../properties/MaterialProperties.java | 1 + .../renderer/item/ArmorItemRenderer.java | 6 ++--- .../gtceu/common/data/GTMaterialItems.java | 3 +-- .../data/materials/ElementMaterials.java | 7 +---- .../data/materials/FirstDegreeMaterials.java | 4 --- .../gtceu/common/item/armor/GTArmorItem.java | 4 ++- .../common/item/armor/GTDyeableArmorItem.java | 3 ++- .../gregtechceu/gtceu/core/MixinHelpers.java | 11 ++++---- .../core/mixins/HumanoidArmorLayerMixin.java | 20 +++++++------- 10 files changed, 40 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java index ad8b8a8b89..030681aaad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java @@ -1,12 +1,10 @@ package com.gregtechceu.gtceu.api.data.chemical.material.properties; -import com.google.common.base.Preconditions; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.utils.SupplierMemoizer; -import lombok.Getter; -import lombok.Setter; + import net.minecraft.Util; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; @@ -16,6 +14,10 @@ import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; + +import com.google.common.base.Preconditions; +import lombok.Getter; +import lombok.Setter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Range; @@ -82,8 +84,8 @@ public void verifyProperty(MaterialProperties properties) { this.material = properties.getMaterial(); } if (this.repairIngredient == null && !noRepair) { - this.repairIngredient = - SupplierMemoizer.memoize(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, material))); + this.repairIngredient = SupplierMemoizer + .memoize(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, material))); } } @@ -158,17 +160,19 @@ public ArmorProperty build() { @FunctionalInterface public interface CustomTextureGetter { + ResourceLocation getCustomTexture(ItemStack stack, Entity entity, EquipmentSlot slot, boolean overlay); } public class ArmorMaterial implements net.minecraft.world.item.ArmorMaterial { - private static final EnumMap HEALTH_FUNCTION_FOR_TYPE = Util.make(new EnumMap<>(ArmorItem.Type.class), (map) -> { - map.put(ArmorItem.Type.BOOTS, 13); - map.put(ArmorItem.Type.LEGGINGS, 15); - map.put(ArmorItem.Type.CHESTPLATE, 16); - map.put(ArmorItem.Type.HELMET, 11); - }); + private static final EnumMap HEALTH_FUNCTION_FOR_TYPE = Util + .make(new EnumMap<>(ArmorItem.Type.class), (map) -> { + map.put(ArmorItem.Type.BOOTS, 13); + map.put(ArmorItem.Type.LEGGINGS, 15); + map.put(ArmorItem.Type.CHESTPLATE, 16); + map.put(ArmorItem.Type.HELMET, 11); + }); @Override public int getDurabilityForType(ArmorItem.@NotNull Type type) { @@ -216,5 +220,4 @@ public ArmorProperty getArmorProperty() { return ArmorProperty.this; } } - } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java index 97afdbf678..bd5faf19c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.lowdragmc.lowdraglib.Platform; + import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java index e15f5a0e0c..aff929e7ac 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java @@ -1,16 +1,16 @@ package com.gregtechceu.gtceu.client.renderer.item; -import com.google.gson.JsonObject; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; + import net.minecraft.client.Minecraft; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.data.models.model.DelegatedModel; import net.minecraft.util.GsonHelper; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; +import com.google.gson.JsonObject; + import java.io.BufferedReader; import java.io.IOException; import java.util.HashSet; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index 068ef9c2b2..de78532a0b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -10,9 +10,9 @@ import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; - import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; import com.gregtechceu.gtceu.common.item.armor.GTDyeableArmorItem; + import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -164,5 +164,4 @@ private static void generateArmor(final Material material, final ArmorItem.Type .register()); } } - } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index 05a52ae8e2..c84c9b399b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -1,14 +1,12 @@ package com.gregtechceu.gtceu.common.data.materials; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; @@ -16,7 +14,6 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.common.data.GTElements; import com.gregtechceu.gtceu.common.data.GTMedicalConditions; -import net.minecraft.world.item.crafting.Ingredient; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; @@ -405,9 +402,7 @@ public static void register() { .toolStats(ToolProperty.Builder.of(2.0F, 2.0F, 256, 2) .enchantability(14).addTypes(GTToolType.MORTAR).build()) .armorStats(ArmorProperty.Builder.of(16, new int[] { 2, 5, 6, 2 }) - .enchantability(9) - .repairIngredient(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, Iron))) - .build()) + .enchantability(9).build()) .rotorStats(115, 115, 2.5f, 256) .cableProperties(V[MV], 2, 3) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 4bc1908f6a..94234e1d40 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -1,22 +1,18 @@ package com.gregtechceu.gtceu.common.data.materials; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTMedicalConditions; -import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.enchantment.Enchantments; import static com.gregtechceu.gtceu.api.GTValues.*; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java index 6129d2c2fb..f6943a7d0e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java @@ -3,7 +3,9 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; + import com.lowdragmc.lowdraglib.Platform; + import net.minecraft.client.color.item.ItemColor; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -14,6 +16,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,7 +27,6 @@ public class GTArmorItem extends ArmorItem { public final Material material; public final ArmorProperty armorProperty; - public GTArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Properties properties, Material material, ArmorProperty armorProperty) { super(armorMaterial, type, properties); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java index a4bbdab066..ea66da0be6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java @@ -3,7 +3,9 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; + import com.lowdragmc.lowdraglib.Platform; + import net.minecraft.world.item.*; public class GTDyeableArmorItem extends GTArmorItem implements DyeableLeatherItem { @@ -15,5 +17,4 @@ public GTDyeableArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Item ArmorItemRenderer.create(this, type); } } - } diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index b0e95d252a..c3859a1cca 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -45,9 +45,9 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.common.Tags; import com.tterrag.registrate.util.entry.BlockEntry; -import net.minecraftforge.common.Tags; import java.util.ArrayList; import java.util.List; @@ -129,7 +129,7 @@ public static void generateGTDynamicTags(Map { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(block.get()); tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[casingType.getHarvestLevel()].location(), - path -> new ArrayList<>()) + path -> new ArrayList<>()) .add(new TagLoader.EntryWithSource(TagEntry.element(blockId), GTValues.CUSTOM_TAG_SOURCE)); }); } else if (registry == BuiltInRegistries.FLUID) { @@ -146,7 +146,7 @@ public static void generateGTDynamicTags(Map new ArrayList<>()) + path -> new ArrayList<>()) .add(entry); tagMap.computeIfAbsent(fluidKeyTag, path -> new ArrayList<>()) .add(entry); @@ -158,7 +158,7 @@ public static void generateGTDynamicTags(Map new ArrayList<>()) + path -> new ArrayList<>()) .add(new TagLoader.EntryWithSource(TagEntry.element(moltenID), GTValues.CUSTOM_TAG_SOURCE)); } @@ -174,7 +174,7 @@ public static void addMaterialBlockTags(Map { tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), - path -> new ArrayList<>()) + path -> new ArrayList<>()) .add(new TagLoader.EntryWithSource(TagEntry.element(block.getId()), GTValues.CUSTOM_TAG_SOURCE)); @@ -306,5 +306,4 @@ public static void addFluidTexture(Material material, FluidStorage.FluidEntry va } } } - } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java index f743f5d368..3d06992bd6 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.core.mixins; import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; -import com.llamalad7.mixinextras.sugar.Local; + import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; @@ -9,23 +9,26 @@ import net.minecraft.util.FastColor; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorItem; + +import com.llamalad7.mixinextras.sugar.Local; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; +/// Have to do the ModifyArg calls separately, thanks forge. +/// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. @Mixin(HumanoidArmorLayer.class) -public abstract class HumanoidArmorLayerMixin, A extends HumanoidModel> extends RenderLayer { +public abstract class HumanoidArmorLayerMixin, + A extends HumanoidModel> extends RenderLayer { public HumanoidArmorLayerMixin(RenderLayerParent renderer) { super(renderer); } - /// Have to do the ModifyArg calls separately, thanks forge. - /// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. @ModifyArg(method = "renderArmorPiece", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + - "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), index = 6) private float gtceu$modifyArmorTintR(float oldR, @Local ArmorItem armorItem) { if (armorItem instanceof GTArmorItem gtArmorItem) { @@ -41,8 +44,6 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderer) { return oldR; } - /// Have to do the ModifyArg calls separately, thanks forge. - /// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. @ModifyArg(method = "renderArmorPiece", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + @@ -62,8 +63,6 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderer) { return oldG; } - /// Have to do the ModifyArg calls separately, thanks forge. - /// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. @ModifyArg(method = "renderArmorPiece", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + @@ -82,5 +81,4 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderer) { } return oldB; } - } From 53e3f959570e6d2d194a2f52b49fe66b6a36a035 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 28 Dec 2024 18:12:31 +0200 Subject: [PATCH 3/7] remove armor property from most materials --- .../common/data/materials/ElementMaterials.java | 8 -------- .../data/materials/FirstDegreeMaterials.java | 16 ---------------- .../data/materials/HigherDegreeMaterials.java | 6 ------ .../data/materials/SecondDegreeMaterials.java | 8 -------- .../materials/UnknownCompositionMaterials.java | 2 -- 5 files changed, 40 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index c84c9b399b..4428a7ba26 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -38,8 +38,6 @@ public static void register() { .element(GTElements.Al) .toolStats(ToolProperty.Builder.of(6.0F, 7.5F, 768, 2) .enchantability(14).build()) - .armorStats(ArmorProperty.Builder.of(29, new int[] { 3, 7, 6, 3 }) - .enchantability(10).build()) .rotorStats(100, 140, 2.0f, 128) .cableProperties(V[EV], 1, 1) .fluidPipeProperties(1166, 100, true) @@ -401,8 +399,6 @@ public static void register() { .element(GTElements.Fe) .toolStats(ToolProperty.Builder.of(2.0F, 2.0F, 256, 2) .enchantability(14).addTypes(GTToolType.MORTAR).build()) - .armorStats(ArmorProperty.Builder.of(16, new int[] { 2, 5, 6, 2 }) - .enchantability(9).build()) .rotorStats(115, 115, 2.5f, 256) .cableProperties(V[MV], 2, 3) .buildAndRegister(); @@ -998,8 +994,6 @@ public static void register() { .element(GTElements.Nt) .toolStats(ToolProperty.Builder.of(180.0F, 100.0F, 65535, 6) .attackSpeed(0.5F).enchantability(33).magnetic().unbreakable().build()) - .armorStats(ArmorProperty.Builder.of(0, new int[] { 75, 200, 150, 75 }) - .enchantability(33).toughness(10.0f).knockbackResistance(1.0f).unbreakable().build()) .rotorStats(400, 250, 12.0f, 655360) .fluidPipeProperties(100_000, 5000, true, true, true, true) .radioactiveHazard(10) @@ -1024,8 +1018,6 @@ public static void register() { .element(GTElements.Dr) .toolStats(ToolProperty.Builder.of(14.0F, 12.0F, 8192, 5) .attackSpeed(0.3F).enchantability(33).magnetic().build()) - .armorStats(ArmorProperty.Builder.of(173, new int[] { 12, 24, 15, 12 }) - .enchantability(33).toughness(4.0f).knockbackResistance(0.5f).build()) .fluidPipeProperties(9625, 500, true, true, true, true) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 94234e1d40..3a9410e31e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -216,8 +216,6 @@ public static void register() { .components(Carbon, 1) .toolStats(ToolProperty.Builder.of(6.0F, 7.0F, 768, 3) .attackSpeed(0.1F).enchantability(18).build()) - .armorStats(ArmorProperty.Builder.of(16, new int[] { 3, 8, 6, 3 }) - .enchantability(18).toughness(2.0f).build()) .buildAndRegister(); Electrum = new Material.Builder(GTCEu.id("electrum")) @@ -306,8 +304,6 @@ public static void register() { .enchantability(18) .enchantment(Enchantments.BANE_OF_ARTHROPODS, 3) .enchantment(Enchantments.BLOCK_EFFICIENCY, 1).build()) - .armorStats(ArmorProperty.Builder.of(17, new int[] { 3, 7, 5, 3 }) - .enchantability(18).toughness(1.8f).build()) .rotorStats(130, 115, 3.0f, 512) .buildAndRegister(); @@ -422,8 +418,6 @@ public static void register() { .toolStats(ToolProperty.Builder.of(3.0F, 8.0F, 768, 2) .attackSpeed(0.3F).enchantability(33) .enchantment(Enchantments.SMITE, 3).build()) - .armorStats(ArmorProperty.Builder.of(29, new int[] { 4, 11, 8, 4 }) - .enchantability(33).toughness(3.0f).build()) .rotorStats(100, 160, 2.0f, 196) .itemPipeProperties(1024, 2) .blast(b -> b.temp(1700, GasTier.LOW) @@ -439,8 +433,6 @@ public static void register() { .toolStats(ToolProperty.Builder.of(12.0F, 2.0F, 768, 2) .enchantability(33) .enchantment(Enchantments.BLOCK_FORTUNE, 2).build()) - .armorStats(ArmorProperty.Builder.of(28, new int[] { 4, 11, 8, 4 }) - .enchantability(33).build()) .rotorStats(100, 170, 2.0f, 152) .itemPipeProperties(1024, 2) .blast(b -> b.temp(1600, GasTier.LOW) @@ -622,8 +614,6 @@ public static void register() { .components(Iron, 6, Chromium, 1, Manganese, 1, Nickel, 1) .toolStats(ToolProperty.Builder.of(7.0F, 5.0F, 1024, 3) .enchantability(14).build()) - .armorStats(ArmorProperty.Builder.of(56, new int[] { 5, 10, 7, 4 }) - .enchantability(14).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(160, 115, 4.0f, 480) .fluidPipeProperties(2428, 75, true, true, true, false) .blast(b -> b.temp(1700, GasTier.LOW) @@ -695,8 +685,6 @@ public static void register() { .components(Cobalt, 5, Chromium, 2, Nickel, 1, Molybdenum, 1) .toolStats(ToolProperty.Builder.of(10.0F, 7.0F, 2048, 4) .attackSpeed(0.1F).enchantability(21).build()) - .armorStats(ArmorProperty.Builder.of(80, new int[] { 7, 14, 10, 7 }) - .enchantability(21).toughness(7.0f).knockbackResistance(0.8f).build()) .rotorStats(160, 130, 4.0f, 2048) .itemPipeProperties(128, 16) .blast(b -> b.temp(2700, GasTier.MID) @@ -739,8 +727,6 @@ public static void register() { .toolStats(ToolProperty.Builder.of(2.0F, 2.0F, 384, 2) .addTypes(GTToolType.MORTAR) .attackSpeed(-0.2F).enchantability(5).build()) - .armorStats(ArmorProperty.Builder.of(22, new int[] { 3, 8, 6, 3 }) - .enchantability(5).toughness(2.5f).build()) .rotorStats(145, 105, 3.5f, 384) .buildAndRegister(); Iron.getProperty(PropertyKey.INGOT).setSmeltingInto(WroughtIron); @@ -1131,8 +1117,6 @@ public static void register() { .components(Tungsten, 1, Carbon, 1) .toolStats(ToolProperty.Builder.of(60.0F, 2.0F, 1024, 4) .enchantability(21).build()) - .armorStats(ArmorProperty.Builder.of(56, new int[] { 5, 10, 7, 4 }) - .enchantability(18).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(160, 155, 4.0f, 1280) .fluidPipeProperties(3837, 200, true) .blast(b -> b.temp(3058, GasTier.MID) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java index a10daac854..135615fca0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java @@ -43,8 +43,6 @@ public static void register() { .components(RoseGold, 1, Brass, 1, Steel, 2, BlackSteel, 4) .toolStats(ToolProperty.Builder.of(7.0F, 6.0F, 2560, 3) .attackSpeed(0.1F).enchantability(21).build()) - .armorStats(ArmorProperty.Builder.of(68, new int[] { 3, 8, 6, 3 }) - .enchantability(23).toughness(3.0f).knockbackResistance(0.1f).build()) .blast(b -> b.temp(1813, GasTier.LOW) .blastStats(VA[HV], 1000)) .buildAndRegister(); @@ -56,8 +54,6 @@ public static void register() { .components(SterlingSilver, 1, BismuthBronze, 1, Steel, 2, BlackSteel, 4) .toolStats(ToolProperty.Builder.of(15.0F, 6.0F, 1024, 3) .attackSpeed(0.1F).enchantability(33).build()) - .armorStats(ArmorProperty.Builder.of(63, new int[] { 3, 8, 6, 3 }) - .enchantability(23).toughness(3.0f).knockbackResistance(0.1f).build()) .blast(b -> b.temp(1813, GasTier.LOW) .blastStats(VA[HV], 1000)) .buildAndRegister(); @@ -126,8 +122,6 @@ public static void register() { .components(HSSG, 6, Cobalt, 1, Manganese, 1, Silicon, 1) .toolStats(ToolProperty.Builder.of(5.0F, 10.0F, 3072, 4) .attackSpeed(0.3F).enchantability(33).build()) - .armorStats(ArmorProperty.Builder.of(145, new int[] { 7, 13, 9, 7 }) - .enchantability(33).toughness(5.0f).knockbackResistance(0.3f).build()) .rotorStats(280, 140, 8.0f, 5120) .blast(b -> b.temp(5000, GasTier.HIGH) .blastStats(VA[GTValues.EV], 1400) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java index 4799d77227..6bc23ed7c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java @@ -142,8 +142,6 @@ public static void register() { .components(Steel, 1, Tungsten, 1) .toolStats(ToolProperty.Builder.of(9.0F, 7.0F, 2048, 4) .enchantability(14).build()) - .armorStats(ArmorProperty.Builder.of(73, new int[] { 6, 12, 8, 6 }) - .enchantability(14).toughness(5.5f).knockbackResistance(0.3f).build()) .rotorStats(160, 120, 4.0f, 2560) .fluidPipeProperties(3587, 225, true) .cableProperties(V[IV], 3, 2) @@ -161,8 +159,6 @@ public static void register() { .toolStats(ToolProperty.Builder.of(2.5F, 2.0F, 1024, 2) .addTypes(GTToolType.MORTAR) .attackSpeed(-0.2F).enchantability(5).build()) - .armorStats(ArmorProperty.Builder.of(56, new int[] { 4, 9, 6, 4 }) - .enchantability(5).toughness(3.5f).build()) .rotorStats(100, 120, 2.0f, 256) .itemPipeProperties(2048, 1) .buildAndRegister(); @@ -310,8 +306,6 @@ public static void register() { .components(Vanadium, 1, Chromium, 1, Steel, 7) .toolStats(ToolProperty.Builder.of(3.0F, 3.0F, 1536, 3) .attackSpeed(-0.2F).enchantability(5).build()) - .armorStats(ArmorProperty.Builder.of(78, new int[] { 6, 12, 8, 6 }) - .enchantability(5).toughness(5.5f).knockbackResistance(0.3f).build()) .rotorStats(130, 115, 3.0f, 1920) .fluidPipeProperties(2073, 50, true, true, false, false) .blast(1453, GasTier.LOW) @@ -350,8 +344,6 @@ public static void register() { .components(Naquadah, 2, Osmiridium, 1, Trinium, 1) .toolStats(ToolProperty.Builder.of(40.0F, 12.0F, 3072, 5) .attackSpeed(0.3F).enchantability(33).magnetic().build()) - .armorStats(ArmorProperty.Builder.of(156, new int[] { 8, 14, 10, 8 }) - .enchantability(33).toughness(6.0f).knockbackResistance(0.5f).build()) .rotorStats(190, 120, 5.0f, 5120) .cableProperties(V[UV], 2, 4) .blast(b -> b.temp(7200, GasTier.HIGH) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index 917cc0ea51..baaa383212 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -361,8 +361,6 @@ public static void register() { .ingot().color(0x4b4042).secondaryColor(0x474447) .toolStats(ToolProperty.Builder.of(10.0F, 4.0F, 2032, 4) .enchantability(21).build()) - .armorStats(ArmorProperty.Builder.of(37, new int[] { 3, 8, 6, 3 }) - .enchantability(21).toughness(3.0f).knockbackResistance(0.1f).build()) .buildAndRegister(); Glowstone = new Material.Builder(GTCEu.id("glowstone")) From f7e5c83d77051da8f0823c55b08297b3c1356efc Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:23:49 +0200 Subject: [PATCH 4/7] switch armor textures to use iron armor as the base --- .../assets/gtceu/textures/item/armor/boots.png | Bin 5607 -> 167 bytes .../gtceu/textures/item/armor/chestplate.png | Bin 5638 -> 197 bytes .../gtceu/textures/item/armor/helmet.png | Bin 5574 -> 157 bytes .../gtceu/textures/item/armor/leggings.png | Bin 5612 -> 172 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/gtceu/textures/item/armor/boots.png b/src/main/resources/assets/gtceu/textures/item/armor/boots.png index 1296e2a164744cd4929ad54c32c047dd4c50aeaa..e96092450e6c490afc45cc5fbbdbf156c4f0ae4c 100644 GIT binary patch delta 140 zcmV;70CWH6E2jaFBYyyHNklOC&hUOngs70&C_9q_v zKAs7!{V&YyaaP@Q80oz`5&2tR3IJ6CbY`|E7(w*twgeS;EKt>RL53;;y6UYQ7LkVl u-Bc1kmP=#zyS@;`s$FZPwN|O}5+A6jSlK&)Kqz?jc+U2Zp2Iz7GIPK0 z_xRBwuwY$@%udfO7dy)Fam)-yDHK4ROvh3p_=N{(W4`05Hwm*NFV)fh4 z4%s?jd->z0mqY4;BWt0iTe5?~-m~e- zYxHl`3TpGH=qJgGgVDM%H!rT-4zWI_%o@13GHHOH%FmLU8I@f(JNC@3$WPHB z+?<^10;>Az+2O^eg)6JB4Zgp2bG|?O$iY?m{OT2&w4={^?9qhwoVmzbJRHg2hwWIw z?q)yjyYTS--Qx%Ta&AiK0yH9U_u3r`)$5O33R-+2F)e+=`{}zRi|&kr3Gb^TmaW;) zNEg3dAI5gRXI*mWqtyNWr*P8~xZ6wYNXkmX)E+(WB5-Od$HFFQQw>4;Ih#F?`b&i-rV2z0qgwUT$RVuv<2 zzOVR-_CWIa1BmI8c|pOq1xclQ=<2W?K^e85&;4rC{D80ne=;rhj|r3;DkjBUu_bT5 z)@%30vcP>4)ngS&i>5x#+~WN7L`i@T_Lk48n(eF}=hum-LEiDVLsO$fanX49fOk_r z48>-{^i65yjj{))D)G8C4r^eL3@hRz7T_>T%ZPWzS4Y z_M8hY%)3~$;VJ#1&!fCiMMbwhuaCYJC3xvnO1}AGW7vV*DUU9N1aaq>*1d?5Cp{|I zWy_w?Z`9nX`=8DFc4*&W0Ar_5X3Fh8ZjdEwch?~Y#& zonOQaYM_&ze-zr#_luEBZShx+tvdVbmLF2aG|;72EVuKUoHOd|5AIK%Vd_)ccnAr8 zBf)g1Vrp8+hxdlx-MYnmc~)qDcv_7Atb3!;E5c37VrLQc077 zd#~^qmqX$T?liF)R-4BXX=H4Mg_xWXr^PbnVltdNGRim7AqNCTf<`$GqrqgAI}}_O zuN-_cWrx8{yI34*K!b+uEFe2JU znCPLN6gbuzZ%(%uT+_iZK4Bn?0BQxJ3fc`Bqf#fdMlcejl18&D3W(hfNt60EvD)Rv zcwE!*Oaz3t^0q^}=k5Xnlv*uUQdl~Zo=U0UGULl}3L|m3>r;S9BLpahK@u4zgAj>W z0?CL7A^1UM2#&xKLZbJeQkkqYYQhMH3Xt|Al6@ z4=1vD(PK#~7~knKHSej(#JuKSbJsw+HWP>A+7@yYYo3A?wGp^0Pr%je!qQMvDgn-q zmV$NL$xezvhJj*0g?b2yAYib9G8rU8Q30eQa3Lbn<03>XYtL?_^t2td5TjFpjzB9= zpf0UAVJ%BFtUcbIMlkCDB!dJ(s7*2%m)|m3K67HYXB)}yphu(&;Bmx&xMmwTy1+@u zZ#@cI^kNR3-?6okKVj~I{}GA(&V<4l$5yqo!Q)&c5epA zwCd{WCa{dHM6a?l!QSl{K&Pgr=C>wSpRsr5>p;MuI|FuRW3U|vUIk>powW`G45+-k zyfbX4wpId0s7;$TbqZpPZql5b9G0iRE&|VB23T2H*@1|$F}{$H5SAxNYX*$d9h{w= z-HxEDs*2^dxiM})YoRb8ce`=pMu!4pe4eQ@{a4`_-yf)*N66%1&YkO+lvUAj%DrP| GXZ;uUpAcLC diff --git a/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png b/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png index d56bdd01a7cd09e073817f650b74e2e94869120b..bab56132b9b0b0f83aadc5f7038b72baf72c85eb 100644 GIT binary patch delta 170 zcmV;b09F5nEX4tkBYyylNkli;t~`P2Di3d2A87uRT^YbL~S-3QR7x!T@3}j(Op0T(I_H=iiv`| zMrAZn2ZK>?h3F^|4nz`Mh>9T+L1l|XNyaUayw}i8qnI4$OwRn_om2hl-TU3|-uJ!b zbgc~y4jkm*?tmc3prDxn;h=YfPrtt4cXV4jh9K`WCClbh;aDO~r`IY;6+xqtbOens zl1c?*48cC`s9A!<-hhXibyVNq$1i2l1Rly|1o`PCtX|d z+wBUU(>MPm@Xjc4-hb&{cF1n*(BeF=J7v$Go%6m~A~o7G7Sxi)bl42JqC55K;&X60}n?V=L9y01MiZrXiuaP;2>A5YDpCB|1DwVSa#^p{h? z_7Mr|AC^`uK)=adKh;I_@V6gN=je9oQbw%U&=P;*sqn+Am)2Z4{Jic)N|pD6%qhn| z@`zuQT^+syeJbt8^2@bZQjoe7NxO{ZOq>^gA^gzEoBclvrKd0Y*ejy^`r(S@IkxNe z?7~)ESah>ubyJ#?tKjFh{b5mYWf6zU@-81wDV^%Nvv|ULmq$p4oEf@k2g2W4T&LV~ zuJXlAhk$uc7Orw_^WaAhyjL<(6PosX;dQ2~G4?@hL({(6N@>ZkAdi-UX>(Sc3$_&u z__5Zll996UKpx^T#Ls@?82di^+|Nwgbc8uzh{It=kJVznV@T*qzgmZ^mSbP++wi#G zhR8H!Po32zF9c<(v;w$ zO|-B8S(YNci5D#kt2!Wx(+j!&>w>aA-K?K+d0>6!Db5J}9-}^cZ|aV_PCNq#BHJz1Vi zzAM`w!P~RN{lnwA>0z4&rIy4EO;;LJ0W^|+S%h6O_>!hf3>fJ4cO$i4Vj@+BWo_w<9VwkM?^B2rJ z-2D5GjurlVzvjzpFSRx?CzkiSVmxsRYuu)wiyJ=N^~+ zu({^jU6Pt%qt)jDu1Ac&WbQHSBN1Vxh*QKUvfZ!J7er;!Q?J(4G7N_GB3G&wU_Ps~jY zmf^{U?ibOQECpso6{Imx zmC?yC0XMofww26i;myA>sb14k!$r5mQYz{~x?cD6L+m)v6?PSQHILTHI1_pcEK| z1z;2bNSSP|n8g;e`7)MJ%;Slfg2_y_m}!OADoAD0pP}LLp?P&I`b^RQ@+X;09cOAT z5!W&57^+CqVWQDY$3l$Z9aAu1353E_C*bOE;nA2TiU9XV=Y}=g$sRTX#udmh7C6;> z4iiJUgg}7G;W7$@Y!SxCco>Fvh-YCpXq8kVrYC%(fQ~>but7~)(L6erYGU_l5~B&Y z4nQ)L#YVd%6Ve%-lV!jg!#rCr#%p?bnE+N-42bKnfvXGLgbd47*r^w&^{;H5>+n~m zpwW7hyp_Jaa`npfRtmfoxOaE;%Jo(XycM{2cm2=ga_IV)A~fJ1P$KwLs{K9#2cKDe z<+B3=Kwp5g4;yCd4c_|eW-c%w$N(q!*dRN1y8)v;6(pT*-!RbKQP3|~eYY4v?1l#g z_{xMsY#i-cUjW4ax!J({0)e3Y)jG<`%1l19{SPtF30qTBQ+riaReMk1H(_ke8Je4$ z5%|ECl$6x1Di{oH));eKHv+R!EEZcx%)#TwkGCW+<6v)R9uyZBBW`YP2n4#gxFC=u zKR@5(Hdh7*w{PD@8X6kRVTh@M#>Pe@BO}A)fWhW~o=S$n5DQ~q>!vi=zU}4Z6#=I#I`eFI6w$}(C;EzcDl%S_9Fz8Ko%PN?etra%g%zaNj zix_4Q6w+uknwHdTgS}aOYXPDCH3DdaB(Q(Ay&C+g|GyeWq GrTz{-5>Oxj diff --git a/src/main/resources/assets/gtceu/textures/item/armor/helmet.png b/src/main/resources/assets/gtceu/textures/item/armor/helmet.png index 06fb0808ad7adeb3d4df7b3f6665e4a3be6a0af2..085dd585e5ac00a01a6f5674f99ea112b59bffbb 100644 GIT binary patch delta 129 zcmV-{0Dk|*E1dz5BYFU2Nklh7hg)q=+uh2W$B_ge`B7zQ}QY)gQi-wp`d+X6y!Ukh4) jz%7pil&pp*kw3Q_uPUJb?J?=<00000NkvXXu0mjfAcQwb literal 5574 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 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/leggings.png b/src/main/resources/assets/gtceu/textures/item/armor/leggings.png index 3a822a87c9e8e1a34fa35c3fcbd8697ca8b80154..5ea16729f49f101fa629d19c90132b169c594685 100644 GIT binary patch delta 145 zcmV;C0B-;6E35&KBYyyMNkl0aT5_)zA2MHhK z^Lv%m+HplhnyL4$XY%%HR z9E!`#GgDm3PU|=v`?VV>X$S62@@c&vVD%X1R&;k?^wYsFU#zt^9LQeyNds9_IN0X z8F@q2#qS;+QV@!!d^6fK#gc20y&i_23B%JqY6MnmXgFt6AQ&%9K7wJmpzm(3!W2;=|W~I^=ee}i9lnt$iuV(K1aE+%lt$s$u(C~d14;T*AgjPg7ygqPOoKRYM zyFqtsj<71OKX25Kbhp4}Mw$^V^LLY@^>=3=}PvKDH#_N1Q!BS=A1NjK*GW) zpM@&D0~9YM15^$jhkxR7a7OHLPHM>GfYVbB`u}aUp9eK9#y!`q-#rETDY@jSJG%P* z<Z-~OlyIc=#9S@1*DNlkRUys7Y~`fUl}0|xP5_!ccr3plt8 z+cx))yQ0+_w|{nB|_%p>ge!PN9MQL z>HDHbWgitvhCRy|oLF5)b}6BH zq`K<()`pV{E>>^3z3v}puBSiN{jkM;_s@uaLS8yzyWj}9e67`|=JWj$?;S~h<+cd_ zMbwtwKh?Mgy)fa}qqc^{1)tQ9Z`RRs3R>6rYWA;uSa~yS)A37Rx9kkOx+Hvd`S&T2 zCw?yQub8>G20eW&>M4`be0~4zPuG6mcz49vlA80M6h-fO^{`}A2ED#Ca#85~zl>9? zu-)4rQ2lg#s>Mf zPT086*w){%qp=~ouJ|^%^Z7Km+o|d}j4&DaIBC*Se7nI6?mmYT7GXEzL^j26wUnMV zDtJv5-|@IKsomNI28zMCc0-QQirE!B zCocxZtXaV0I$fA-1us>t;YOM)6j#g_^Mz29oz6#i;a=P@3#r2rmC+p(V5Z<@GK?7$ z2y8YR-zMUlEP4Sfm&*l0M1UX=@PMrIj0|pvjMfmAqMbuYSqTemW@wX<%W~pcQy!z> z@xVH_Ge3h_t?r^XT02w#dI;>eSpf5e0)s)&9bsjn@&QRlLcJoa$>50;BvMvWo`s;I z@+l(|(w%}Ny71;aOOA6pBq5-3C7EFHck#M-ckbQk47}88OlczW*z{CN1&@u7ktTvBG3QW9Y7ta~;E+ToAtA9$ zNk~oBmU=pEaZ!%PB?oo7}ySw7H2CJ5IF5%H&~>F z!Wok#*<{L5@K_2ii|krfg9}CC46ei(3XlpBF$NKB5B>c z|K-hIA8uItp~uoz5PzQ2)PARusND8h`!t7kUM4Qrc`Y!UXy1Yr&!rfbc_wRP}B85 zN1zobP^VVhNgYQu+11~cNwMbuB!gfCdLtRk6Lf4=z`huryA2cc&?C(0(CvuXYle6nHP^zUu0e>%A0sFXz7M`oGEL z_2$PEWd#2L*}zXFeZ4361;+8z&Wurl?;%dx@Zs*^U^K`an`Y&3yoa*gjk9rc5HJp4 zRO+Y!bv`3~(aG)}PquJ49-~ys>B%xbH(!sY7U1z4H@COrqbS<;wyksi;K2jVty{Nx zU^>@1EV#bDzOA#dW471S)Hr)-X=xic9hU$eUFdFuhK2?X+uv?ML9D8-&E0j{KI;TK z91afK|6A*ofCaEXv)SzIm6et6*diviC^wH!*B2 V(C754s`X=otD@qSduC)5{Resb0DJ%d From e00ef4c59b7783a94eed9339ed2331f6134b4dd8 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 2 Jan 2025 16:06:56 +0200 Subject: [PATCH 5/7] fix GTDynamicDataPack and GTDynamicResourcePack overriding all other packs' textures if one exists in the dynamic packs in any namespace. --- .../gtceu/data/pack/GTDynamicDataPack.java | 11 ++++++---- .../data/pack/GTDynamicResourcePack.java | 20 ++++++++++++------- .../gtceu/data/pack/GTPackSource.java | 10 +++++++++- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index 4260a002f8..968d57d65d 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -95,10 +95,11 @@ public static void writeJson(ResourceLocation id, @Nullable String subdir, Path try { Path file; if (subdir != null) { - file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".json"); // assume JSON + // assume JSON + file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".json"); } else { - file = parent.resolve(id.getNamespace()).resolve(id.getPath()); // assume the file type is also appended - // if a full path is given. + // assume the file type is also appended if a full path is given. + file = parent.resolve(id.getNamespace()).resolve(id.getPath()); } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { @@ -122,6 +123,7 @@ public IoSupplier getRootResource(String... elements) { return null; } + @Nullable @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.SERVER_DATA) { @@ -139,7 +141,8 @@ public void listResources(PackType packType, String namespace, String path, Reso if (packType == PackType.SERVER_DATA) { if (!path.endsWith("/")) path += "/"; final String finalPath = path; - DATA.keySet().stream().filter(Objects::nonNull).filter(loc -> loc.getPath().startsWith(finalPath)) + DATA.keySet().stream().filter(Objects::nonNull) + .filter(loc -> loc.getNamespace().equals(namespace) && loc.getPath().startsWith(finalPath)) .forEach((id) -> { IoSupplier resource = this.getResource(packType, id); if (resource != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index 7265b1f989..5aee3dae35 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -132,10 +132,11 @@ public static void writeByteArray(ResourceLocation id, @Nullable String subdir, try { Path file; if (subdir != null) { - file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".png"); // assume PNG + // assume PNG + file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".png"); } else { - file = parent.resolve(id.getNamespace()).resolve(id.getPath()); // assume the file type is also appended - // if a full path is given. + // assume the file type is also appended if a full path is given. + file = parent.resolve(id.getNamespace()).resolve(id.getPath()); } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { @@ -152,13 +153,17 @@ public IoSupplier getRootResource(String... elements) { return null; } + @Nullable @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.CLIENT_RESOURCES) { - if (DATA.containsKey(location)) - return () -> new ByteArrayInputStream(DATA.get(location)); + var byteArray = DATA.get(location); + if (byteArray != null) + return () -> new ByteArrayInputStream(byteArray); + else return null; + } else { + return null; } - return null; } @Override @@ -166,7 +171,8 @@ public void listResources(PackType packType, String namespace, String path, Reso if (packType == PackType.CLIENT_RESOURCES) { if (!path.endsWith("/")) path += "/"; final String finalPath = path; - DATA.keySet().stream().filter(Objects::nonNull).filter(loc -> loc.getPath().startsWith(finalPath)) + DATA.keySet().stream().filter(Objects::nonNull) + .filter(loc -> loc.getNamespace().equals(namespace) && loc.getPath().startsWith(finalPath)) .forEach((id) -> { IoSupplier resource = this.getResource(packType, id); if (resource != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java index 93a1b1ba63..3c51792463 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java @@ -22,7 +22,7 @@ public class GTPackSource implements RepositorySource { @Override public void loadPacks(Consumer onLoad) { - onLoad.accept(Pack.readMetaAndCreate(name, + onLoad.accept(readMetaAndCreate(name, Component.literal(name), true, resources::apply, @@ -30,4 +30,12 @@ public void loadPacks(Consumer onLoad) { position, PackSource.BUILT_IN)); } + + public static Pack readMetaAndCreate(String id, Component title, boolean required, Pack.ResourcesSupplier resources, + PackType packType, Pack.Position defaultPosition, PackSource packSource) { + Pack.Info info = Pack.readPackInfo(id, resources); + return info != null ? Pack.create(id, title, required, resources, + info, packType, defaultPosition, true, packSource) + : null; + } } From 7263e2ada6c5e9796f62ebb3b4ffd2ec81f5dd29 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 2 Jan 2025 16:08:16 +0200 Subject: [PATCH 6/7] add pack.png to dynamic data/resourcepack --- .../com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java | 3 +++ .../com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index 968d57d65d..7800bba371 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -120,6 +120,9 @@ public static void addAdvancement(ResourceLocation loc, JsonObject obj) { @Nullable @Override public IoSupplier getRootResource(String... elements) { + if (elements.length > 0 && elements[0].equals("pack.png")) { + return () -> GTCEu.class.getResourceAsStream("/icon.png"); + } return null; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index 5aee3dae35..dbea483794 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -150,6 +150,9 @@ public static void writeByteArray(ResourceLocation id, @Nullable String subdir, @Nullable @Override public IoSupplier getRootResource(String... elements) { + if (elements.length > 0 && elements[0].equals("pack.png")) { + return () -> GTCEu.class.getResourceAsStream("/icon.png"); + } return null; } From f65d7493d2b5f46cab4907d153c32a5c79c932a6 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 2 Jan 2025 16:10:39 +0200 Subject: [PATCH 7/7] spotless --- .../gtceu/common/data/materials/HigherDegreeMaterials.java | 1 - .../gtceu/common/data/materials/SecondDegreeMaterials.java | 1 - .../common/data/materials/UnknownCompositionMaterials.java | 1 - .../java/com/gregtechceu/gtceu/data/pack/GTPackSource.java | 3 +-- 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java index 135615fca0..91668a033a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java index 6bc23ed7c4..378d370c77 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index baaa383212..781e45d83a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java index 3c51792463..49fc310cc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java @@ -35,7 +35,6 @@ public static Pack readMetaAndCreate(String id, Component title, boolean require PackType packType, Pack.Position defaultPosition, PackSource packSource) { Pack.Info info = Pack.readPackInfo(id, resources); return info != null ? Pack.create(id, title, required, resources, - info, packType, defaultPosition, true, packSource) - : null; + info, packType, defaultPosition, true, packSource) : null; } }