package minefantasy.mf2.network;
import java.util.Random;
import minefantasy.mf2.api.archery.AmmoMechanicsMF;
import minefantasy.mf2.api.refine.ISmokeHandler;
import minefantasy.mf2.api.refine.SmokeMechanics;
import minefantasy.mf2.block.tileentity.TileEntityAnvilMF;
import minefantasy.mf2.block.tileentity.TileEntityBellows;
import minefantasy.mf2.block.tileentity.TileEntityBloomery;
import minefantasy.mf2.block.tileentity.TileEntityBombBench;
import minefantasy.mf2.block.tileentity.TileEntityBombPress;
import minefantasy.mf2.block.tileentity.TileEntityCarpenterMF;
import minefantasy.mf2.block.tileentity.TileEntityChimney;
import minefantasy.mf2.block.tileentity.TileEntityCrossbowBench;
import minefantasy.mf2.block.tileentity.TileEntityCrucible;
import minefantasy.mf2.block.tileentity.TileEntityForge;
import minefantasy.mf2.block.tileentity.TileEntityQuern;
import minefantasy.mf2.block.tileentity.TileEntityResearch;
import minefantasy.mf2.block.tileentity.TileEntityTanningRack;
import minefantasy.mf2.block.tileentity.TileEntityTrough;
import minefantasy.mf2.block.tileentity.blastfurnace.TileEntityBlastFC;
import minefantasy.mf2.block.tileentity.blastfurnace.TileEntityBlastFH;
import minefantasy.mf2.container.ContainerAnvilMF;
import minefantasy.mf2.container.ContainerBlastChamber;
import minefantasy.mf2.container.ContainerBlastHeater;
import minefantasy.mf2.container.ContainerBloomery;
import minefantasy.mf2.container.ContainerBombBench;
import minefantasy.mf2.container.ContainerCarpenterMF;
import minefantasy.mf2.container.ContainerCrossbowBench;
import minefantasy.mf2.container.ContainerCrucible;
import minefantasy.mf2.container.ContainerForge;
import minefantasy.mf2.container.ContainerQuern;
import minefantasy.mf2.container.ContainerReload;
import minefantasy.mf2.container.ContainerResearch;
import minefantasy.mf2.entity.EntitySmoke;
import minefantasy.mf2.entity.list.EntityListMF;
import minefantasy.mf2.hunger.HungerSystemMF;
import minefantasy.mf2.item.archery.ArrowFireFlint;
import minefantasy.mf2.item.archery.ArrowFirerMF;
import minefantasy.mf2.mechanics.ArrowHandlerMF;
import minefantasy.mf2.mechanics.CombatMechanics;
import minefantasy.mf2.mechanics.EventManagerMF;
import minefantasy.mf2.mechanics.MonsterUpgrader;
import minefantasy.mf2.mechanics.PlayerTickHandlerMF;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.registry.GameRegistry;
/**
* @author Anonymous Productions
*/
public class CommonProxyMF implements IGuiHandler, ISmokeHandler
{
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
{
return null;
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
{
if(ID == 1 && x == 1 && player.getHeldItem() != null)
{
return new ContainerReload(player.inventory, player.getHeldItem());
}
else if(ID == 0)
{
TileEntity tile = world.getTileEntity(x, y, z);
int meta = world.getBlockMetadata(x, y, z);
if(tile != null && tile instanceof TileEntityAnvilMF)
{
return new ContainerAnvilMF(player.inventory, (TileEntityAnvilMF) tile);
}
if(tile != null && tile instanceof TileEntityCarpenterMF)
{
return new ContainerCarpenterMF(player.inventory, (TileEntityCarpenterMF) tile);
}
if(tile != null && tile instanceof TileEntityBombBench)
{
return new ContainerBombBench(player.inventory, (TileEntityBombBench) tile);
}
if(tile != null && tile instanceof TileEntityBlastFH)
{
return new ContainerBlastHeater(player.inventory, (TileEntityBlastFH) tile);
}
if(tile != null && tile instanceof TileEntityBlastFC)
{
return new ContainerBlastChamber(player.inventory, (TileEntityBlastFC) tile);
}
if(tile != null && tile instanceof TileEntityCrucible)
{
return new ContainerCrucible(player.inventory, (TileEntityCrucible) tile);
}
if(tile != null && tile instanceof TileEntityForge)
{
return new ContainerForge(player.inventory, (TileEntityForge) tile);
}
if(tile != null && tile instanceof TileEntityResearch)
{
return new ContainerResearch(player.inventory, (TileEntityResearch) tile);
}
if(tile != null && tile instanceof TileEntityBloomery)
{
return new ContainerBloomery(player.inventory, (TileEntityBloomery) tile);
}
if(tile != null && tile instanceof TileEntityCrossbowBench)
{
return new ContainerCrossbowBench(player.inventory, (TileEntityCrossbowBench) tile);
}
if(tile != null && tile instanceof TileEntityQuern)
{
return new ContainerQuern(player.inventory, (TileEntityQuern) tile);
}
}
return null;
}
public World getClientWorld()
{
return null;
}
public void registerMain()
{
AmmoMechanicsMF.addHandler(new ArrowFireFlint());
AmmoMechanicsMF.addHandler(new ArrowFirerMF());
EntityListMF.register();
registerTileEntities();
SmokeMechanics.handler = this;
}
protected void registerTileEntities()
{
GameRegistry.registerTileEntity(TileEntityAnvilMF.class, "MF_Anvil");
GameRegistry.registerTileEntity(TileEntityCarpenterMF.class, "MF_CarpenterBench");
GameRegistry.registerTileEntity(TileEntityBombBench.class, "MF_BombBench");
GameRegistry.registerTileEntity(TileEntityCrossbowBench.class, "MF_CrossbowBench");
GameRegistry.registerTileEntity(TileEntityBlastFC.class, "MF_BlastChamber");
GameRegistry.registerTileEntity(TileEntityBlastFH.class, "MF_BlastHeater");
GameRegistry.registerTileEntity(TileEntityCrucible.class, "MF_Crucible");
GameRegistry.registerTileEntity(TileEntityChimney.class, "MF_Chimney");
GameRegistry.registerTileEntity(TileEntityTanningRack.class, "MF_Tanner");
GameRegistry.registerTileEntity(TileEntityForge.class, "MF_Forge");
GameRegistry.registerTileEntity(TileEntityBellows.class, "MF_Bellows");
GameRegistry.registerTileEntity(TileEntityResearch.class, "MF_Research");
GameRegistry.registerTileEntity(TileEntityTrough.class, "MF_Trough");
GameRegistry.registerTileEntity(TileEntityBombPress.class, "MF_BombPress");
GameRegistry.registerTileEntity(TileEntityBloomery.class, "MF_Bloomery");
GameRegistry.registerTileEntity(TileEntityQuern.class, "MF_Quern");
}
public void preInit()
{
}
public void registerTickHandlers()
{
FMLCommonHandler.instance().bus().register(new PlayerTickHandlerMF());
FMLCommonHandler.instance().bus().register(new HungerSystemMF());
MinecraftForge.EVENT_BUS.register(new EventManagerMF());
MinecraftForge.EVENT_BUS.register(new CombatMechanics());
MinecraftForge.EVENT_BUS.register(new MonsterUpgrader());
MinecraftForge.EVENT_BUS.register(new ArrowHandlerMF());
}
public EntityPlayer getClientPlayer()
{
return null;
}
public static int renderID = -1;
private static Random rand = new Random();
@Override
public void spawnSmoke(World world, double x, double y, double z, int value)
{
for(int a = 0; a < value; a++)
{
float sprayRange = 0.005F;
float sprayX = (rand.nextFloat()*sprayRange) - (sprayRange/2);
float sprayZ = (rand.nextFloat()*sprayRange) - (sprayRange/2);
float height = 0.001F;
if(rand.nextInt(2) == 0)
{
EntitySmoke smoke = new EntitySmoke(world ,x, y-0.5D, z, sprayX, height, sprayZ);
world.spawnEntityInWorld(smoke);
}
}
}
public void postInit() {
}
}