Allow changing drops for Random Armor Trim and Pottery Sherd

Also add Tide to possible armor trims
Closes #138
This commit is contained in:
thedarkcolour 2025-04-16 14:08:31 -07:00
parent d59e3e207a
commit 47e9d4381b
No known key found for this signature in database
GPG Key ID: 86B37B3575FD5976
8 changed files with 66 additions and 56 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

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, @Nullable Level pLevel, List<Component> tooltip, TooltipFlag pIsAdvanced) {
@Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> 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));
}
}

View File

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

View File

@ -33,6 +33,9 @@ public class EItemTags {
public static final TagKey<Item> END_CAKE_MATERIAL = tag("end_cake_materials");
public static final TagKey<Item> ORE_CHUNKS = tag("ore_chunks");
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");