Skip to content

Commit

Permalink
chore: start work on Suit
Browse files Browse the repository at this point in the history
  • Loading branch information
Duzos committed Aug 26, 2024
1 parent 844aa80 commit 0ec726d
Show file tree
Hide file tree
Showing 9 changed files with 99 additions and 10 deletions.
11 changes: 2 additions & 9 deletions src/main/java/mc/duzo/timeless/Timeless.java
Original file line number Diff line number Diff line change
@@ -1,24 +1,17 @@
package mc.duzo.timeless;

import mc.duzo.timeless.suit.SuitRegistry;
import net.fabricmc.api.ModInitializer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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();
}
}
19 changes: 19 additions & 0 deletions src/main/java/mc/duzo/timeless/mixin/EnchantmentHelperMixin.java
Original file line number Diff line number Diff line change
@@ -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<Boolean> cir) {
if (!(stack.getItem() instanceof SuitItem suit)) return;

cir.setReturnValue(suit.isBinding());
}
}
6 changes: 6 additions & 0 deletions src/main/java/mc/duzo/timeless/registry/Identifiable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package mc.duzo.timeless.registry;

import net.minecraft.util.Identifier;
public interface Identifiable {
Identifier id();
}
8 changes: 8 additions & 0 deletions src/main/java/mc/duzo/timeless/suit/Serializable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package mc.duzo.timeless.suit;

import net.minecraft.nbt.NbtCompound;

public interface Serializable {
NbtCompound serialize();
void deserialize(NbtCompound data);
}
7 changes: 7 additions & 0 deletions src/main/java/mc/duzo/timeless/suit/Suit.java
Original file line number Diff line number Diff line change
@@ -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();
}
18 changes: 18 additions & 0 deletions src/main/java/mc/duzo/timeless/suit/SuitItem.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
20 changes: 20 additions & 0 deletions src/main/java/mc/duzo/timeless/suit/SuitRegistry.java
Original file line number Diff line number Diff line change
@@ -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<Suit> REGISTRY = FabricRegistryBuilder.createSimple(RegistryKey.<Suit>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() {

}
}
18 changes: 18 additions & 0 deletions src/main/java/mc/duzo/timeless/suit/SuitSet.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
2 changes: 1 addition & 1 deletion src/main/resources/timeless.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"package": "mc.duzo.timeless.mixin",
"compatibilityLevel": "JAVA_17",
"mixins": [

"EnchantmentHelperMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 0ec726d

Please sign in to comment.