package com.zivilon.cinder_loe;

import com.zivilon.cinder_loe.blocks.*;
import com.zivilon.cinder_loe.blocks.plants.cabbageCrop;
import com.zivilon.cinder_loe.blocks.plants.onionCrop;
import com.zivilon.cinder_loe.carriage.CarriageRoadRegistry;
import com.zivilon.cinder_loe.character.CharacterEventListener;
import com.zivilon.cinder_loe.character.CharacterRoleAPI;
import com.zivilon.cinder_loe.client.render.*;
import com.zivilon.cinder_loe.client.render.corrupt.*;
import com.zivilon.cinder_loe.client.render.projectile.*;
import com.zivilon.cinder_loe.command.*;
import com.zivilon.cinder_loe.entity.*;
import com.zivilon.cinder_loe.entity.animals.Monkey;
import com.zivilon.cinder_loe.entity.boss.CryptBoss;
import com.zivilon.cinder_loe.entity.corrupt.*;
import com.zivilon.cinder_loe.entity.npc.*;
import com.zivilon.cinder_loe.entity.npc.boss.*;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfArbalest;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfBannerBearer;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfCommander;
import com.zivilon.cinder_loe.entity.npc.dwarf.RedDwarfWarrior;
import com.zivilon.cinder_loe.entity.npc.dwarf.trader.RedDwarfSmith;
import com.zivilon.cinder_loe.entity.npc.elf.Sirrandrai;
import com.zivilon.cinder_loe.entity.npc.elf.trader.BladorthinSmith;
import com.zivilon.cinder_loe.entity.npc.evil_human.*;
import com.zivilon.cinder_loe.entity.npc.evil_human.trader.LimwaithFishmonger;
import com.zivilon.cinder_loe.entity.npc.evil_human.trader.LimwaithShaman;
import com.zivilon.cinder_loe.entity.npc.good_human.*;
import com.zivilon.cinder_loe.entity.npc.orc.MorgulOrc;
import com.zivilon.cinder_loe.entity.npc.orc.NorthernOrc;
import com.zivilon.cinder_loe.entity.npc.orc.trader.*;
import com.zivilon.cinder_loe.entity.npc.radagast.*;
import com.zivilon.cinder_loe.entity.projectile.*;
import com.zivilon.cinder_loe.items.*;
import com.zivilon.cinder_loe.items.specials.*;
import com.zivilon.cinder_loe.lotr.ChestContentsOverride;
import com.zivilon.cinder_loe.network.*;
import com.zivilon.cinder_loe.potion.LoEPotions;
import com.zivilon.cinder_loe.tileentity.*;
import com.zivilon.cinder_loe.util.Utilities;
import com.zivilon.cinder_loe.world.event.*;
import com.zivilon.cindercore.CinderCore;

import net.minecraft.item.ItemSeedFood;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import org.objectweb.asm.ClassReader;
import org.objectweb.asm.util.TraceClassVisitor;

import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

import lotr.client.render.entity.*;
import lotr.client.render.tileentity.LOTRRenderUtumnoPortal;
import lotr.common.LOTRCreativeTabs;
import lotr.common.LOTRMod;
import lotr.common.enchant.LOTREnchantment;
import lotr.common.entity.animal.*;
import lotr.common.entity.npc.*;
import lotr.common.entity.projectile.LOTREntityGandalfFireball;
import lotr.common.item.*;
import lotr.common.world.biome.LOTRBiome;
import lotr.common.world.spawning.LOTRBiomeSpawnList;
import lotr.common.world.spawning.LOTRSpawnEntry;
import lotr.common.world.spawning.LOTRSpawnList;

import net.minecraft.block.Block;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.potion.Potion;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.WorldEvent;

import static lotr.common.LOTRMod.horseArmorIron;

@Mod(
    modid = "cinder_loe",
    version = "1.6.0",
    name = "CinderLoE",
    dependencies = "required-after:spongemixins@[1.1.0,);required-after:lotr",
    acceptedMinecraftVersions = "[1.7.10]",
    acceptableRemoteVersions = "[1.6.0]")
public class CinderLoE {

    @Instance("cinder_loe")
    public static CinderLoE instance;

    public static Logger LOG = LogManager.getLogger(Tags.MODID);
    public static boolean DEBUG = false;

    // LOTR Materials
    public static LOTRMaterial MATERIAL_RED_DWARF;
    public static LOTRMaterial MATERIAL_BONEMOLD;
    public static LOTRMaterial MATERIAL_LIMWAITH_WOOD;
    public static LOTRMaterial EVENT;
    public static LOTRMaterial MATERIAL_BREE;
    public static LOTRMaterial MATERIAL_RHUDAUR;
    public static LOTRMaterial MATERIAL_BATTLENUN;
    public static LOTRMaterial MATERIAL_ASH;
    public static LOTRMaterial MATERIAL_SERPENT;
    public static LOTRMaterial MATERIAL_USURPER;
    public static LOTRMaterial MATERIAL_WARLORD;
    public static LOTRMaterial MATERIAL_ESGAROTH;
    public static LOTRMaterial MATERIAL_DORWINIONELITE;
    public static LOTRMaterial MATERIAL_JADE;
    public static LOTRMaterial MATERIAL_GILDEDGALVORN;
    public static LOTRMaterial MATERIAL_ARTIFACT;
    public static LOTRMaterial MATERIAL_SUNLIT_WARDEN;
    public static LOTRMaterial MATERIAL_ORTHANC_GUARD;
    // Blocks
   // public static Block barricade;
    public static Block cinderBlock;
    public static Block ivoryBlock;
    public static Block blockRedDwarfSteel;
    public static Block barsRedDwarf;
    public static Block chandelierRedDwarf;
    public static Block furBundle;
    public static Block leatherBundle;
    public static Block reedBale;
    public static Block dwarvenBrickRuned;
    public static Block fishBarrel;
    ///public static Block rustedsword;
    public static Block mistBlock;
    public static Block cutDrystone;
    public static Block cindercobble;
    public static Block cinderfur;
    public static Block furCarpet;
    public static Block reeflessCoral;
    public static Block silverChain;
    public static Block goldChain;
    public static Block ironChain;
    public static Block bronzeChain;

    public static Block plaster;
    public static Block voidblock;
    public static Block entityBarrier;
    public static Block woodpanel;

    //public static Block verticalWeaponRack;

    //Gates
    //public static Block gatecharredportcullis;

    //Food Crop blocks
    public static Block onionCrop;
    public static Block cabbageCrop;

    //Food! Yum :P
    public static Item onion;
    public static Item cabbage;
    public static Item pelmen;
    public static Item spice;
    public static Item spicedHam;
    public static Item lightStew;

    public static Item chocolatebar;
    public static Item fruitsalad;
    public static Item flour;
    public static Item dough;
    public static Item pasta;
    public static Item pretzel;
    public static Item halva;
    public static Item flatbread;
    public static Item maggotlessbread;
   // public static Item honey;
    public static Item doner_kebab;

    // Brews
    public static Item mugElfBrew;
    public static Item mugHumanBrew;
    public static Item mugOrcBrew;
    public static Item mugDwarfBrew;
    public static Item spiceElven;
    public static Item spiceHuman;
    public static Item spiceOrcish;
    public static Item spiceDwarven;
    public static Item spiceIngredient;


    // Event/special
    public static Item frostblade;
    public static Item daggervoid;
    public static Item spearsolidgold;
    public static Item spearUnnamed;
    public static Item swordAsh;
    public static Item staffAsh;
    public static Item daggerAsh;
    public static Item spearAsh;
    public static Item hammerAsh;
    public static Item battleaxeAsh;
    public static Item pikeAsh;
    public static Item bowAsh;
    public static Item ingotAsh;
    public static Item helmetbrokenhalo;
    public static Item helmetJade;
    public static Item bodyJade;
    public static Item legsJade;
    public static Item bootsJade;
    public static Item helmetDorLomin;
    public static Item bodyIsildur;
    public static Item bowLurtz;

    // Misc
    public static Item forgingKit;
    public static Item fieldRepairKit;
    public static Item cinderFurItem;

    // Common tools/weapons
    public static Item whip;
    public static Item cleaver;
    public static Item warDart;
    public static Item warDartHeads;

    // Elite Armors/weapons
    public static Item helmetserpent;
    public static Item bodyserpent;
    public static Item legsserpent;
    public static Item bootsserpent;
    public static Item helmetUsurper;
    public static Item bodyUsurper;
    public static Item legsUsurper;
    public static Item bootsUsurper;
    public static Item helmetWarlord;
    public static Item bodyWarlord;
    public static Item legsWarlord;
    public static Item bootsWarlord;
    public static Item maceWarlord;
    public static Item helmetGildedGalvorn;
    public static Item bodyGildedGalvorn;
    public static Item legsGildedGalvorn;
    public static Item bootsGildedGalvorn;
    public static Item helmetEsgaroth;
    public static Item bodyEsgaroth;
    public static Item legsEsgaroth;
    public static Item bootsEsgaroth;
    public static Item helmetDorwinionElite;
    public static Item bodyDorwinionElite;
    public static Item legsDorwinionElite;
    public static Item bootsDorwinionElite;
    public static Item helmetOrthancGuard;
    public static Item bodyOrthancGuard;
    public static Item legsOrthancGuard;
    public static Item bootsOrthancGuard;
   // public static Item bowserpent;
    //public static Item swordUsurper;

    // Great swords, idk where else to put them
    public static Item greatswordAngmar;
    public static Item greatswordLindon;
    public static Item greatswordDale;
    public static Item greatswordNumenor;

    // Red Dwarves
    public static Item redDwarfSteel;
    public static Item helmetRedDwarf;
    public static Item bodyRedDwarf;
    public static Item legsRedDwarf;
    public static Item bootsRedDwarf;
    public static Item spearRedDwarf;
    public static Item swordRedDwarf;
    public static Item battleaxeRedDwarf;
    public static Item pikeRedDwarf;
    public static Item hammerRedDwarf;
    public static Item daggerRedDwarf;
    public static Item daggerRedDwarfPoisoned;
    public static Item crossbowRedDwarf;
    public static Item boarArmorRedDwarf;
    public static LOTRUnitTradeEntries RED_DWARF_COMMANDER;

    // Rhudaur
    public static Item helmetRhudaur;
    public static Item bodyRhudaur;
    public static Item legsRhudaur;
    public static Item bootsRhudaur;

    // Limwaith
    public static Item bonemold;
    public static Item helmetLimwaith;
    public static Item bodyLimwaith;
    public static Item legsLimwaith;
    public static Item bootsLimwaith;
    public static Item helmetboneLimwaith;
    public static Item bodyboneLimwaith;
    public static Item legsboneLimwaith;
    public static Item bootsboneLimwaith;
    public static Item tridentLimwaith;
    public static Item spearLimwaith;
    public static Item truncheonLimwaith;
    public static Item battleaxeLimwaith;
    public static Item daggerLimwaith;
    public static Item daggerLimwaithPoisoned;
    public static Item blowgunLimwaith;
    public static LOTRUnitTradeEntries LIMWAITH_COMMANDER;

    //Bree
    public static Item helmetBree;
    public static Item helmetBreeKettle;
    public static Item bodyBree;
    public static Item legsBree;
    public static Item bootsBree;
    public static Item swordBree;
    public static LOTRUnitTradeEntries BREE_CAPTAIN;

    // Arnor
    public static Item helmetArnorBanner;
    public static Item bodyArnorBanner;
    public static Item legsArnorBanner;
    public static Item bootsArnorBanner;
    public static Item maceArnor;
    public static LOTRUnitTradeEntries ARNOR_CAPTAIN;

    // Wizards
    public static Item radagastStaff;
    public static Item pallandoStaff;
    public static Item alatarStaff;
    public static Item sarumanStaff;
    public static Item sarumanWhiteStaff;
    public static Item mouthofsauronSword;

    // Dungeons
    public static Item effigyOfWrath;
    public static Item greatswordLight;
    public static Item helmetSunlitWarden;
    public static Item bodySunlitWarden;
    public static Item legsSunlitWarden;
    public static Item bootsSunlitWarden;


    // Relics
    public static Item welfRelic;
    public static Item ulukai;
    // Spawn eggs
    public static Item spawnEgg;
    public static Item unitLevelTool;

    // Spawn lists

    public static LOTRSpawnList RED_DWARF;
    public static LOTRSpawnList LIMWAITH;
    public static LOTRSpawnList RHUDAUR;

