From 47e9d4381bed864d07e9e2956c00e14d3d33621a Mon Sep 17 00:00:00 2001 From: thedarkcolour <30441001+thedarkcolour@users.noreply.github.com> Date: Wed, 16 Apr 2025 14:08:31 -0700 Subject: [PATCH] Allow changing drops for Random Armor Trim and Pottery Sherd Also add Tide to possible armor trims Closes #138 --- changelog.md | 3 + .../221483d9edeccdc82e726e39216c875f3fc356d3 | 4 +- .../tags/items/random_shard_drops.json | 5 ++ .../tags/items/random_trim_drops.json | 17 +++++ .../thedarkcolour/exdeorum/data/ModTags.java | 20 +++++- .../exdeorum/item/RandomResultItem.java | 66 +++++-------------- .../exdeorum/registry/EItems.java | 4 +- .../thedarkcolour/exdeorum/tag/EItemTags.java | 3 + 8 files changed, 66 insertions(+), 56 deletions(-) create mode 100644 src/generated/resources/data/exdeorum/tags/items/random_shard_drops.json create mode 100644 src/generated/resources/data/exdeorum/tags/items/random_trim_drops.json diff --git a/changelog.md b/changelog.md index 52ca9beb..4e1a2868 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,6 @@ +## Ex Deorum 1.45 +- Allow changing drops for Random Armor Trim and Pottery Sherd, also add Tide to possible trims (#138) + ## Ex Deorum 1.44 - Fix Silkworms not applying to certain modded leaves like TFC diff --git a/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 b/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 index 9dc4a02d..1314b674 100644 --- a/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 +++ b/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 @@ -1,4 +1,4 @@ -// 1.20.1 2024-06-08T12:27:56.4063662 Tags for minecraft:item mod id exdeorum +// 1.20.1 2025-04-16T14:06:10.0144069 Tags for minecraft:item mod id exdeorum 6c72957356b1d59a27be736fa1da54a5a9795ef7 data/exdeorum/tags/items/barrels.json 6afa16b45f76c0defa1675d07586e2c6e6b0be69 data/exdeorum/tags/items/compressed/andesite.json 31b46613766e4cdc53196850495ab1019f61cb48 data/exdeorum/tags/items/compressed/blackstone.json @@ -27,6 +27,8 @@ dad00c75d1a0b74a2f843bead336ee278e9cecba data/exdeorum/tags/items/compressed_ham be46bf2abe731d5ee5bd15ce72f222b2b9a49385 data/exdeorum/tags/items/hammers.json 008b4a382f07b9c0f9a07c78bedb949b4400e011 data/exdeorum/tags/items/ore_chunks.json b90bd3c642e69b9e800c58a9f8f53e369652e6ba data/exdeorum/tags/items/pebbles.json +10f2167f7a9472e5df6870bad71b95869fc64b9a data/exdeorum/tags/items/random_shard_drops.json +d4d9a482ddc507b3f8852794f6f1a2f2e2490fb6 data/exdeorum/tags/items/random_trim_drops.json 8e1b5ab26037123d3948e9ac9f50da1b7cd0a129 data/exdeorum/tags/items/sieve_meshes.json 0152da758e7665bf282f17f466599c7a009d9a15 data/exdeorum/tags/items/stone_barrels.json 8bde4a30abefaa373fa41813da07b6f79f32b874 data/exdeorum/tags/items/wooden_barrels.json diff --git a/src/generated/resources/data/exdeorum/tags/items/random_shard_drops.json b/src/generated/resources/data/exdeorum/tags/items/random_shard_drops.json new file mode 100644 index 00000000..037323df --- /dev/null +++ b/src/generated/resources/data/exdeorum/tags/items/random_shard_drops.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#minecraft:decorated_pot_sherds" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exdeorum/tags/items/random_trim_drops.json b/src/generated/resources/data/exdeorum/tags/items/random_trim_drops.json new file mode 100644 index 00000000..caa02286 --- /dev/null +++ b/src/generated/resources/data/exdeorum/tags/items/random_trim_drops.json @@ -0,0 +1,17 @@ +{ + "values": [ + "minecraft:wayfinder_armor_trim_smithing_template", + "minecraft:shaper_armor_trim_smithing_template", + "minecraft:host_armor_trim_smithing_template", + "minecraft:raiser_armor_trim_smithing_template", + "minecraft:coast_armor_trim_smithing_template", + "minecraft:dune_armor_trim_smithing_template", + "minecraft:eye_armor_trim_smithing_template", + "minecraft:sentry_armor_trim_smithing_template", + "minecraft:silence_armor_trim_smithing_template", + "minecraft:vex_armor_trim_smithing_template", + "minecraft:ward_armor_trim_smithing_template", + "minecraft:wild_armor_trim_smithing_template", + "minecraft:tide_armor_trim_smithing_template" + ] +} \ No newline at end of file diff --git a/src/main/java/thedarkcolour/exdeorum/data/ModTags.java b/src/main/java/thedarkcolour/exdeorum/data/ModTags.java index fb0dae7c..81e360c4 100644 --- a/src/main/java/thedarkcolour/exdeorum/data/ModTags.java +++ b/src/main/java/thedarkcolour/exdeorum/data/ModTags.java @@ -23,6 +23,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.FluidTags; +import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; @@ -32,7 +33,6 @@ import net.minecraft.world.level.levelgen.structure.BuiltinStructureSets; import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.material.Fluid; import thedarkcolour.exdeorum.ExDeorum; -import thedarkcolour.exdeorum.block.CompressedBlockType; import thedarkcolour.exdeorum.compat.ModIds; import thedarkcolour.exdeorum.material.*; import thedarkcolour.exdeorum.registry.EBlocks; @@ -42,7 +42,6 @@ import thedarkcolour.exdeorum.registry.EItems; import thedarkcolour.exdeorum.tag.EBlockTags; import thedarkcolour.exdeorum.tag.EItemTags; import thedarkcolour.exdeorum.tag.EStructureSetTags; -import thedarkcolour.modkit.data.DirectTagAppender; import thedarkcolour.modkit.data.MKTagsProvider; import java.util.ArrayList; @@ -98,6 +97,23 @@ class ModTags { tags.tag(EItemTags.STONE_BARRELS).add(DefaultMaterials.STONE_BARREL.getItem(), DefaultMaterials.CRYSTALLIZED_BARREL.getItem()); tags.tag(EItemTags.BARRELS).addTags(EItemTags.WOODEN_BARRELS, EItemTags.STONE_BARRELS); + tags.tag(EItemTags.RANDOM_SHERD_DROPS).addTag(ItemTags.DECORATED_POT_SHERDS); + tags.tag(EItemTags.RANDOM_TRIM_DROPS).add( + Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.COAST_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.TIDE_ARMOR_TRIM_SMITHING_TEMPLATE + ); + // Cyclic adds ONE compressed block :) tags.tag(ECompressedBlocks.COMPRESSED_COBBLESTONE.getTag()).addOptional(new ResourceLocation(ModIds.CYCLIC, "compressed_cobblestone")); diff --git a/src/main/java/thedarkcolour/exdeorum/item/RandomResultItem.java b/src/main/java/thedarkcolour/exdeorum/item/RandomResultItem.java index a14535f7..3b7e326f 100644 --- a/src/main/java/thedarkcolour/exdeorum/item/RandomResultItem.java +++ b/src/main/java/thedarkcolour/exdeorum/item/RandomResultItem.java @@ -18,29 +18,31 @@ package thedarkcolour.exdeorum.item; -import com.google.common.collect.Lists; import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; -import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; import thedarkcolour.exdeorum.data.TranslationKeys; +import thedarkcolour.exdeorum.registry.EItems; import java.util.ArrayList; import java.util.List; -public abstract class RandomResultItem extends Item { - public RandomResultItem(Properties properties) { +public class RandomResultItem extends Item { + private final TagKey possibilities; + + public RandomResultItem(Properties properties, TagKey possibilities) { super(properties); + this.possibilities = possibilities; } @Override @@ -48,12 +50,15 @@ public abstract class RandomResultItem extends Item { var stack = player.getItemInHand(hand); if (!level.isClientSide) { - var possibilities = getPossibilities(); + var possibleResults = new ArrayList(); + for (var holder : BuiltInRegistries.ITEM.getTagOrEmpty(this.possibilities)) { + possibleResults.add(holder.value()); + } if (!player.getAbilities().instabuild) { stack.shrink(1); } - var newItem = new ItemStack(Util.getRandom(possibilities, level.random)); + var newItem = new ItemStack(Util.getRandom(possibleResults, level.random)); player.getInventory().placeItemBackInInventory(newItem); return InteractionResultHolder.consume(stack.isEmpty() ? player.getItemInHand(hand) : stack); @@ -61,50 +66,9 @@ public abstract class RandomResultItem extends Item { return InteractionResultHolder.success(stack); } - protected abstract List getPossibilities(); - - public static class RandomSherd extends RandomResultItem { - public RandomSherd(Properties properties) { - super(properties); - } - - @Override - protected List getPossibilities() { - var list = new ArrayList(); - for (var holder : BuiltInRegistries.ITEM.getTagOrEmpty(ItemTags.DECORATED_POT_SHERDS)) { - list.add(holder.value()); - } - return list; - } - } - - public static class RandomArmorTrim extends RandomResultItem { - public static final List POSSIBLE_TRIMS = Lists.newArrayList( - Items.WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.HOST_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.RAISER_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.COAST_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.DUNE_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.WARD_ARMOR_TRIM_SMITHING_TEMPLATE, - Items.WILD_ARMOR_TRIM_SMITHING_TEMPLATE - ); - - public RandomArmorTrim(Properties properties) { - super(properties); - } - - @Override - protected List getPossibilities() { - return POSSIBLE_TRIMS; - } - - @Override - public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List tooltip, TooltipFlag pIsAdvanced) { + @Override + public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltip, TooltipFlag advanced) { + if (this == EItems.RANDOM_ARMOR_TRIM.get()) { tooltip.add(Component.translatable(TranslationKeys.RANDOM_TRIM_DOES_NOT_CONTAIN_UPGRADE).withStyle(ChatFormatting.DARK_GRAY)); } } diff --git a/src/main/java/thedarkcolour/exdeorum/registry/EItems.java b/src/main/java/thedarkcolour/exdeorum/registry/EItems.java index a50ac420..6e4a279c 100644 --- a/src/main/java/thedarkcolour/exdeorum/registry/EItems.java +++ b/src/main/java/thedarkcolour/exdeorum/registry/EItems.java @@ -117,8 +117,8 @@ public class EItems { public static final RegistryObject WARPED_NYLIUM_SPORES = ITEMS.register("warped_nylium_spores", () -> new NyliumSpreaderItem(props(), Blocks.WARPED_NYLIUM::defaultBlockState)); public static final RegistryObject CRIMSON_NYLIUM_SPORES = ITEMS.register("crimson_nylium_spores", () -> new NyliumSpreaderItem(props(), Blocks.CRIMSON_NYLIUM::defaultBlockState)); public static final RegistryObject SCULK_CORE = ITEMS.register("sculk_core", () -> new SculkCoreItem(props().stacksTo(1))); - public static final RegistryObject RANDOM_POTTERY_SHERD = ITEMS.register("random_pottery_sherd", () -> new RandomResultItem.RandomSherd(props())); - public static final RegistryObject RANDOM_ARMOR_TRIM = ITEMS.register("random_armor_trim", () -> new RandomResultItem.RandomArmorTrim(props())); + public static final RegistryObject RANDOM_POTTERY_SHERD = ITEMS.register("random_pottery_sherd", () -> new RandomResultItem(props(), EItemTags.RANDOM_SHERD_DROPS)); + public static final RegistryObject RANDOM_ARMOR_TRIM = ITEMS.register("random_armor_trim", () -> new RandomResultItem(props(), EItemTags.RANDOM_TRIM_DROPS)); public static final RegistryObject WOOD_CHIPPINGS = registerSimpleItem("wood_chippings"); // Buckets diff --git a/src/main/java/thedarkcolour/exdeorum/tag/EItemTags.java b/src/main/java/thedarkcolour/exdeorum/tag/EItemTags.java index a34d6578..644863e5 100644 --- a/src/main/java/thedarkcolour/exdeorum/tag/EItemTags.java +++ b/src/main/java/thedarkcolour/exdeorum/tag/EItemTags.java @@ -33,6 +33,9 @@ public class EItemTags { public static final TagKey END_CAKE_MATERIAL = tag("end_cake_materials"); public static final TagKey ORE_CHUNKS = tag("ore_chunks"); + public static final TagKey RANDOM_SHERD_DROPS = tag("random_shard_drops"); + public static final TagKey RANDOM_TRIM_DROPS = tag("random_trim_drops"); + public static final TagKey WOODEN_BARRELS = tag("wooden_barrels"); public static final TagKey STONE_BARRELS = tag("stone_barrels"); public static final TagKey BARRELS = tag("barrels");