diff options
| author | 2024-04-29 19:05:11 +0100 | |
|---|---|---|
| committer | 2024-05-05 15:00:08 -0500 | |
| commit | b0b4b5eb65e3dfa9f4c62df633a5078173f49005 (patch) | |
| tree | 37aed041d30414333ab911f05b0dc21d47396bb3 /src/main/java | |
| parent | 1.20.5 (diff) | |
1.20.61.20
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/com/example/ExampleMod.java | 22 | ||||
| -rw-r--r-- | src/main/java/com/example/mixin/ExampleMixin.java | 15 | ||||
| -rw-r--r-- | src/main/java/dev/figboot/SmeltingTouchMod.java | 49 | ||||
| -rw-r--r-- | src/main/java/dev/figboot/enchant/SmeltingTouchEnchantment.java | 15 |
4 files changed, 64 insertions, 37 deletions
diff --git a/src/main/java/com/example/ExampleMod.java b/src/main/java/com/example/ExampleMod.java deleted file mode 100644 index f97cce9..0000000 --- a/src/main/java/com/example/ExampleMod.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.example; - -import net.fabricmc.api.ModInitializer; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ExampleMod implements ModInitializer { - // This logger is used to write text to the console and the log file. - // It is considered best practice to use your mod id as the logger's name. - // That way, it's clear which mod wrote info, warnings, and errors. - public static final Logger LOGGER = LoggerFactory.getLogger("modid"); - - @Override - public void onInitialize() { - // This code runs as soon as Minecraft is in a mod-load-ready state. - // However, some things (like resources) may still be uninitialized. - // Proceed with mild caution. - - LOGGER.info("Hello Fabric world!"); - } -}
\ No newline at end of file diff --git a/src/main/java/com/example/mixin/ExampleMixin.java b/src/main/java/com/example/mixin/ExampleMixin.java deleted file mode 100644 index 3c4212c..0000000 --- a/src/main/java/com/example/mixin/ExampleMixin.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.mixin; - -import net.minecraft.server.MinecraftServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(MinecraftServer.class) -public class ExampleMixin { - @Inject(at = @At("HEAD"), method = "loadWorld") - private void init(CallbackInfo info) { - // This code is injected into the start of MinecraftServer.loadWorld()V - } -}
\ No newline at end of file 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; + } +} |
