2013-02-06 18:19:14 -08:00

245 lines
11 KiB
Java

package tinker.tconstruct.client;
import java.io.File;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderEngine;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.MinecraftForgeClient;
import org.w3c.dom.Document;
import tinker.tconstruct.*;
import tinker.tconstruct.client.entityrender.*;
import tinker.tconstruct.client.liquidrender.*;
import tinker.tconstruct.tools.ToolCore;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
public class TProxyClient extends TProxyCommon
{
public static SmallFontRenderer smallFontRenderer;
/* Registers any rendering code. */
public void registerRenderer()
{
Minecraft mc = Minecraft.getMinecraft();
smallFontRenderer = new SmallFontRenderer(mc.gameSettings, "/font/default.png", mc.renderEngine, false);
RenderingRegistry.registerBlockHandler(new TableRender());
RenderingRegistry.registerBlockHandler(new TankRender());
RenderingRegistry.registerBlockHandler(new FrypanRender());
RenderingRegistry.registerBlockHandler(new RenderLiquidMetal());
//RenderingRegistry.registerBlockHandler(new AxleRender());
RenderEngine renderEngine = FMLClientHandler.instance().getClient().renderEngine;
renderEngine.registerTextureFX(new LiquidIronFX());
renderEngine.registerTextureFX(new LiquidIronFlowFX());
renderEngine.registerTextureFX(new LiquidGoldFX());
renderEngine.registerTextureFX(new LiquidGoldFlowFX());
renderEngine.registerTextureFX(new LiquidCopperFX());
renderEngine.registerTextureFX(new LiquidCopperFlowFX());
renderEngine.registerTextureFX(new LiquidTinFX());
renderEngine.registerTextureFX(new LiquidTinFlowFX());
renderEngine.registerTextureFX(new LiquidAluminumFX());
renderEngine.registerTextureFX(new LiquidAluminumFlowFX());
renderEngine.registerTextureFX(new LiquidCobaltFX());
renderEngine.registerTextureFX(new LiquidCobaltFlowFX());
renderEngine.registerTextureFX(new LiquidArditeFX());
renderEngine.registerTextureFX(new LiquidArditeFlowFX());
renderEngine.registerTextureFX(new LiquidBronzeFX());
renderEngine.registerTextureFX(new LiquidBronzeFlowFX());
renderEngine.registerTextureFX(new LiquidBrassFX());
renderEngine.registerTextureFX(new LiquidBrassFlowFX());
renderEngine.registerTextureFX(new LiquidManyullynFX());
renderEngine.registerTextureFX(new LiquidManyullynFlowFX());
renderEngine.registerTextureFX(new LiquidAlumiteFX());
renderEngine.registerTextureFX(new LiquidAlumiteFlowFX());
renderEngine.registerTextureFX(new LiquidObsidianFX());
renderEngine.registerTextureFX(new LiquidObsidianFlowFX());
//Tools
MinecraftForgeClient.preloadTexture(TContent.blockTexture);
IItemRenderer render = new SuperCustomToolRenderer();
for (ToolCore tool : TConstructRegistry.tools)
{
MinecraftForgeClient.registerItemRenderer(tool.itemID, render);
}
//Entities
RenderingRegistry.registerEntityRenderingHandler(tinker.tconstruct.entity.CartEntity.class, new CartRender());
RenderingRegistry.registerEntityRenderingHandler(tinker.tconstruct.entity.Skyla.class, new SkylaRender());
}
/* Ties an internal name to a visible one. */
public void addNames()
{
LanguageRegistry.addName(TContent.lavaTank, "Lava Tank");
LanguageRegistry.instance().addStringLocalization("itemGroup.TConstructTools", "TConstruct Tools");
LanguageRegistry.instance().addStringLocalization("itemGroup.TConstructMaterials", "TConstruct Materials");
LanguageRegistry.instance().addStringLocalization("itemGroup.TConstructBlocks", "TConstruct Blocks");
LanguageRegistry.instance().addStringLocalization("crafters.ToolStation", "Tool Station");
LanguageRegistry.instance().addStringLocalization("crafters.PartBuilder", "Part Builder");
LanguageRegistry.instance().addStringLocalization("crafters.PatternShaper", "Pattern Shaper");
LanguageRegistry.instance().addStringLocalization("inventory.PatternChest", "Pattern Chest");
LanguageRegistry.instance().addStringLocalization("crafters.Smeltery", "Smeltery");
LanguageRegistry.instance().addStringLocalization("crafters.Frypan", "Frying Pan");
LanguageRegistry.instance().addStringLocalization("ToolStation.Crafter.name", "Tool Station");
LanguageRegistry.instance().addStringLocalization("ToolStation.Parts.name", "Part Builder");
LanguageRegistry.instance().addStringLocalization("ToolStation.PatternChest.name", "Pattern Chest");
LanguageRegistry.instance().addStringLocalization("ToolStation.PatternShaper.name", "Stencil Table");
LanguageRegistry.instance().addStringLocalization("CraftedSoil.Slime.name", "Slimy Mud");
LanguageRegistry.instance().addStringLocalization("CraftedSoil.Grout.name", "Grout");
LanguageRegistry.instance().addStringLocalization("SearedBrick.Brick.name", "Seared Bricks");
for (int mat = 0; mat < materialTypes.length; mat++)
{
for (int type = 0; type < toolMaterialNames.length; type++)
{
String internalName = new StringBuilder().append("item.tconstruct.").append(materialTypes[mat]).append(".").append(toolMaterialNames[type]).append(".name").toString();
String visibleName = new StringBuilder().append(toolMaterialNames[type]).append(materialNames[mat]).toString();
LanguageRegistry.instance().addStringLocalization(internalName, "en_US", visibleName);
}
}
for (int i = 0; i < shardNames.length; i++)
{
String internalName = "item.tconstruct.ToolShard."+toolMaterialNames[i]+".name";
String visibleName = shardNames[i];
LanguageRegistry.instance().addStringLocalization(internalName, "en_US", visibleName);
}
for (int i = 0; i < materialItemNames.length; i++)
{
String internalName = "item.tconstruct.Materials."+materialItemInternalNames[i]+".name";
String visibleName = materialItemNames[i];
LanguageRegistry.instance().addStringLocalization(internalName, "en_US", visibleName);
}
for (int i = 0; i < patterns.length; i++)
{
String internalName = "item.tconstruct.Pattern."+patterns[i]+".name";
String visibleName = patternNames[i]+" Pattern";
LanguageRegistry.instance().addStringLocalization(internalName, "en_US", visibleName);
}
LanguageRegistry.addName(TContent.smeltery, "Smeltery");
LanguageRegistry.addName(TContent.manualBook, "Tinker's Log");
LanguageRegistry.addName(TContent.blankPattern, "Blank Pattern");
LanguageRegistry.addName(TContent.pickaxe, "Pickaxe");
LanguageRegistry.addName(TContent.shovel, "Shovel");
LanguageRegistry.addName(TContent.axe, "Axe");
LanguageRegistry.addName(TContent.broadsword, "Broadsword");
LanguageRegistry.addName(TContent.longsword, "Longsword");
LanguageRegistry.addName(TContent.rapier, "Rapier");
LanguageRegistry.addName(TContent.frypan, "Frying Pan");
LanguageRegistry.addName(TContent.battlesign, "Battlesign");
LanguageRegistry.addName(TContent.mattock, "Mattock");
LanguageRegistry.addName(TContent.lumberaxe, "Lumber Axe");
LanguageRegistry.addName(TContent.ironFlowing, "Liquid Iron");
LanguageRegistry.addName(TContent.ironStill, "Liquid Iron");
LanguageRegistry.addName(TContent.goldFlowing, "Liquid Gold");
LanguageRegistry.addName(TContent.goldStill, "Liquid Gold");
LanguageRegistry.addName(TContent.copperFlowing, "Liquid Copper");
LanguageRegistry.addName(TContent.copperStill, "Liquid Copper");
LanguageRegistry.addName(TContent.tinFlowing, "Liquid Tin");
LanguageRegistry.addName(TContent.tinStill, "Liquid Tin");
LanguageRegistry.addName(TContent.aluminumFlowing, "Liquid Aluminum");
LanguageRegistry.addName(TContent.aluminumStill, "Liquid Aluminum");
LanguageRegistry.addName(TContent.cobaltFlowing, "Liquid Cobalt");
LanguageRegistry.addName(TContent.cobaltStill, "Liquid Cobalt");
LanguageRegistry.addName(TContent.arditeFlowing, "Liquid Ardite");
LanguageRegistry.addName(TContent.arditeStill, "Liquid Ardite");
LanguageRegistry.addName(TContent.bronzeFlowing, "Liquid Bronze");
LanguageRegistry.addName(TContent.bronzeStill, "Liquid Bronze");
LanguageRegistry.addName(TContent.brassFlowing, "Liquid Brass");
LanguageRegistry.addName(TContent.brassStill, "Liquid Brass");
LanguageRegistry.addName(TContent.alumiteFlowing, "Liquid Alumite");
LanguageRegistry.addName(TContent.alumiteStill, "Liquid Alumite");
LanguageRegistry.addName(TContent.manyullynFlowing, "Liquid Manyullyn");
LanguageRegistry.addName(TContent.manyullynStill, "Liquid Manyullyn");
LanguageRegistry.addName(TContent.obsidianFlowing, "Liquid Obsidian");
LanguageRegistry.addName(TContent.obsidianStill, "Liquid Obsidian");
}
public static final String[] shardNames = new String[] {
"Wood", "Stone Shard", "Iron Chunk", "Flint Shard", "Cactus Shard", "Bone", "Obsidian Shard", "Netherrack Shard", "Slime Crystal Fragment", "Paper",
"Cobalt Chunk", "Ardite Chunk", "Manyullyn Chunk", "Copper Chunk", "Bronze Chunk" };
public static final String[] materialItemInternalNames = new String[] {
"PaperStack", "SlimeCrystal", "SearedBrick", "CobaltIngot", "ArditeIngot", "ManyullynIngot", "Mossball", "LavaCrystal", "NecroticBone" };
public static final String[] materialItemNames = new String[] {
"Paper Stack", "Slime Crystal", "Seared Brick", "Cobalt Ingot", "Ardite Ingot", "Manyullyn Ingot", "Ball of Moss", "Lava Crystal", "Necrotic Bone" };
public static final String[] toolMaterialNames = new String[] {
"Wood", "Stone", "Iron", "Flint", "Cactus", "Bone", "Obsidian", "Netherrack", "Slime", "Paper", "Cobalt", "Ardite", "Manyullyn", "Copper", "Bronze" };
public static final String[] materialTypes = new String[] {
"ToolRod", "PickaxeHead", "ShovelHead", "AxeHead", "SwordBlade", "LargeGuard", "MediumGuard", "Crossbar", "Binding", "FrypanHead", "SignHead", "LumberHead" };
public static final String[] materialNames = new String[] {
" Rod", " Pickaxe Head", " Shovel Head", " Axe Head", " Sword Blade", " Wide Guard", " Hand Guard", " Crossbar", " Binding", " Pan", " Board", " Broad Axe Head" };
public static final String[] patterns = new String[] {
"blank", "rod", "pickaxe", "shovel", "axe", "blade", "largeguard", "medguard", "crossbar", "binding", "frypan", "sign", "lumber" };
public static final String[] patternNames = new String[] {
"Blank", "Tool Rod", "Pickaxe Head", "Shovel Head", "Axe Head", "Sword Blade", "Wide Guard", "Hand Guard", "Crossbar", "Tool Binding", "Pan", "Board", "Broad Axe Head" };
public static Document diary;
public static Document volume1;
public void readManuals ()
{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
diary = readManual("/manuals/diary.xml", dbFactory);
volume1 = readManual("/manuals/materials.xml", dbFactory);
}
Document readManual(String location, DocumentBuilderFactory dbFactory)
{
try
{
InputStream stream = TConstruct.class.getResourceAsStream(location);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stream);
doc.getDocumentElement().normalize();
return doc;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
public static Document getManualFromStack(ItemStack stack)
{
switch (stack.getItemDamage())
{
case 1: return diary;
case 0: return volume1;
}
return null;
}
@Override
public File getLocation()
{
return Minecraft.getMinecraftDir();
}
}