package blessentumble.core.proxy;
import micdoodle8.mods.galacticraft.core.client.render.item.ItemRendererKey;
import micdoodle8.mods.galacticraft.planets.asteroids.AsteroidsModule;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.client.ClientCommandHandler;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.common.MinecraftForge;
import blessentumble.BlesseAddon;
import blessentumble.core.achievements.AchEvent;
import blessentumble.core.achievements.AchievementList;
import blessentumble.core.blocks.BlocksAddon;
import blessentumble.core.items.ItemsAddon;
import blessentumble.moons.europa.entities.EntityBossBlaze;
import blessentumble.moons.europa.entities.EntityEvolvedColdBlaze;
import blessentumble.moons.europa.entities.particle.EntityIceWater;
import blessentumble.moons.europa.entities.particle.EntityIceWater2;
import blessentumble.moons.europa.render.block.BlockRendererEuropaTreasureChest;
import blessentumble.moons.europa.render.entities.RenderBossBlaze;
import blessentumble.moons.europa.render.entities.RenderEvolvedColdBlaze;
import blessentumble.moons.europa.render.tile.TileEntityEuropaTreasureChestRenderer;
import blessentumble.moons.europa.tile.TileEntityEuropaTreasureChest;
import blessentumble.moons.io.entities.EntityEvolvedFireCreeper;
import blessentumble.moons.io.entities.EntityTier4Rocket;
import blessentumble.moons.io.render.entity.RenderEvolvedFireCreeper;
import blessentumble.moons.io.render.entity.RenderTier4Rocket;
import blessentumble.moons.io.render.item.ItemRendererTier4Rocket;
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.eventhandler.SubscribeEvent;
public class ClientProxy extends CommonProxy {
private static Minecraft mc = FMLClientHandler.instance().getClient();
private static int europaTreasureChestRenderID;
public void preload() {
}
public void load()
{
ClientProxy.registerEntityRenderers();
ClientProxy.registerItemRenderers();
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEuropaTreasureChest.class, new TileEntityEuropaTreasureChestRenderer());
this.register_event(new AchEvent());
AchievementList.load();
}
public void postload() {
}
public static void registerEntityRenderers()
{
ClientProxy.europaTreasureChestRenderID = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerEntityRenderingHandler(EntityEvolvedColdBlaze.class, new RenderEvolvedColdBlaze());
RenderingRegistry.registerEntityRenderingHandler(EntityBossBlaze.class, new RenderBossBlaze());
RenderingRegistry.registerBlockHandler(new BlockRendererEuropaTreasureChest(ClientProxy.europaTreasureChestRenderID));
RenderingRegistry.registerEntityRenderingHandler(EntityEvolvedFireCreeper.class, new RenderEvolvedFireCreeper());
}
public static void registerItemRenderers()
{
IModelCustom rocketModeltier4 = AdvancedModelLoader.loadModel(new ResourceLocation(AsteroidsModule.ASSET_PREFIX, "models/tier3rocket.obj"));
RenderingRegistry.registerEntityRenderingHandler(EntityTier4Rocket.class, new RenderTier4Rocket(rocketModeltier4, BlesseAddon.ASSET_PREFIX, "tier4rocket"));
MinecraftForgeClient.registerItemRenderer(ItemsAddon.Tier4Key, new ItemRendererKey(new ResourceLocation(BlesseAddon.ASSET_PREFIX, "textures/model/europaTreasureChest.png")));
MinecraftForgeClient.registerItemRenderer(ItemsAddon.Tier4Rocket, new ItemRendererTier4Rocket(rocketModeltier4));
}
public void spawnParticle(World world, String particleType, double x, double y, double z, double velX, double velY, double velZ) {
if(mc != null && mc.renderViewEntity != null && mc.effectRenderer != null && mc.theWorld == world) {
double distX = mc.renderViewEntity.posX - x;
double distY = mc.renderViewEntity.posY - y;
double distZ = mc.renderViewEntity.posZ - z;
Object particle = null;
double maxDist = 64.0D;
if(distX * distX + distY * distY + distZ * distZ < maxDist * maxDist) {
if(particleType.equals("largeflame")) {
particle = new EntityIceWater(world, x, y, z, velX, velY, velZ);
}
if(particleType.equals("largewater")) {
particle = new EntityIceWater2(world, x, y, z, velX, velY, velZ);
}
if(particle != null) {
((Entity)particle).prevPosX = ((Entity)particle).posX;
((Entity)particle).prevPosY = ((Entity)particle).posY;
((Entity)particle).prevPosZ = ((Entity)particle).posZ;
mc.effectRenderer.addEffect((EntityFX)particle);
}
}
}
}
@Override
public int getBlockRender(Block block)
{
if (block == BlocksAddon.EuropaTChestT3)
{
return ClientProxy.europaTreasureChestRenderID;
}
return -1;
}
public void register_event(Object obj)
{
FMLCommonHandler.instance().bus().register(obj);
MinecraftForge.EVENT_BUS.register(obj);
}
@SubscribeEvent
public void configureFog(FogDensity e) {
e.density = 0.96F;
e.setCanceled(true);
}
}