125 lines
2.9 KiB
Java
125 lines
2.9 KiB
Java
/**
|
|
*
|
|
*/
|
|
package resonantinduction.electrical.tesla;
|
|
|
|
import net.minecraft.block.ITileEntityProvider;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.world.World;
|
|
import resonantinduction.core.Reference;
|
|
import resonantinduction.core.Utility;
|
|
import resonantinduction.core.prefab.block.BlockIOBase;
|
|
import resonantinduction.electrical.render.ElectricalBlockRenderingHandler;
|
|
import calclavia.lib.utility.LanguageUtility;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
/**
|
|
* @author Calclavia
|
|
*
|
|
*/
|
|
public class BlockTesla extends BlockIOBase implements ITileEntityProvider
|
|
{
|
|
public BlockTesla(int id)
|
|
{
|
|
super("tesla", id);
|
|
this.setTextureName(Reference.PREFIX + "machine");
|
|
}
|
|
|
|
@Override
|
|
public void onBlockAdded(World world, int x, int y, int z)
|
|
{
|
|
super.onBlockAdded(world, x, y, z);
|
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
|
((TileTesla) tileEntity).updatePositionStatus();
|
|
}
|
|
|
|
@Override
|
|
public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
|
|
{
|
|
TileEntity t = world.getBlockTileEntity(x, y, z);
|
|
TileTesla tileEntity = ((TileTesla) t).getControllingTelsa();
|
|
|
|
if (entityPlayer.getCurrentEquippedItem() != null)
|
|
{
|
|
int dyeColor = Utility.isDye(entityPlayer.getCurrentEquippedItem());
|
|
|
|
if (dyeColor != -1)
|
|
{
|
|
tileEntity.setDye(dyeColor);
|
|
|
|
if (!entityPlayer.capabilities.isCreativeMode)
|
|
{
|
|
entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
else if (entityPlayer.getCurrentEquippedItem().itemID == Item.redstone.itemID)
|
|
{
|
|
boolean status = tileEntity.toggleEntityAttack();
|
|
|
|
if (!entityPlayer.capabilities.isCreativeMode)
|
|
{
|
|
entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1);
|
|
}
|
|
|
|
if (!world.isRemote)
|
|
{
|
|
entityPlayer.addChatMessage(LanguageUtility.getLocal("message.tesla.toggleAttack").replace("%v", status + ""));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
boolean receiveMode = tileEntity.toggleReceive();
|
|
|
|
if (world.isRemote)
|
|
{
|
|
entityPlayer.addChatMessage(LanguageUtility.getLocal("message.tesla.mode").replace("%v", receiveMode + ""));
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onNeighborBlockChange(World world, int x, int y, int z, int id)
|
|
{
|
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
|
((TileTesla) tileEntity).updatePositionStatus();
|
|
}
|
|
|
|
@Override
|
|
public TileEntity createNewTileEntity(World world)
|
|
{
|
|
return new TileTesla();
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
@Override
|
|
public int getRenderType()
|
|
{
|
|
return ElectricalBlockRenderingHandler.INSTANCE.getRenderId();
|
|
}
|
|
|
|
@Override
|
|
public boolean renderAsNormalBlock()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isOpaqueCube()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
}
|