package crazypants.enderio.machine.enchanter;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import com.enderio.core.api.client.gui.IResourceTooltipProvider;
import com.enderio.core.common.util.Util;
import cpw.mods.fml.common.network.IGuiHandler;
import crazypants.enderio.BlockEio;
import crazypants.enderio.EnderIO;
import crazypants.enderio.GuiHandler;
import crazypants.enderio.ModObject;
public class BlockEnchanter extends BlockEio implements IGuiHandler, IResourceTooltipProvider {
public static BlockEnchanter create() {
BlockEnchanter res = new BlockEnchanter();
res.init();
return res;
}
public static int renderId = -1;
protected BlockEnchanter() {
super(ModObject.blockEnchanter.unlocalisedName, TileEnchanter.class);
setBlockTextureName("enderio:blockEnchanter");
setLightOpacity(4);
}
@Override
protected void init() {
super.init();
EnderIO.guiHandler.registerGuiHandler(GuiHandler.GUI_ID_ENCHANTER, this);
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
super.onBlockPlacedBy(world, x, y, z, player, stack);
int heading = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
TileEnchanter te = (TileEnchanter) world.getTileEntity(x, y, z);
switch (heading) {
case 0:
te.setFacing((short) 2);
break;
case 1:
te.setFacing((short) 5);
break;
case 2:
te.setFacing((short) 3);
break;
case 3:
te.setFacing((short) 4);
break;
default:
break;
}
if(world.isRemote) {
return;
}
world.markBlockForUpdate(x, y, z);
}
@Override
protected boolean openGui(World world, int x, int y, int z, EntityPlayer entityPlayer, int side) {
if(!world.isRemote) {
entityPlayer.openGui(EnderIO.instance, GuiHandler.GUI_ID_ENCHANTER, world, x, y, z);
}
return true;
}
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEnchanter) {
dropItems(world, x, y, z, (TileEnchanter) te);
}
super.breakBlock(world, x, y, z, block, meta);
}
public boolean doNormalDrops(World world, int x, int y, int z) {
return false;
}
private void dropItems(World world, int x, int y, int z, TileEnchanter te) {
if(te.getStackInSlot(0) != null) {
Util.dropItems(world, te.getStackInSlot(0), x, y, z, true);
}
if(te.getStackInSlot(1) != null) {
Util.dropItems(world, te.getStackInSlot(1), x, y, z, true);
}
}
@Override
public int quantityDropped(Random p_149745_1_) {
return 0;
}
@Override
public int getRenderType() {
return renderId;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEnchanter) {
return new ContainerEnchanter(player, player.inventory, (TileEnchanter) te);
}
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEnchanter) {
return new GuiEnchanter(player, player.inventory, (TileEnchanter) te);
}
return null;
}
@Override
public String getUnlocalizedNameForTooltip(ItemStack itemStack) {
return getUnlocalizedName();
}
}