package joshie.harvest.buildings.block; import joshie.harvest.buildings.HFBuildings; import joshie.harvest.buildings.item.ItemCheat.Cheat; import joshie.harvest.core.HFCore; import joshie.harvest.core.HFTab; import joshie.harvest.core.base.block.BlockHFBase; import joshie.harvest.core.helpers.InventoryHelper; import joshie.harvest.core.helpers.TextHelper; import joshie.harvest.core.lib.CreativeSort; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent.Phase; import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; import static joshie.harvest.core.helpers.InventoryHelper.ITEM_STACK; public class BlockInternalAir extends BlockHFBase<BlockInternalAir> { public BlockInternalAir() { super(Material.GLASS, HFTab.TOWN); } @Override public String getItemStackDisplayName(ItemStack stack) { return TextHelper.localizeFully(getUnlocalizedName()); } @Nullable @Override @SuppressWarnings("deprecation") public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, @Nonnull World worldIn, @Nonnull BlockPos pos) { return NULL_AABB; } @Override @SuppressWarnings("deprecation") public boolean isOpaqueCube(IBlockState state) { return false; } @Override public boolean isVisuallyOpaque() { return false; } @Override public boolean isReplaceable(IBlockAccess worldIn, @Nonnull BlockPos pos) { return true; } @Override @SideOnly(Side.CLIENT) @Nonnull public BlockRenderLayer getBlockLayer() { return BlockRenderLayer.CUTOUT_MIPPED; } @SideOnly(Side.CLIENT) public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, List<ItemStack> list) { if (HFCore.DEBUG_MODE) { super.getSubBlocks(itemIn, tab, list); } } @Override public int getSortValue(ItemStack stack) { return CreativeSort.LAST - 1; } public static void onPlaced(World world, BlockPos pos, EntityPlayer player) { MinecraftForge.EVENT_BUS.register(new RemoveIfHolding(world, pos, player)); } private static class RemoveIfHolding { private final World world; private final BlockPos pos; private final EntityPlayer player; RemoveIfHolding (World world, BlockPos pos, EntityPlayer player) { this.world = world; this.pos = pos; this.player = player; } @SubscribeEvent public void onPlayerTick(PlayerTickEvent event) { if (event.player == player && event.phase == Phase.END) { if (InventoryHelper.getHandItemIsIn(event.player, ITEM_STACK, HFBuildings.CHEAT.getStackFromEnum(Cheat.AIR_REMOVER)) != null) { world.setBlockToAir(pos); try { MinecraftForge.EVENT_BUS.unregister(this); } catch (Exception e) {/**/} } } } } }