From b0b4b5eb65e3dfa9f4c62df633a5078173f49005 Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Mon, 29 Apr 2024 19:05:11 +0100 Subject: 1.20.6 --- src/main/java/dev/figboot/SmeltingTouchMod.java | 49 ++++++++++++++++++++++ .../figboot/enchant/SmeltingTouchEnchantment.java | 15 +++++++ 2 files changed, 64 insertions(+) create mode 100644 src/main/java/dev/figboot/SmeltingTouchMod.java create mode 100644 src/main/java/dev/figboot/enchant/SmeltingTouchEnchantment.java (limited to 'src/main/java/dev/figboot') diff --git a/src/main/java/dev/figboot/SmeltingTouchMod.java b/src/main/java/dev/figboot/SmeltingTouchMod.java new file mode 100644 index 0000000..fd2cdd3 --- /dev/null +++ b/src/main/java/dev/figboot/SmeltingTouchMod.java @@ -0,0 +1,49 @@ +package dev.figboot; + +import dev.figboot.enchant.SmeltingTouchEnchantment; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.loot.v2.LootTableEvents; +import net.minecraft.block.Blocks; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.item.Items; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.condition.MatchToolLootCondition; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.loot.function.FurnaceSmeltLootFunction; +import net.minecraft.predicate.NumberRange; +import net.minecraft.predicate.item.EnchantmentPredicate; +import net.minecraft.predicate.item.EnchantmentsPredicate; +import net.minecraft.predicate.item.ItemPredicate; +import net.minecraft.predicate.item.ItemSubPredicateTypes; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collections; + +public class SmeltingTouchMod implements ModInitializer { + public static final Logger LOGGER = LoggerFactory.getLogger("smeltingtouch"); + + public static final SmeltingTouchEnchantment SMELTING_TOUCH = new SmeltingTouchEnchantment( + Enchantment.properties(ItemTags.MINING_LOOT_ENCHANTABLE, 1, 1, + Enchantment.constantCost(15), Enchantment.constantCost(65), 8, + EquipmentSlot.MAINHAND)); + + @Override + public void onInitialize() { + LOGGER.info("initializing mod>....."); + Registry.register(Registries.ENCHANTMENT, new Identifier("smeltingtouch:smeltingtouch"), SMELTING_TOUCH); + + LootTableEvents.MODIFY.register((key, tableBuilder, source) -> { + if (source.isBuiltin() && key.getValue().getPath().startsWith("blocks/")) { + tableBuilder.apply(FurnaceSmeltLootFunction.builder() + .conditionally(MatchToolLootCondition.builder(ItemPredicate.Builder.create().subPredicate(ItemSubPredicateTypes.ENCHANTMENTS, + EnchantmentsPredicate.enchantments(Collections.singletonList(new EnchantmentPredicate(SMELTING_TOUCH, NumberRange.IntRange.atLeast(1)))))))); + } + }); + } +} diff --git a/src/main/java/dev/figboot/enchant/SmeltingTouchEnchantment.java b/src/main/java/dev/figboot/enchant/SmeltingTouchEnchantment.java new file mode 100644 index 0000000..8f950ec --- /dev/null +++ b/src/main/java/dev/figboot/enchant/SmeltingTouchEnchantment.java @@ -0,0 +1,15 @@ +package dev.figboot.enchant; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.Enchantments; + +public class SmeltingTouchEnchantment extends Enchantment { + public SmeltingTouchEnchantment(Enchantment.Properties props) { + super(props); + } + + @Override + protected boolean canAccept(Enchantment other) { + return super.canAccept(other) && other != Enchantments.SILK_TOUCH; + } +} -- cgit v1.2.3-70-g09d2