equivalent-exchange-3/src/main/java/com/pahimar/ee3/proxy/ClientProxy.java

244 lines
9.5 KiB
Java
Raw Normal View History

2013-12-17 21:48:21 +01:00
package com.pahimar.ee3.proxy;
2013-08-23 16:59:50 +02:00
import com.pahimar.ee3.EquivalentExchange3;
import com.pahimar.ee3.client.audio.SoundHandler;
2013-12-21 23:16:55 +01:00
import com.pahimar.ee3.client.handler.ItemTooltipEventHandler;
2013-08-23 16:59:50 +02:00
import com.pahimar.ee3.client.renderer.item.ItemAlchemicalChestRenderer;
import com.pahimar.ee3.client.renderer.item.ItemAludelRenderer;
import com.pahimar.ee3.client.renderer.item.ItemCalcinatorRenderer;
import com.pahimar.ee3.client.renderer.item.ItemGlassBellRenderer;
import com.pahimar.ee3.client.renderer.tileentity.TileEntityAlchemicalChestRenderer;
import com.pahimar.ee3.client.renderer.tileentity.TileEntityAludelRenderer;
import com.pahimar.ee3.client.renderer.tileentity.TileEntityCalcinatorRenderer;
import com.pahimar.ee3.client.renderer.tileentity.TileEntityGlassBellRenderer;
2013-12-17 21:48:21 +01:00
import com.pahimar.ee3.handler.DrawBlockHighlightHandler;
import com.pahimar.ee3.handler.KeyBindingHandler;
import com.pahimar.ee3.handler.TransmutationTargetOverlayHandler;
import com.pahimar.ee3.helper.ItemHelper;
import com.pahimar.ee3.helper.KeyBindingHelper;
import com.pahimar.ee3.helper.TransmutationHelper;
2013-08-23 16:59:50 +02:00
import com.pahimar.ee3.item.IChargeable;
2013-12-21 23:16:55 +01:00
import com.pahimar.ee3.lib.*;
2013-08-23 16:59:50 +02:00
import com.pahimar.ee3.network.PacketTypeHandler;
import com.pahimar.ee3.network.packet.PacketRequestEvent;
import com.pahimar.ee3.tileentity.*;
2013-08-23 16:59:50 +02:00
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.KeyBindingRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.network.PacketDispatcher;
2013-12-21 23:16:55 +01:00
import cpw.mods.fml.common.registry.GameRegistry;
2013-08-23 16:59:50 +02:00
import cpw.mods.fml.common.registry.TickRegistry;
import cpw.mods.fml.relauncher.Side;
2013-12-21 23:16:55 +01:00
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.MinecraftForge;
2013-08-23 16:59:50 +02:00
/**
* Equivalent-Exchange-3
* <p/>
2013-08-23 16:59:50 +02:00
* ClientProxy
*
2013-08-23 16:59:50 +02:00
* @author pahimar
*/
2013-12-21 23:16:55 +01:00
@SideOnly(Side.CLIENT)
public class ClientProxy implements IProxy
{
2013-08-23 16:59:50 +02:00
@Override
public void registerKeyBindingHandler()
{
2013-08-23 16:59:50 +02:00
KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler());
}
@Override
public void registerRenderTickHandler()
{
2013-08-23 16:59:50 +02:00
TickRegistry.registerTickHandler(new TransmutationTargetOverlayHandler(), Side.CLIENT);
}
@Override
public void registerDrawBlockHighlightHandler()
{
2013-08-23 16:59:50 +02:00
MinecraftForge.EVENT_BUS.register(new DrawBlockHighlightHandler());
}
@Override
public void setKeyBinding(String name, int value)
{
KeyBindingHelper.addKeyBinding(name, value);
KeyBindingHelper.addIsRepeating(false);
2013-08-23 16:59:50 +02:00
}
@Override
public void registerSoundHandler()
{
2013-08-23 16:59:50 +02:00
MinecraftForge.EVENT_BUS.register(new SoundHandler());
}
@Override
public void initRenderingAndTextures()
{
RenderIds.calcinatorRender = RenderingRegistry.getNextAvailableRenderId();
RenderIds.aludelRender = RenderingRegistry.getNextAvailableRenderId();
RenderIds.alchemicalChestRender = RenderingRegistry.getNextAvailableRenderId();
RenderIds.glassBell = RenderingRegistry.getNextAvailableRenderId();
2013-08-23 16:59:50 +02:00
MinecraftForgeClient.registerItemRenderer(BlockIds.CALCINATOR, new ItemCalcinatorRenderer());
MinecraftForgeClient.registerItemRenderer(BlockIds.ALUDEL_BASE, new ItemAludelRenderer());
MinecraftForgeClient.registerItemRenderer(BlockIds.ALCHEMICAL_CHEST, new ItemAlchemicalChestRenderer());
MinecraftForgeClient.registerItemRenderer(BlockIds.GLASS_BELL, new ItemGlassBellRenderer());
2013-12-21 23:16:55 +01:00
ClientRegistry.bindTileEntitySpecialRenderer(TileCalcinator.class, new TileEntityCalcinatorRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileAludel.class, new TileEntityAludelRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileAlchemicalChest.class, new TileEntityAlchemicalChestRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileGlassBell.class, new TileEntityGlassBellRenderer());
2013-08-23 16:59:50 +02:00
}
@Override
public void registerTileEntities()
{
2013-12-21 23:16:55 +01:00
GameRegistry.registerTileEntity(TileCalcinator.class, Strings.TE_CALCINATOR_NAME);
GameRegistry.registerTileEntity(TileAludel.class, Strings.TE_ALUDEL_NAME);
GameRegistry.registerTileEntity(TileAlchemicalChest.class, Strings.TE_ALCHEMICAL_CHEST_NAME);
GameRegistry.registerTileEntity(TileGlassBell.class, Strings.TE_GLASS_BELL_NAME);
}
2013-08-23 16:59:50 +02:00
2013-12-21 23:16:55 +01:00
@Override
public void registerItemTooltipHandler()
{
MinecraftForge.EVENT_BUS.register(new ItemTooltipEventHandler());
2013-08-23 16:59:50 +02:00
}
@Override
public void sendRequestEventPacket(byte eventType, int originX, int originY, int originZ, byte sideHit, byte rangeX, byte rangeY, byte rangeZ, String data)
{
2013-08-23 16:59:50 +02:00
PacketDispatcher.sendPacketToServer(PacketTypeHandler.populatePacket(new PacketRequestEvent(eventType, originX, originY, originZ, sideHit, rangeX, rangeY, rangeZ, data)));
}
@Override
public void handleTileEntityPacket(int x, int y, int z, ForgeDirection orientation, byte state, String customName)
{
2013-08-23 16:59:50 +02:00
TileEntity tileEntity = FMLClientHandler.instance().getClient().theWorld.getBlockTileEntity(x, y, z);
if (tileEntity != null)
{
if (tileEntity instanceof TileEE)
{
2013-08-23 16:59:50 +02:00
((TileEE) tileEntity).setOrientation(orientation);
((TileEE) tileEntity).setState(state);
((TileEE) tileEntity).setCustomName(customName);
}
}
}
@Override
public void handleTileWithItemPacket(int x, int y, int z, ForgeDirection orientation, byte state, String customName, int itemID, int metaData, int stackSize, int color)
{
2013-08-23 16:59:50 +02:00
World world = FMLClientHandler.instance().getClient().theWorld;
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
this.handleTileEntityPacket(x, y, z, orientation, state, customName);
if (tileEntity != null)
{
if (tileEntity instanceof TileGlassBell)
{
2013-08-23 16:59:50 +02:00
ItemStack itemStack = new ItemStack(itemID, stackSize, metaData);
if (color != Integer.parseInt(Colours.PURE_WHITE, 16))
{
ItemHelper.setColor(itemStack, color);
2013-08-23 16:59:50 +02:00
}
((TileGlassBell) tileEntity).setInventorySlotContents(TileGlassBell.DISPLAY_SLOT_INVENTORY_INDEX, itemStack);
world.updateAllLightTypes(x, y, z);
}
else if (tileEntity instanceof TileAludel)
{
2013-08-23 16:59:50 +02:00
ItemStack itemStack = new ItemStack(itemID, stackSize, metaData);
if (color != Integer.parseInt(Colours.PURE_WHITE, 16))
{
ItemHelper.setColor(itemStack, color);
2013-08-23 16:59:50 +02:00
}
((TileAludel) tileEntity).setInventorySlotContents(TileAludel.INPUT_INVENTORY_INDEX, itemStack);
world.updateAllLightTypes(x, y, z);
}
}
}
@Override
public void transmuteBlock(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int sideHit)
{
if (TransmutationHelper.targetBlockStack != null)
{
if (itemStack != null)
{
2013-08-23 16:59:50 +02:00
int pnX = 1;
int pnY = 1;
int pnZ = 1;
if (itemStack.getItem() instanceof IChargeable)
{
2013-08-23 16:59:50 +02:00
int charge = ((IChargeable) itemStack.getItem()).getCharge(itemStack) * 2;
switch (ForgeDirection.getOrientation(sideHit))
{
case UP:
{
2013-08-23 16:59:50 +02:00
pnX = 1 + charge;
pnZ = 1 + charge;
break;
}
case DOWN:
{
2013-08-23 16:59:50 +02:00
pnX = 1 + charge;
pnZ = 1 + charge;
break;
}
case NORTH:
{
2013-08-23 16:59:50 +02:00
pnX = 1 + charge;
pnY = 1 + charge;
break;
}
case SOUTH:
{
2013-08-23 16:59:50 +02:00
pnX = 1 + charge;
pnY = 1 + charge;
break;
}
case EAST:
{
2013-08-23 16:59:50 +02:00
pnY = 1 + charge;
pnZ = 1 + charge;
break;
}
case WEST:
{
2013-08-23 16:59:50 +02:00
pnY = 1 + charge;
pnZ = 1 + charge;
break;
}
case UNKNOWN:
{
2013-08-23 16:59:50 +02:00
pnX = 0;
pnY = 0;
pnZ = 0;
break;
}
default:
break;
}
}
EquivalentExchange3.proxy.sendRequestEventPacket(ActionTypes.TRANSMUTATION, x, y, z, (byte) sideHit, (byte) pnX, (byte) pnY, (byte) pnZ, TransmutationHelper.formatTargetBlockInfo(TransmutationHelper.targetBlockStack));
}
}
}
}