package net.geforcemods.securitycraft.blocks;
import net.geforcemods.securitycraft.api.IIntersectable;
import net.geforcemods.securitycraft.api.TileEntitySCTE;
import net.geforcemods.securitycraft.imc.waila.ICustomWailaDisplay;
import net.geforcemods.securitycraft.main.mod_SecurityCraft;
import net.geforcemods.securitycraft.misc.CustomDamageSources;
import net.minecraft.block.Block;
import net.minecraft.block.BlockDynamicLiquid;
import net.minecraft.block.BlockStaticLiquid;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockFakeWaterBase extends BlockStaticLiquid implements IIntersectable, ICustomWailaDisplay {
public BlockFakeWaterBase(Material par2Material)
{
super(par2Material);
}
public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock)
{
if (!this.checkForMixing(worldIn, pos, state))
{
this.updateLiquid(worldIn, pos, state);
}
}
private void updateLiquid(World worldIn, BlockPos p_176370_2_, IBlockState p_176370_3_)
{
BlockDynamicLiquid blockdynamicliquid = getFlowingBlock(this.blockMaterial);
worldIn.setBlockState(p_176370_2_, blockdynamicliquid.getDefaultState().withProperty(LEVEL, p_176370_3_.getValue(LEVEL)), 2);
worldIn.scheduleUpdate(p_176370_2_, blockdynamicliquid, this.tickRate(worldIn));
}
public static BlockDynamicLiquid getFlowingBlock(Material materialIn)
{
if (materialIn == Material.water)
{
return (BlockDynamicLiquid) mod_SecurityCraft.bogusWaterFlowing;
}
else if (materialIn == Material.lava)
{
return (BlockDynamicLiquid) mod_SecurityCraft.bogusLavaFlowing;
}
else
{
throw new IllegalArgumentException("Invalid material");
}
}
public void onEntityIntersected(World world, BlockPos pos, Entity entity) {
if(!world.isRemote){
if(entity instanceof EntityPlayer && !((EntityPlayer) entity).capabilities.isCreativeMode){
((EntityPlayer) entity).attackEntityFrom(CustomDamageSources.fakeWater, 5F);
}else{
entity.attackEntityFrom(CustomDamageSources.fakeWater, 5F);
}
}
}
/**
* Gets an item for the block being called on. Args: world, x, y, z
*/
@SideOnly(Side.CLIENT)
public Item getItem(World p_149694_1_, BlockPos pos)
{
return null;
}
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TileEntitySCTE().intersectsEntities();
}
@Override
public ItemStack getDisplayStack(World world, IBlockState state, BlockPos pos)
{
return new ItemStack(Blocks.water);
}
@Override
public boolean shouldShowSCInfo(World world, IBlockState state, BlockPos pos)
{
return false;
}
}