From 4d58e883639964069db9202276d7efc46311e118 Mon Sep 17 00:00:00 2001 From: KnightMiner Date: Fri, 26 Apr 2024 02:57:12 -0400 Subject: [PATCH] Merge bowstrings and bindings into a single enum Nice thing about the new material stat loadables is we don't need unique class types for each stat type anymore, so don't do that --- .../library/client/book/TinkerBook.java | 7 +- .../client/book/content/ContentMaterial.java | 6 +- .../book/content/RangedMaterialContent.java | 6 +- .../TierRangeMaterialSectionTransformer.java | 4 +- .../TieredMaterialSectionTransformer.java | 4 +- .../AbstractMaterialSpriteProvider.java | 4 +- .../material/AbstractPartSpriteProvider.java | 13 ++- .../library/materials/MaterialRegistry.java | 7 +- .../tconstruct/tools/TinkerToolParts.java | 7 +- .../material/MaterialStatsDataProvider.java | 101 +++++++++--------- .../sprite/TinkerMaterialSpriteProvider.java | 19 ++-- .../tools/stats/BowstringMaterialStats.java | 39 ++----- .../tools/stats/ExtraMaterialStats.java | 10 +- .../MeleeHarvestMaterialStatProvider.java | 2 +- .../stats/RangedMaterialStatProvider.java | 2 +- ...lStats.java => StatlessMaterialStats.java} | 21 ++-- .../fixture/MaterialItemFixture.java | 4 +- .../fixture/MaterialStatsFixture.java | 6 +- .../stats/UpdateMaterialStatsPacketTest.java | 6 +- .../tools/stat/CompatibleStatTest.java | 14 +-- 20 files changed, 127 insertions(+), 155 deletions(-) rename src/main/java/slimeknights/tconstruct/tools/stats/{BindingMaterialStats.java => StatlessMaterialStats.java} (52%) diff --git a/src/main/java/slimeknights/tconstruct/library/client/book/TinkerBook.java b/src/main/java/slimeknights/tconstruct/library/client/book/TinkerBook.java index b6f38d65434..ff873724cc8 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/book/TinkerBook.java +++ b/src/main/java/slimeknights/tconstruct/library/client/book/TinkerBook.java @@ -21,13 +21,12 @@ import slimeknights.tconstruct.library.client.book.sectiontransformer.materials.TierRangeMaterialSectionTransformer; import slimeknights.tconstruct.library.client.book.sectiontransformer.materials.TieredMaterialSectionTransformer; import slimeknights.tconstruct.shared.item.TinkerBookItem.BookType; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; import slimeknights.tconstruct.tools.stats.SkullStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import static slimeknights.tconstruct.library.TinkerBookIDs.ENCYCLOPEDIA_ID; import static slimeknights.tconstruct.library.TinkerBookIDs.FANTASTIC_FOUNDRY_ID; @@ -57,8 +56,8 @@ public static void initBook() { BookLoader.registerPageType(ContentModifier.ID, ContentModifier.class); BookLoader.registerPageType(TooltipShowcaseContent.ID, TooltipShowcaseContent.class); - TierRangeMaterialSectionTransformer.registerMaterialType(TConstruct.getResource("melee_harvest"), ContentMaterial::new, HeadMaterialStats.ID, HandleMaterialStats.ID, BindingMaterialStats.ID); - TierRangeMaterialSectionTransformer.registerMaterialType(TConstruct.getResource("ranged"), RangedMaterialContent::new, LimbMaterialStats.ID, GripMaterialStats.ID, BowstringMaterialStats.ID); + TierRangeMaterialSectionTransformer.registerMaterialType(TConstruct.getResource("melee_harvest"), ContentMaterial::new, HeadMaterialStats.ID, HandleMaterialStats.ID, StatlessMaterialStats.BINDING.getIdentifier()); + TierRangeMaterialSectionTransformer.registerMaterialType(TConstruct.getResource("ranged"), RangedMaterialContent::new, LimbMaterialStats.ID, GripMaterialStats.ID, StatlessMaterialStats.BOWSTRING.getIdentifier()); TierRangeMaterialSectionTransformer.registerMaterialType(TConstruct.getResource("skull"), ContentMaterialSkull::new, SkullStats.ID); // add transformers that load modifiers from tags diff --git a/src/main/java/slimeknights/tconstruct/library/client/book/content/ContentMaterial.java b/src/main/java/slimeknights/tconstruct/library/client/book/content/ContentMaterial.java index 0c65cfeb6dc..e2f4f0de239 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/book/content/ContentMaterial.java +++ b/src/main/java/slimeknights/tconstruct/library/client/book/content/ContentMaterial.java @@ -5,9 +5,9 @@ import slimeknights.tconstruct.library.materials.definition.MaterialId; import slimeknights.tconstruct.library.materials.definition.MaterialVariantId; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; /** * Content page for melee/harvest materials @@ -31,7 +31,7 @@ protected MaterialStatsId getStatType(int index) { return switch (index) { case 0 -> HeadMaterialStats.ID; case 1 -> HandleMaterialStats.ID; - case 2 -> BindingMaterialStats.ID; + case 2 -> StatlessMaterialStats.BINDING.getIdentifier(); default -> null; }; } @@ -43,6 +43,6 @@ protected String getTextKey(MaterialId material) { @Override protected boolean supportsStatType(MaterialStatsId statsId) { - return statsId.equals(HeadMaterialStats.ID) || statsId.equals(HandleMaterialStats.ID) || statsId.equals(BindingMaterialStats.ID); + return statsId.equals(HeadMaterialStats.ID) || statsId.equals(HandleMaterialStats.ID) || statsId.equals(StatlessMaterialStats.BINDING.getIdentifier()); } } diff --git a/src/main/java/slimeknights/tconstruct/library/client/book/content/RangedMaterialContent.java b/src/main/java/slimeknights/tconstruct/library/client/book/content/RangedMaterialContent.java index bf1a283dfc0..1530aa76fbc 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/book/content/RangedMaterialContent.java +++ b/src/main/java/slimeknights/tconstruct/library/client/book/content/RangedMaterialContent.java @@ -6,9 +6,9 @@ import slimeknights.tconstruct.library.materials.definition.MaterialVariantId; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; import slimeknights.tconstruct.library.utils.Util; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import javax.annotation.Nullable; @@ -31,7 +31,7 @@ protected MaterialStatsId getStatType(int index) { return switch (index) { case 0 -> LimbMaterialStats.ID; case 1 -> GripMaterialStats.ID; - case 2 -> BowstringMaterialStats.ID; + case 2 -> StatlessMaterialStats.BOWSTRING.getIdentifier(); default -> null; }; } @@ -50,6 +50,6 @@ protected String getTextKey(MaterialId material) { @Override protected boolean supportsStatType(MaterialStatsId statsId) { - return statsId.equals(LimbMaterialStats.ID) || statsId.equals(GripMaterialStats.ID) || statsId.equals(BowstringMaterialStats.ID); + return statsId.equals(LimbMaterialStats.ID) || statsId.equals(GripMaterialStats.ID) || statsId.equals(StatlessMaterialStats.BOWSTRING.getIdentifier()); } } diff --git a/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TierRangeMaterialSectionTransformer.java b/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TierRangeMaterialSectionTransformer.java index f600be0d786..163fd04ed8f 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TierRangeMaterialSectionTransformer.java +++ b/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TierRangeMaterialSectionTransformer.java @@ -22,9 +22,9 @@ import slimeknights.tconstruct.library.materials.definition.MaterialVariantId; import slimeknights.tconstruct.library.materials.stats.IMaterialStats; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import javax.annotation.Nullable; import java.util.HashMap; @@ -38,7 +38,7 @@ * Section transformer to show a range of materials tiers in the book */ public class TierRangeMaterialSectionTransformer extends BookTransformer { - private static final Set MELEE_HARVEST = ImmutableSet.of(HeadMaterialStats.ID, HandleMaterialStats.ID, BindingMaterialStats.ID); + private static final Set MELEE_HARVEST = ImmutableSet.of(HeadMaterialStats.ID, HandleMaterialStats.ID, StatlessMaterialStats.BINDING.getIdentifier()); private static final ResourceLocation KEY = TConstruct.getResource("material_tier"); private static final Map MATERIAL_TYPES = new HashMap<>(); diff --git a/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TieredMaterialSectionTransformer.java b/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TieredMaterialSectionTransformer.java index 1f58cdcd46e..c7d056b51c1 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TieredMaterialSectionTransformer.java +++ b/src/main/java/slimeknights/tconstruct/library/client/book/sectiontransformer/materials/TieredMaterialSectionTransformer.java @@ -5,16 +5,16 @@ import slimeknights.tconstruct.library.materials.definition.IMaterial; import slimeknights.tconstruct.library.materials.stats.IMaterialStats; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import java.util.Set; /** @deprecated use {@link TierRangeMaterialSectionTransformer} */ @Deprecated public class TieredMaterialSectionTransformer extends AbstractMaterialSectionTransformer { - private static final Set VISIBLE_STATS = ImmutableSet.of(HeadMaterialStats.ID, HandleMaterialStats.ID, BindingMaterialStats.ID); + private static final Set VISIBLE_STATS = ImmutableSet.of(HeadMaterialStats.ID, HandleMaterialStats.ID, StatlessMaterialStats.BINDING.getIdentifier()); private final int materialTier; public TieredMaterialSectionTransformer(String sectionName, int materialTier, boolean detailed) { diff --git a/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractMaterialSpriteProvider.java b/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractMaterialSpriteProvider.java index b42eeb138c4..ca48d2d1607 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractMaterialSpriteProvider.java +++ b/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractMaterialSpriteProvider.java @@ -15,12 +15,12 @@ import slimeknights.tconstruct.library.materials.definition.MaterialId; import slimeknights.tconstruct.library.materials.definition.MaterialVariantId; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; import slimeknights.tconstruct.tools.stats.RepairKitStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import javax.annotation.Nullable; import java.util.HashMap; @@ -151,7 +151,7 @@ public MaterialSpriteInfoBuilder statType(MaterialStatsId... statsId) { public MaterialSpriteInfoBuilder meleeHarvest() { statType(HeadMaterialStats.ID); statType(HandleMaterialStats.ID); - statType(BindingMaterialStats.ID); + statType(StatlessMaterialStats.BINDING.getIdentifier()); statType(RepairKitStats.ID); return this; } diff --git a/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractPartSpriteProvider.java b/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractPartSpriteProvider.java index 1610af0cf26..d4a09d0a5e4 100644 --- a/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractPartSpriteProvider.java +++ b/src/main/java/slimeknights/tconstruct/library/client/data/material/AbstractPartSpriteProvider.java @@ -7,12 +7,11 @@ import net.minecraft.resources.ResourceLocation; import slimeknights.tconstruct.library.client.data.util.AbstractSpriteReader; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import javax.annotation.Nullable; import java.util.ArrayList; @@ -91,7 +90,7 @@ protected void addHandle(String name) { /** Adds a sprite requiring extra stats */ protected void addBinding(String name) { - addPart(name, BindingMaterialStats.ID); + addPart(name, StatlessMaterialStats.BINDING.getIdentifier()); } /** Adds a sprite requiring head stats */ @@ -101,7 +100,7 @@ protected void addLimb(String name) { /** Adds a sprite requiring head stats */ protected void addBowstring(String name) { - addPart(name, BowstringMaterialStats.ID); + addPart(name, StatlessMaterialStats.BOWSTRING.getIdentifier()); } /** Create a builder for tool sprites */ @@ -212,7 +211,7 @@ public ToolSpriteBuilder addHandle(String name) { /** Adds a sprite requiring extra stats */ public ToolSpriteBuilder addBinding(String name) { - return addPart(name, BindingMaterialStats.ID); + return addPart(name, StatlessMaterialStats.BINDING.getIdentifier()); } /** Adds a sprite requiring limb stats */ @@ -227,12 +226,12 @@ public ToolSpriteBuilder addGrip(String name) { /** Adds a sprite requiring bowstring stats */ public ToolSpriteBuilder addBowstring(String name) { - return addPart(name, BowstringMaterialStats.ID); + return addPart(name, StatlessMaterialStats.BOWSTRING.getIdentifier()); } /** Adds a breakable sprite requiring bowstring stats */ public ToolSpriteBuilder addBreakableBowstring(String name) { - return addBreakablePart(name, BowstringMaterialStats.ID); + return addBreakablePart(name, StatlessMaterialStats.BOWSTRING.getIdentifier()); } /** Adds sprites for large parts as well */ diff --git a/src/main/java/slimeknights/tconstruct/library/materials/MaterialRegistry.java b/src/main/java/slimeknights/tconstruct/library/materials/MaterialRegistry.java index acb7a363b58..ebd736868f1 100644 --- a/src/main/java/slimeknights/tconstruct/library/materials/MaterialRegistry.java +++ b/src/main/java/slimeknights/tconstruct/library/materials/MaterialRegistry.java @@ -20,14 +20,13 @@ import slimeknights.tconstruct.library.materials.stats.UpdateMaterialStatsPacket; import slimeknights.tconstruct.library.materials.traits.MaterialTraitsManager; import slimeknights.tconstruct.library.materials.traits.UpdateMaterialTraitsPacket; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; import slimeknights.tconstruct.tools.stats.RepairKitStats; import slimeknights.tconstruct.tools.stats.SkullStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import java.util.Collection; import java.util.HashMap; @@ -100,11 +99,11 @@ public MaterialRegistry() { // melee harvest registry.registerStatType(HeadMaterialStats.TYPE, MELEE_HARVEST); registry.registerStatType(HandleMaterialStats.TYPE, MELEE_HARVEST); - registry.registerStatType(BindingMaterialStats.TYPE, MELEE_HARVEST); + registry.registerStatType(StatlessMaterialStats.BINDING.getType(), MELEE_HARVEST); // ranged registry.registerStatType(LimbMaterialStats.TYPE, RANGED); registry.registerStatType(GripMaterialStats.TYPE, RANGED); - registry.registerStatType(BowstringMaterialStats.TYPE, RANGED); + registry.registerStatType(StatlessMaterialStats.BOWSTRING.getType(), RANGED); // misc registry.registerStatType(RepairKitStats.TYPE); registry.registerStatType(SkullStats.TYPE); diff --git a/src/main/java/slimeknights/tconstruct/tools/TinkerToolParts.java b/src/main/java/slimeknights/tconstruct/tools/TinkerToolParts.java index b83af1f1a8e..d8afaff7e5d 100644 --- a/src/main/java/slimeknights/tconstruct/tools/TinkerToolParts.java +++ b/src/main/java/slimeknights/tconstruct/tools/TinkerToolParts.java @@ -11,12 +11,11 @@ import slimeknights.tconstruct.library.materials.definition.IMaterial; import slimeknights.tconstruct.library.tools.part.ToolPartItem; import slimeknights.tconstruct.tools.item.RepairKitItem; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import java.util.ArrayList; import java.util.List; @@ -50,9 +49,9 @@ public final class TinkerToolParts extends TinkerModule { // bows public static final ItemObject bowLimb = ITEMS.register("bow_limb", () -> new ToolPartItem(PARTS_PROPS, LimbMaterialStats.ID)); public static final ItemObject bowGrip = ITEMS.register("bow_grip", () -> new ToolPartItem(PARTS_PROPS, GripMaterialStats.ID)); - public static final ItemObject bowstring = ITEMS.register("bowstring", () -> new ToolPartItem(PARTS_PROPS, BowstringMaterialStats.ID)); + public static final ItemObject bowstring = ITEMS.register("bowstring", () -> new ToolPartItem(PARTS_PROPS, StatlessMaterialStats.BOWSTRING.getIdentifier())); // other parts - public static final ItemObject toolBinding = ITEMS.register("tool_binding", () -> new ToolPartItem(PARTS_PROPS, BindingMaterialStats.ID)); + public static final ItemObject toolBinding = ITEMS.register("tool_binding", () -> new ToolPartItem(PARTS_PROPS, StatlessMaterialStats.BINDING.getIdentifier())); public static final ItemObject toolHandle = ITEMS.register("tool_handle", () -> new ToolPartItem(PARTS_PROPS, HandleMaterialStats.ID)); public static final ItemObject toughHandle = ITEMS.register("tough_handle", () -> new ToolPartItem(PARTS_PROPS, HandleMaterialStats.ID)); } diff --git a/src/main/java/slimeknights/tconstruct/tools/data/material/MaterialStatsDataProvider.java b/src/main/java/slimeknights/tconstruct/tools/data/material/MaterialStatsDataProvider.java index ff1041e9c2c..03de82955df 100644 --- a/src/main/java/slimeknights/tconstruct/tools/data/material/MaterialStatsDataProvider.java +++ b/src/main/java/slimeknights/tconstruct/tools/data/material/MaterialStatsDataProvider.java @@ -3,14 +3,13 @@ import net.minecraft.data.DataGenerator; import slimeknights.tconstruct.library.data.material.AbstractMaterialDataProvider; import slimeknights.tconstruct.library.data.material.AbstractMaterialStatsDataProvider; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.GripMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; import slimeknights.tconstruct.tools.stats.LimbMaterialStats; import slimeknights.tconstruct.tools.stats.RepairKitStats; import slimeknights.tconstruct.tools.stats.SkullStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import static net.minecraft.world.item.Tiers.DIAMOND; import static net.minecraft.world.item.Tiers.GOLD; @@ -44,174 +43,174 @@ private void addMeleeHarvest() { addMaterialStats(MaterialIds.wood, new HeadMaterialStats(60, 2f, WOOD, 0f), HandleMaterialStats.builder().build(), // 1.0 to all four stats for wood, its the baseline handl.build()e - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // vanilla stone: 131, 4f, STONE, 1f addMaterialStats(MaterialIds.rock, new HeadMaterialStats(130, 4f, STONE, 1f), HandleMaterialStats.builder().durability(0.9f).miningSpeed(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.flint, new HeadMaterialStats(85, 3.5f, STONE, 1.25f), HandleMaterialStats.builder().durability(0.85f).attackDamage(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.copper, new HeadMaterialStats(210, 5.0f, IRON, 0.5f), HandleMaterialStats.builder().durability(0.80f).miningSpeed(1.1f).attackDamage(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.bone, new HeadMaterialStats(100, 2.5f, STONE, 1.25f), HandleMaterialStats.builder().durability(0.75f).attackSpeed(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.chorus, new HeadMaterialStats(180, 3.0f, STONE, 1.0f), HandleMaterialStats.builder().durability(1.1f).miningSpeed(0.95f).attackSpeed(0.9f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 1 - binding - addMaterialStats(MaterialIds.string, BindingMaterialStats.DEFAULT); - addMaterialStats(MaterialIds.leather, BindingMaterialStats.DEFAULT); - addMaterialStats(MaterialIds.vine, BindingMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.string, StatlessMaterialStats.BINDING); + addMaterialStats(MaterialIds.leather, StatlessMaterialStats.BINDING); + addMaterialStats(MaterialIds.vine, StatlessMaterialStats.BINDING); // tier 2 // vanilla iron: 250, 6f, IRON, 2f addMaterialStats(MaterialIds.iron, new HeadMaterialStats(250, 6f, IRON, 2f), HandleMaterialStats.builder().durability(1.10f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.searedStone, new HeadMaterialStats(225, 6.5f, IRON, 1.5f), HandleMaterialStats.builder().durability(0.85f).miningSpeed(1.10f).attackDamage(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.venombone, new HeadMaterialStats(175, 4.5f, IRON, 2.25f), HandleMaterialStats.builder().durability(0.9f).attackSpeed(1.1f).attackDamage(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.slimewood, new HeadMaterialStats(375, 4f, IRON, 1f), HandleMaterialStats.builder().durability(1.3f).miningSpeed(0.85f).attackDamage(0.85f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 2 - nether addMaterialStats(MaterialIds.scorchedStone, new HeadMaterialStats(120, 4.5f, IRON, 2.5f), HandleMaterialStats.builder().durability(0.8f).attackSpeed(1.05f).attackDamage(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.necroticBone, new HeadMaterialStats(125, 4f, IRON, 2.25f), HandleMaterialStats.builder().durability(0.7f).attackSpeed(1.15f).attackDamage(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 2 - end addMaterialStats(MaterialIds.whitestone, new HeadMaterialStats(275, 6.0f, IRON, 1.25f), HandleMaterialStats.builder().durability(0.95f).miningSpeed(1.1f).attackSpeed(0.95f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 2 - bindings - addMaterialStats(MaterialIds.chain, BindingMaterialStats.DEFAULT); - addMaterialStats(MaterialIds.skyslimeVine, BindingMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.chain, StatlessMaterialStats.BINDING); + addMaterialStats(MaterialIds.skyslimeVine, StatlessMaterialStats.BINDING); // tier 2 (mod integration) addMaterialStats(MaterialIds.osmium, new HeadMaterialStats(500, 4.5f, IRON, 2.0f), HandleMaterialStats.builder().durability(1.2f).attackSpeed(0.9f).miningSpeed(0.9f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.tungsten, new HeadMaterialStats(350, 6.5f, IRON, 1.75f), HandleMaterialStats.builder().durability(0.9f).miningSpeed(1.1f).attackSpeed(0.9f).attackDamage(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.platinum, new HeadMaterialStats(400, 7.0f, IRON, 1.5f), HandleMaterialStats.builder().durability(1.05f).miningSpeed(1.05f).attackSpeed(0.95f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.silver, new HeadMaterialStats(300, 5.5f, IRON, 2.25f), HandleMaterialStats.builder().durability(0.9f).miningSpeed(1.05f).attackSpeed(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.lead, new HeadMaterialStats(200, 5f, IRON, 2.5f), HandleMaterialStats.builder().durability(0.9f).attackSpeed(0.9f).attackDamage(1.2f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 3 // vanilla diamond: 1561, 8f, DIAMOND, 3f addMaterialStats(MaterialIds.slimesteel, new HeadMaterialStats(1040, 6f, DIAMOND, 2.5f), HandleMaterialStats.builder().durability(1.2f).attackSpeed(0.95f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.amethystBronze, new HeadMaterialStats(720, 7f, DIAMOND, 1.5f), HandleMaterialStats.builder().miningSpeed(1.10f).attackSpeed(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.nahuatl, new HeadMaterialStats(350, 4.5f, DIAMOND, 3f), HandleMaterialStats.builder().durability(0.9f).attackSpeed(0.9f).attackDamage(1.30f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.pigIron, new HeadMaterialStats(580, 6f, DIAMOND, 2.5f), HandleMaterialStats.builder().durability(1.10f).miningSpeed(0.85f).attackDamage(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // vanilla gold: 32, 12f, WOOD, 0f addMaterialStats(MaterialIds.roseGold, new HeadMaterialStats(175, 9f, GOLD, 1f), // gold mining level technically puts it in tier 0, but lets see if some mod does something weird HandleMaterialStats.builder().durability(0.6f).miningSpeed(1.20f).attackSpeed(1.20f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 3 (nether) addMaterialStats(MaterialIds.cobalt, new HeadMaterialStats(800, 6.5f, DIAMOND, 2.25f), HandleMaterialStats.builder().durability(1.05f).miningSpeed(1.05f).attackSpeed(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 3 - binding - addMaterialStats(MaterialIds.darkthread, BindingMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.darkthread, StatlessMaterialStats.BINDING); // tier 3 (mod integration) addMaterialStats(MaterialIds.steel, new HeadMaterialStats(775, 6f, DIAMOND, 2.75f), HandleMaterialStats.builder().durability(1.05f).miningSpeed(1.05f).attackSpeed(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.bronze, new HeadMaterialStats(760, 6.5f, DIAMOND, 2.25f), HandleMaterialStats.builder().durability(1.10f).miningSpeed(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.constantan, new HeadMaterialStats(675, 7.5f, DIAMOND, 1.75f), HandleMaterialStats.builder().durability(0.95f).miningSpeed(1.15f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.invar, new HeadMaterialStats(630, 5.5f, DIAMOND, 2.5f), HandleMaterialStats.builder().miningSpeed(0.9f).attackDamage(1.2f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.necronium, new HeadMaterialStats(357, 4.0f, DIAMOND, 2.75f), HandleMaterialStats.builder().durability(0.8f).attackSpeed(1.15f).attackDamage(1.1f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.electrum, new HeadMaterialStats(225, 8.5f, IRON, 1.5f), HandleMaterialStats.builder().durability(0.8f).attackSpeed(1.15f).miningSpeed(1.15f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.platedSlimewood, new HeadMaterialStats(595, 5.0f, DIAMOND, 2.0f), HandleMaterialStats.builder().durability(1.25f).miningSpeed(0.9f).attackSpeed(0.9f).attackDamage(1.05f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); // tier 4 // vanilla netherite: 2031, 9f, NETHERITE, 4f addMaterialStats(MaterialIds.queensSlime, new HeadMaterialStats(1650, 6f, NETHERITE, 2f), HandleMaterialStats.builder().durability(1.35f).miningSpeed(0.9f).attackSpeed(0.95f).attackDamage(0.95f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.hepatizon, new HeadMaterialStats(975, 8f, NETHERITE, 2.5f), HandleMaterialStats.builder().durability(1.1f).miningSpeed(1.2f).attackDamage(0.9f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.manyullyn, new HeadMaterialStats(1250, 6.5f, NETHERITE, 3.5f), HandleMaterialStats.builder().durability(1.1f).miningSpeed(0.9f).attackSpeed(0.95f).attackDamage(1.25f).build(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); addMaterialStats(MaterialIds.blazingBone, new HeadMaterialStats(530, 6f, IRON, 3f), HandleMaterialStats.builder().durability(0.85f).attackDamage(1.05f).attackSpeed(1.2f).build(), - BindingMaterialStats.DEFAULT); - addMaterialStats(MaterialIds.ancientHide, BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); + addMaterialStats(MaterialIds.ancientHide, StatlessMaterialStats.BINDING); // tier 4 (end) - addMaterialStats(MaterialIds.enderslimeVine, BindingMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.enderslimeVine, StatlessMaterialStats.BINDING); } private void addRanged() { @@ -235,8 +234,8 @@ private void addRanged() { new LimbMaterialStats(180, 0.1f, 0f, 0.1f), new GripMaterialStats(1.1f, -0.1f, 1.0f)); // tier 1 - bowstring - addMaterialStats(MaterialIds.string, BowstringMaterialStats.DEFAULT); - addMaterialStats(MaterialIds.vine, BowstringMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.string, StatlessMaterialStats.BOWSTRING); + addMaterialStats(MaterialIds.vine, StatlessMaterialStats.BOWSTRING); // tier 2 addMaterialStats(MaterialIds.slimewood, @@ -252,8 +251,8 @@ private void addRanged() { new LimbMaterialStats(125, 0.05f, 0.05f, -0.15f), new GripMaterialStats(0.7f, 0.1f, 2.25f)); // tier 2 - bowstring - addMaterialStats(MaterialIds.chain, BowstringMaterialStats.DEFAULT); - addMaterialStats(MaterialIds.skyslimeVine, BowstringMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.chain, StatlessMaterialStats.BOWSTRING); + addMaterialStats(MaterialIds.skyslimeVine, StatlessMaterialStats.BOWSTRING); // tier 2 - compat addMaterialStats(MaterialIds.platinum, @@ -292,7 +291,7 @@ private void addRanged() { new LimbMaterialStats(530, -0.3f, 0.2f, -0.15f), new GripMaterialStats(0.85f, -0.10f, 3f)); // tier 3 - bowstring - addMaterialStats(MaterialIds.darkthread, BowstringMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.darkthread, StatlessMaterialStats.BOWSTRING); // tier 3 - compat addMaterialStats(MaterialIds.invar, @@ -329,7 +328,7 @@ private void addRanged() { new LimbMaterialStats(1250, -0.35f, 0.25f, -0.15f), new GripMaterialStats(1.1f, -0.20f, 3.5f)); // tier 4 (end) - addMaterialStats(MaterialIds.enderslimeVine, BowstringMaterialStats.DEFAULT); + addMaterialStats(MaterialIds.enderslimeVine, StatlessMaterialStats.BOWSTRING); } private void addMisc() { diff --git a/src/main/java/slimeknights/tconstruct/tools/data/sprite/TinkerMaterialSpriteProvider.java b/src/main/java/slimeknights/tconstruct/tools/data/sprite/TinkerMaterialSpriteProvider.java index 1b1bbfa9e86..e465e4983af 100644 --- a/src/main/java/slimeknights/tconstruct/tools/data/sprite/TinkerMaterialSpriteProvider.java +++ b/src/main/java/slimeknights/tconstruct/tools/data/sprite/TinkerMaterialSpriteProvider.java @@ -8,9 +8,8 @@ import slimeknights.tconstruct.library.client.data.spritetransformer.IColorMapping; import slimeknights.tconstruct.library.materials.definition.IMaterial; import slimeknights.tconstruct.tools.data.material.MaterialIds; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; -import slimeknights.tconstruct.tools.stats.BowstringMaterialStats; import slimeknights.tconstruct.tools.stats.RepairKitStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import static slimeknights.tconstruct.tools.data.sprite.TinkerPartSpriteProvider.PLATE; import static slimeknights.tconstruct.tools.data.sprite.TinkerPartSpriteProvider.SLIMESUIT; @@ -55,14 +54,14 @@ protected void addAllMaterials() { .fallbacks("bone", "rock") .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF050505).addARGB(102, 0xFF0E0E0E).addARGB(140, 0xFF151515).addARGB(178, 0xFF1F1F1F).addARGB(216, 0xFF292929).addARGB(255, 0xFF343434).build()); buildMaterial(MaterialIds.leather) - .statType(RepairKitStats.ID, BindingMaterialStats.ID) + .statType(RepairKitStats.ID, StatlessMaterialStats.BINDING.getIdentifier()) .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF3D1C10).addARGB(102, 0xFF542716).addARGB(140, 0xFF893B25).addARGB(178, 0xFF9E492A).addARGB(216, 0xFFC65C35).addARGB(255, 0xFFD76B43).build()); buildMaterial(MaterialIds.string) - .statType(BindingMaterialStats.ID, BowstringMaterialStats.ID, RepairKitStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier(), StatlessMaterialStats.BOWSTRING.getIdentifier(), RepairKitStats.ID) .fallbacks("primitive") .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF2F4547).addARGB(102, 0xFF4D5859).addARGB(140, 0xFF838B8C).addARGB(178, 0xFFAFB3B5).addARGB(216, 0xFFDBDBDB).addARGB(255, 0xFFF7F7F7).build()); buildMaterial(MaterialIds.vine) - .statType(BindingMaterialStats.ID, BowstringMaterialStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier(), StatlessMaterialStats.BOWSTRING.getIdentifier()) .fallbacks("primitive") .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF143306).addARGB(102, 0xFF183D08).addARGB(140, 0xFF1F4E0A).addARGB(178, 0xFF265F0D).addARGB(216, 0xFF2E730F).addARGB(255, 0xFF3A9313).build()); buildMaterial(MaterialIds.chorus) @@ -221,11 +220,11 @@ protected void addAllMaterials() { // tier 3 buildMaterial(MaterialIds.chain) - .statType(BindingMaterialStats.ID, BowstringMaterialStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier(), StatlessMaterialStats.BOWSTRING.getIdentifier()) .fallbacks("chain", "metal") .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF1B202D).addARGB(102, 0xFF252C3D).addARGB(140, 0xFF323847).addARGB(178, 0xFF3E4453).addARGB(216, 0xFF495065).addARGB(255, 0xFF545C72).build()); buildMaterial(MaterialIds.skyslimeVine) - .statType(BindingMaterialStats.ID, BowstringMaterialStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier(), StatlessMaterialStats.BOWSTRING.getIdentifier()) .fallbacks("primitive") .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF2F5351).addARGB(102, 0xFF3C6A68).addARGB(140, 0xFF4F918F).addARGB(178, 0xFF63ACAB).addARGB(216, 0xFF6DBEBD).addARGB(255, 0xFF82D7D5).build()); buildMaterial(MaterialIds.slimesteel) @@ -284,7 +283,7 @@ protected void addAllMaterials() { .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF001944).addARGB(102, 0xFF00296D).addARGB(140, 0xFF0043A5).addARGB(178, 0xFF186ACE).addARGB(216, 0xFF338FEA).addARGB(255, 0xFF59A6EF).build()); IColorMapping obsidianPalette = GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF000001).addARGB(102, 0xFF06030B).addARGB(140, 0xFF100C1C).addARGB(178, 0xFF271E3D).addARGB(216, 0xFF3B2754).addARGB(255, 0xFF503572).build(); buildMaterial(MaterialIds.darkthread) - .statType(BindingMaterialStats.ID, BowstringMaterialStats.ID, RepairKitStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier(), StatlessMaterialStats.BOWSTRING.getIdentifier(), RepairKitStats.ID) .fallbacks("primitive") .colorMapper(obsidianPalette); @@ -314,10 +313,10 @@ protected void addAllMaterials() { .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF7F3611).addARGB(102, 0xFF934114).addARGB(140, 0xFFB5671E).addARGB(178, 0xFFE28F28).addARGB(216, 0xFFEFC62F).addARGB(255, 0xFFF4EA5A).build()); IColorMapping ancientDebrisPalette = GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF24110B).addARGB(102, 0xFF411E15).addARGB(140, 0xFF4A281D).addARGB(178, 0xFF654740).addARGB(216, 0xFF7E6059).addARGB(255, 0xFF95867E).build(); buildMaterial(MaterialIds.ancientHide) - .statType(BindingMaterialStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier()) .colorMapper(ancientDebrisPalette); buildMaterial(MaterialIds.enderslimeVine) - .statType(BindingMaterialStats.ID, BowstringMaterialStats.ID) + .statType(StatlessMaterialStats.BINDING.getIdentifier(), StatlessMaterialStats.BOWSTRING.getIdentifier()) .fallbacks("primitive") .colorMapper(GreyToColorMapping.builderFromBlack().addARGB(63, 0xFF6300B0).addARGB(102, 0xFF790CC9).addARGB(140, 0xFF9727DD).addARGB(178, 0xFFA936ED).addARGB(216, 0xFFBF58F7).addARGB(255, 0xFFD37CFF).build()); diff --git a/src/main/java/slimeknights/tconstruct/tools/stats/BowstringMaterialStats.java b/src/main/java/slimeknights/tconstruct/tools/stats/BowstringMaterialStats.java index f0fcb2092a9..241edecace1 100644 --- a/src/main/java/slimeknights/tconstruct/tools/stats/BowstringMaterialStats.java +++ b/src/main/java/slimeknights/tconstruct/tools/stats/BowstringMaterialStats.java @@ -1,35 +1,14 @@ package slimeknights.tconstruct.tools.stats; -import net.minecraft.network.chat.Component; -import slimeknights.tconstruct.TConstruct; -import slimeknights.tconstruct.library.materials.stats.IMaterialStats; -import slimeknights.tconstruct.library.materials.stats.MaterialStatType; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import java.util.List; - -public enum BowstringMaterialStats implements IMaterialStats { - DEFAULT; - - public static final MaterialStatsId ID = new MaterialStatsId(TConstruct.getResource("bowstring")); - public static final MaterialStatType TYPE = MaterialStatType.singleton(ID, DEFAULT); - private static final List LOCALIZED = List.of(IMaterialStats.makeTooltip(TConstruct.getResource("extra.no_stats"))); - private static final List DESCRIPTION = List.of(Component.empty()); - - // no stats - - @Override - public MaterialStatType getType() { - return TYPE; - } - - @Override - public List getLocalizedInfo() { - return LOCALIZED; - } - - @Override - public List getLocalizedDescriptions() { - return DESCRIPTION; - } +/** @deprecated use {@link StatlessMaterialStats#BOWSTRING} */ +@Deprecated(forRemoval = true) +public class BowstringMaterialStats { + /** @deprecated use {@link StatlessMaterialStats#BOWSTRING} */ + @Deprecated(forRemoval = true) + public static final MaterialStatsId ID = StatlessMaterialStats.BOWSTRING.getIdentifier(); + /** @deprecated use {@link StatlessMaterialStats#BOWSTRING} */ + @Deprecated(forRemoval = true) + public static final StatlessMaterialStats DEFAULT = StatlessMaterialStats.BOWSTRING; } diff --git a/src/main/java/slimeknights/tconstruct/tools/stats/ExtraMaterialStats.java b/src/main/java/slimeknights/tconstruct/tools/stats/ExtraMaterialStats.java index 9260bc36c93..2901f7c2e8a 100644 --- a/src/main/java/slimeknights/tconstruct/tools/stats/ExtraMaterialStats.java +++ b/src/main/java/slimeknights/tconstruct/tools/stats/ExtraMaterialStats.java @@ -2,13 +2,13 @@ import net.minecraft.resources.ResourceLocation; -/** @deprecated use {@link BindingMaterialStats} */ +/** @deprecated use {@link StatlessMaterialStats#BINDING} */ @Deprecated(forRemoval = true) public class ExtraMaterialStats { - /** @deprecated use {@link BindingMaterialStats#ID} */ + /** @deprecated use {@link StatlessMaterialStats#BINDING} */ @Deprecated(forRemoval = true) - public static final ResourceLocation ID = BindingMaterialStats.ID; - /** @deprecated use {@link BindingMaterialStats#DEFAULT} */ + public static final ResourceLocation ID = StatlessMaterialStats.BINDING.getIdentifier(); + /** @deprecated use {@link StatlessMaterialStats#BINDING} */ @Deprecated(forRemoval = true) - public static final BindingMaterialStats DEFAULT = BindingMaterialStats.DEFAULT; + public static final StatlessMaterialStats DEFAULT = StatlessMaterialStats.BINDING; } diff --git a/src/main/java/slimeknights/tconstruct/tools/stats/MeleeHarvestMaterialStatProvider.java b/src/main/java/slimeknights/tconstruct/tools/stats/MeleeHarvestMaterialStatProvider.java index 5720c4b2a5a..d4e55569131 100644 --- a/src/main/java/slimeknights/tconstruct/tools/stats/MeleeHarvestMaterialStatProvider.java +++ b/src/main/java/slimeknights/tconstruct/tools/stats/MeleeHarvestMaterialStatProvider.java @@ -20,7 +20,7 @@ public final class MeleeHarvestMaterialStatProvider extends MaterialStatProvider { @VisibleForTesting public MeleeHarvestMaterialStatProvider(ResourceLocation id) { - super(id, Set.of(HeadMaterialStats.ID), Set.of(HandleMaterialStats.ID, BindingMaterialStats.ID)); + super(id, Set.of(HeadMaterialStats.ID), Set.of(HandleMaterialStats.ID, StatlessMaterialStats.BINDING.getIdentifier())); } @Override diff --git a/src/main/java/slimeknights/tconstruct/tools/stats/RangedMaterialStatProvider.java b/src/main/java/slimeknights/tconstruct/tools/stats/RangedMaterialStatProvider.java index f8f3d52fb6c..5d12f193f24 100644 --- a/src/main/java/slimeknights/tconstruct/tools/stats/RangedMaterialStatProvider.java +++ b/src/main/java/slimeknights/tconstruct/tools/stats/RangedMaterialStatProvider.java @@ -16,7 +16,7 @@ */ public class RangedMaterialStatProvider extends MaterialStatProvider { public RangedMaterialStatProvider(ResourceLocation id) { - super(id, Set.of(LimbMaterialStats.ID), Set.of(BowstringMaterialStats.ID, GripMaterialStats.ID)); + super(id, Set.of(LimbMaterialStats.ID), Set.of(StatlessMaterialStats.BOWSTRING.getIdentifier(), GripMaterialStats.ID)); } @Override diff --git a/src/main/java/slimeknights/tconstruct/tools/stats/BindingMaterialStats.java b/src/main/java/slimeknights/tconstruct/tools/stats/StatlessMaterialStats.java similarity index 52% rename from src/main/java/slimeknights/tconstruct/tools/stats/BindingMaterialStats.java rename to src/main/java/slimeknights/tconstruct/tools/stats/StatlessMaterialStats.java index 4954156aa74..66593b101db 100644 --- a/src/main/java/slimeknights/tconstruct/tools/stats/BindingMaterialStats.java +++ b/src/main/java/slimeknights/tconstruct/tools/stats/StatlessMaterialStats.java @@ -1,5 +1,6 @@ package slimeknights.tconstruct.tools.stats; +import lombok.Getter; import net.minecraft.network.chat.Component; import slimeknights.tconstruct.TConstruct; import slimeknights.tconstruct.library.materials.stats.IMaterialStats; @@ -8,22 +9,20 @@ import java.util.List; -/** Material stats for a melee/harvest binding */ -public enum BindingMaterialStats implements IMaterialStats { - DEFAULT; +/** Shared code for material stats types with no stats */ +public enum StatlessMaterialStats implements IMaterialStats { + BINDING("binding"), + BOWSTRING("bowstring"); - public static final MaterialStatsId ID = new MaterialStatsId(TConstruct.getResource("binding")); - public static final MaterialStatType TYPE = MaterialStatType.singleton(ID, DEFAULT); - - private static final Component NO_STATS = IMaterialStats.makeTooltip(TConstruct.getResource("extra.no_stats")); - private static final List LOCALIZED = List.of(NO_STATS); + private static final List LOCALIZED = List.of(IMaterialStats.makeTooltip(TConstruct.getResource("extra.no_stats"))); private static final List DESCRIPTION = List.of(Component.empty()); + @Getter + private final MaterialStatType type; // no stats - @Override - public MaterialStatType getType() { - return TYPE; + StatlessMaterialStats(String name) { + this.type = MaterialStatType.singleton(new MaterialStatsId(TConstruct.getResource(name)), this); } @Override diff --git a/src/test/java/slimeknights/tconstruct/fixture/MaterialItemFixture.java b/src/test/java/slimeknights/tconstruct/fixture/MaterialItemFixture.java index 0de6db5e754..ad661eee041 100644 --- a/src/test/java/slimeknights/tconstruct/fixture/MaterialItemFixture.java +++ b/src/test/java/slimeknights/tconstruct/fixture/MaterialItemFixture.java @@ -5,9 +5,9 @@ import net.minecraft.world.item.Item; import net.minecraftforge.registries.ForgeRegistries; import slimeknights.tconstruct.library.tools.part.ToolPartItem; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; public class MaterialItemFixture { @@ -27,7 +27,7 @@ public static void init() { MATERIAL_ITEM_2 = new ToolPartItem(new Item.Properties(), MaterialStatsFixture.STATS_TYPE_2); MATERIAL_ITEM_HEAD = new ToolPartItem(new Item.Properties(), HeadMaterialStats.ID); MATERIAL_ITEM_HANDLE = new ToolPartItem(new Item.Properties(), HandleMaterialStats.ID); - MATERIAL_ITEM_EXTRA = new ToolPartItem(new Item.Properties(), BindingMaterialStats.ID); + MATERIAL_ITEM_EXTRA = new ToolPartItem(new Item.Properties(), StatlessMaterialStats.BINDING.getIdentifier()); ForgeRegistries.ITEMS.register(new ResourceLocation("test", "test_material"), MATERIAL_ITEM); ForgeRegistries.ITEMS.register(new ResourceLocation("test", "test_material_2"), MATERIAL_ITEM_2); ForgeRegistries.ITEMS.register(new ResourceLocation("test", "test_head"), MATERIAL_ITEM_HEAD); diff --git a/src/test/java/slimeknights/tconstruct/fixture/MaterialStatsFixture.java b/src/test/java/slimeknights/tconstruct/fixture/MaterialStatsFixture.java index eecda0f07b7..1581e8c7a12 100644 --- a/src/test/java/slimeknights/tconstruct/fixture/MaterialStatsFixture.java +++ b/src/test/java/slimeknights/tconstruct/fixture/MaterialStatsFixture.java @@ -6,9 +6,9 @@ import slimeknights.tconstruct.library.materials.stats.IMaterialStats; import slimeknights.tconstruct.library.materials.stats.MaterialStatType; import slimeknights.tconstruct.library.materials.stats.MaterialStatsId; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import java.util.List; @@ -26,12 +26,12 @@ public final class MaterialStatsFixture { public static final HeadMaterialStats MATERIAL_STATS_HEAD = new HeadMaterialStats(100, 1f, Tiers.GOLD, 1f); public static final HandleMaterialStats MATERIAL_STATS_HANDLE = new HandleMaterialStats(1.5f, 1.0f, 1.0f, 1.0f); - public static final BindingMaterialStats MATERIAL_STATS_EXTRA = BindingMaterialStats.DEFAULT; + public static final StatlessMaterialStats MATERIAL_STATS_EXTRA = StatlessMaterialStats.BINDING; public static final List TIC_DEFAULT_STATS = ImmutableList.of( HeadMaterialStats.TYPE.getDefaultStats(), HandleMaterialStats.TYPE.getDefaultStats(), - BindingMaterialStats.DEFAULT + StatlessMaterialStats.BINDING ); private MaterialStatsFixture() { diff --git a/src/test/java/slimeknights/tconstruct/library/materials/stats/UpdateMaterialStatsPacketTest.java b/src/test/java/slimeknights/tconstruct/library/materials/stats/UpdateMaterialStatsPacketTest.java index 1730fbda018..945e5ac58a5 100644 --- a/src/test/java/slimeknights/tconstruct/library/materials/stats/UpdateMaterialStatsPacketTest.java +++ b/src/test/java/slimeknights/tconstruct/library/materials/stats/UpdateMaterialStatsPacketTest.java @@ -8,9 +8,9 @@ import slimeknights.tconstruct.fixture.MaterialStatsFixture; import slimeknights.tconstruct.library.materials.definition.MaterialId; import slimeknights.tconstruct.test.BaseMcTest; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import java.util.Collection; import java.util.List; @@ -26,7 +26,7 @@ class UpdateMaterialStatsPacketTest extends BaseMcTest { LOADER.register(MaterialStatsFixture.COMPLEX_TYPE); LOADER.register(HeadMaterialStats.TYPE); LOADER.register(HandleMaterialStats.TYPE); - LOADER.register(BindingMaterialStats.TYPE); + LOADER.register(StatlessMaterialStats.BINDING.getType()); } @Test @@ -55,7 +55,7 @@ void testAllTicDefaults() { List stats = List.of( HeadMaterialStats.TYPE.getDefaultStats(), HandleMaterialStats.TYPE.getDefaultStats(), - BindingMaterialStats.DEFAULT); + StatlessMaterialStats.BINDING); Map> materialToStats = Map.of(MATERIAL_ID, stats); UpdateMaterialStatsPacket packet = sendAndReceivePacket(materialToStats); diff --git a/src/test/java/slimeknights/tconstruct/library/tools/stat/CompatibleStatTest.java b/src/test/java/slimeknights/tconstruct/library/tools/stat/CompatibleStatTest.java index 8467edb7966..0616567d3fc 100644 --- a/src/test/java/slimeknights/tconstruct/library/tools/stat/CompatibleStatTest.java +++ b/src/test/java/slimeknights/tconstruct/library/tools/stat/CompatibleStatTest.java @@ -12,9 +12,9 @@ import slimeknights.tconstruct.library.tools.definition.module.material.MaterialStatsModule.WeightedStatType; import slimeknights.tconstruct.library.tools.nbt.MaterialNBT; import slimeknights.tconstruct.test.BaseMcTest; -import slimeknights.tconstruct.tools.stats.BindingMaterialStats; import slimeknights.tconstruct.tools.stats.HandleMaterialStats; import slimeknights.tconstruct.tools.stats.HeadMaterialStats; +import slimeknights.tconstruct.tools.stats.StatlessMaterialStats; import java.util.List; @@ -48,8 +48,8 @@ public List getHandles() { } /** Gets extra material stats */ - public List getExtras() { - return getStats(BindingMaterialStats.ID); + public List getExtras() { + return getStats(StatlessMaterialStats.BINDING.getIdentifier()); } } @@ -59,7 +59,7 @@ public List getExtras() { * @return Melee harvest tool stats builder */ static StatTypesWithMaterials withMaterials(IMaterial... materials) { - List statTypes = List.of(new WeightedStatType(HeadMaterialStats.ID, 1), new WeightedStatType(HandleMaterialStats.ID, 1), new WeightedStatType(BindingMaterialStats.ID, 1)); + List statTypes = List.of(new WeightedStatType(HeadMaterialStats.ID, 1), new WeightedStatType(HandleMaterialStats.ID, 1), new WeightedStatType(StatlessMaterialStats.BINDING.getIdentifier(), 1)); assertThat(materials).overridingErrorMessage("Given materials list is the wrong size").hasSize(statTypes.size()); return new StatTypesWithMaterials(statTypes, MaterialNBT.of(materials)); } @@ -70,7 +70,7 @@ void init_onlyHead() { assertThat(builder.getHeads()).containsExactly(MaterialStatsFixture.MATERIAL_STATS_HEAD); assertThat(builder.getHandles()).containsExactly(HandleMaterialStats.TYPE.getDefaultStats()); - assertThat(builder.getExtras()).containsExactly(BindingMaterialStats.TYPE.getDefaultStats()); + assertThat(builder.getExtras()).containsExactly(StatlessMaterialStats.BINDING.getType().getDefaultStats()); } @Test @@ -79,7 +79,7 @@ void init_onlyHandle() { assertThat(builder.getHeads()).containsExactly(HeadMaterialStats.TYPE.getDefaultStats()); assertThat(builder.getHandles()).containsExactly(MaterialStatsFixture.MATERIAL_STATS_HANDLE); - assertThat(builder.getExtras()).containsExactly(BindingMaterialStats.DEFAULT); + assertThat(builder.getExtras()).containsExactly(StatlessMaterialStats.BINDING); } @Test @@ -106,7 +106,7 @@ void init_wrongOrder() { assertThat(builder.getHeads()).containsExactly(HeadMaterialStats.TYPE.getDefaultStats()); assertThat(builder.getHandles()).containsExactly(HandleMaterialStats.TYPE.getDefaultStats()); - assertThat(builder.getExtras()).containsExactly(BindingMaterialStats.DEFAULT); + assertThat(builder.getExtras()).containsExactly(StatlessMaterialStats.BINDING); } @Test