diff --git a/src/main/java/mc/duzo/timeless/Timeless.java b/src/main/java/mc/duzo/timeless/Timeless.java index 9c60894..0415dbb 100644 --- a/src/main/java/mc/duzo/timeless/Timeless.java +++ b/src/main/java/mc/duzo/timeless/Timeless.java @@ -1,5 +1,6 @@ package mc.duzo.timeless; +import mc.duzo.timeless.suit.SuitRegistry; import net.fabricmc.api.ModInitializer; import org.slf4j.Logger; @@ -7,18 +8,10 @@ public class Timeless implements ModInitializer { public static final String MOD_ID = "timeless"; - - // 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(MOD_ID); @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!"); + SuitRegistry.init(); } } \ No newline at end of file diff --git a/src/main/java/mc/duzo/timeless/mixin/EnchantmentHelperMixin.java b/src/main/java/mc/duzo/timeless/mixin/EnchantmentHelperMixin.java new file mode 100644 index 0000000..3a787b8 --- /dev/null +++ b/src/main/java/mc/duzo/timeless/mixin/EnchantmentHelperMixin.java @@ -0,0 +1,19 @@ +package mc.duzo.timeless.mixin; + +import mc.duzo.timeless.suit.SuitItem; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.item.ItemStack; +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.CallbackInfoReturnable; + +@Mixin(EnchantmentHelper.class) +public class EnchantmentHelperMixin { + @Inject(method="hasBindingCurse", at=@At("HEAD"), cancellable = true) + private void timeless$hasBindingCurse(ItemStack stack, CallbackInfoReturnable cir) { + if (!(stack.getItem() instanceof SuitItem suit)) return; + + cir.setReturnValue(suit.isBinding()); + } +} diff --git a/src/main/java/mc/duzo/timeless/registry/Identifiable.java b/src/main/java/mc/duzo/timeless/registry/Identifiable.java new file mode 100644 index 0000000..78cb080 --- /dev/null +++ b/src/main/java/mc/duzo/timeless/registry/Identifiable.java @@ -0,0 +1,6 @@ +package mc.duzo.timeless.registry; + +import net.minecraft.util.Identifier; +public interface Identifiable { + Identifier id(); +} \ No newline at end of file diff --git a/src/main/java/mc/duzo/timeless/suit/Serializable.java b/src/main/java/mc/duzo/timeless/suit/Serializable.java new file mode 100644 index 0000000..1b27c7d --- /dev/null +++ b/src/main/java/mc/duzo/timeless/suit/Serializable.java @@ -0,0 +1,8 @@ +package mc.duzo.timeless.suit; + +import net.minecraft.nbt.NbtCompound; + +public interface Serializable { + NbtCompound serialize(); + void deserialize(NbtCompound data); +} diff --git a/src/main/java/mc/duzo/timeless/suit/Suit.java b/src/main/java/mc/duzo/timeless/suit/Suit.java new file mode 100644 index 0000000..6dc2acf --- /dev/null +++ b/src/main/java/mc/duzo/timeless/suit/Suit.java @@ -0,0 +1,7 @@ +package mc.duzo.timeless.suit; + +import mc.duzo.timeless.registry.Identifiable; + +public abstract class Suit implements Identifiable { + public abstract boolean isBinding(); +} diff --git a/src/main/java/mc/duzo/timeless/suit/SuitItem.java b/src/main/java/mc/duzo/timeless/suit/SuitItem.java new file mode 100644 index 0000000..25d0764 --- /dev/null +++ b/src/main/java/mc/duzo/timeless/suit/SuitItem.java @@ -0,0 +1,18 @@ +package mc.duzo.timeless.suit; + +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; + +public abstract class SuitItem extends ArmorItem { + private final Suit parent; + + protected SuitItem(Suit suit, ArmorMaterial material, Type type, Settings settings) { + super(material, type, settings.maxCount(1)); + + this.parent = suit; + } + + public boolean isBinding() { + return this.parent.isBinding(); + } +} diff --git a/src/main/java/mc/duzo/timeless/suit/SuitRegistry.java b/src/main/java/mc/duzo/timeless/suit/SuitRegistry.java new file mode 100644 index 0000000..e4e701a --- /dev/null +++ b/src/main/java/mc/duzo/timeless/suit/SuitRegistry.java @@ -0,0 +1,20 @@ +package mc.duzo.timeless.suit; + +import mc.duzo.timeless.Timeless; +import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.SimpleRegistry; +import net.minecraft.util.Identifier; + +public class SuitRegistry { + public static final SimpleRegistry REGISTRY = FabricRegistryBuilder.createSimple(RegistryKey.ofRegistry(new Identifier(Timeless.MOD_ID, "suit"))).buildAndRegister(); + + public static Suit register(Suit suit) { + return Registry.register(REGISTRY, suit.id(), suit); + } + + public static void init() { + + } +} diff --git a/src/main/java/mc/duzo/timeless/suit/SuitSet.java b/src/main/java/mc/duzo/timeless/suit/SuitSet.java new file mode 100644 index 0000000..784774c --- /dev/null +++ b/src/main/java/mc/duzo/timeless/suit/SuitSet.java @@ -0,0 +1,18 @@ +package mc.duzo.timeless.suit; + +public class SuitSet { + private final Suit suit; + private final SuitItem head; + private final SuitItem chest; + private final SuitItem legs; + private final SuitItem feet; + + public SuitSet(Suit suit, SuitItem head, SuitItem chest, SuitItem legs, SuitItem feet) { + this.suit = suit; + + this.head = head; + this.chest = chest; + this.legs = legs; + this.feet = feet; + } +} diff --git a/src/main/resources/timeless.mixins.json b/src/main/resources/timeless.mixins.json index 25ef590..26e082f 100644 --- a/src/main/resources/timeless.mixins.json +++ b/src/main/resources/timeless.mixins.json @@ -3,7 +3,7 @@ "package": "mc.duzo.timeless.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ - + "EnchantmentHelperMixin" ], "injectors": { "defaultRequire": 1