/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.client.core; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import mods.railcraft.client.render.carts.*; import mods.railcraft.common.blocks.aesthetics.lantern.BlockLantern; import mods.railcraft.common.blocks.signals.TileSignalFoundation; import net.minecraftforge.client.event.TextureStitchEvent; import org.apache.logging.log4j.Level; import net.minecraft.client.Minecraft; import net.minecraft.entity.item.EntityMinecart; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import cpw.mods.fml.client.FMLClientHandler; 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.registry.VillagerRegistry; import mods.railcraft.api.carts.locomotive.LocomotiveRenderType; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.common.MinecraftForge; import mods.railcraft.client.render.*; import mods.railcraft.client.render.models.locomotives.ModelLocomotiveSteamMagic; import mods.railcraft.client.render.models.locomotives.ModelLocomotiveSteamSolid; import mods.railcraft.client.sounds.RCSoundHandler; import mods.railcraft.common.blocks.RailcraftBlocks; import mods.railcraft.common.blocks.aesthetics.post.BlockPostMetal; import mods.railcraft.common.blocks.aesthetics.post.TilePostEmblem; import mods.railcraft.common.blocks.aesthetics.wall.BlockRailcraftWall; import mods.railcraft.common.blocks.machine.alpha.TileSteamTurbine; import mods.railcraft.common.blocks.machine.beta.TileChestMetals; import mods.railcraft.common.blocks.machine.beta.TileChestVoid; import mods.railcraft.common.blocks.machine.beta.TileEngineSteamHigh; import mods.railcraft.common.blocks.machine.beta.TileEngineSteamHobby; import mods.railcraft.common.blocks.machine.beta.TileEngineSteamLow; import mods.railcraft.common.blocks.machine.beta.TileTankIronGauge; import mods.railcraft.common.blocks.machine.beta.TileTankIronValve; import mods.railcraft.common.blocks.machine.beta.TileTankIronWall; import mods.railcraft.common.blocks.machine.beta.TileTankSteelGauge; import mods.railcraft.common.blocks.machine.beta.TileTankSteelValve; import mods.railcraft.common.blocks.machine.beta.TileTankSteelWall; import mods.railcraft.common.blocks.machine.delta.TileCage; import mods.railcraft.common.blocks.machine.gamma.TileFluidLoader; import mods.railcraft.common.blocks.machine.gamma.TileFluidUnloader; import mods.railcraft.common.blocks.tracks.TileTrackTESR; import mods.railcraft.common.carts.EntityLocomotive; import mods.railcraft.common.carts.EntityTunnelBore; import mods.railcraft.common.carts.EnumCart; import mods.railcraft.common.core.CommonProxy; import mods.railcraft.common.core.RailcraftConfig; import mods.railcraft.common.core.RailcraftConstants; import mods.railcraft.common.items.ItemGoggles; import mods.railcraft.common.items.firestone.TileFirestoneRecharge; import mods.railcraft.common.modules.ModuleWorld; import mods.railcraft.common.util.misc.Game; import mods.railcraft.common.util.sounds.SoundRegistry; import net.minecraft.item.Item; @SuppressWarnings("unused") public class ClientProxy extends CommonProxy { @Override public World getClientWorld() { return FMLClientHandler.instance().getClient().theWorld; } @Override public String getItemDisplayName(ItemStack stack) { return stack.getItem().getItemStackDisplayName(stack); } @Override public String getCurrentLanguage() { return Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode(); } @Override public int getRenderId() { return RenderingRegistry.getNextAvailableRenderId(); } @Override public void preInitClient() { MinecraftForge.EVENT_BUS.register(RCSoundHandler.INSTANCE); MinecraftForge.EVENT_BUS.register(new TextureHook()); } public static class TextureHook { @SubscribeEvent public void textureStitch(TextureStitchEvent.Pre event) { if (event.map.getTextureType() == 0) { CartContentRendererRedstoneFlux.instance().setRedstoneIcon(event.map.registerIcon("railcraft:cart.redstone.flux")); CartContentRendererRedstoneFlux.instance().setFrameIcon(event.map.registerIcon("railcraft:cart.redstone.flux.frame")); } } } @Override public void initClient() { FMLCommonHandler.instance().bus().register(new LatestVersionMessage()); SoundRegistry.setupBlockSounds(); FMLCommonHandler.instance().bus().register(LocomotiveKeyHandler.INSTANCE); if (!ItemGoggles.areEnabled()) FMLCommonHandler.instance().bus().register(AuraKeyHandler.INSTANCE); Game.log(Level.TRACE, "Init Start: Renderer"); LocomotiveRenderType.STEAM_SOLID.registerRenderer(new LocomotiveRendererDefault("railcraft:default", "locomotive.model.steam.solid.default", new ModelLocomotiveSteamSolid())); // LocomotiveRenderType.STEAM_SOLID.registerRenderer(new LocomotiveRendererDefault("railcraft:magic", "locomotive.model.steam.magic.default", new ModelLocomotiveSteamMagic())); // LocomotiveRenderType.STEAM_SOLID.registerRenderer(new LocomotiveRendererDefault("railcraft:electric", "locomotive.model.electric.default", new ModelLocomotiveElectric())); LocomotiveRenderType.STEAM_MAGIC.registerRenderer(new LocomotiveRendererDefault("railcraft:default", "locomotive.model.steam.magic.default", new ModelLocomotiveSteamMagic())); LocomotiveRenderType.ELECTRIC.registerRenderer(new LocomotiveRendererElectric()); ItemStack stack = LocomotiveRenderType.STEAM_SOLID.getItemWithRenderer("railcraft:default"); if (stack != null) MinecraftForgeClient.registerItemRenderer(stack.getItem(), new RenderItemLocomotive(LocomotiveRenderType.STEAM_SOLID, (EntityLocomotive) EnumCart.LOCO_STEAM_SOLID.makeCart(stack, null, 0, 0, 0))); stack = LocomotiveRenderType.STEAM_MAGIC.getItemWithRenderer("railcraft:default"); if (stack != null) MinecraftForgeClient.registerItemRenderer(stack.getItem(), new RenderItemLocomotive(LocomotiveRenderType.STEAM_MAGIC, (EntityLocomotive) EnumCart.LOCO_STEAM_MAGIC.makeCart(stack, null, 0, 0, 0))); stack = LocomotiveRenderType.ELECTRIC.getItemWithRenderer("railcraft:default"); if (stack != null) MinecraftForgeClient.registerItemRenderer(stack.getItem(), new RenderItemLocomotive(LocomotiveRenderType.ELECTRIC, (EntityLocomotive) EnumCart.LOCO_ELECTRIC.makeCart(stack, null, 0, 0, 0))); RenderFluidLoader fluidLoaderRenderer = new RenderFluidLoader(); ClientRegistry.bindTileEntitySpecialRenderer(TileFluidLoader.class, fluidLoaderRenderer); ClientRegistry.bindTileEntitySpecialRenderer(TileFluidUnloader.class, fluidLoaderRenderer); ClientRegistry.bindTileEntitySpecialRenderer(TileTankIronGauge.class, new RenderIronTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileTankIronWall.class, new RenderIronTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileTankIronValve.class, new RenderIronTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileTankSteelGauge.class, new RenderIronTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileTankSteelWall.class, new RenderIronTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileTankSteelValve.class, new RenderIronTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEngineSteamHobby.class, RenderPneumaticEngine.renderHobby); ClientRegistry.bindTileEntitySpecialRenderer(TileEngineSteamLow.class, RenderPneumaticEngine.renderLow); ClientRegistry.bindTileEntitySpecialRenderer(TileEngineSteamHigh.class, RenderPneumaticEngine.renderHigh); ClientRegistry.bindTileEntitySpecialRenderer(TileCage.class, new RenderCagedEntity()); ClientRegistry.bindTileEntitySpecialRenderer(TileTrackTESR.class, new RenderTrackBuffer()); ClientRegistry.bindTileEntitySpecialRenderer(TileChestVoid.class, new RenderChest(RailcraftConstants.TESR_TEXTURE_FOLDER + "chest_void.png", new TileChestVoid())); ClientRegistry.bindTileEntitySpecialRenderer(TileChestMetals.class, new RenderChest(RailcraftConstants.TESR_TEXTURE_FOLDER + "chest_metals.png", new TileChestMetals())); ClientRegistry.bindTileEntitySpecialRenderer(TilePostEmblem.class, new RenderBlockPost.EmblemPostTESR()); ClientRegistry.bindTileEntitySpecialRenderer(TileFirestoneRecharge.class, new RenderTESRFirestone()); ClientRegistry.bindTileEntitySpecialRenderer(TileSteamTurbine.class, new RenderTurbineGauge()); RenderTESRSignals controllerRenderer = new RenderTESRSignals(); ClientRegistry.bindTileEntitySpecialRenderer(TileSignalFoundation.class, controllerRenderer); if (RailcraftBlocks.getBlockTrack() != null) RenderingRegistry.registerBlockHandler(new RenderTrack()); if (RailcraftBlocks.getBlockElevator() != null) RenderingRegistry.registerBlockHandler(new RenderElevator()); registerBlockRenderer(new RenderBlockMachineBeta()); registerBlockRenderer(new RenderBlockMachineDelta()); registerBlockRenderer(new RenderBlockSignal()); registerBlockRenderer(RenderBlockPost.make()); registerBlockRenderer(RenderBlockPostMetal.make(BlockPostMetal.post)); registerBlockRenderer(RenderBlockPostMetal.make(BlockPostMetal.platform)); registerBlockRenderer(new RenderBlockOre()); registerBlockRenderer(new RenderBlockFrame()); registerBlockRenderer(new RenderBlockStrengthGlass()); registerBlockRenderer(new RenderBlockLamp(BlockLantern.getBlockStone())); registerBlockRenderer(new RenderBlockLamp(BlockLantern.getBlockMetal())); registerBlockRenderer(new RenderWall(BlockRailcraftWall.getBlockAlpha())); registerBlockRenderer(new RenderWall(BlockRailcraftWall.getBlockBeta())); registerBlockRenderer(new RenderStair()); registerBlockRenderer(new RenderSlab()); RenderingRegistry.registerEntityRenderingHandler(EntityTunnelBore.class, new RenderTunnelBore()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecart.class, new RenderCart()); stack = EnumCart.TANK.getCartItem(); if (stack != null) MinecraftForgeClient.registerItemRenderer(stack.getItem(), new RenderCartItemFiltered(RenderCartItemFiltered.RendererType.Tank)); stack = EnumCart.CARGO.getCartItem(); if (stack != null) MinecraftForgeClient.registerItemRenderer(stack.getItem(), new RenderCartItemFiltered(RenderCartItemFiltered.RendererType.Cargo)); Minecraft.getMinecraft().entityRenderer.debugViewDirection = 0; FMLCommonHandler.instance().bus().register(new DebugViewTicker()); if (RailcraftConfig.isWorldGenEnabled("workshop")) { int id = RailcraftConfig.villagerID(); VillagerRegistry.instance().registerVillagerSkin(id, ModuleWorld.VILLAGER_TEXTURE); } Game.log(Level.TRACE, "Init Complete: Renderer"); } private void registerBlockRenderer(BlockRenderer renderer) { if (renderer.getBlock() != null) { RenderingRegistry.registerBlockHandler(renderer); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(renderer.getBlock()), renderer.getItemRenderer()); } } }