    public static CinderEventHandler modEventHandler;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        CinderLoE_Config.init(event);
        PacketRegistration.register();
        LoEPotions.registerPotions();
        CarriageRoadRegistry.init();
    }

    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
        Materials.registerMaterials();
        registerBlocks();
        registerItems();
        ItemRegistration.registerItems();
        registerEntities();
        ChestContentsOverride.replace_chest_contents();
        modEventHandler = new CinderEventHandler();
        CommonProxy proxy = event.getSide() == Side.CLIENT ? new ClientProxy() : new ServerProxy();
        proxy.setup();
        if (FMLCommonHandler.instance().getEffectiveSide().isServer()) {
            FMLCommonHandler.instance().bus().register(this);
        }
        MinecraftForge.EVENT_BUS.register(this);
        new CharacterEventListener();
        FMLCommonHandler.instance().bus().register(new WarbandTickHandler());
        MinecraftForge.EVENT_BUS.register(new SwiftnessHandler());
        FMLCommonHandler.instance().bus().register(new com.zivilon.cinder_loe.world.event.UlukaiCurseHandler());
        CinderAchievement.createAchievements();
    }


    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        if (event.getSide()
            .isServer()) {
            SpeechBankModifier.insertSpeechBanks();
            modifySpawnLists();
        }
        Utilities.initialize_reflects();
        recipes.registerRecipes();
        setupTradeEntries();
        LOTRWeaponStats.registerMeleeReach(Whip.class, 1.5F);
        LoECreativeTabs.setupIcons();
    }


    @Mod.EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        CharacterRoleAPI.loadRolesFromFile();
        event.registerServerCommand(new CommandCinderCharacter());
        event.registerServerCommand(new CommandWarband());
        event.registerServerCommand(new CommandOpenCarriageMenu());
        event.registerServerCommand(new CommandSetDestination());
        event.registerServerCommand(new CommandUnitConversion());
        event.registerServerCommand(new CommandMouthOfSauron());
      //  event.registerServerCommand(new CommandMobileSound());
    }

    public void registerEntities() { // Last ID added: 84
        ///GameRegistry.registerTileEntity(TileEntityMistBlock.class, "TileEntityMistBlock");
        ///.registerBlock(TileEntityRustedSword, "TileEntityRustedSword");

        int entityID = 7320; // Always increment entityID by 1 over the last entity to ensure unique IDs

        // Traders
        EntityRegistry.registerModEntity(RedDwarfSmith.class, "RedDwarfSmith", (entityID + 29), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithFishmonger.class, "LimwaithFishmonger", (entityID + 33), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithShaman.class, "LimwaithShaman", (entityID + 34), this, 64, 1, true);
        EntityRegistry.registerModEntity(BladorthinSmith.class, "BladorthinSmith", (entityID + 43), this, 64, 1, true);

        EntityRegistry.registerModEntity(AngmarOrcBrewer.class, "AngmarOrcBrewer", (entityID + 67), this, 64, 1, true);
        EntityRegistry.registerModEntity(AngmarOrcButcher.class, "AngmarOrcButcher", (entityID + 68), this, 64, 1, true);
        EntityRegistry.registerModEntity(AngmarOrcSmith.class, "AngmarOrcSmith", (entityID + 69), this, 64, 1, true);
        EntityRegistry.registerModEntity(DolGuldurOrcBrewer.class, "DolGuldurOrcBrewer", (entityID + 70), this, 64, 1, true);
        EntityRegistry.registerModEntity(DolGuldurOrcButcher.class, "DolGuldurOrcButcher", (entityID + 71), this, 64, 1, true);
        EntityRegistry.registerModEntity(DolGuldurOrcSmith.class, "DolGuldurOrcSmith", (entityID + 72), this, 64, 1, true);
        EntityRegistry.registerModEntity(GundabadOrcBrewer.class, "GundabadOrcBrewer", (entityID + 73), this, 64, 1, true);
        EntityRegistry.registerModEntity(GundabadOrcButcher.class, "GundabadOrcButcher", (entityID + 74), this, 64, 1, true);
        EntityRegistry.registerModEntity(GundabadOrcSmith.class, "GundabadOrcSmith", (entityID + 75), this, 64, 1, true);
        EntityRegistry.registerModEntity(IsengardOrcButcher.class, "IsengardOrcButcher", (entityID + 76), this, 64, 1, true);
        EntityRegistry.registerModEntity(IsengardOrcBrewer.class, "IsengardOrcBrewer", (entityID + 77), this, 64, 1, true);
        EntityRegistry.registerModEntity(IsengardOrcSmith.class, "IsengardOrcSmith", (entityID + 78), this, 64, 1, true);
        EntityRegistry.registerModEntity(MordorOrcBrewer.class, "MordorOrcBrewer", (entityID + 79), this, 64, 1, true);
        EntityRegistry.registerModEntity(MordorOrcButcher.class, "MordorOrcButcher", (entityID + 80), this, 64, 1, true);
        EntityRegistry.registerModEntity(MordorOrcSmith.class, "MordorOrcSmith", (entityID + 81), this, 64, 1, true);
        EntityRegistry.registerModEntity(HalfTrollBrewer.class, "HalfTrollBrewer", (entityID + 82), this, 64, 1, true);
        EntityRegistry.registerModEntity(HalfTrollButcher.class, "HalfTrollButcher", (entityID + 83), this, 64, 1, true);


        // Event
        EntityRegistry.registerModEntity(DarkSpider.class, "DarkSpider", (entityID + 42), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptDwarf.class, "CorruptDwarf", (entityID + 36), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptElf.class, "CorruptElf", (entityID + 37), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptEnt.class, "CorruptEnt", (entityID + 38), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptHobbit.class, "CorruptHobit", (entityID + 39), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptMan.class, "CorruptMan", (entityID + 40), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptOrc.class, "CorruptOrc", (entityID + 41), this, 64, 1, true);
        EntityRegistry.registerModEntity(Renegade.class, "Renegade", (entityID + 1), this, 64, 1, true);
        EntityRegistry.registerModEntity(RenegadeCaptain.class, "RenegadeCaptain", (entityID + 16), this, 64, 1, true);
        EntityRegistry.registerModEntity(FangornBear.class, "FangornBear", (entityID + 6), this, 64, 1, true);
        EntityRegistry.registerModEntity(FangornWildBoar.class, "FangornWildBoar", (entityID + 7), this, 64, 1, true);
        EntityRegistry.registerModEntity(FangornAuroch.class, "FangornAuroch", (entityID + 8), this, 64, 1, true);
        EntityRegistry.registerModEntity(FangornElk.class, "FangornElk", (entityID + 9), this, 64, 1, true);
        EntityRegistry.registerModEntity(FangornWolf.class, "FangornWolf", (entityID + 10), this, 64, 1, true);
        EntityRegistry.registerModEntity(Wraith.class, "Wraith", (entityID + 15), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptSkeleton.class, "CorruptSkeleton", (entityID + 59), this, 64, 1, true);
        EntityRegistry.registerModEntity(CorruptSkeletonArcher.class, "CorruptSkeletonArcher", (entityID + 60), this, 64, 1, true);

        //Misc
        EntityRegistry.registerModEntity(EntityWarDart.class, "WarDart", (entityID + 44), this, 64, 1, true);
        EntityRegistry.registerModEntity(SarumanFireball.class, "SarumanFireball", entityID + 0, this, 64, 10, true);
        EntityRegistry.registerModEntity(SarumanWhiteFireball.class, "SarumanWhiteFireball", entityID + 61, this, 64, 10, true);
        EntityRegistry.registerModEntity(LOTREntitySauron.class, "LOTREntitySauron", (entityID + 28), this, 64, 1, true);
        EntityRegistry.registerModEntity(UtumnoSlaveTrader.class, "UtumnoSlaveTrader", (entityID + 30), this, 64, 1, true);
        EntityRegistry.registerModEntity(Monkey.class, "Monkey", (entityID + 62), this, 64, 1, true);
        EntityRegistry.registerModEntity(CryptBoss.class, "CryptBoss", (entityID + 66), this, 64, 1, true);
        EntityRegistry.registerModEntity(EntityMorgulBlast.class, "EntityMorgulBlast", (entityID + 65), this, 64, 1, true);
        EntityRegistry.registerModEntity(StrongHillTrollChieftain.class, "StrongHillTrollChieftain", (entityID + 84), this, 64, 1, true);


        // Faction Units
        EntityRegistry.registerModEntity(RedDwarfWarrior.class, "RedDwarfWarrior", (entityID + 2), this, 64, 1, true);
        EntityRegistry.registerModEntity(RedDwarfArbalest.class, "RedDwarfArbalest", (entityID + 3), this, 64, 1, true);
        EntityRegistry.registerModEntity(RedDwarfBannerBearer.class, "RedDwarfBannerBearer", (entityID + 4), this, 64, 1, true);
        EntityRegistry.registerModEntity(RedDwarfCommander.class, "RedDwarfCommander", (entityID + 5), this, 64, 1, true);

      //  EntityRegistry.registerModEntity(FangornWolf.class, "TamedCrocodile", (entityID + 35), this, 64, 1, true);
        EntityRegistry.registerModEntity(Limwaith.class, "Limwaith", (entityID + 31), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithWarrior.class, "LimwaithWarrior", (entityID + 11), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithBoneWarrior.class, "LimwaithBoneWarrior", (entityID + 32), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithBlowgunner.class, "LimwaithBlowgunner", (entityID + 12), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithBannerBearer.class, "LimwaithBannerBearer", (entityID + 13), this, 64, 1, true);
        EntityRegistry.registerModEntity(LimwaithChieftain.class, "LimwaithChieftain", (entityID + 14), this, 64, 1, true);

        EntityRegistry.registerModEntity(ArnorSoldier.class, "ArnorSoldier", (entityID + 17), this, 64, 1, true);
        EntityRegistry.registerModEntity(ArnorSoldierArcher.class, "ArnorSoldierArcher", (entityID + 19), this, 64, 1, true);
        EntityRegistry.registerModEntity(ArnorCaptain.class, "ArnorCaptain", (entityID + 20), this, 64, 1, true);
        EntityRegistry.registerModEntity(ArnorBannerBearer.class, "ArnorBannerBearer", (entityID + 21), this, 64, 1, true);

        EntityRegistry.registerModEntity(BreeSoldier.class, "BreeSoldier", (entityID + 22), this, 64, 1, true);
        EntityRegistry.registerModEntity(BreeCrossbowman.class, "BreeCrossbowman", (entityID + 23), this, 64, 1, true);
        EntityRegistry.registerModEntity(BreeCaptain.class, "BreeCaptain", (entityID + 24), this, 64, 1, true);
        EntityRegistry.registerModEntity(BreeSoldierBannerBearer.class, "BreeSoldierBannerBearer", (entityID + 25), this, 64, 1, true);
        EntityRegistry.registerModEntity(BreeOutrider.class, "BreeOutrider", (entityID + 26), this, 64, 1, true);

        EntityRegistry.registerModEntity(HobbitBannerBearer.class, "HobbitBannerBearer", (entityID + 52), this, 64, 1, true);
        // Objective and Custom npcs
        EntityRegistry.registerModEntity(BattleNun.class, "BattleNun", (entityID + 27), this, 64, 1, true);
        EntityRegistry.registerModEntity(MorgulOrc.class, "MorgulOrc", (entityID + 53), this, 64, 1, true);
        EntityRegistry.registerModEntity(RhudaurSoldier.class, "RhudaurSoldier", (entityID + 54), this, 64, 1, true);
        EntityRegistry.registerModEntity(NorthernOrc.class, "NorthernOrc", (entityID + 55), this, 64, 1, true);
        EntityRegistry.registerModEntity(EsgarothSoldier.class, "EsgarothSoldier", (entityID + 56), this, 64, 1, true);
        EntityRegistry.registerModEntity(TauredainTrueBlood.class, "TauredainTrueBlood", (entityID + 57), this, 64, 1, true);
        EntityRegistry.registerModEntity(Sirrandrai.class, "Sirrandrai", (entityID + 58), this, 64, 1, true);
        EntityRegistry.registerModEntity(UmbarUsurper.class, "Usurper", (entityID + 63), this, 64, 1, true);

    }

    public void registerBlocks() {
        // barricade
       // barricade = (new barricade());
      //  GameRegistry.registerBlock(barricade, "barricade");

        // Cinder Block
        cinderBlock = (new CinderBlock());
        GameRegistry.registerBlock(cinderBlock, "cinderBlock");

        // Ivory Block
        ivoryBlock = (new IvoryBlock()); //Unobtainable
        GameRegistry.registerBlock(ivoryBlock, "ivoryBlock");

        // Reefless Coral
        reeflessCoral = (new reeflessCoral());
        GameRegistry.registerBlock(reeflessCoral, "reeflessCoral");

        // Red Dwarven Steel Block
        blockRedDwarfSteel = (new BlockRedDwarfSteel());
        GameRegistry.registerBlock(blockRedDwarfSteel, "blockRedDwarfSteel");

        // Red Dwarven Steel Bars
        barsRedDwarf = (new RedDwarfBars());
        GameRegistry.registerBlock(barsRedDwarf, "barsRedDwarf");

        // Red dwarven chandelier
        chandelierRedDwarf = (new RedDwarfChandelier());
        GameRegistry.registerBlock(chandelierRedDwarf, "chandelierRedDwarf");

        // Bundles
        furBundle = (new FurBundle());
        GameRegistry.registerBlock(furBundle, "furBundle");
        leatherBundle = (new LeatherBundle());
        GameRegistry.registerBlock(leatherBundle, "leatherBundle");
        reedBale = (new ReedBale());
        GameRegistry.registerBlock(reedBale, "reedBale");

        // Unique
        dwarvenBrickRuned = (new RunedDwarvenBrick());
        GameRegistry.registerBlock(dwarvenBrickRuned, "dwarvenBrickRuned");
      //  verticalWeaponRack = new VerticalWeaponRack();
      //  GameRegistry.registerTileEntity(LOTRTileEntityWeaponRack.class, "verticalWeaponRack");
      //  GameRegistry.registerBlock(verticalWeaponRack, "verticalWeaponRack");

        //Decor
        fishBarrel = (new FishBarrel());
        GameRegistry.registerBlock(fishBarrel, "fishbarrel");

        // Chains
        silverChain = (new silverChain());
        GameRegistry.registerBlock(silverChain, "silverChain");
        goldChain = (new goldChain());
        GameRegistry.registerBlock(goldChain, "goldChain");
        ironChain = (new ironChain());
        GameRegistry.registerBlock(ironChain, "ironChain");
        bronzeChain = (new bronzeChain());
        GameRegistry.registerBlock(bronzeChain, "bronzeChain");


        // Staff
        mistBlock = (new MistBlock());
        GameRegistry.registerBlock(mistBlock, "mist");
        voidblock = (new voidblock());
        GameRegistry.registerBlock(voidblock, "voidblock");
        entityBarrier = (new EntityBarrier());
        GameRegistry.registerBlock(entityBarrier, "entity_barrier");

        // Building Blocks
        cutDrystone = (new cutDrystone());
        GameRegistry.registerBlock(cutDrystone, "cutDrystone");

        cindercobble = (new CobbleBlock());
        GameRegistry.registerBlock(cindercobble, CinderBlockMetaData.class, "cindercobble");

        cinderfur = (new CinderFurBlock());
        GameRegistry.registerBlock(cinderfur, CinderBlockMetaData.class, "cinderfur");
        furCarpet = (new FurCarpet());
        GameRegistry.registerBlock(furCarpet, CinderBlockMetaData.class, "furCarpet");

        plaster = (new plaster());
        GameRegistry.registerBlock(plaster, "plaster");

        woodpanel = (new woodpanel());
        GameRegistry.registerBlock(woodpanel, "woodpanel");

        // Gates
        //gatecharredportcullis = LOTRBlockGate.createWooden(false).setBlockName("lotr:gatecharredportcullis");
        //GameRegistry.registerBlock(gatecharredportcullis, "gatecharredportcullis");

        //Food Crops
        onionCrop = new onionCrop().setBlockName("onion");
        GameRegistry.registerBlock(onionCrop, "onionCrop");
        cabbageCrop = new cabbageCrop().setBlockName("cabbage");
        GameRegistry.registerBlock(cabbageCrop, "cabbageCrop");


    }

    public void registerItems() {
        // Get materials tab via reflection because ForgeGradle insists on obfuscating it when it should not
        LOTRCreativeTabs materials = null;
        try {
            Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabMaterials"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to be
            materials = (LOTRCreativeTabs) tabField.get(null);
        } catch (NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }
        // Food

        //cabbage = new ItemSeedFood(3, 0.3f, CinderLoE.cabbageCrop, Blocks.farmland).setUnlocalizedName("lotr:cabbage").setTextureName("lotr:cabbage");;
        spice = new CinderItemFood(1, 0.0f, false).setdamageAmount(2).setPotionEffect(Potion.moveSpeed.id, 5,0,100).setUnlocalizedName("lotr:spice").setTextureName("lotr:spice");
        spicedHam = new CinderItemFood(9, 0.6f, true).setdamageAmount(2).setPotionEffect(Potion.moveSpeed.id, 15, 0, 100).setUnlocalizedName("lotr:spicedHam").setTextureName("lotr:spicedHam");
       // spice = new LOTRItemFood(1, 0.0f, false).setPotionEffect(Potion.moveSpeed.id, 10,0,100).setUnlocalizedName("lotr:spice");
        pelmen = new LOTRItemFood(4, 5.0f, true).setUnlocalizedName("lotr:pelmen").setTextureName("lotr:pelmen");
        onion = new ItemSeedFood(2, 0.3f, onionCrop, Blocks.farmland).setUnlocalizedName("lotr:onion").setTextureName("lotr:onion");

        cabbage = new LOTRItemFood(4, 0.5f, false).setUnlocalizedName("lotr:cabbage").setTextureName("lotr:cabbage");
        lightStew = new LOTRItemStew(6, 0.7f, false).setPotionEffect(Potion.damageBoost.id, 60, 0, 100).setUnlocalizedName("lotr:lightStew").setTextureName("lotr:lightStew");
        chocolatebar = new LOTRItemFood(4,0.3f, false).setUnlocalizedName("lotr:chocolatebar").setTextureName("lotr:chocolatebar");
        fruitsalad = new LOTRItemStew(6, 0.5f, false).setPotionEffect(Potion.field_76444_x.id, 60, 0,1).setUnlocalizedName("lotr:fruitsalad").setTextureName("lotr:fruitsalad");
        flour = new LOTRItemFood(0,0.0f, false).setPotionEffect(Potion.confusion.id, 5,0,100).setUnlocalizedName("lotr:flour").setTextureName("lotr:flour");
        dough = new LOTRItemFood(1,0.0f, false).setPotionEffect(Potion.hunger.id, 5,0,100).setUnlocalizedName("lotr:dough").setTextureName("lotr:dough");
        pasta = new LOTRItemFood(2,0.0f, false).setPotionEffect(Potion.hunger.id, 5,0,100).setUnlocalizedName("lotr:pasta").setTextureName("lotr:pasta");
        pretzel = new LOTRItemFood(4,1.0f, false).setUnlocalizedName("lotr:pretzel").setTextureName("lotr:pretzel");
        halva = new LOTRItemFood (7, 1.0f, false).setUnlocalizedName("lotr:halva").setTextureName("lotr:halva");
        doner_kebab = new LOTRItemFood (8, 1.25f, false).setUnlocalizedName("lotr:doner_kebab").setTextureName("lotr:doner_kebab");
        flatbread = new LOTRItemFood (3, 0.25f, false).setUnlocalizedName("lotr:flatbread").setTextureName("lotr:flatbread");
        maggotlessbread = new LOTRItemFood (4, 0.5f, false).setUnlocalizedName("lotr:maggotymaggotlessBread").setTextureName("lotr:maggotymaggotlessBread");
       // honey = new LOTRItemFood(3, 0.4f, false).setPotionEffect(Potion.regeneration.id, 5, 0, 100).setUnlocalizedName("lotr:honey").setTextureName("lotr:honey");
        spiceElven = new Item().setUnlocalizedName("lotr:spice_elven").setTextureName("lotr:spice_elven");
        spiceHuman = new Item().setUnlocalizedName("lotr:spice_human").setTextureName("lotr:spice_human");
        spiceOrcish = new Item().setUnlocalizedName("lotr:spice_orcish").setTextureName("lotr:spice_orcish");
        spiceDwarven = new Item().setUnlocalizedName("lotr:spice_dwarven").setTextureName("lotr:spice_dwarven");
        spiceIngredient = (new spiceIngredient());

        mugElfBrew = (new LoEItemMug(0.0F)).setDrinkStats(20, 1.0F).addPotionEffect(Potion.moveSpeed.id, 60, 1).toxic().setUnlocalizedName("lotr:mugElfBrew");
        mugHumanBrew = (new LoEItemMug(0.0F)).setDrinkStats(20, 1.0F).addPotionEffect(Potion.regeneration.id, 60, 1).toxic().setUnlocalizedName("lotr:mugHumanBrew");
        mugOrcBrew = (new LoEItemMug(0.0F)).setDrinkStats(20, 1.0F).addPotionEffect(Potion.damageBoost.id, 60, 1).toxic().setDamageAmount(2).setUnlocalizedName("lotr:mugOrcBrew");
        mugDwarfBrew = (new LoEItemMug(0.0F)).setDrinkStats(20, 1.0F).addPotionEffect(Potion.field_76443_y.id, 120).toxic().setUnlocalizedName("lotr:mugDwarfBrew");
        ((LoEItemMug)mugElfBrew).setTextureNameFromUnlocalizedName();
        ((LoEItemMug)mugHumanBrew).setTextureNameFromUnlocalizedName();
        ((LoEItemMug)mugOrcBrew).setTextureNameFromUnlocalizedName();
        ((LoEItemMug)mugDwarfBrew).setTextureNameFromUnlocalizedName();

        spawnEgg = new CinderLoESpawnEgg();



        /**
        * Item Registation
        * Weapons will need to be linked
        *
        * ID 6000-6099
        * Misc / Materials
        *
        * ID 6100-6199
        * Misc equipment
        *
        * ID 6200-6399
        * Event
        *
        * ID 6400-6499
        * Faction equipment
        *
        * ID 6500-6699
        * Unassigned
        *
        * ID 6700-6799
        * Character or Objective
        *
        * ID 6800-6899
        * Elite armor
        *
        * ID 6900-6999
        * Food and crops
        *
        * ID 7000-7099
        * Dungeon items
        *
        * ID 7100-7199
        * Unassigned
        *
        * ID 7200-7299
        * Frozen Dungeon
        **/

        // ==Admin Tools==
        unitLevelTool = (new unitLevelTool()).setUnlocalizedName("lotr:unitLevelTool").setTextureName("stick");
        ItemRegistration.register(unitLevelTool, "unitLevelTool", 7000); // WHY 7000????


        // ==Food Items==
        ItemRegistration.register(onion, "onion", 6900);
        ItemRegistration.register(cabbage, "cabbage", 6901);
        ItemRegistration.register(pelmen, "pelmen", 6902);
        ItemRegistration.register(spice, "spice", 6903);
        ItemRegistration.register(spicedHam, "spicedHam", 6904);
        ItemRegistration.register(chocolatebar, "chocolatebar", 6905);
        ItemRegistration.register(fruitsalad, "fruitsalad", 6906);
        ItemRegistration.register(flour, "flour", 6907);
        ItemRegistration.register(dough, "dough", 6908);
        ItemRegistration.register(pasta, "pasta", 6909);
        ItemRegistration.register(pretzel, "pretzel", 6910);
        ItemRegistration.register(halva, "halva", 6911);
        ItemRegistration.register(doner_kebab, "doner_kebab", 6912);
        ItemRegistration.register(lightStew, "lightStew", 6913);
        ItemRegistration.register(mugElfBrew, "mugElfBrew",6914);
        ItemRegistration.register(mugHumanBrew, "mugHumanBrew",6915);
        ItemRegistration.register(mugOrcBrew, "mugOrcBrew",6916);
        ItemRegistration.register(mugDwarfBrew, "mugDwarfBrew",6917);
        ItemRegistration.register(spiceElven, "spiceElven",6918);
        ItemRegistration.register(spiceHuman, "spiceHuman",6919);
        ItemRegistration.register(spiceOrcish, "spiceOrcish",6920);
        ItemRegistration.register(spiceDwarven, "spiceDwarven",6921);
        ItemRegistration.register(spiceIngredient, "spiceIngredient",6922);
        ItemRegistration.register(flatbread, "flatbread",6923);
        ItemRegistration.register(maggotlessbread, "maggotlessbread",6924);

        ItemRegistration.register(spawnEgg, "spawnEgg", 6003);

        // Wizard Staves
        radagastStaff = (new RadagastStaff()).setUnlocalizedName("lotr:radagastStaff").setTextureName("lotr:radagastStaff");
        pallandoStaff = (new PallandoStaff()).setUnlocalizedName("lotr:pallandoStaff").setTextureName("lotr:pallandoStaff");
        alatarStaff = (new AlatarStaff()).setUnlocalizedName("lotr:alatarStaff").setTextureName("lotr:alatarStaff");
        sarumanStaff = (new SarumanStaff()).setUnlocalizedName("lotr:sarumanStaff").setTextureName("lotr:sarumanStaff");
        sarumanWhiteStaff = (new SarumanWhiteStaff()).setUnlocalizedName("lotr:sarumanWhiteStaff").setTextureName("lotr:sarumanStaff");
        mouthofsauronSword = (new MouthOfSauronWeapon()).setUnlocalizedName("lotr:mouthofsauronSword").setTextureName("lotr:mouthofsauronSword");

        ItemRegistration.register(radagastStaff, "radagastStaff", 6700);
        ItemRegistration.register(pallandoStaff, "pallandoStaff", 6701);
        ItemRegistration.register(alatarStaff, "alatarStaff", 6702);
        ItemRegistration.register(sarumanStaff, "sarumanStaff", 6703);
        ItemRegistration.register(sarumanWhiteStaff, "sarumanWhiteStaff", 6705);
        ItemRegistration.register(mouthofsauronSword, "mouthofsauronSword", 6711);

        linkLOTRWeapon(radagastStaff, "radagastStaff");
        linkLOTRWeapon(pallandoStaff, "pallandoStaff");
        linkLOTRWeapon(alatarStaff, "alatarStaff");
        linkLOTRWeapon(sarumanStaff, "sarumanStaff");
        linkLOTRWeapon(sarumanWhiteStaff, "sarumanWhiteStaff");
        linkLOTRWeapon(mouthofsauronSword, "mouthofsauronSword");


        // Relics
        welfRelic = (new WoodElfRelic()).setUnlocalizedName("lotr:welfRelic").setTextureName("lotr:welfRelic");
        ulukai = (new Ulukai()).setUnlocalizedName("lotr:ulukai").setTextureName("lotr:ulukai");

        ItemRegistration.register(welfRelic, "welfRelic", 6704);
        ItemRegistration.register(ulukai, "ulukai", 6706);

        linkLOTRWeapon(welfRelic, "welfRelic");

        //Great swords idk where to put them
        greatswordAngmar = (new LoEGreatSword(LOTRMaterial.ANGMAR, LOTRMod.orcSteel)).setUnlocalizedName("lotr:greatswordAngmar").setTextureName("lotr:greatswordAngmar");
        greatswordLindon = new LoEGreatSword(LOTRMaterial.HIGH_ELVEN, LOTRMod.elfSteel).setIsElvenBlade().setUnlocalizedName("lotr:greatswordLindon").setTextureName("lotr:greatswordLindon");
        greatswordDale = (new LoEGreatSword(LOTRMaterial.DALE, Items.iron_ingot)).setUnlocalizedName("lotr:greatswordDale").setTextureName("lotr:greatswordDale");
        greatswordNumenor = (new LoEGreatSword(LOTRMaterial.BLACK_NUMENOREAN, Items.iron_ingot)).setUnlocalizedName("lotr:greatswordNumenor").setTextureName("lotr:greatswordNumenor");

        ItemRegistration.register(greatswordAngmar,"greatswordAngmar",6707);
        ItemRegistration.register(greatswordLindon,"greatswordLindon",6708);
        ItemRegistration.register(greatswordDale,"greatswordDale",6709);
        ItemRegistration.register(greatswordNumenor,"greatswordNumenor",6710);

        linkLOTRWeapon(greatswordAngmar, "greatswordAngmar");
        linkLOTRWeapon(greatswordLindon, "greatswordLindon");
        linkLOTRWeapon(greatswordDale, "greatswordDale");
        linkLOTRWeapon(greatswordNumenor, "greatswordNumenor");

        // Misc
        cinderFurItem = (new CinderFurItem()).setUnlocalizedName("cinder_fur_item").setTextureName("lotr:cinder_fur_item_0");
        ItemRegistration.register(cinderFurItem,"cinderFurItem",6004);

        EVENT = getLOTRMaterialByName("EVENT");
        MATERIAL_JADE = getLOTRMaterialByName("JADE");
        MATERIAL_ARTIFACT = getLOTRMaterialByName("ARTIFACT");

        frostblade = (new LOTRItemSword(EVENT)).setUnlocalizedName("lotr:frostblade").setTextureName("lotr:frostblade");
        daggervoid = (new VoidDagger(EVENT)).addWeaponDamage(5.0F).setUnlocalizedName("lotr:daggerVoid").setTextureName("lotr:daggerVoid").setCreativeTab(null);
        spearsolidgold = (new LOTRItemSpear(EVENT)).setUnlocalizedName("lotr:spearsolidgold").setTextureName("lotr:spearsolidgold").setCreativeTab(null);
        spearUnnamed = (new UnnamedSpear(EVENT)).setUnlocalizedName("lotr:spearUnnamed").setTextureName("lotr:spearUnnamed").setCreativeTab(null);
        whip = (new Whip()).setUnlocalizedName("lotr:whip").setTextureName("lotr:whip");
        helmetbrokenhalo = (new BrokenHalo(EVENT, 0, "helmet")).setUnlocalizedName("lotr:helmetbrokenhalo").setTextureName("lotr:helmetbrokenhalo").setCreativeTab(null);
        helmetJade = (new LoEArmor(MATERIAL_JADE, 0, "helmet")).setUnlocalizedName("lotr:helmetJade").setTextureName("lotr:helmetJade").setCreativeTab(null);
        bodyJade = (new LoEArmor(MATERIAL_JADE, 1, "chestplate")).setUnlocalizedName("lotr:bodyJade").setTextureName("lotr:bodyJade").setCreativeTab(null);
        legsJade = (new LoEArmor(MATERIAL_JADE, 2,"leggings")).setUnlocalizedName("lotr:legsJade").setTextureName("lotr:legsJade").setCreativeTab(null);
        bootsJade = (new LoEArmor(MATERIAL_JADE, 3)).setUnlocalizedName("lotr:bootsJade").setTextureName("lotr:bootsJade").setCreativeTab(null);

        helmetDorLomin = (new LoEArmor(MATERIAL_ARTIFACT, 0, "dorlomin")).setUnlocalizedName("lotr:helmetDorLomin").setTextureName("lotr:helmetDorLomin").setCreativeTab(null);
        bodyIsildur = (new LoEArmor(MATERIAL_ARTIFACT, 1, "isildur")).setUnlocalizedName("lotr:bodyIsildur").setTextureName("lotr:bodyIsildur").setCreativeTab(null);
        bowLurtz = (new LOTRItemBow(MATERIAL_ARTIFACT, 1.5)).setDrawTime(30).setUnlocalizedName("lotr:bowLurtz").setTextureName("lotr:bowLurtz");

        forgingKit = (new ForgingKit());
        fieldRepairKit = new FieldRepairKit().setUnlocalizedName("lotr:field_repair_kit").setTextureName("lotr:field_repair_kit");

        ItemRegistration.register(frostblade, "frostblade", 6200);
        ItemRegistration.register(forgingKit,"forgingKit",6001);
        ItemRegistration.register(fieldRepairKit,"fieldRepairKit",6002);
        ItemRegistration.register(whip, "whip", 6110);
        ItemRegistration.register(daggervoid, "daggerVoid", 6201);
        ItemRegistration.register(spearsolidgold, "spearsolidgold", 6202);
        ItemRegistration.register(spearUnnamed, "spearUnnamed", 6203);
        ItemRegistration.register(helmetbrokenhalo, "brokenhalo", 6204);
        ItemRegistration.register(helmetJade, "helmetJade", 6205);
        ItemRegistration.register(bodyJade, "chestplateJade", 6206);
        ItemRegistration.register(legsJade, "legsJade", 6207);
        ItemRegistration.register(bootsJade, "bootsJade", 6208);

        ItemRegistration.register(helmetDorLomin, "helmetDorLomin", 6209);
        ItemRegistration.register(bodyIsildur, "bodyIsildur", 6210);
        ItemRegistration.register(bowLurtz, "bowLurtz", 6211);

        linkLOTRWeapon(bowLurtz, "bowLurtz");
        linkLOTRWeapon(frostblade, "frostblade");
        linkLOTRWeapon(daggervoid, "daggerVoid");
        linkLOTRWeapon(spearsolidgold, "spearsolidgold");
        linkLOTRWeapon(spearUnnamed, "spearUnnamed");
        linkLOTRWeapon(whip, "whip");

        // Common Tools/Weapons
        cleaver = (new LOTRItemDagger(Item.ToolMaterial.IRON)).setUnlocalizedName("lotr:cleaver").setTextureName("lotr:cleaver");
        warDart = (new WarDart()).setUnlocalizedName("war_dart").setTextureName("lotr:war_dart");
        warDartHeads = (new WarDartHeads()).setUnlocalizedName("war_dart_heads").setTextureName("lotr:war_dart_heads_0");

        ItemRegistration.register(cleaver,"cleaver",6109);

        ItemRegistration.register(warDart,"warDart",6111);
        ItemRegistration.register(warDartHeads,"warDartHeads",6500);

        //ASH
        MATERIAL_ASH = getLOTRMaterialByName("ASH");
        ingotAsh = new Item().setUnlocalizedName("lotr:ingotAsh").setTextureName("lotr:ingotAsh").setCreativeTab((CreativeTabs) materials);
        if (MATERIAL_ASH != null) {
            swordAsh = (new LOTRItemSword(MATERIAL_ASH)).addWeaponDamage(4.25F).setUnlocalizedName("lotr:swordAsh").setTextureName("lotr:swordAsh");
            staffAsh = (new LOTRItemPolearm(MATERIAL_ASH)).addWeaponDamage(5.5F).setUnlocalizedName("lotr:staffAsh").setTextureName("lotr:staffAsh");
            daggerAsh = (new LOTRItemDagger(MATERIAL_ASH)).addWeaponDamage(6.75F).setUnlocalizedName("lotr:daggerAsh").setTextureName("lotr:daggerAsh");
            hammerAsh = (new LOTRItemHammer(MATERIAL_ASH)).addWeaponDamage(5.5F).setUnlocalizedName("lotr:hammerAsh").setTextureName("lotr:hammerAsh");
            battleaxeAsh = (new LOTRItemBattleaxe(MATERIAL_ASH)).addWeaponDamage(5.5F).setUnlocalizedName("lotr:battleaxeAsh").setTextureName("lotr:battleaxeAsh");
            bowAsh = (new CinderBow(MATERIAL_ASH, 1.5, CinderLoE.ingotAsh)).setDrawTime(16).setUnlocalizedName("lotr:bowAsh").setTextureName("lotr:bowAsh");
            pikeAsh = (new LOTRItemPike(MATERIAL_ASH)).addWeaponDamage(5.0F).setUnlocalizedName("lotr:pikeAsh").setTextureName("lotr:pikeAsh");
            spearAsh = (new LOTRItemSpear(MATERIAL_ASH)).addWeaponDamage(5.0F).setUnlocalizedName("lotr:spearAsh").setTextureName("lotr:spearAsh");

            ItemRegistration.register(ingotAsh, "ingotAsh", 6100);
            ItemRegistration.register(swordAsh, "swordAsh", 6101);
            ItemRegistration.register(daggerAsh, "daggerAsh", 6102);
            ItemRegistration.register(hammerAsh, "hammerAsh", 6103);
            ItemRegistration.register(battleaxeAsh, "battleaxeAsh", 6104);
            ItemRegistration.register(bowAsh, "bowAsh", 6105);
            ItemRegistration.register(pikeAsh, "pikeAsh", 6106);
            ItemRegistration.register(spearAsh, "spearAsh", 6107);
            ItemRegistration.register(staffAsh, "staffAsh", 6108);
        } else {
            // Log an error or handle the case where the material could not be found
            System.err.println("Failed to find MATERIAL_ASH material for armor initialization.");
        }
        linkLOTRWeapon(swordAsh, "swordAsh");
        linkLOTRWeapon(daggerAsh, "daggerAsh");
        linkLOTRWeapon(hammerAsh, "hammerAsh");
        linkLOTRWeapon(battleaxeAsh, "battleaxeAsh");
        linkLOTRWeapon(bowAsh, "bowAsh");
        linkLOTRWeapon(pikeAsh, "pikeAsh");
        linkLOTRWeapon(spearAsh, "spearAsh");
        linkLOTRWeapon(staffAsh, "staffAsh");

        // Red Dwarves
        redDwarfSteel = new Item().setUnlocalizedName("lotr:redDwarfSteel").setTextureName("lotr:redDwarfSteel").setCreativeTab((CreativeTabs) materials);
        ItemRegistration.register(redDwarfSteel, "redDwarfSteel", 6002);

        MATERIAL_RED_DWARF = getLOTRMaterialByName("RED_DWARF");
        if (MATERIAL_RED_DWARF != null) {
            helmetRedDwarf = (new LoEArmor(MATERIAL_RED_DWARF, 0, "helmet", CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:helmetRedDwarf").setTextureName("lotr:helmetRedDwarf");
            bodyRedDwarf = (new LoEArmor(MATERIAL_RED_DWARF, 1, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:bodyRedDwarf").setTextureName("lotr:bodyRedDwarf");
            legsRedDwarf = (new LoEArmor(MATERIAL_RED_DWARF, 2, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:legsRedDwarf").setTextureName("lotr:legsRedDwarf");
            bootsRedDwarf = (new LoEArmor(MATERIAL_RED_DWARF, 3, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:bootsRedDwarf").setTextureName("lotr:bootsRedDwarf");
            spearRedDwarf = (new LoESpear(MATERIAL_RED_DWARF, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:spearRedDwarf").setTextureName("lotr:spearRedDwarf");
            swordRedDwarf = (new LoESword(MATERIAL_RED_DWARF, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:swordRedDwarf").setTextureName("lotr:swordRedDwarf");
            battleaxeRedDwarf = (new LoEBattleAxe(MATERIAL_RED_DWARF, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:battleaxeRedDwarf").setTextureName("lotr:battleaxeRedDwarf");
            pikeRedDwarf = (new LoEPike(MATERIAL_RED_DWARF, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:pikeRedDwarf").setTextureName("lotr:pikeRedDwarf");
            hammerRedDwarf = (new LoEHammer(MATERIAL_RED_DWARF, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:hammerRedDwarf").setTextureName("lotr:hammerRedDwarf");
            daggerRedDwarf = (new LoEDagger(MATERIAL_RED_DWARF, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:daggerRedDwarf").setTextureName("lotr:daggerRedDwarf");
            daggerRedDwarfPoisoned = (new LoEDagger(MATERIAL_RED_DWARF, LOTRItemDagger.DaggerEffect.POISON, CinderLoE.redDwarfSteel)).setUnlocalizedName("lotr:daggerRedDwarfPoisoned").setTextureName("lotr:daggerRedDwarfPoisoned");
            crossbowRedDwarf = (new LOTRItemCrossbow(MATERIAL_RED_DWARF)).setUnlocalizedName("lotr:crossbowRedDwarf").setTextureName("lotr:crossbowRedDwarf");
            boarArmorRedDwarf = (new LOTRItemMountArmor(MATERIAL_RED_DWARF, LOTRItemMountArmor.Mount.BOAR)).setUnlocalizedName("lotr:boarArmorRedDwarf").setTextureName("lotr:boarArmorRedDwarf");

            ItemRegistration.register(helmetRedDwarf, "helmetRedDwarf", 6400);
            ItemRegistration.register(bodyRedDwarf, "bodyRedDwarf", 6401);
            ItemRegistration.register(legsRedDwarf, "legsRedDwarf", 6402);
            ItemRegistration.register(bootsRedDwarf, "bootsRedDwarf", 6403);
            ItemRegistration.register(spearRedDwarf, "spearRedDwarf", 6404);
            ItemRegistration.register(swordRedDwarf, "swordRedDwarf", 6405);
            ItemRegistration.register(battleaxeRedDwarf, "battleaxeRedDwarf", 6406);
            ItemRegistration.register(pikeRedDwarf, "pikeRedDwarf", 6407);
            ItemRegistration.register(hammerRedDwarf, "hammerRedDwarf", 6408);
            ItemRegistration.register(daggerRedDwarf, "daggerRedDwarf", 6409);
            ItemRegistration.register(daggerRedDwarfPoisoned, "daggerRedDwarfPoisoned", 6410);
            ItemRegistration.register(crossbowRedDwarf, "crossbowRedDwarf", 6411);
            ItemRegistration.register(boarArmorRedDwarf, "boarArmorRedDwarf", 6412);
//            System.out.println("Registered red dwarf equipment");
        } else {
            // Log an error or handle the case where the material could not be found
            System.err.println("Failed to find RED_DWARF material for armor initialization.");
        }
        linkLOTRWeapon(spearRedDwarf, "spearRedDwarf");
        linkLOTRWeapon(swordRedDwarf, "swordRedDwarf");
        linkLOTRWeapon(battleaxeRedDwarf, "battleaxeRedDwarf");
        linkLOTRWeapon(pikeRedDwarf, "pikeRedDwarf");
        linkLOTRWeapon(hammerRedDwarf, "hammerRedDwarf");
        linkLOTRWeapon(daggerRedDwarf, "daggerRedDwarf");
        linkLOTRWeapon(daggerRedDwarfPoisoned, "daggerRedDwarfPoisoned");
        linkLOTRWeapon(crossbowRedDwarf, "crossbowRedDwarf");

        // Limwaith

        bonemold = new Item().setUnlocalizedName("lotr:bonemold").setTextureName("lotr:bonemold").setCreativeTab((CreativeTabs) materials);
        ItemRegistration.register(bonemold, "bonemold", 6000);

        MATERIAL_LIMWAITH_WOOD = getLOTRMaterialByName("LIMWAITH_WOOD");
        MATERIAL_BONEMOLD = getLOTRMaterialByName("BONEMOLD");
        if (MATERIAL_LIMWAITH_WOOD != null && MATERIAL_BONEMOLD != null) {
            helmetLimwaith = (new LoEArmor(MATERIAL_LIMWAITH_WOOD, 0, LOTRMod.reeds)).setUnlocalizedName("lotr:helmetLimwaith").setTextureName("lotr:helmetLimwaith");
            bodyLimwaith = (new LoEArmor(MATERIAL_LIMWAITH_WOOD, 1, LOTRMod.reeds)).setUnlocalizedName("lotr:bodyLimwaith").setTextureName("lotr:bodyLimwaith");
            legsLimwaith = (new LoEArmor(MATERIAL_LIMWAITH_WOOD, 2, LOTRMod.reeds)).setUnlocalizedName("lotr:legsLimwaith").setTextureName("lotr:legsLimwaith");
            bootsLimwaith = (new LoEArmor(MATERIAL_LIMWAITH_WOOD, 3, LOTRMod.reeds)).setUnlocalizedName("lotr:bootsLimwaith").setTextureName("lotr:bootsLimwaith");

            helmetboneLimwaith = (new LoEArmor(MATERIAL_BONEMOLD, 0, CinderLoE.bonemold)).setUnlocalizedName("lotr:helmetboneLimwaith").setTextureName("lotr:helmetboneLimwaith");
            bodyboneLimwaith = (new LoEArmor(MATERIAL_BONEMOLD, 1, CinderLoE.bonemold)).setUnlocalizedName("lotr:bodyboneLimwaith").setTextureName("lotr:bodyboneLimwaith");
            legsboneLimwaith = (new LoEArmor(MATERIAL_BONEMOLD, 2, CinderLoE.bonemold)).setUnlocalizedName("lotr:legsboneLimwaith").setTextureName("lotr:legsboneLimwaith");
            bootsboneLimwaith = (new LoEArmor(MATERIAL_BONEMOLD, 3, CinderLoE.bonemold)).setUnlocalizedName("lotr:bootsboneLimwaith").setTextureName("lotr:bootsboneLimwaith");

            spearLimwaith = (new LoESpear(MATERIAL_BONEMOLD, CinderLoE.bonemold)).setUnlocalizedName("lotr:spearLimwaith").setTextureName("lotr:spearLimwaith");
            truncheonLimwaith = (new LoESword(MATERIAL_BONEMOLD, CinderLoE.bonemold)).setUnlocalizedName("lotr:truncheonLimwaith").setTextureName("lotr:truncheonLimwaith");
            battleaxeLimwaith = (new LoEBattleAxe(MATERIAL_BONEMOLD, CinderLoE.bonemold)).setUnlocalizedName("lotr:battleaxeLimwaith").setTextureName("lotr:battleaxeLimwaith");
            tridentLimwaith = (new LOTRItemTrident(MATERIAL_BONEMOLD)).setUnlocalizedName("lotr:tridentLimwaith").setTextureName("lotr:tridentLimwaith");
            daggerLimwaith = (new LoEDagger(MATERIAL_BONEMOLD, CinderLoE.bonemold)).setUnlocalizedName("lotr:daggerLimwaith").setTextureName("lotr:daggerLimwaith");
            daggerLimwaithPoisoned = (new LoEDagger(MATERIAL_BONEMOLD, LOTRItemDagger.DaggerEffect.POISON, CinderLoE.bonemold)).setUnlocalizedName("lotr:daggerLimwaithPoisoned").setTextureName("lotr:daggerLimwaithPoisoned");
            blowgunLimwaith = (new LOTRItemBlowgun(LOTRMaterial.TAUREDAIN)).setUnlocalizedName("lotr:blowgunLimwaith").setTextureName("lotr:blowgunLimwaith");

            ItemRegistration.register(helmetLimwaith, "helmetLimwaith", 6420);
            ItemRegistration.register(bodyLimwaith, "bodyLimwaith", 6421);
            ItemRegistration.register(legsLimwaith, "legsLimwaith", 6422);
            ItemRegistration.register(bootsLimwaith, "bootsLimwaith", 6423);

            ItemRegistration.register(helmetboneLimwaith, "helmetboneLimwaith", 6424);
            ItemRegistration.register(bodyboneLimwaith, "bodyboneLimwaith", 6425);
            ItemRegistration.register(legsboneLimwaith, "legsboneLimwaith", 6426);
            ItemRegistration.register(bootsboneLimwaith, "bootsboneLimwaith", 6427);

            ItemRegistration.register(spearLimwaith, "spearLimwaith", 6428);
            ItemRegistration.register(tridentLimwaith, "tridentLimwaith", 6429);
            ItemRegistration.register(truncheonLimwaith, "truncheonLimwaith", 6430);
            ItemRegistration.register(battleaxeLimwaith, "battleaxeLimwaith", 6431);
            ItemRegistration.register(daggerLimwaith, "daggerLimwaith", 6432);
            ItemRegistration.register(daggerLimwaithPoisoned, "daggerLimwaithPoisoned", 6433);
            ItemRegistration.register(blowgunLimwaith, "blowgunLimwaith", 6434);
        } else {
            System.err.println("Failed to find LIMWAITH material for armor initialization.");
        }
        linkLOTRWeapon(spearLimwaith, "spearLimwaith");
        linkLOTRWeapon(truncheonLimwaith, "truncheonLimwaith");
        linkLOTRWeapon(battleaxeLimwaith, "battleaxeLimwaith");
        linkLOTRWeapon(tridentLimwaith, "tridentLimwaith");
        linkLOTRWeapon(daggerLimwaith, "daggerLimwaith");
        linkLOTRWeapon(daggerLimwaithPoisoned, "daggerLimwaithPoisoned");
        linkLOTRWeapon(blowgunLimwaith, "blowgunLimwaith");

        //Bree
        MATERIAL_BREE = getLOTRMaterialByName("BREE");
        if (MATERIAL_BREE != null) {
            helmetBreeKettle = (new LoEArmor(MATERIAL_BREE, 0, "helmet")).setUnlocalizedName("lotr:helmetBreeKettle").setTextureName("lotr:breekettlehelmet");
            helmetBree = (new LoEArmor(MATERIAL_BREE, 0)).setUnlocalizedName("lotr:helmetBree").setTextureName("lotr:helmetBree");
            bodyBree = (new LoEArmor(MATERIAL_BREE, 1)).setUnlocalizedName("lotr:bodyBree").setTextureName("lotr:bodyBree");
            legsBree = (new LoEArmor(MATERIAL_BREE, 2)).setUnlocalizedName("lotr:legsBree").setTextureName("lotr:legsBree");
            bootsBree = (new LoEArmor(MATERIAL_BREE, 3)).setUnlocalizedName("lotr:bootsBree").setTextureName("lotr:bootsBree");
            swordBree = (new LoESword(MATERIAL_BREE, Items.iron_ingot)).setUnlocalizedName("lotr:swordBree").setTextureName("lotr:swordBree");

            ItemRegistration.register(helmetBreeKettle, "breekettle", 6440);
            ItemRegistration.register(helmetBree, "helmetBree", 6441);
            ItemRegistration.register(bodyBree, "bodyBree", 6442);
            ItemRegistration.register(legsBree, "legsBree", 6443);
            ItemRegistration.register(bootsBree, "bootsBree", 6444);
            ItemRegistration.register(swordBree, "swordBree", 6445);
        } else {
            System.err.println("Failed to find BREE material for armor initialization.");
        }
        linkLOTRWeapon(swordBree, "swordBree");

        //Elite Armors

        MATERIAL_SERPENT = getLOTRMaterialByName("SERPENT");
        if (MATERIAL_SERPENT != null) {
            helmetserpent = (new LoEArmor(MATERIAL_SERPENT, 0, LOTRMod.bronze)).setUnlocalizedName("lotr:helmetserpent").setTextureName("lotr:helmetserpent");
            bodyserpent = (new LoEArmor(MATERIAL_SERPENT, 1, "chestplate", LOTRMod.bronze)).setUnlocalizedName("lotr:bodyserpent").setTextureName("lotr:bodyserpent");
            legsserpent = (new LoEArmor(MATERIAL_SERPENT, 2, LOTRMod.bronze)).setUnlocalizedName("lotr:legsserpent").setTextureName("lotr:legsserpent");
            bootsserpent = (new LoEArmor(MATERIAL_SERPENT, 3, LOTRMod.bronze)).setUnlocalizedName("lotr:bootsserpent").setTextureName("lotr:bootsserpent");

            ItemRegistration.register(helmetserpent, "helmetserpent", 6800);
            ItemRegistration.register(bodyserpent, "bodyserpent", 6801);
            ItemRegistration.register(legsserpent, "legsserpent", 6802);
            ItemRegistration.register(bootsserpent, "bootsserpent", 6803);
        } else {
            System.err.println("Failed to find SERPENT material for armor initialization.");
        }
        MATERIAL_USURPER = getLOTRMaterialByName("USURPER");
        if (MATERIAL_USURPER != null) {
            helmetUsurper = (new LoEArmor(MATERIAL_USURPER, 0, "helmet", Items.iron_ingot)).setUnlocalizedName("lotr:helmetUsurper").setTextureName("lotr:helmetUsurper");
            bodyUsurper = (new LoEArmor(MATERIAL_USURPER, 1, Items.iron_ingot)).setUnlocalizedName("lotr:bodyUsurper").setTextureName("lotr:bodyUsurper");
            legsUsurper = (new LoEArmor(MATERIAL_USURPER, 2, Items.iron_ingot)).setUnlocalizedName("lotr:legsUsurper").setTextureName("lotr:legsUsurper");
            bootsUsurper = (new LoEArmor(MATERIAL_USURPER, 3, Items.iron_ingot)).setUnlocalizedName("lotr:bootsUsurper").setTextureName("lotr:bootsUsurper");


            ItemRegistration.register(helmetUsurper, "helmetUsurper", 6804);
            ItemRegistration.register(bodyUsurper, "bodyUsurper", 6805);
            ItemRegistration.register(legsUsurper, "legsUsurper", 6806);
            ItemRegistration.register(bootsUsurper, "bootsUsurper", 6807);

        } else {
            System.err.println("Failed to find USURPER material for armor initialization.");
        }
        MATERIAL_WARLORD = getLOTRMaterialByName("WARLORD");
        if (MATERIAL_WARLORD != null) {
            helmetWarlord = (new LoEArmor(MATERIAL_WARLORD, 0, "helmet", LOTRMod.bronze)).setUnlocalizedName("lotr:helmetWarlord").setTextureName("lotr:helmetWarlord").setCreativeTab(null);
            bodyWarlord = (new LoEArmor(MATERIAL_WARLORD, 1, LOTRMod.bronze)).setUnlocalizedName("lotr:bodyWarlord").setTextureName("lotr:bodyWarlord").setCreativeTab(null);
            legsWarlord = (new LoEArmor(MATERIAL_WARLORD, 2, LOTRMod.bronze)).setUnlocalizedName("lotr:legsWarlord").setTextureName("lotr:legsWarlord").setCreativeTab(null);
            bootsWarlord = (new LoEArmor(MATERIAL_WARLORD, 3, LOTRMod.bronze)).setUnlocalizedName("lotr:bootsWarlord").setTextureName("lotr:bootsWarlord").setCreativeTab(null);
            maceWarlord = (new LOTRItemHammer(MATERIAL_WARLORD)).setUnlocalizedName("lotr:maceWarlord").setTextureName("lotr:maceWarlord");

            ItemRegistration.register(helmetWarlord, "helmetWarlord", 6808);
            ItemRegistration.register(bodyWarlord, "bodyWarlord", 6809);
            ItemRegistration.register(legsWarlord, "legsWarlord", 6810);
            ItemRegistration.register(bootsWarlord, "bootsWarlord", 6811);
            ItemRegistration.registerItem(maceWarlord, "maceWarlord", 6812);
        } else {
            System.err.println("Failed to find WARLORD material for armor initialization.");
        }
        linkLOTRWeapon(maceWarlord, "maceWarlord");

        MATERIAL_GILDEDGALVORN = getLOTRMaterialByName("GILDEDGALVORN");
        if (MATERIAL_GILDEDGALVORN != null) {
            helmetGildedGalvorn = (new LoEArmor(MATERIAL_GILDEDGALVORN, 0, "helmet", LOTRMod.galvorn)).setUnlocalizedName("lotr:helmetGildedGalvorn").setTextureName("lotr:helmetGildedGalvorn");
            bodyGildedGalvorn = (new LoEArmor(MATERIAL_GILDEDGALVORN, 1, LOTRMod.galvorn)).setUnlocalizedName("lotr:bodyGildedGalvorn").setTextureName("lotr:bodyGildedGalvorn");
            legsGildedGalvorn = (new LoEArmor(MATERIAL_GILDEDGALVORN, 2, LOTRMod.galvorn)).setUnlocalizedName("lotr:legsGildedGalvorn").setTextureName("lotr:legsGildedGalvorn");
            bootsGildedGalvorn = (new LoEArmor(MATERIAL_GILDEDGALVORN, 3, LOTRMod.galvorn)).setUnlocalizedName("lotr:bootsGildedGalvorn").setTextureName("lotr:bootsGildedGalvorn");

            ItemRegistration.register(helmetGildedGalvorn, "helmetGildedGalvorn", 6813);
            ItemRegistration.register(bodyGildedGalvorn, "bodyGildedGalvorn", 6814);
            ItemRegistration.register(legsGildedGalvorn, "legsGildedGalvorn", 6815);
            ItemRegistration.register(bootsGildedGalvorn, "bootsGildedGalvorn", 6816);
        } else {
            System.err.println("Failed to find WARLORD material for armor initialization.");
        }

        MATERIAL_ESGAROTH = getLOTRMaterialByName("ESGAROTH");
        if (MATERIAL_ESGAROTH != null) {
            helmetEsgaroth = (new LoEArmor(MATERIAL_ESGAROTH, 0, "helmet", Items.iron_ingot)).setUnlocalizedName("lotr:helmetEsgaroth").setTextureName("lotr:helmetEsgaroth");
            bodyEsgaroth = (new LoEArmor(MATERIAL_ESGAROTH, 1, Items.iron_ingot)).setUnlocalizedName("lotr:bodyEsgaroth").setTextureName("lotr:bodyEsgaroth");
            legsEsgaroth = (new LoEArmor(MATERIAL_ESGAROTH, 2, Items.iron_ingot)).setUnlocalizedName("lotr:legsEsgaroth").setTextureName("lotr:legsEsgaroth");
            bootsEsgaroth = (new LoEArmor(MATERIAL_ESGAROTH, 3, Items.iron_ingot)).setUnlocalizedName("lotr:bootsEsgaroth").setTextureName("lotr:bootsEsgaroth");


            ItemRegistration.register(helmetEsgaroth, "helmetEsgaroth", 6817);
            ItemRegistration.register(bodyEsgaroth, "bodyEsgaroth", 6818);
            ItemRegistration.register(legsEsgaroth, "legsEsgaroth", 6819);
            ItemRegistration.register(bootsEsgaroth, "bootsEsgaroth", 6820);

        } else {
            System.err.println("Failed to find ESGAROTH material for armor initialization.");
        }

        MATERIAL_DORWINIONELITE = getLOTRMaterialByName("DORWINIONELITE");
        if (MATERIAL_DORWINIONELITE != null) {
            helmetDorwinionElite = (new LoEArmor(MATERIAL_DORWINIONELITE, 0, "helmet", LOTRMod.elfSteel)).setUnlocalizedName("lotr:helmetDorwinionElite").setTextureName("lotr:helmetDorwinionElite");
            bodyDorwinionElite = (new LoEArmor(MATERIAL_DORWINIONELITE, 1, "chestplate", LOTRMod.elfSteel)).setUnlocalizedName("lotr:bodyDorwinionElite").setTextureName("lotr:bodyDorwinionElite");
            legsDorwinionElite = (new LoEArmor(MATERIAL_DORWINIONELITE, 2, LOTRMod.elfSteel)).setUnlocalizedName("lotr:legsDorwinionElite").setTextureName("lotr:legsDorwinionElite");
            bootsDorwinionElite = (new LoEArmor(MATERIAL_DORWINIONELITE, 3, LOTRMod.elfSteel)).setUnlocalizedName("lotr:bootsDorwinionElite").setTextureName("lotr:bootsDorwinionElite");


            ItemRegistration.register(helmetDorwinionElite, "helmetDorwinionElite", 6821);
            ItemRegistration.register(bodyDorwinionElite, "bodyDorwinionElite", 6822);
            ItemRegistration.register(legsDorwinionElite, "legsDorwinionElite", 6823);
            ItemRegistration.register(bootsDorwinionElite, "bootsDorwinionElite", 6824);

        } else {
            System.err.println("Failed to find DORWINIONELITE material for armor initialization.");
        }


        //Rhudaur
        MATERIAL_RHUDAUR = getLOTRMaterialByName("RHUDAUR");
        if (MATERIAL_RHUDAUR != null) {
            helmetRhudaur = (new LoEArmor(MATERIAL_RHUDAUR, 0, "helmet", Items.iron_ingot)).setUnlocalizedName("lotr:helmetRhudaur").setTextureName("lotr:helmetRhudaur");
            bodyRhudaur = (new LoEArmor(MATERIAL_RHUDAUR, 1, Items.iron_ingot)).setUnlocalizedName("lotr:bodyRhudaur").setTextureName("lotr:bodyRhudaur");
            legsRhudaur = (new LoEArmor(MATERIAL_RHUDAUR, 2, Items.iron_ingot)).setUnlocalizedName("lotr:legsRhudaur").setTextureName("lotr:legsRhudaur");
            bootsRhudaur = (new LoEArmor(MATERIAL_RHUDAUR, 3, Items.iron_ingot)).setUnlocalizedName("lotr:bootsRhudaur").setTextureName("lotr:bootsRhudaur");

            ItemRegistration.register(helmetRhudaur, "helmetRhudaur",6450);
            ItemRegistration.register(bodyRhudaur, "bodyRhudaur", 6451);
            ItemRegistration.register(legsRhudaur, "legsRhudaur", 6452);
            ItemRegistration.register(bootsRhudaur, "bootsRhudaur", 6453);
        } else {
            System.err.println("Failed to find RHUDAUR material for armor initialization.");
        }
        //Arnor
        MATERIAL_BATTLENUN = getLOTRMaterialByName("BATTLENUN");
        if (MATERIAL_BATTLENUN != null) {
            helmetArnorBanner = (new LoEArmor(MATERIAL_BATTLENUN, 0, Items.iron_ingot)).setUnlocalizedName("lotr:helmetArnorBanner").setTextureName("lotr:helmetArnorBanner");
            bodyArnorBanner = (new LoEArmor(MATERIAL_BATTLENUN, 1, Items.iron_ingot)).setUnlocalizedName("lotr:bodyArnorBanner").setTextureName("lotr:bodyArnorBanner");
            legsArnorBanner = (new LoEArmor(MATERIAL_BATTLENUN, 2, Items.iron_ingot)).setUnlocalizedName("lotr:legsArnorBanner").setTextureName("lotr:legsArnorBanner");
            bootsArnorBanner = (new LoEArmor(MATERIAL_BATTLENUN, 3, Items.iron_ingot)).setUnlocalizedName("lotr:bootsArnorBanner").setTextureName("lotr:bootsArnorBanner");
            maceArnor = (new LOTRItemHammer(LOTRMaterial.ARNOR)).setUnlocalizedName("lotr:maceArnor").setTextureName("lotr:maceArnor");

            ItemRegistration.register(helmetArnorBanner, "helmetArnorBanner", 6460);
            ItemRegistration.register(bodyArnorBanner, "bodyArnorBanner", 6461);
            ItemRegistration.register(legsArnorBanner, "legsArnorBanner", 6462);
            ItemRegistration.register(bootsArnorBanner, "bootsArnorBanner", 6463);
            ItemRegistration.register(maceArnor, "maceArnor", 6464);
        } else {
            System.err.println("Failed to find ARNOR material for armor initialization.");
        }
        linkLOTRWeapon(maceArnor, "maceArnor");

        // Sunlit Warden
        MATERIAL_ORTHANC_GUARD = getLOTRMaterialByName("ORTHANC_GUARD");
        if (MATERIAL_ORTHANC_GUARD != null) {
            helmetOrthancGuard = (new LoEArmor(MATERIAL_ORTHANC_GUARD, 0, "helmet", LOTRMod.urukSteel)).setUnlocalizedName("lotr:helmetOrthancGuard").setTextureName("lotr:helmetOrthancGuard");
            bodyOrthancGuard = (new LoEArmor(MATERIAL_ORTHANC_GUARD, 1, LOTRMod.urukSteel)).setUnlocalizedName("lotr:bodyOrthancGuard").setTextureName("lotr:bodyOrthancGuard");
            legsOrthancGuard = (new LoEArmor(MATERIAL_ORTHANC_GUARD, 2, LOTRMod.urukSteel)).setUnlocalizedName("lotr:legsOrthancGuard").setTextureName("lotr:legsOrthancGuard");
            bootsOrthancGuard = (new LoEArmor(MATERIAL_ORTHANC_GUARD, 3, LOTRMod.urukSteel)).setUnlocalizedName("lotr:bootsOrthancGuard").setTextureName("lotr:bootsOrthancGuard");

            ItemRegistration.register(helmetOrthancGuard, "helmetOrthancGuard", 6465);
            ItemRegistration.register(bodyOrthancGuard, "bodyOrthancGuard", 6466);
            ItemRegistration.register(legsOrthancGuard, "legsOrthancGuard", 6467);
            ItemRegistration.register(bootsOrthancGuard, "bootsOrthancGuard", 6468);
        } else {
            System.err.println("Failed to find ORTHANC_GUARD material for armor initialization.");
        }

        /**
         * Dungeon equipment
         */

        // Sunlit Warden
        MATERIAL_SUNLIT_WARDEN = getLOTRMaterialByName("SUNLIT_WARDEN");
        if (MATERIAL_SUNLIT_WARDEN != null) {
            helmetSunlitWarden = (new LoEArmor(MATERIAL_SUNLIT_WARDEN, 0, "helmet", LOTRMod.elfSteel)).setUnlocalizedName("lotr:helmetSunlitWarden").setTextureName("lotr:helmetSunlitWarden");
            bodySunlitWarden = (new LoEArmor(MATERIAL_SUNLIT_WARDEN, 1, LOTRMod.elfSteel)).setUnlocalizedName("lotr:bodySunlitWarden").setTextureName("lotr:bodySunlitWarden");
            legsSunlitWarden = (new LoEArmor(MATERIAL_SUNLIT_WARDEN, 2, LOTRMod.elfSteel)).setUnlocalizedName("lotr:legsSunlitWarden").setTextureName("lotr:legsSunlitWarden");
            bootsSunlitWarden = (new LoEArmor(MATERIAL_SUNLIT_WARDEN, 3, LOTRMod.elfSteel)).setUnlocalizedName("lotr:bootsSunlitWarden").setTextureName("lotr:bootsSunlitWarden");
            greatswordLight = (new LoEGreatSword(MATERIAL_SUNLIT_WARDEN, (Item)LOTRMod.mithril)).setIsElvenBlade().setUnlocalizedName("lotr:greatswordLight").setTextureName("lotr:greatswordLight");
            effigyOfWrath = new LOTRItemEnchantment(LOTREnchantment.getEnchantmentByName("wrath")).setUnlocalizedName("lotr:effigy_of_wrath").setTextureName("lotr:effigy_of_wrath").setCreativeTab(LoECreativeTabs.tabMiscLoE);;

            ItemRegistration.register(helmetSunlitWarden, "helmetSunlitWarden", 7001);
            ItemRegistration.register(bodySunlitWarden, "bodySunlitWarden", 7002);
            ItemRegistration.register(legsSunlitWarden, "legsSunlitWarden", 7003);
            ItemRegistration.register(bootsSunlitWarden, "bootsSunlitWarden", 7004);
            ItemRegistration.register(greatswordLight, "greatswordLight", 7005);
            ItemRegistration.register(effigyOfWrath,"effigyOfWrath",7006);
        } else {
            System.err.println("Failed to find SUNLIT_WARDEN material for armor initialization.");
        }
        linkLOTRWeapon(greatswordLight, "greatswordLight");
    }

    public static ModContainer getModContainer() {
        return FMLCommonHandler.instance()
            .findContainerFor(instance);
    }

    public void linkLOTRWeapon(Item item, String weapon_name) {
        try {
            Field field = LOTRMod.class.getField(weapon_name);
            field.set(null, item);
        } catch (Exception e) {
            System.err.println("[CinderLoE] linkLOTRWeapon: Failed to find field " + weapon_name + " in LOTRMod!");
        }
    }

    public static class CommonProxy {
        public void setup() {
        }
    }

    public static class ClientProxy extends CommonProxy {
        @Override
        public void setup() {
       //     RenderingRegistry.registerEntityRenderingHandler(HaradLevy.class, new LOTRRenderNearHaradrim());
        //    RenderingRegistry.registerEntityRenderingHandler(DwarfLevy.class, new LOTRRenderDwarf());

            RenderingRegistry.registerEntityRenderingHandler(EntityWarDart.class, new RenderWarDart());
            RenderingRegistry.registerEntityRenderingHandler(EntityMorgulBlast.class, new RenderMorgulBlast());
            RenderingRegistry.registerEntityRenderingHandler(BladorthinSmith.class, new LOTRRenderDorwinionElfVintner());

            RenderingRegistry.registerEntityRenderingHandler(AngmarOrcSmith.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(AngmarOrcBrewer.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(AngmarOrcSmith.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(DolGuldurOrcBrewer.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(DolGuldurOrcButcher.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(DolGuldurOrcSmith.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(GundabadOrcBrewer.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(GundabadOrcButcher.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(GundabadOrcSmith.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(IsengardOrcBrewer.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(IsengardOrcButcher.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(IsengardOrcSmith.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(MordorOrcBrewer.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(MordorOrcButcher.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(MordorOrcSmith.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(HalfTrollBrewer.class, new LOTRRenderHalfTrollScavenger());
            RenderingRegistry.registerEntityRenderingHandler(HalfTrollButcher.class, new LOTRRenderHalfTrollScavenger());

            RenderingRegistry.registerEntityRenderingHandler(DarkSpider.class, new RenderDarkSpider());
            RenderingRegistry.registerEntityRenderingHandler(CorruptDwarf.class, new RenderCorruptDwarf());
            RenderingRegistry.registerEntityRenderingHandler(CorruptElf.class, new RenderCorruptElf());
            RenderingRegistry.registerEntityRenderingHandler(CorruptEnt.class, new RenderCorruptEnt());
            RenderingRegistry.registerEntityRenderingHandler(CorruptHobbit.class, new RenderCorruptHobbit());
            RenderingRegistry.registerEntityRenderingHandler(CorruptMan.class, new RenderCorruptMan());
            RenderingRegistry.registerEntityRenderingHandler(CorruptOrc.class, new RenderCorruptOrc());
            RenderingRegistry.registerEntityRenderingHandler(CorruptSkeleton.class, new RenderCorruptSkeleton());
            RenderingRegistry.registerEntityRenderingHandler(CorruptSkeletonArcher.class, new RenderCorruptSkeleton());

            RenderingRegistry.registerEntityRenderingHandler(SarumanFireball.class, new RenderSarumanFireball());
            RenderingRegistry.registerEntityRenderingHandler(SarumanWhiteFireball.class, new RenderSarumanWhiteFireball());
            RenderingRegistry.registerEntityRenderingHandler(Renegade.class, new RenderRenegade());
            RenderingRegistry.registerEntityRenderingHandler(RenegadeCaptain.class, new RenderRenegade());
            RenderingRegistry.registerEntityRenderingHandler(Wraith.class, new RenderWraith());
            RenderingRegistry.registerEntityRenderingHandler(Monkey.class, new RenderMonkey());
            RenderingRegistry.registerEntityRenderingHandler(CryptBoss.class, new RenderCryptBoss());

            RenderingRegistry.registerEntityRenderingHandler(RedDwarfWarrior.class, new LOTRRenderDwarf());
            RenderingRegistry.registerEntityRenderingHandler(RedDwarfArbalest.class, new LOTRRenderDwarf());
            RenderingRegistry.registerEntityRenderingHandler(RedDwarfBannerBearer.class, new LOTRRenderDwarf());
            RenderingRegistry.registerEntityRenderingHandler(RedDwarfCommander.class, new LOTRRenderDwarf());
            RenderingRegistry.registerEntityRenderingHandler(RedDwarfSmith.class, new LOTRRenderDwarf());

            RenderingRegistry.registerEntityRenderingHandler(Limwaith.class, new RenderLimwaith());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithFishmonger.class, new RenderLimwaith());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithShaman.class, new RenderLimwaithShaman());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithWarrior.class, new RenderLimwaith());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithBoneWarrior.class, new RenderLimwaith());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithBlowgunner.class, new RenderLimwaith());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithBannerBearer.class, new RenderLimwaith());
            RenderingRegistry.registerEntityRenderingHandler(LimwaithChieftain.class, new RenderLimwaith());

            //RenderingRegistry.registerEntityRenderingHandler(LimwaithCrocodile.class, new RenderTamedCrocodile());
            RenderingRegistry.registerEntityRenderingHandler(FangornBear.class, new RenderFangornBear());
            RenderingRegistry.registerEntityRenderingHandler(FangornWildBoar.class, new RenderFangornWildBoar());
            RenderingRegistry.registerEntityRenderingHandler(FangornAuroch.class, new RenderFangornAuroch());
            RenderingRegistry.registerEntityRenderingHandler(FangornElk.class, new RenderFangornElk());
            RenderingRegistry.registerEntityRenderingHandler(FangornWolf.class, new RenderFangornWolf());

            RenderingRegistry.registerEntityRenderingHandler(ArnorSoldier.class, new LOTRRenderDunedain());
            RenderingRegistry.registerEntityRenderingHandler(ArnorSoldierArcher.class, new LOTRRenderDunedain());
            RenderingRegistry.registerEntityRenderingHandler(ArnorCaptain.class, new LOTRRenderDunedain());
            RenderingRegistry.registerEntityRenderingHandler(ArnorBannerBearer.class, new LOTRRenderDunedain());
            RenderingRegistry.registerEntityRenderingHandler(BattleNun.class, new RenderBattleNun());

            RenderingRegistry.registerEntityRenderingHandler(BreeSoldier.class, new LOTRRenderBreeMan());
            RenderingRegistry.registerEntityRenderingHandler(BreeCrossbowman.class, new LOTRRenderBreeMan());
            RenderingRegistry.registerEntityRenderingHandler(BreeCaptain.class, new LOTRRenderBreeMan());
            RenderingRegistry.registerEntityRenderingHandler(BreeSoldierBannerBearer.class, new LOTRRenderBreeMan());
            RenderingRegistry.registerEntityRenderingHandler(BreeOutrider.class, new LOTRRenderBreeMan());

            RenderingRegistry.registerEntityRenderingHandler(HobbitBannerBearer.class, new LOTRRenderHobbit());

            RenderingRegistry.registerEntityRenderingHandler(LOTREntitySauron.class, new LOTRRenderSauron());
            RenderingRegistry.registerEntityRenderingHandler(UtumnoSlaveTrader.class, new RenderUtumnoSlave());
            ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMistBlock.class, (TileEntitySpecialRenderer)new LOTRRenderUtumnoPortal());

            RenderingRegistry.registerEntityRenderingHandler(Sirrandrai.class, new LOTRRenderElf());
            RenderingRegistry.registerEntityRenderingHandler(TauredainTrueBlood.class, new LOTRRenderTauredain());
            RenderingRegistry.registerEntityRenderingHandler(EsgarothSoldier.class, new LOTRRenderDaleMan());
            RenderingRegistry.registerEntityRenderingHandler(MorgulOrc.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(NorthernOrc.class, new LOTRRenderOrc());
            RenderingRegistry.registerEntityRenderingHandler(StrongHillTrollChieftain.class, new LOTRRenderMountainTrollChieftain());
        }
    }

    public static class ServerProxy extends CommonProxy {
        @Override
        public void setup() {
        }
    }

    public void modifySpawnLists() {
        try {
            // Retrieve the constructor of LOTRSpawnList class
            Constructor<LOTRSpawnList> constructor = LOTRSpawnList.class.getDeclaredConstructor(LOTRSpawnEntry[].class);
            constructor.setAccessible(true); // Make the private constructor accessible

            // RED_DWARF is initialized earlier in this class
            LOTRSpawnList RED_DWARF = constructor.newInstance((Object) new LOTRSpawnEntry[]{
                new LOTRSpawnEntry(LOTREntityDwarf.class, 100, 4, 4),
                new LOTRSpawnEntry(LOTREntityDwarfMiner.class, 15, 1, 3),
                new LOTRSpawnEntry(RedDwarfWarrior.class, 20, 4, 4),
                new LOTRSpawnEntry(RedDwarfArbalest.class, 10, 4, 4)
            });

            LOTRSpawnList LIMWAITH = constructor.newInstance((Object) new LOTRSpawnEntry[]{
                new LOTRSpawnEntry(Limwaith.class, 100, 4, 6),
                new LOTRSpawnEntry(LimwaithWarrior.class, 20, 4, 6),
                new LOTRSpawnEntry(LimwaithBlowgunner.class, 15, 1, 3),
                new LOTRSpawnEntry(LimwaithBoneWarrior.class, 10, 1, 3)
            });


            Field redDwarfField = LOTRSpawnList.class.getDeclaredField("RED_DWARF");
            redDwarfField.setAccessible(true);
            redDwarfField.set(null, RED_DWARF);

            Field limwaithField = LOTRSpawnList.class.getDeclaredField("LIMWAITH");
            limwaithField.setAccessible(true);
            limwaithField.set(null, LIMWAITH);


            if (LOTRBiome.redMountains != null) {
                LOTRBiome.redMountains.npcSpawnList.newFactionList(500)
                    .add(new LOTRBiomeSpawnList.SpawnListContainer[]{
                        LOTRBiomeSpawnList.entry((LOTRSpawnList) redDwarfField.get(null), 10)
                    });
            } else {
                System.out.println("Red Mountains biome is not available.");
            }
            if (LOTRBiome.farHaradMangrove != null) {
                LOTRBiome.farHaradMangrove.npcSpawnList.newFactionList(100)
                    .add(new LOTRBiomeSpawnList.SpawnListContainer[]{
                        LOTRBiomeSpawnList.entry((LOTRSpawnList) limwaithField.get(null), 10)
                    });
            } else {
                System.out.println("Mangrove biome is not available.");
            }
        } catch (Exception e) {
            System.err.println("[CinderLoE] linkLOTRWeapon: Failed to find field RED_DWARF in LOTRSpawnList!");
        }
    }

    public static LOTRMaterial getLOTRMaterialByName(String materialName) {
        try {
            Field materialField = LOTRMaterial.class.getField(materialName);
            return (LOTRMaterial) materialField.get(null);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    // Debug method
    public static void printClass(String className) {
        String resourcePath = "/" + className.replace('.', '/') + ".class";
        InputStream in = CinderLoE.class.getResourceAsStream(resourcePath);
        if (in == null) {
            System.out.println("Class resource not found: " + resourcePath);
            return;
        }
        try {
            ClassReader classReader = new ClassReader(in);
            classReader.accept(new TraceClassVisitor(new PrintWriter(System.out)), 0);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @SubscribeEvent
    @SideOnly(Side.SERVER)
    public void onWorldLoad(WorldEvent.Load event) {
        // == Crop Blocks ==

        // == Food Items ==
        CinderCore.registerItemFallback(Item.getIdFromItem(onion), Item.getIdFromItem(LOTRMod.turnip), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(cabbage), Item.getIdFromItem(LOTRMod.lettuce), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(spice), Item.getIdFromItem(LOTRMod.dye), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(spicedHam), Item.getIdFromItem(LOTRMod.gammon), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(pelmen), Item.getIdFromItem(LOTRMod.cram), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(lightStew), Item.getIdFromItem(LOTRMod.leekSoup), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(chocolatebar),Item.getIdFromItem(LOTRMod.marzipanChocolate), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(fruitsalad),Item.getIdFromItem(LOTRMod.leekSoup), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(flour),Item.getIdFromItem(Items.sugar), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(dough),Item.getIdFromItem(Items.gunpowder), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(pasta),Item.getIdFromItem(Items.wheat), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(pretzel),Item.getIdFromItem(Items.bread), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(halva),Item.getIdFromItem(Items.bread),"cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(doner_kebab),Item.getIdFromItem(Items.bread),"cinder_loe", "1.2.5");
       // CinderCore.registerItemFallback(Item.getIdFromItem(honey),Item.getIdFromItem(LOTRMod.mapleSyrup), "cinder_loe", "1.2.5");

        //== Blocks==
        CinderCore.registerItemFallback(Block.getIdFromBlock(cinderBlock), Block.getIdFromBlock(Blocks.netherrack), "cinder_loe", "1.0");
       // CinderCore.registerItemFallback(Block.getIdFromBlock(barricade), Block.getIdFromBlock(Blocks.fence), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(ivoryBlock), Block.getIdFromBlock(LOTRMod.boneBlock), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(blockRedDwarfSteel), Block.getIdFromBlock(LOTRMod.blockOreStorage), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(chandelierRedDwarf), Block.getIdFromBlock(LOTRMod.chandelier), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(barsRedDwarf), Block.getIdFromBlock(LOTRMod.dwarfBars), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(furBundle), Block.getIdFromBlock(Blocks.hay_block), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(leatherBundle), Block.getIdFromBlock(Blocks.hay_block), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(reedBale), Block.getIdFromBlock(Blocks.hay_block), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(dwarvenBrickRuned), Block.getIdFromBlock(LOTRMod.brick), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Block.getIdFromBlock(fishBarrel), Block.getIdFromBlock(LOTRMod.woodBeam1), "cinder_loe", "1.1");
        //CinderCore.registerItemFallback(Block.getIdFromBlock(rustedsword), Block.getIdFromBlock(Blocks.nether_brick_fence), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Block.getIdFromBlock(silverChain), Block.getIdFromBlock(LOTRMod.orcChain), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Block.getIdFromBlock(goldChain), Block.getIdFromBlock(LOTRMod.orcChain), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Block.getIdFromBlock(ironChain), Block.getIdFromBlock(LOTRMod.orcChain), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Block.getIdFromBlock(bronzeChain), Block.getIdFromBlock(LOTRMod.orcChain), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Block.getIdFromBlock(mistBlock), Block.getIdFromBlock(LOTRMod.utumnoPortal), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Block.getIdFromBlock(cutDrystone), Block.getIdFromBlock(LOTRMod.cobblebrick), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Block.getIdFromBlock(cindercobble), Block.getIdFromBlock(LOTRMod.cobblebrick), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Block.getIdFromBlock(cinderfur), Block.getIdFromBlock(Blocks.wool), "cinder_loe", "1.2.4");
        CinderCore.registerItemFallback(Block.getIdFromBlock(furCarpet), Block.getIdFromBlock(Blocks.carpet), "cinder_loe", "1.2.4");
        CinderCore.registerItemFallback(Block.getIdFromBlock(reeflessCoral), Block.getIdFromBlock(LOTRMod.coralReef), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Block.getIdFromBlock(plaster), Block.getIdFromBlock(Blocks.brick_block), "cinder_loe", "1.2.1");
        CinderCore.registerItemFallback(Block.getIdFromBlock(voidblock), Block.getIdFromBlock(Blocks.coal_block), "cinder_loe", "1.2.1");
       // CinderCore.registerItemFallback(Block.getIdFromBlock(verticalWeaponRack), Block.getIdFromBlock(Blocks.fence), "cinder_loe", "1.2.4");
        // == Gates ==
        //CinderCore.registerItemFallback(Block.getIdFromBlock(gatecharredportcullis), Block.getIdFromBlock(LOTRMod.gateWoodenCross), "cinder_loe", "1.2.5");
        // == Red Dwarf Items==
        CinderCore.registerItemFallback(Item.getIdFromItem(redDwarfSteel), Item.getIdFromItem(LOTRMod.dwarfSteel), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(spearRedDwarf), Item.getIdFromItem(LOTRMod.spearDwarven), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(swordRedDwarf), Item.getIdFromItem(LOTRMod.swordDwarven), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(battleaxeRedDwarf), Item.getIdFromItem(LOTRMod.battleaxeDwarven), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(pikeRedDwarf), Item.getIdFromItem(LOTRMod.pikeDwarven), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(hammerRedDwarf), Item.getIdFromItem(LOTRMod.hammerDwarven), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(daggerRedDwarf), Item.getIdFromItem(LOTRMod.daggerDwarven), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(daggerRedDwarfPoisoned), Item.getIdFromItem(LOTRMod.daggerDwarvenPoisoned), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetRedDwarf), Item.getIdFromItem(LOTRMod.helmetDwarvenGold), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyRedDwarf), Item.getIdFromItem(LOTRMod.bodyDwarvenGold), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsRedDwarf), Item.getIdFromItem(LOTRMod.legsDwarvenGold), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsRedDwarf), Item.getIdFromItem(LOTRMod.bootsDwarvenGold), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(crossbowRedDwarf), Item.getIdFromItem(LOTRMod.ironCrossbow), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(boarArmorRedDwarf), Item.getIdFromItem(LOTRMod.boarArmorDwarven), "cinder_loe", "1.0");
        // == Rhudaur Items==
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetRhudaur), Item.getIdFromItem(LOTRMod.helmetFur), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyRhudaur), Item.getIdFromItem(LOTRMod.bodyFur), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsRhudaur), Item.getIdFromItem(LOTRMod.legsFur), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsRhudaur), Item.getIdFromItem(LOTRMod.bootsFur), "cinder_loe", "1.2.5");
        // == Elite Armors==
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetserpent), Item.getIdFromItem(LOTRMod.helmetNearHarad), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyserpent), Item.getIdFromItem(LOTRMod.bodyNearHarad), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsserpent),Item.getIdFromItem(LOTRMod.bodyNearHarad), "cinder_loe","1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsserpent), Item.getIdFromItem(LOTRMod.bootsNearHarad), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetUsurper), Item.getIdFromItem(LOTRMod.helmetUmbar), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyUsurper), Item.getIdFromItem(LOTRMod.bodyUmbar), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsUsurper), Item.getIdFromItem(LOTRMod.legsUmbar), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsUsurper), Item.getIdFromItem(LOTRMod.bootsUmbar), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetWarlord), Item.getIdFromItem(LOTRMod.helmetNomad), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyWarlord), Item.getIdFromItem(LOTRMod.bodyNomad), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsWarlord), Item.getIdFromItem(LOTRMod.legsNomad), "cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsWarlord), Item.getIdFromItem(LOTRMod.bootsNomad), "cinder_loe", "1.2.5");
        // == Wizard Staves ==
        CinderCore.registerItemFallback(Item.getIdFromItem(radagastStaff), Item.getIdFromItem(LOTRMod.gandalfStaffWhite), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(pallandoStaff), Item.getIdFromItem(LOTRMod.gandalfStaffWhite), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(alatarStaff), Item.getIdFromItem(LOTRMod.gandalfStaffWhite), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(sarumanStaff), Item.getIdFromItem(LOTRMod.gandalfStaffWhite), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(sarumanWhiteStaff), Item.getIdFromItem(LOTRMod.gandalfStaffWhite), "cinder_loe", "1.4");
        // == Relics ==
        CinderCore.registerItemFallback(Item.getIdFromItem(welfRelic), Item.getIdFromItem(LOTRMod.rhinoHorn), "cinder_loe", "1.2");
        // == Specials ==
        CinderCore.registerItemFallback(Item.getIdFromItem(frostblade), Item.getIdFromItem(LOTRMod.swordMithril), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(daggervoid), Item.getIdFromItem(LOTRMod.daggerMithril), "cinder_loe", "1.2.3");
        CinderCore.registerItemFallback(Item.getIdFromItem(spearsolidgold), Item.getIdFromItem(LOTRMod.spearMithril), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(spearUnnamed), Item.getIdFromItem(LOTRMod.spearMithril), "cinder_loe", "1.2.4");
        CinderCore.registerItemFallback(Item.getIdFromItem(whip), Item.getIdFromItem(LOTRMod.balrogWhip), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetbrokenhalo), Item.getIdFromItem(Items.golden_helmet),"cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetJade), Item.getIdFromItem(LOTRMod.helmetMithril),"cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyJade), Item.getIdFromItem(LOTRMod.bodyMithril),"cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsJade), Item.getIdFromItem(LOTRMod.legsMithril),"cinder_loe", "1.2.5");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsJade), Item.getIdFromItem(LOTRMod.bootsMithril),"cinder_loe", "1.2.5");
        // == Common Tools/weapons ==
        CinderCore.registerItemFallback(Item.getIdFromItem(cleaver),Item.getIdFromItem(LOTRMod.daggerIron),"cinder_loe","1.2.5");
        // == Ash Forged ==
        CinderCore.registerItemFallback(Item.getIdFromItem(ingotAsh), Item.getIdFromItem(LOTRMod.galvorn), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(daggerAsh), Item.getIdFromItem(LOTRMod.daggerBlackUruk), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(swordAsh), Item.getIdFromItem(LOTRMod.scimitarBlackUruk), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(staffAsh), Item.getIdFromItem(LOTRMod.polearmOrc), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(hammerAsh), Item.getIdFromItem(LOTRMod.hammerBlackUruk), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(battleaxeAsh), Item.getIdFromItem(LOTRMod.battleaxeBlackUruk), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(pikeAsh), Item.getIdFromItem(LOTRMod.pikeDolGuldur), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(bowAsh), Item.getIdFromItem(LOTRMod.blackUrukBow), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(spearAsh), Item.getIdFromItem(LOTRMod.spearBlackUruk), "cinder_loe", "1.2");
        // == Spawn Eggs ==
        CinderCore.registerItemFallback(Item.getIdFromItem(spawnEgg), Item.getIdFromItem(Items.spawn_egg), "cinder_loe", "1.0");
        // == Limwaith Items ==
        CinderCore.registerItemFallback(Item.getIdFromItem(bonemold), Item.getIdFromItem(LOTRMod.leekSoup), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetLimwaith), Item.getIdFromItem(LOTRMod.helmetMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyLimwaith), Item.getIdFromItem(LOTRMod.bodyMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsLimwaith), Item.getIdFromItem(LOTRMod.legsMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsLimwaith), Item.getIdFromItem(LOTRMod.bootsMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetboneLimwaith), Item.getIdFromItem(LOTRMod.helmetBone), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyboneLimwaith), Item.getIdFromItem(LOTRMod.bodyBone), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsboneLimwaith), Item.getIdFromItem(LOTRMod.legsBone), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsboneLimwaith), Item.getIdFromItem(LOTRMod.bootsBone), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(spearLimwaith), Item.getIdFromItem(LOTRMod.spearMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(tridentLimwaith), Item.getIdFromItem(LOTRMod.dunlendingTrident), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(truncheonLimwaith), Item.getIdFromItem(LOTRMod.swordMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(battleaxeLimwaith), Item.getIdFromItem(LOTRMod.battleaxeMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(daggerLimwaith), Item.getIdFromItem(LOTRMod.daggerMoredain), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(daggerLimwaithPoisoned), Item.getIdFromItem(LOTRMod.daggerMoredainPoisoned), "cinder_loe", "1.0");
        CinderCore.registerItemFallback(Item.getIdFromItem(blowgunLimwaith), Item.getIdFromItem(LOTRMod.tauredainBlowgun), "cinder_loe", "1.0");
        // == Bree Items ==
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetBree), Item.getIdFromItem(Items.iron_helmet), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetBreeKettle), Item.getIdFromItem(Items.iron_helmet), "cinder_loe", "1.2");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyBree), Item.getIdFromItem(Items.chainmail_chestplate), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsBree), Item.getIdFromItem(Items.chainmail_leggings), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsBree), Item.getIdFromItem(Items.iron_boots), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(swordBree), Item.getIdFromItem(Items.iron_sword), "cinder_loe", "1.1");
        // == Arnor Items ==
        CinderCore.registerItemFallback(Item.getIdFromItem(helmetArnorBanner), Item.getIdFromItem(Items.chainmail_helmet), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(bodyArnorBanner), Item.getIdFromItem(Items.chainmail_chestplate), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(legsArnorBanner), Item.getIdFromItem(Items.chainmail_leggings), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(bootsArnorBanner), Item.getIdFromItem(Items.chainmail_boots), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(maceArnor), Item.getIdFromItem(LOTRMod.blacksmithHammer), "cinder_loe", "1.1");
        CinderCore.registerItemFallback(Item.getIdFromItem(maceWarlord), Item.getIdFromItem(LOTRMod.blacksmithHammer), "cinder_loe", "1.2.5");

        CinderCore.registerEntityFallback(DarkSpider.class, LOTREntityUtumnoIceSpider.class, "cinder_loe", "1.2.4");

        CinderCore.registerEntityFallback(BladorthinSmith.class, LOTREntityDorwinionElf.class, "cinder_loe", "1.2.4");

        CinderCore.registerEntityFallback(CorruptDwarf.class, LOTREntityDwarf.class, "cinder_loe", "1.2.3");
        CinderCore.registerEntityFallback(CorruptElf.class, LOTREntityTormentedElf.class, "cinder_loe", "1.2.3");
        CinderCore.registerEntityFallback(CorruptEnt.class, LOTREntityEnt.class, "cinder_loe", "1.2.3");
        CinderCore.registerEntityFallback(CorruptHobbit.class, LOTREntityHobbit.class, "cinder_loe", "1.2.3");
        CinderCore.registerEntityFallback(CorruptMan.class, LOTREntityGondorMan.class, "cinder_loe", "1.2.3");
        CinderCore.registerEntityFallback(CorruptOrc.class, LOTREntityGundabadOrc.class, "cinder_loe", "1.2.3");

        CinderCore.registerEntityFallback(SarumanFireball.class, LOTREntityGandalfFireball.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(SarumanWhiteFireball.class, LOTREntityGandalfFireball.class, "cinder_loe", "1.4");
        CinderCore.registerEntityFallback(Renegade.class, LOTREntityBandit.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(RenegadeCaptain.class, LOTREntityBandit.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(Wraith.class, LOTREntityMarshWraith.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(CryptBoss.class, LOTREntityMarshWraith.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(LOTREntitySauron.class, LOTREntityBarrowWight.class, "cinder_loe", "1.1");

        CinderCore.registerEntityFallback(RedDwarfWarrior.class, LOTREntityDwarfWarrior.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(RedDwarfArbalest.class, LOTREntityDwarfAxeThrower.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(RedDwarfBannerBearer.class, LOTREntityDwarfBannerBearer.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(RedDwarfCommander.class, LOTREntityDwarfCommander.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(RedDwarfSmith.class, LOTREntityDwarfSmith.class, "cinder_loe", "1.2.1");

        CinderCore.registerEntityFallback(Limwaith.class, LOTREntityMoredain.class, "cinder_loe", "1.2");
        CinderCore.registerEntityFallback(LimwaithFishmonger.class, LOTREntityMoredain.class, "cinder_loe", "1.2");
        CinderCore.registerEntityFallback(LimwaithShaman.class, LOTREntityTauredainShaman.class, "cinder_loe", "1.2");
        CinderCore.registerEntityFallback(LimwaithWarrior.class, LOTREntityMoredain.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(LimwaithBoneWarrior.class, LOTREntityMoredain.class, "cinder_loe", "1.2");
        CinderCore.registerEntityFallback(LimwaithBlowgunner.class, LOTREntityMoredain.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(LimwaithBannerBearer.class, LOTREntityMoredainBannerBearer.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(LimwaithChieftain.class, LOTREntityMoredainChieftain.class, "cinder_loe", "1.0");

        //CinderCore.registerEntityFallback(LimwaithCrocodile.class, LOTREntityCrocodile.class, "cinder_loe", "1.2");
        CinderCore.registerEntityFallback(FangornBear.class, LOTREntityBear.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(FangornWildBoar.class, LOTREntityWildBoar.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(FangornAuroch.class, LOTREntityAurochs.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(FangornElk.class, LOTREntityElk.class, "cinder_loe", "1.0");
        CinderCore.registerEntityFallback(FangornWolf.class, EntityWolf.class, "cinder_loe", "1.0");

        CinderCore.registerEntityFallback(ArnorSoldier.class, LOTREntityDunedain.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(ArnorSoldierArcher.class, LOTREntityDunedain.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(ArnorCaptain.class, LOTREntityDunedain.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(ArnorBannerBearer.class, LOTREntityDunedain.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(BattleNun.class, LOTREntityDunedain.class, "cinder_loe", "1.1");

        CinderCore.registerEntityFallback(BreeSoldier.class, LOTREntityBreeMan.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(BreeCrossbowman.class, LOTREntityBreeMan.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(BreeCaptain.class, LOTREntityBreeMan.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(BreeSoldierBannerBearer.class, LOTREntityBreeMan.class, "cinder_loe", "1.1");
        CinderCore.registerEntityFallback(BreeOutrider.class, LOTREntityBreeMan.class, "cinder_loe", "1.1");


        CinderCore.registerCustomFallback(42, 16, "banner", "cinder_loe", "1.2");
        CinderCore.registerCustomFallback(43, 16, "banner", "cinder_loe", "1.2.4");
        CinderCore.registerCustomFallback(44, 16, "banner", "cinder_loe", "1.2.4");
        CinderCore.registerCustomFallback(45, 16, "banner", "cinder_loe", "1.2.4");
        CinderCore.registerCustomFallback(46, 16, "banner", "cinder_loe", "1.2.4");
    }

    // Create unit trade entries here, out of the way of important code
    public void setupTradeEntries() {
        RED_DWARF_COMMANDER = new LOTRUnitTradeEntries(200.0F, new LOTRUnitTradeEntry(LOTREntityDwarf.class, 60, 0.0F),
                (new LOTRUnitTradeEntry(RedDwarfWarrior.class, 400, 50.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.ANY_DWARF),
                (new LOTRUnitTradeEntry(RedDwarfArbalest.class, 400, 100.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.ANY_DWARF),
                (new LOTRUnitTradeEntry(RedDwarfWarrior.class, LOTREntityWildBoar.class, "RedDwarfWarrior_Boar", 500, 150.0F)).setMountArmor(boarArmorRedDwarf).setPledgeType(LOTRUnitTradeEntry.PledgeType.ANY_DWARF),
                (new LOTRUnitTradeEntry(RedDwarfArbalest.class, LOTREntityWildBoar.class, "RedDwarfArbalest_Boar", 500, 200.0F)).setMountArmor(boarArmorRedDwarf).setPledgeType(LOTRUnitTradeEntry.PledgeType.ANY_DWARF),
                (new LOTRUnitTradeEntry(RedDwarfBannerBearer.class, 400, 200.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.ANY_DWARF),
                (new LOTRUnitTradeEntry(RedDwarfArbalest.class, LOTREntityWildBoar.class, "Banner_Horse", 600, 300.0F)).setMountArmor(boarArmorRedDwarf).setPledgeType(LOTRUnitTradeEntry.PledgeType.ANY_DWARF));

        LIMWAITH_COMMANDER = new LOTRUnitTradeEntries(200.0F, new LOTRUnitTradeEntry(LimwaithWarrior.class, 150, 50.0F),
                (new LOTRUnitTradeEntry(LimwaithBlowgunner.class, 150, 100.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(LimwaithBoneWarrior.class, 250, 200.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(LimwaithBannerBearer.class, 150, 200.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION));

        ARNOR_CAPTAIN = new LOTRUnitTradeEntries(200.0F, (new LOTRUnitTradeEntry(ArnorSoldier.class, 250, 250.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(ArnorSoldierArcher.class, 250, 300.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(ArnorSoldier.class, LOTREntityHorse.class, "Arnor_Horse", 350, 150.0F)).setMountArmor(horseArmorIron).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(ArnorSoldierArcher.class, LOTREntityHorse.class, "Arnor_Horse", 350, 200.0F)).setMountArmor(horseArmorIron).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(LOTREntityRangerNorth.class, 250, 0.0f)),
                (new LOTRUnitTradeEntry(LOTREntityRangerNorth.class, LOTREntityHorse.class, "RangerNorth_Horse", 350, 100.0f)),
                (new LOTRUnitTradeEntry(LOTREntityRangerNorthBannerBearer.class, 250, 150.0f)),
                (new LOTRUnitTradeEntry(ArnorBannerBearer.class, 250, 400.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(ArnorBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 450, 500.0F)).setMountArmor(horseArmorIron).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new CinderUnitTradeEntry(BattleNun.class, 250, 400.0F).setObjective("Arnor").setExtraInfo("Arnor")).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION));


        BREE_CAPTAIN = new LOTRUnitTradeEntries(150.0F, (new LOTRUnitTradeEntry(LOTREntityBreeGuard.class, 150, 0.0f)),
                (new LOTRUnitTradeEntry(BreeSoldier.class, 250, 250.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(BreeCrossbowman.class, 250, 300.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(BreeOutrider.class, LOTREntityHorse.class, "Bree_Horse", 350, 400.0F)).setMountArmor(horseArmorIron).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(LOTREntityBreeBannerBearer.class, 150, 150.0f)),
                (new LOTRUnitTradeEntry(BreeSoldierBannerBearer.class, 250, 400.0F)).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION),
                (new LOTRUnitTradeEntry(BreeSoldierBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 500.0F)).setMountArmor(horseArmorIron).setPledgeType(LOTRUnitTradeEntry.PledgeType.FACTION));
    }

    public int getRustedSwordID() {return 0;}
}
