aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/dev
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev')
-rw-r--r--src/main/java/dev/figboot/SmeltingTouchMod.java49
-rw-r--r--src/main/java/dev/figboot/enchant/SmeltingTouchEnchantment.java15
2 files changed, 64 insertions, 0 deletions
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;
+ }
+}