package gtclassic.api.block; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.UUID; import gtclassic.api.interfaces.IGTDisplayTickTile; import ic2.core.block.base.BlockMultiID; import ic2.core.block.base.tile.TileEntityElectricBlock; import ic2.core.block.personal.base.misc.IOwnerBlock; import ic2.core.platform.lang.components.base.LocaleComp; import ic2.core.util.helpers.BlockStateContainerIC2; import net.minecraft.block.material.Material; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.EntityLiving.SpawnPlacementType; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public abstract class GTBlockBaseMachine extends BlockMultiID { int tooltipSize = 0; public GTBlockBaseMachine(Material materialIn, LocaleComp comp, int tooltipSize) { super(materialIn); this.tooltipSize = tooltipSize; setUnlocalizedName(comp); } @Override public void addInformation(ItemStack stack, World worldIn, List<String> tooltip, ITooltipFlag flagIn) { if (tooltipSize == 0) { return; } for (int i = 0; i < this.tooltipSize; i++) { tooltip.add(I18n.format(this.getUnlocalizedName().replace("tile", "tooltip") + i)); } } @Override public boolean canCreatureSpawn(IBlockState state, IBlockAccess world, BlockPos pos, SpawnPlacementType type) { return false; } @Override public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(worldIn, pos, state, placer, stack); TileEntity tile = worldIn.getTileEntity(pos); if (tile instanceof IOwnerBlock && placer != null) { UUID owner = placer.getUniqueID(); ((IOwnerBlock) tile).setOwner(owner); } } @Override @Deprecated public boolean canProvidePower(IBlockState state) { return true; } @Override @Deprecated public int getStrongPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) { TileEntity tile = blockAccess.getTileEntity(pos); if (tile instanceof TileEntityElectricBlock) { return ((TileEntityElectricBlock) tile).isEmittingRedstone() ? 15 : 0; } else { return super.getCommonPower(blockState, blockAccess, pos, side); } } @Override @Deprecated public int getWeakPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) { TileEntity tile = blockAccess.getTileEntity(pos); if (tile instanceof TileEntityElectricBlock) { return ((TileEntityElectricBlock) tile).isEmittingRedstone() ? 15 : 0; } else { return super.getCommonPower(blockState, blockAccess, pos, side); } } @Override public List<Integer> getValidMetas() { return Arrays.asList(0); } @Override public int quantityDropped(Random random) { return 0; } @Override public int getMaxSheetSize(int meta) { return 1; } @Override public List<IBlockState> getValidStateList() { IBlockState def = getDefaultState(); List<IBlockState> states = new ArrayList<>(); for (EnumFacing side : EnumFacing.VALUES) { states.add(def.withProperty(allFacings, side).withProperty(active, false)); states.add(def.withProperty(allFacings, side).withProperty(active, true)); } return states; } @Override public List<IBlockState> getValidStates() { return getBlockState().getValidStates(); } @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) { TileEntity tile = worldIn.getTileEntity(pos); if (tile instanceof IGTDisplayTickTile) { ((IGTDisplayTickTile) tile).randomTickDisplay(stateIn, worldIn, pos, rand); } } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainerIC2(this, allFacings, active); } @Override public int getMetaFromState(IBlockState state) { return 0; } @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState(); } @Override public IBlockState getDefaultBlockState() { IBlockState state = getDefaultState().withProperty(active, false); if (hasFacing()) { state = state.withProperty(allFacings, EnumFacing.NORTH); } return state; } }