Allow changing drops for Random Armor Trim and Pottery Sherd

Also add Tide, Flow, and Bolt, to possible armor trims
Closes #133
This commit is contained in:
thedarkcolour 2025-06-03 15:42:49 -07:00
parent 0ac6b2fa59
commit 3c82ad1eca
No known key found for this signature in database
GPG Key ID: 86B37B3575FD5976
12 changed files with 74 additions and 60 deletions

View File

@ -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}")

View File

@ -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`

View File

@ -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,)

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,5 @@
{
"values": [
"#minecraft:decorated_pot_sherds"
]
}

View File

@ -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"
]
}

View File

@ -1,7 +1,7 @@
{
"entries": [
"exdeorum:compressed_hammer",
"exdeorum:hammer",
"exdeorum:compressed_hammer",
"exdeorum:crook"
],
"replace": false

View File

@ -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"));

View File

@ -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<Item> possibilities;
public RandomResultItem(Properties properties, TagKey<Item> 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<Item>();
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<Item> getPossibilities();
public static class RandomSherd extends RandomResultItem {
public RandomSherd(Properties properties) {
super(properties);
}
@Override
protected List<Item> getPossibilities() {
var list = new ArrayList<Item>();
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<Item> 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<Item> getPossibilities() {
return POSSIBLE_TRIMS;
}
@Override
public void appendHoverText(ItemStack pStack, TooltipContext pLevel, List<Component> tooltip, TooltipFlag pIsAdvanced) {
@Override
public void appendHoverText(ItemStack pStack, TooltipContext pLevel, List<Component> 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));
}
}

View File

@ -117,8 +117,8 @@ public class EItems {
public static final DeferredItem<Item> WARPED_NYLIUM_SPORES = ITEMS.register("warped_nylium_spores", () -> new NyliumSpreaderItem(props(), Blocks.WARPED_NYLIUM::defaultBlockState));
public static final DeferredItem<Item> CRIMSON_NYLIUM_SPORES = ITEMS.register("crimson_nylium_spores", () -> new NyliumSpreaderItem(props(), Blocks.CRIMSON_NYLIUM::defaultBlockState));
public static final DeferredItem<Item> SCULK_CORE = ITEMS.register("sculk_core", () -> new SculkCoreItem(props().stacksTo(1)));
public static final DeferredItem<Item> RANDOM_POTTERY_SHERD = ITEMS.register("random_pottery_sherd", () -> new RandomResultItem.RandomSherd(props()));
public static final DeferredItem<Item> RANDOM_ARMOR_TRIM = ITEMS.register("random_armor_trim", () -> new RandomResultItem.RandomArmorTrim(props()));
public static final DeferredItem<Item> RANDOM_POTTERY_SHERD = ITEMS.register("random_pottery_sherd", () -> new RandomResultItem(props(), EItemTags.RANDOM_SHERD_DROPS));
public static final DeferredItem<Item> RANDOM_ARMOR_TRIM = ITEMS.register("random_armor_trim", () -> new RandomResultItem(props(), EItemTags.RANDOM_TRIM_DROPS));
public static final DeferredItem<Item> WOOD_CHIPPINGS = registerSimpleItem("wood_chippings");
// Buckets

View File

@ -33,6 +33,9 @@ public class EItemTags {
public static final TagKey<Item> ORE_CHUNKS = tag("ore_chunks");
public static final TagKey<Item> END_CAKE_MATERIAL = tag("end_cake_materials");
public static final TagKey<Item> RANDOM_SHERD_DROPS = tag("random_shard_drops");
public static final TagKey<Item> RANDOM_TRIM_DROPS = tag("random_trim_drops");
public static final TagKey<Item> WOODEN_BARRELS = tag("wooden_barrels");
public static final TagKey<Item> STONE_BARRELS = tag("stone_barrels");
public static final TagKey<Item> BARRELS = tag("barrels");