BloodMagic/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java
2014-10-31 17:54:59 -04:00

191 lines
4.6 KiB
Java

package WayofTime.alchemicalWizardry.common.block;
import javax.swing.Icon;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import WayofTime.alchemicalWizardry.AlchemicalWizardry;
import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockOrientable extends BlockContainer
{
public BlockOrientable()
{
super(Material.rock);
setHardness(2.0F);
setResistance(5.0F);
setCreativeTab(AlchemicalWizardry.tabBloodMagic);
//setUnlocalizedName("bloodSocket");
//func_111022_d("AlchemicalWizardry:blocks");
}
// @Override
// public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are)
// {
// return false;
// }
@Override
public TileEntity createNewTileEntity(World world, int dunno)
{
return new TEOrientable();
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are)
{
//Right-click orients the output face. Shift-right-click orients the input face.
if (world.isRemote)
{
return false;
}
ForgeDirection sideClicked = ForgeDirection.getOrientation(side);
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof TEOrientable)
{
TEOrientable newTile = (TEOrientable)tile;
if(player.isSneaking())
{
int nextSide = TEOrientable.getIntForForgeDirection(newTile.getInputDirection())+1;
if(nextSide>5)
{
nextSide = 0;
}
if(ForgeDirection.getOrientation(nextSide)==newTile.getOutputDirection())
{
nextSide++;
if(nextSide>5)
{
nextSide = 0;
}
}
newTile.setInputDirection(ForgeDirection.getOrientation(nextSide));
}else
{
int nextSide = TEOrientable.getIntForForgeDirection(newTile.getOutputDirection())+1;
if(nextSide>5)
{
nextSide = 0;
}
if(ForgeDirection.getOrientation(nextSide)==newTile.getInputDirection())
{
nextSide++;
if(nextSide>5)
{
nextSide = 0;
}
}
newTile.setOutputDirection(ForgeDirection.getOrientation(nextSide));
}
}
world.markBlockForUpdate(x, y, z);
return true;
}
public int getTextureIndexForSideAndOrientation(int side, ForgeDirection input, ForgeDirection output)
{
if(ForgeDirection.getOrientation(side) == input)
{
return 0;
}
if(ForgeDirection.getOrientation(side) == output)
{
return 1;
}
if(ForgeDirection.getOrientation(side) == output.getOpposite())
{
return 6;
}
switch(side)
{
case 0: //BOTTOM
switch(output)
{
case NORTH: return 2; //UP
case SOUTH: return 3; //DOWN
case EAST: return 4; //LEFT
case WEST: return 5; //RIGHT
default: break;
}
break;
case 1: //TOP
switch(output)
{
case NORTH: return 2; //UP
case SOUTH: return 3; //DOWN
case EAST: return 5;
case WEST: return 4;
default: break;
}
break;
case 2: //NORTH
switch(output)
{
case DOWN: return 3;
case UP: return 2;
case EAST: return 4;
case WEST: return 5;
default: break;
}
break;
case 3: //SOUTH
switch(output)
{
case DOWN: return 3;
case UP: return 2;
case EAST: return 5;
case WEST: return 4;
default: break;
}
break;
case 4: //WEST
switch(output)
{
case DOWN: return 3;
case UP: return 2;
case NORTH: return 5;
case SOUTH: return 4;
default: break;
}
break;
case 5: //EAST
switch(output)
{
case DOWN: return 3;
case UP: return 2;
case NORTH: return 4;
case SOUTH: return 5;
default: break;
}
break;
}
return 0;
}
@Override
public int damageDropped(int metadata)
{
return metadata;
}
}