2014-06-04 21:44:48 -08:00
package tconstruct.armor ;
2014-09-09 18:30:15 +10:00
import cpw.mods.fml.common.* ;
import cpw.mods.fml.common.event.* ;
import cpw.mods.fml.common.registry.* ;
import cpw.mods.fml.common.registry.GameRegistry.ObjectHolder ;
import cpw.mods.fml.relauncher.Side ;
2014-09-23 16:33:22 +02:00
2014-07-03 16:11:54 -08:00
import java.util.EnumSet ;
2014-09-23 16:33:22 +02:00
2014-09-09 18:30:15 +10:00
import mantle.pulsar.pulse.* ;
2014-06-06 19:46:05 -08:00
import net.minecraft.block.Block ;
2014-09-09 18:30:15 +10:00
import net.minecraft.init.* ;
import net.minecraft.item.* ;
2014-06-06 19:46:05 -08:00
import net.minecraft.item.ItemArmor.ArmorMaterial ;
import net.minecraftforge.common.MinecraftForge ;
import net.minecraftforge.common.util.EnumHelper ;
import net.minecraftforge.oredict.ShapedOreRecipe ;
2014-06-04 21:44:48 -08:00
import tconstruct.TConstruct ;
import tconstruct.armor.blocks.DryingRack ;
2014-09-09 18:30:15 +10:00
import tconstruct.armor.items.* ;
2014-06-30 14:57:06 -08:00
import tconstruct.blocks.logic.DryingRackLogic ;
2014-09-05 21:31:20 +02:00
import tconstruct.client.ArmorControls ;
2014-09-23 16:33:22 +02:00
import tconstruct.client.tabs.TabRegistry ;
2014-06-04 21:44:48 -08:00
import tconstruct.library.TConstructRegistry ;
2014-06-30 22:26:00 -08:00
import tconstruct.library.accessory.AccessoryCore ;
import tconstruct.library.armor.ArmorPart ;
2014-09-09 18:30:15 +10:00
import tconstruct.library.crafting.* ;
2014-07-03 16:11:54 -08:00
import tconstruct.modifiers.accessory.GloveSpeed ;
2014-09-09 18:30:15 +10:00
import tconstruct.modifiers.armor.* ;
2014-07-03 16:11:54 -08:00
import tconstruct.modifiers.tools.ModAttack ;
2014-06-04 21:44:48 -08:00
import tconstruct.tools.TinkerTools ;
import tconstruct.world.TinkerWorld ;
2014-06-30 14:57:06 -08:00
@ObjectHolder ( TConstruct . modID )
2014-07-02 23:37:28 -08:00
@Pulse ( id = "Tinkers' Armory" , description = "Modifyable armors, such as the traveller's gear." )
2014-07-01 23:23:15 -08:00
public class TinkerArmor
2014-06-04 21:44:48 -08:00
{
2014-08-21 20:47:59 +02:00
@SidedProxy ( clientSide = "tconstruct.armor.ArmorProxyClient" , serverSide = "tconstruct.armor.ArmorProxyCommon" )
2014-06-06 19:46:05 -08:00
public static ArmorProxyCommon proxy ;
2014-06-30 14:57:06 -08:00
2014-06-04 21:44:48 -08:00
public static Item diamondApple ;
public static Item jerky ;
// public static Item stonePattern;
// public static Item netherPattern;
public static Block dryingRack ;
// Wearables
public static Item heavyHelmet ;
public static Item heavyChestplate ;
public static Item heavyPants ;
public static Item heavyBoots ;
public static Item glove ;
public static Item knapsack ;
public static Item heartCanister ;
// Armor - basic
public static Item helmetWood ;
public static Item chestplateWood ;
public static Item leggingsWood ;
public static Item bootsWood ;
public static ArmorMaterial materialWood ;
2014-06-30 14:57:06 -08:00
2014-06-30 22:26:00 -08:00
//Clothing - Travel Gear
public static TravelGear travelGoggles ;
public static TravelGear travelWings ;
public static TravelGear travelVest ;
public static TravelGear travelBoots ;
public static AccessoryCore travelGlove ;
public static AccessoryCore travelBelt ;
2014-07-06 00:43:16 -08:00
2014-07-03 16:11:54 -08:00
public static ModAttack modAttackGlove ;
2014-07-06 00:43:16 -08:00
2014-07-02 20:27:32 -08:00
@Handler
2014-06-04 21:44:48 -08:00
public void preInit ( FMLPreInitializationEvent event )
{
2014-07-03 16:11:54 -08:00
MinecraftForge . EVENT_BUS . register ( new TinkerArmorEvents ());
FMLCommonHandler . instance (). bus (). register ( new ArmorAbilities ());
2014-09-09 18:30:15 +10:00
2014-09-05 21:31:20 +02:00
if ( event . getSide () == Side . CLIENT )
{
FMLCommonHandler . instance (). bus (). register ( new ArmorControls ());
2014-09-23 16:33:22 +02:00
MinecraftForge . EVENT_BUS . register ( new TabRegistry ());
2014-09-05 21:31:20 +02:00
}
2014-07-06 00:43:16 -08:00
2014-06-04 21:44:48 -08:00
TinkerArmor . dryingRack = new DryingRack (). setBlockName ( "Armor.DryingRack" );
2014-06-30 14:57:06 -08:00
GameRegistry . registerBlock ( TinkerArmor . dryingRack , "Armor.DryingRack" );
GameRegistry . registerTileEntity ( DryingRackLogic . class , "Armor.DryingRack" );
2014-06-04 21:44:48 -08:00
TinkerArmor . diamondApple = new DiamondApple (). setUnlocalizedName ( "tconstruct.apple.diamond" );
GameRegistry . registerItem ( TinkerArmor . diamondApple , "diamondApple" );
boolean foodOverhaul = false ;
if ( Loader . isModLoaded ( "HungerOverhaul" ) || Loader . isModLoaded ( "fc_food" ))
{
foodOverhaul = true ;
}
TinkerArmor . jerky = new Jerky ( foodOverhaul ). setUnlocalizedName ( "tconstruct.jerky" );
GameRegistry . registerItem ( TinkerArmor . jerky , "jerky" );
// Wearables
// heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet,
// 0).setUnlocalizedName("tconstruct.HeavyHelmet");
TinkerArmor . heartCanister = new HeartCanister (). setUnlocalizedName ( "tconstruct.canister" );
// heavyBoots = new TArmorBase(PHConstruct.heavyBoots,
// 3).setUnlocalizedName("tconstruct.HeavyBoots");
// glove = new
// Glove(PHConstruct.glove).setUnlocalizedName("tconstruct.Glove");
TinkerArmor . knapsack = new Knapsack (). setUnlocalizedName ( "tconstruct.storage" );
// GameRegistry.registerItem(TRepo.heavyHelmet, "heavyHelmet");
GameRegistry . registerItem ( TinkerArmor . heartCanister , "heartCanister" );
// GameRegistry.registerItem(TRepo.heavyBoots, "heavyBoots");
// GameRegistry.registerItem(TRepo.glove, "glove");
GameRegistry . registerItem ( TinkerArmor . knapsack , "knapsack" );
LiquidCasting basinCasting = TConstruct . getBasinCasting ();
TinkerArmor . materialWood = EnumHelper . addArmorMaterial ( "WOOD" , 2 , new int [] { 1 , 2 , 2 , 1 }, 3 );
TinkerArmor . helmetWood = new ArmorBasic ( TinkerArmor . materialWood , 0 , "wood" ). setUnlocalizedName ( "tconstruct.helmetWood" );
TinkerArmor . chestplateWood = new ArmorBasic ( TinkerArmor . materialWood , 1 , "wood" ). setUnlocalizedName ( "tconstruct.chestplateWood" );
TinkerArmor . leggingsWood = new ArmorBasic ( TinkerArmor . materialWood , 2 , "wood" ). setUnlocalizedName ( "tconstruct.leggingsWood" );
TinkerArmor . bootsWood = new ArmorBasic ( TinkerArmor . materialWood , 3 , "wood" ). setUnlocalizedName ( "tconstruct.bootsWood" );
GameRegistry . registerItem ( TinkerArmor . helmetWood , "helmetWood" );
GameRegistry . registerItem ( TinkerArmor . chestplateWood , "chestplateWood" );
GameRegistry . registerItem ( TinkerArmor . leggingsWood , "leggingsWood" );
GameRegistry . registerItem ( TinkerArmor . bootsWood , "bootsWood" );
TConstructRegistry . addItemStackToDirectory ( "diamondApple" , new ItemStack ( TinkerArmor . diamondApple , 1 , 0 ));
TConstructRegistry . addItemStackToDirectory ( "canisterEmpty" , new ItemStack ( TinkerArmor . heartCanister , 1 , 0 ));
TConstructRegistry . addItemStackToDirectory ( "miniRedHeart" , new ItemStack ( TinkerArmor . heartCanister , 1 , 1 ));
TConstructRegistry . addItemStackToDirectory ( "canisterRedHeart" , new ItemStack ( TinkerArmor . heartCanister , 1 , 2 ));
2014-07-06 00:43:16 -08:00
2014-06-30 22:26:00 -08:00
travelGoggles = ( TravelGear ) new TravelGear ( ArmorPart . Head ). setUnlocalizedName ( "tconstruct.travelgoggles" );
travelVest = ( TravelGear ) new TravelGear ( ArmorPart . Chest ). setUnlocalizedName ( "tconstruct.travelvest" );
travelWings = ( TravelGear ) new TravelWings (). setUnlocalizedName ( "tconstruct.travelwings" );
travelBoots = ( TravelGear ) new TravelGear ( ArmorPart . Feet ). setUnlocalizedName ( "tconstruct.travelboots" );
travelGlove = ( AccessoryCore ) new TravelGlove (). setUnlocalizedName ( "tconstruct.travelgloves" );
travelBelt = ( AccessoryCore ) new TravelBelt (). setUnlocalizedName ( "tconstruct.travelbelt" );
GameRegistry . registerItem ( travelGoggles , "travelGoggles" );
GameRegistry . registerItem ( travelVest , "travelVest" );
GameRegistry . registerItem ( travelWings , "travelWings" );
GameRegistry . registerItem ( travelBoots , "travelBoots" );
GameRegistry . registerItem ( travelGlove , "travelGlove" );
GameRegistry . registerItem ( travelBelt , "travelBelt" );
2014-06-04 21:44:48 -08:00
}
2014-07-02 20:27:32 -08:00
@Handler
2014-06-04 21:44:48 -08:00
public void init ( FMLInitializationEvent event )
{
craftingTableRecipes ();
2014-07-26 21:00:43 +03:00
registerModifiers ();
2014-06-04 21:44:48 -08:00
addRecipesForDryingRack ();
2014-06-30 22:26:00 -08:00
TConstructRegistry . equipableTab . init ( travelGoggles . getDefaultItem ());
2014-07-02 20:27:32 -08:00
proxy . initialize ();
2014-06-04 21:44:48 -08:00
}
2014-07-02 20:27:32 -08:00
@Handler
2014-06-04 21:44:48 -08:00
public void postInit ( FMLPostInitializationEvent evt )
{
}
private void craftingTableRecipes ()
{
// Armor Recipes
Object [] helm = new String [] { "www" , "w w" };
Object [] chest = new String [] { "w w" , "www" , "www" };
Object [] pants = new String [] { "www" , "w w" , "w w" };
Object [] shoes = new String [] { "w w" , "w w" };
GameRegistry . addRecipe ( new ShapedOreRecipe ( TinkerArmor . helmetWood , helm , 'w' , "logWood" ));
GameRegistry . addRecipe ( new ShapedOreRecipe ( TinkerArmor . chestplateWood , chest , 'w' , "logWood" ));
GameRegistry . addRecipe ( new ShapedOreRecipe ( TinkerArmor . leggingsWood , pants , 'w' , "logWood" ));
GameRegistry . addRecipe ( new ShapedOreRecipe ( TinkerArmor . bootsWood , shoes , 'w' , "logWood" ));
// Accessories
GameRegistry . addRecipe ( new ShapedOreRecipe ( new ItemStack ( TinkerArmor . heartCanister , 1 , 0 ), "##" , "##" , '#' , "ingotAluminum" ));
GameRegistry . addRecipe ( new ShapedOreRecipe ( new ItemStack ( TinkerArmor . heartCanister , 1 , 0 ), "##" , "##" , '#' , "ingotAluminium" ));
// GameRegistry.addRecipe(new ShapedOreRecipe(new
// ItemStack(TRepo.heartCanister, 1, 0), "##", "##", '#',
// "ingotNaturalAluminum"));
GameRegistry . addRecipe ( new ShapedOreRecipe ( new ItemStack ( TinkerArmor . heartCanister , 1 , 0 ), " # " , "#B#" , " # " , '#' , "ingotTin" , 'B' , Items . bone ));
GameRegistry . addRecipe ( new ItemStack ( TinkerArmor . diamondApple ), " d " , "d#d" , " d " , 'd' , new ItemStack ( Items . diamond ), '#' , new ItemStack ( Items . apple ));
2014-09-09 18:30:15 +10:00
GameRegistry . addShapelessRecipe ( new ItemStack ( TinkerArmor . heartCanister , 1 , 2 ), new ItemStack ( TinkerArmor . diamondApple ), new ItemStack ( TinkerTools . materials , 1 , 8 ), new ItemStack ( TinkerArmor . heartCanister , 1 , 0 ), new ItemStack ( TinkerArmor . heartCanister , 1 , 1 ));
2014-07-06 00:43:16 -08:00
GameRegistry . addShapelessRecipe ( new ItemStack ( TinkerArmor . heartCanister , 1 , 1 ), new ItemStack ( TinkerArmor . heartCanister , 1 , 3 ));
2014-09-09 18:30:15 +10:00
GameRegistry . addShapelessRecipe ( new ItemStack ( TinkerArmor . heartCanister , 1 , 4 ), new ItemStack ( TinkerArmor . heartCanister , 1 , 2 ), new ItemStack ( TinkerArmor . heartCanister , 1 , 3 ), new ItemStack ( Items . golden_apple , 1 , 1 ));
2014-06-04 21:44:48 -08:00
//GameRegistry.addShapelessRecipe(new ItemStack(heartCanister, 1, 6), new ItemStack(heartCanister, 1, 0), new ItemStack(heartCanister, 1, 4), new ItemStack(heartCanister, 1, 5));
2014-09-09 18:30:15 +10:00
GameRegistry . addRecipe ( new ShapedOreRecipe ( new ItemStack ( TinkerArmor . knapsack , 1 , 0 ), "###" , "rmr" , "###" , '#' , new ItemStack ( Items . leather ), 'r' , new ItemStack ( TinkerTools . toughRod , 1 , 2 ), 'm' , "ingotGold" ));
2014-06-04 21:44:48 -08:00
ItemStack aluBrass = new ItemStack ( TinkerTools . materials , 1 , 14 );
GameRegistry . addRecipe ( new ItemStack ( TinkerArmor . knapsack , 1 , 0 ), "###" , "rmr" , "###" , '#' , new ItemStack ( Items . leather ), 'r' , new ItemStack ( TinkerTools . toughRod , 1 , 2 ), 'm' , aluBrass );
// Drying Rack Recipes
GameRegistry . addRecipe ( new ShapedOreRecipe ( new ItemStack ( TinkerArmor . dryingRack , 1 , 0 ), "bbb" , 'b' , "slabWood" ));
2014-07-21 12:52:39 -08:00
//Temporary recipes
2014-07-06 00:43:16 -08:00
ItemStack leather = new ItemStack ( Items . leather );
ItemStack glass = new ItemStack ( Blocks . glass );
ItemStack string = new ItemStack ( Items . string );
GameRegistry . addShapedRecipe ( travelGoggles . getDefaultItem (), "# #" , "q#q" , "g g" , '#' , leather , 'q' , glass , 'g' , new ItemStack ( Items . gold_ingot ));
GameRegistry . addRecipe ( new ShapedOreRecipe ( travelWings . getDefaultItem (), "g g" , "i#i" , "i i" , '#' , Items . ender_pearl , 'g' , Items . gold_ingot , 'i' , "ingotBronze" ));
GameRegistry . addRecipe ( new ShapedOreRecipe ( travelVest . getDefaultItem (), "#w#" , "#i#" , "#w#" , '#' , leather , 'i' , "ingotAluminum" , 'w' , new ItemStack ( Blocks . wool , 1 , Short . MAX_VALUE )));
GameRegistry . addRecipe ( new ShapedOreRecipe ( travelBoots . getDefaultItem (), "#s#" , "#i#" , "#s#" , '#' , leather , 's' , string , 'i' , "ingotAluminum" ));
GameRegistry . addShapedRecipe ( travelGlove . getDefaultItem (), " #" , "###" , " ##" , '#' , leather );
GameRegistry . addRecipe ( new ShapedOreRecipe ( travelBelt . getDefaultItem (), "###" , "ici" , "###" , '#' , leather , 'c' , new ItemStack ( Blocks . chest ), 'i' , "ingotAluminum" ));
2014-06-04 21:44:48 -08:00
}
protected static void addRecipesForDryingRack ()
{
// Drying rack
DryingRackRecipes . addDryingRecipe ( Items . beef , 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 0 ));
DryingRackRecipes . addDryingRecipe ( Items . chicken , 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 1 ));
DryingRackRecipes . addDryingRecipe ( Items . porkchop , 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 2 ));
// DryingRackRecipes.addDryingRecipe(Item.muttonRaw, 20 * 60 * 5, new
// ItemStack(TRepo.jerky, 1, 3));
DryingRackRecipes . addDryingRecipe ( Items . fish , 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 4 ));
DryingRackRecipes . addDryingRecipe ( Items . rotten_flesh , 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 5 ));
DryingRackRecipes . addDryingRecipe ( new ItemStack ( TinkerWorld . strangeFood , 1 , 0 ), 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 6 ));
DryingRackRecipes . addDryingRecipe ( new ItemStack ( TinkerWorld . strangeFood , 1 , 1 ), 20 * 60 * 5 , new ItemStack ( TinkerArmor . jerky , 1 , 7 ));
// DryingRackRecipes.addDryingRecipe(new ItemStack(TRepo.jerky, 1, 5),
// 20 * 60 * 10, Item.leather);
}
2014-07-06 00:43:16 -08:00
private void registerModifiers ()
2014-07-03 16:11:54 -08:00
{
ItemStack redstoneItem = new ItemStack ( Items . redstone );
ItemStack redstoneBlock = new ItemStack ( Blocks . redstone_block );
2014-07-06 00:43:16 -08:00
//Travel gear modifiers
2014-07-03 16:11:54 -08:00
//MultiType
2014-09-09 18:30:15 +10:00
ModifyBuilder . registerModifier ( new TravelModDoubleJump ( EnumSet . of ( ArmorPart . Legs , ArmorPart . Feet ), new ItemStack [] { new ItemStack ( Items . ghast_tear ), new ItemStack ( TinkerWorld . slimeGel , 1 , 0 ), new ItemStack ( Blocks . piston ) }));
ModifyBuilder . registerModifier ( new TravelModDoubleJump ( EnumSet . of ( ArmorPart . Legs , ArmorPart . Feet ), new ItemStack [] { new ItemStack ( Items . ghast_tear ), new ItemStack ( TinkerWorld . slimeGel , 1 , 1 ), new ItemStack ( Blocks . piston ) }));
2014-07-03 16:11:54 -08:00
ModifyBuilder . registerModifier ( new TravelModRepair ());
TConstructRegistry . registerActiveArmorMod ( new ActiveTinkerArmor ());
//Head
2014-09-09 23:54:54 +02:00
ModifyBuilder . registerModifier ( new AModBoolean ( 0 , "Night Vision" , EnumSet . of ( ArmorPart . Head ), new ItemStack [] { new ItemStack ( Items . flint_and_steel ), new ItemStack ( Items . potionitem , 1 , 8198 ), new ItemStack ( Items . golden_carrot ) }, "\u00a78" , "Night Vision" ));
2014-07-03 16:11:54 -08:00
//Chest
2014-09-09 18:30:15 +10:00
ModifyBuilder . registerModifier ( new AModInteger ( 0 , "Perfect Dodge" , EnumSet . of ( ArmorPart . Chest ), new ItemStack [] { new ItemStack ( Items . ender_eye ), new ItemStack ( Items . ender_pearl ), new ItemStack ( Items . sugar ) }, 1 , "\u00a7d" , "Perfect Dodge" ));
2014-09-10 00:08:57 +02:00
ModifyBuilder . registerModifier ( new AModBoolean ( 1 , "Stealth" , EnumSet . of ( ArmorPart . Chest ), new ItemStack [] { new ItemStack ( Items . fermented_spider_eye ), new ItemStack ( Items . ender_eye ), new ItemStack ( Items . potionitem , 1 , 8206 ), new ItemStack ( Items . golden_carrot ) }, "\u00a78" , "Stealth" ));
2014-07-03 16:11:54 -08:00
//Wings
ItemStack feather = new ItemStack ( Items . feather );
2014-09-09 18:30:15 +10:00
ModifyBuilder . registerModifier ( new AModInteger ( 1 , "Feather Fall" , EnumSet . of ( ArmorPart . Legs ), new ItemStack [] { new ItemStack ( TinkerWorld . slimeGel , 1 , 0 ), new ItemStack ( Items . ender_pearl ), feather , feather , feather , feather , feather , feather }, 1 , "\u00a7f" , "Feather Fall" ));
ModifyBuilder . registerModifier ( new AModInteger ( 1 , "Feather Fall" , EnumSet . of ( ArmorPart . Legs ), new ItemStack [] { new ItemStack ( TinkerWorld . slimeGel , 1 , 1 ), new ItemStack ( Items . ender_pearl ), feather , feather , feather , feather , feather , feather }, 1 , "\u00a7f" , "Feather Fall" ));
2014-07-03 16:11:54 -08:00
//Feet
2014-09-09 18:30:15 +10:00
ModifyBuilder . registerModifier ( new AModBoolean ( 1 , "WaterWalk" , EnumSet . of ( ArmorPart . Feet ), new ItemStack [] { new ItemStack ( Blocks . waterlily ), new ItemStack ( Blocks . waterlily ) }, "\u00a79" , "Water-Walking" ));
2014-07-03 16:11:54 -08:00
ModifyBuilder . registerModifier ( new AModLeadBoots ( new ItemStack [] { new ItemStack ( Blocks . iron_block ) }));
2014-09-09 18:30:15 +10:00
ModifyBuilder . registerModifier ( new AModInteger ( 3 , "Slimy Soles" , EnumSet . of ( ArmorPart . Feet ), new ItemStack [] { new ItemStack ( TinkerWorld . slimePad , 1 , 0 ), new ItemStack ( TinkerWorld . slimePad , 1 , 0 ) }, 1 , "\u00a7a" , "Slimy Soles" ));
2014-07-03 16:11:54 -08:00
//Glove
ModifyBuilder . registerModifier ( new GloveSpeed ( 1 , new ItemStack [] { redstoneItem , redstoneBlock }, new int [] { 1 , 9 }));
2014-07-21 12:52:39 -08:00
//ModifyBuilder.registerModifier(new GloveClimb(new ItemStack[] { new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25) }));
2014-09-09 22:26:42 +02:00
modAttackGlove = new ModAttack ( "Quartz" , 2 , new ItemStack [] { new ItemStack ( Items . quartz ), new ItemStack ( Blocks . quartz_block , 1 , Short . MAX_VALUE ) }, new int [] { 1 , 4 }, 50 , 50 , "Accessory" );
2014-09-10 00:42:15 +02:00
//ModifyBuilder.registerModifier(modAttackGlove);
2014-07-03 16:11:54 -08:00
}
2014-06-04 21:44:48 -08:00
}