package com.xfestudio.mydimensionlord.platform;
import com.xfestudio.mydimensionlord.MyDimension;
import com.xfestudio.mydimensionlord.equipment.GearSet;
import com.xfestudio.mydimensionlord.equipment.EquipmentRules;
import com.xfestudio.mydimensionlord.item.DimensionBladeItem;
import com.xfestudio.mydimensionlord.item.DimensionPickaxeItem;
import com.xfestudio.mydimensionlord.item.LordArmorItem;
import com.xfestudio.mydimensionlord.equipment.PickaxePowers;
import com.xfestudio.mydimensionlord.registry.EquipmentItems;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.*;
import net.minecraft.world.item.crafting.Ingredient;
import java.util.List;
/** Vanilla armor and sword classes retain enchanting, anvil and smithing behavior. */
public final class EquipmentFactory {
private EquipmentFactory() {}
public static Item material(String id) { return new Item(new Item.Properties().fireResistant().rarity(Rarity.UNCOMMON)); }
public static Item armor(GearSet set, EquipmentSlot slot) {
ArmorItem.Type type = ArmorItem.Type.valueOf(EquipmentItems.slotName(slot).toUpperCase(java.util.Locale.ROOT));
return new LordArmorItem(new MindArmorMaterial(set), type, new Item.Properties().fireResistant().rarity(Rarity.EPIC));
}
public static Item blade() { return new DimensionBladeItem(BLADE_TIER, new Item.Properties().fireResistant().rarity(Rarity.EPIC)); }
public static Item pickaxe() { return new DimensionPickaxeItem(PICKAXE_TIER, new Item.Properties().fireResistant().rarity(Rarity.EPIC)); }
public static Item template() {
return new SmithingTemplateItem(Component.translatable("smithing.mydimension_lord.applies_to"),
Component.translatable("smithing.mydimension_lord.ingredients"),
Component.translatable("smithing.mydimension_lord.title"),
Component.translatable("smithing.mydimension_lord.base_slot"),
Component.translatable("smithing.mydimension_lord.addition_slot"),
List.of(icon("helmet"), icon("chestplate"), icon("leggings"), icon("boots"), icon("sword"), icon("pickaxe")), List.of(icon("ingot"), icon("amethyst_shard")));
}
private static ResourceLocation icon(String name) { return new ResourceLocation("minecraft", "item/empty_slot_" + name); }
private record MindArmorMaterial(GearSet set) implements ArmorMaterial {
public int getDurabilityForType(ArmorItem.Type type) { return set.durability(EquipmentItems.slotIndex(type.getSlot())); }
public int getDefenseForType(ArmorItem.Type type) { return set.protection(EquipmentItems.slotIndex(type.getSlot())); }
public int getEnchantmentValue() { return 25; }
public SoundEvent getEquipSound() { return SoundEvents.ARMOR_EQUIP_NETHERITE; }
public Ingredient getRepairIngredient() { return Ingredient.of(EquipmentItems.repairMaterial(set)); }
public String getName() { return MyDimension.MOD_ID + ":" + set.id(); }
public float getToughness() { return set.toughness(); }
public float getKnockbackResistance() { return set.knockbackResistance(); }
}
public static final Tier BLADE_TIER = new Tier() {
public int getUses() { return EquipmentRules.BLADE_DURABILITY; }
public float getSpeed() { return 9.0F; }
public float getAttackDamageBonus() { return 4.0F; }
public int getLevel() { return 4; }
public int getEnchantmentValue() { return 25; }
public Ingredient getRepairIngredient() { return Ingredient.of(EquipmentItems.LORD_CORE.get()); }
};
public static final Tier PICKAXE_TIER = new Tier() {
public int getUses() { return PickaxePowers.DURABILITY; }
public float getSpeed() { return 100.0F; }
public float getAttackDamageBonus() { return 4.0F; }
public int getLevel() { return 4; }
public int getEnchantmentValue() { return 25; }
public Ingredient getRepairIngredient() { return Ingredient.of(EquipmentItems.LORD_CORE.get()); }
};
}
package com.xfestudio.mydimensionlord.platform;
import com.xfestudio.mydimensionlord.MyDimension;
import com.xfestudio.mydimensionlord.equipment.GearSet;
import com.xfestudio.mydimensionlord.equipment.EquipmentRules;
import com.xfestudio.mydimensionlord.item.DimensionBladeItem;
import com.xfestudio.mydimensionlord.item.DimensionPickaxeItem;
import com.xfestudio.mydimensionlord.item.LordArmorItem;
import com.xfestudio.mydimensionlord.equipment.PickaxePowers;
import com.xfestudio.mydimensionlord.registry.EquipmentItems;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.*;
import net.minecraft.world.item.crafting.Ingredient;
import java.util.List;
/** Vanilla armor and sword classes retain enchanting, anvil and smithing behavior. */
public final class EquipmentFactory {
private EquipmentFactory() {}
public static Item material(String id) { return new Item(new Item.Properties().fireResistant().rarity(Rarity.UNCOMMON)); }
public static Item armor(GearSet set, EquipmentSlot slot) {
ArmorItem.Type type = ArmorItem.Type.valueOf(EquipmentItems.slotName(slot).toUpperCase(java.util.Locale.ROOT));
return new LordArmorItem(new MindArmorMaterial(set), type, new Item.Properties().fireResistant().rarity(Rarity.EPIC));
}
public static Item blade() { return new DimensionBladeItem(BLADE_TIER, new Item.Properties().fireResistant().rarity(Rarity.EPIC)); }
public static Item pickaxe() { return new DimensionPickaxeItem(PICKAXE_TIER, new Item.Properties().fireResistant().rarity(Rarity.EPIC)); }
public static Item template() {
return new SmithingTemplateItem(Component.translatable("smithing.mydimension_lord.applies_to"),
Component.translatable("smithing.mydimension_lord.ingredients"),
Component.translatable("smithing.mydimension_lord.title"),
Component.translatable("smithing.mydimension_lord.base_slot"),
Component.translatable("smithing.mydimension_lord.addition_slot"),
List.of(icon("helmet"), icon("chestplate"), icon("leggings"), icon("boots"), icon("sword"), icon("pickaxe")), List.of(icon("ingot"), icon("amethyst_shard")));
}
private static ResourceLocation icon(String name) { return new ResourceLocation("minecraft", "item/empty_slot_" + name); }
private record MindArmorMaterial(GearSet set) implements ArmorMaterial {
public int getDurabilityForType(ArmorItem.Type type) { return set.durability(EquipmentItems.slotIndex(type.getSlot())); }
public int getDefenseForType(ArmorItem.Type type) { return set.protection(EquipmentItems.slotIndex(type.getSlot())); }
public int getEnchantmentValue() { return 25; }
public SoundEvent getEquipSound() { return SoundEvents.ARMOR_EQUIP_NETHERITE; }
public Ingredient getRepairIngredient() { return Ingredient.of(EquipmentItems.repairMaterial(set)); }
public String getName() { return MyDimension.MOD_ID + ":" + set.id(); }
public float getToughness() { return set.toughness(); }
public float getKnockbackResistance() { return set.knockbackResistance(); }
}
public static final Tier BLADE_TIER = new Tier() {
public int getUses() { return EquipmentRules.BLADE_DURABILITY; }
public float getSpeed() { return 9.0F; }
public float getAttackDamageBonus() { return 4.0F; }
public int getLevel() { return 4; }
public int getEnchantmentValue() { return 25; }
public Ingredient getRepairIngredient() { return Ingredient.of(EquipmentItems.LORD_CORE.get()); }
};
public static final Tier PICKAXE_TIER = new Tier() {
public int getUses() { return PickaxePowers.DURABILITY; }
public float getSpeed() { return 100.0F; }
public float getAttackDamageBonus() { return 4.0F; }
public int getLevel() { return 4; }
public int getEnchantmentValue() { return 25; }
public Ingredient getRepairIngredient() { return Ingredient.of(EquipmentItems.LORD_CORE.get()); }
};
}