diff --git a/build.gradle b/build.gradle index aaabd101..544ce545 100644 --- a/build.gradle +++ b/build.gradle @@ -121,7 +121,7 @@ dependencies { transitive = false } // JADE OPTIONAL - compileOnly("curse.maven:jade-324717:5109393") + implementation("curse.maven:jade-324717:6291517") // JEI OPTIONAL compileOnly("mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}") runtimeOnly("mezz.jei:jei-${mc_version}-neoforge:${jei_version}") diff --git a/changelog.md b/changelog.md index 84a7fad9..db8e52e6 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,6 @@ ## Ex Deorum 3.7 - Fix Barrel Mixing recipes with a result size greater than 1 only giving one output +- Allow changing drops for Random Armor Trim and Pottery Sherd, also add Tide to possible trims (#133) ## Ex Deorum 3.6 - Implement custom Compressed Sieve types. Works the same as with sieves, just replace `sieve_materials` with `compressed_sieve_materials` diff --git a/gradle.properties b/gradle.properties index a7088dab..7c59bd78 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.parallel=true org.gradle.caching=true mc_version=1.21.1 -neo_version=21.1.97 +neo_version=21.1.172 neo_version_range=[21.1,) loader_version_range=[4,) diff --git a/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 b/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 index 7a984acf..74037cb5 100644 --- a/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 +++ b/src/generated/resources/.cache/221483d9edeccdc82e726e39216c875f3fc356d3 @@ -1,4 +1,4 @@ -// 1.21.1 2025-01-05T13:28:28.0238748 Tags for minecraft:item mod id exdeorum +// 1.21.1 2025-06-03T14:16:11.5378401 Tags for minecraft:item mod id exdeorum 6c72957356b1d59a27be736fa1da54a5a9795ef7 data/exdeorum/tags/item/barrels.json 6afa16b45f76c0defa1675d07586e2c6e6b0be69 data/exdeorum/tags/item/compressed/andesite.json 31b46613766e4cdc53196850495ab1019f61cb48 data/exdeorum/tags/item/compressed/blackstone.json @@ -27,6 +27,8 @@ dad00c75d1a0b74a2f843bead336ee278e9cecba data/exdeorum/tags/item/compressed_hamm be46bf2abe731d5ee5bd15ce72f222b2b9a49385 data/exdeorum/tags/item/hammers.json 008b4a382f07b9c0f9a07c78bedb949b4400e011 data/exdeorum/tags/item/ore_chunks.json b90bd3c642e69b9e800c58a9f8f53e369652e6ba data/exdeorum/tags/item/pebbles.json +10f2167f7a9472e5df6870bad71b95869fc64b9a data/exdeorum/tags/item/random_shard_drops.json +d6fa5886b22a121a9402c1ca9b7938dc29b19a10 data/exdeorum/tags/item/random_trim_drops.json 8e1b5ab26037123d3948e9ac9f50da1b7cd0a129 data/exdeorum/tags/item/sieve_meshes.json 0152da758e7665bf282f17f466599c7a009d9a15 data/exdeorum/tags/item/stone_barrels.json 8bde4a30abefaa373fa41813da07b6f79f32b874 data/exdeorum/tags/item/wooden_barrels.json diff --git a/src/generated/resources/.cache/f1f3e3a91f3dfa1ddb5216abfcdcc42a5cffc23b b/src/generated/resources/.cache/f1f3e3a91f3dfa1ddb5216abfcdcc42a5cffc23b index fd9eb38c..bf66b754 100644 --- a/src/generated/resources/.cache/f1f3e3a91f3dfa1ddb5216abfcdcc42a5cffc23b +++ b/src/generated/resources/.cache/f1f3e3a91f3dfa1ddb5216abfcdcc42a5cffc23b @@ -1,5 +1,5 @@ -// 1.21.1 2025-01-05T13:28:28.0028751 Global Loot Modifiers : exdeorum +// 1.21.1 2025-06-03T14:16:11.5333103 Global Loot Modifiers : exdeorum 539ba0e881830430ae2c03f7ac8dec6f2de478a0 data/exdeorum/loot_modifiers/compressed_hammer.json dd0417e36e03e0f51e1f1bbcff295b54128fdf8f data/exdeorum/loot_modifiers/crook.json 57991d8346a472f12c1a4b6cb94151d2c1bfa371 data/exdeorum/loot_modifiers/hammer.json -ec4635d28242c1e6ec5858fb58e43c004a34dbc1 data/neoforge/loot_modifiers/global_loot_modifiers.json +4dbec2c1b329ffcd96f4f903f59382c75e0d538c data/neoforge/loot_modifiers/global_loot_modifiers.json diff --git a/src/generated/resources/data/exdeorum/tags/item/random_shard_drops.json b/src/generated/resources/data/exdeorum/tags/item/random_shard_drops.json new file mode 100644 index 00000000..037323df --- /dev/null +++ b/src/generated/resources/data/exdeorum/tags/item/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/item/random_trim_drops.json b/src/generated/resources/data/exdeorum/tags/item/random_trim_drops.json new file mode 100644 index 00000000..796a75db --- /dev/null +++ b/src/generated/resources/data/exdeorum/tags/item/random_trim_drops.json @@ -0,0 +1,19 @@ +{ + "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", + "minecraft:flow_armor_trim_smithing_template", + "minecraft:bolt_armor_trim_smithing_template" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json b/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json index 40022b62..ba9f3fb4 100644 --- a/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json +++ b/src/generated/resources/data/neoforge/loot_modifiers/global_loot_modifiers.json @@ -1,7 +1,7 @@ { "entries": [ - "exdeorum:compressed_hammer", "exdeorum:hammer", + "exdeorum:compressed_hammer", "exdeorum:crook" ], "replace": false diff --git a/src/main/java/thedarkcolour/exdeorum/data/ModTags.java b/src/main/java/thedarkcolour/exdeorum/data/ModTags.java index c21cb97a..1edacf30 100644 --- a/src/main/java/thedarkcolour/exdeorum/data/ModTags.java +++ b/src/main/java/thedarkcolour/exdeorum/data/ModTags.java @@ -99,6 +99,26 @@ 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, + Items.FLOW_ARMOR_TRIM_SMITHING_TEMPLATE, + Items.BOLT_ARMOR_TRIM_SMITHING_TEMPLATE + ); + // Cyclic adds ONE compressed block :) tags.tag(ECompressedBlocks.COMPRESSED_COBBLESTONE.getTag()).addOptional(ResourceLocation.fromNamespaceAndPath(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 eac89ebe..d6130293 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, TooltipContext pLevel, List tooltip, TooltipFlag pIsAdvanced) { + @Override + public void appendHoverText(ItemStack pStack, TooltipContext pLevel, List tooltip, TooltipFlag pIsAdvanced) { + if (this == EItems.RANDOM_ARMOR_TRIM.value()) { 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 f083f37b..162bea00 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 DeferredItem WARPED_NYLIUM_SPORES = ITEMS.register("warped_nylium_spores", () -> new NyliumSpreaderItem(props(), Blocks.WARPED_NYLIUM::defaultBlockState)); public static final DeferredItem CRIMSON_NYLIUM_SPORES = ITEMS.register("crimson_nylium_spores", () -> new NyliumSpreaderItem(props(), Blocks.CRIMSON_NYLIUM::defaultBlockState)); public static final DeferredItem SCULK_CORE = ITEMS.register("sculk_core", () -> new SculkCoreItem(props().stacksTo(1))); - public static final DeferredItem RANDOM_POTTERY_SHERD = ITEMS.register("random_pottery_sherd", () -> new RandomResultItem.RandomSherd(props())); - public static final DeferredItem RANDOM_ARMOR_TRIM = ITEMS.register("random_armor_trim", () -> new RandomResultItem.RandomArmorTrim(props())); + public static final DeferredItem RANDOM_POTTERY_SHERD = ITEMS.register("random_pottery_sherd", () -> new RandomResultItem(props(), EItemTags.RANDOM_SHERD_DROPS)); + public static final DeferredItem RANDOM_ARMOR_TRIM = ITEMS.register("random_armor_trim", () -> new RandomResultItem(props(), EItemTags.RANDOM_TRIM_DROPS)); public static final DeferredItem 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 0b836d8d..4981c7db 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 ORE_CHUNKS = tag("ore_chunks"); public static final TagKey END_CAKE_MATERIAL = tag("end_cake_materials"); + 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");