package me.tyler15555.minibosses.block; import java.lang.reflect.InvocationTargetException; import org.apache.logging.log4j.Level; import me.tyler15555.minibosses.common.MiniBosses; import me.tyler15555.minibosses.item.MBItems; import me.tyler15555.minibosses.util.Resources; import me.tyler15555.minibosses.util.NBTHelper; import me.tyler15555.minibosses.util.SummonEntry; import me.tyler15555.tileentity.TileEntitySummoningPillar; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.relauncher.Side; public class BlockSummoningPillar extends BlockContainer { public BlockSummoningPillar() { super(Material.rock); setCreativeTab(Resources.tabMB); setUnlocalizedName("summoningPillar"); } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new TileEntitySummoningPillar(); } @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { if(world.getTileEntity(pos) != null) { if(player.getHeldItem().getItem() == MBItems.summonScroll && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { TileEntitySummoningPillar pillar = (TileEntitySummoningPillar)world.getTileEntity(pos); String[] summonData = NBTHelper.getStringFromStack(player.getHeldItem(), "SummonEntry").split(":"); try { SummonEntry summon = new SummonEntry(Class.forName(summonData[0]), summonData[1], Integer.valueOf(summonData[2]), Integer.valueOf(summonData[3])); summon.doSummon(pillar.getBloodAmount(), pillar.getPillarLevel(), world, pos.getX(), pos.getY(), pos.getZ()); } catch (NumberFormatException e) { MiniBosses.logger.log(Level.WARN, "An invalid number was encountered while processing a summon entry! Ignoring..."); e.printStackTrace(); return false; } catch (ClassNotFoundException e) { MiniBosses.logger.log(Level.WARN, "The entity class: " + summonData[0] + "specified in this summon was not found! Ignoring..."); e.printStackTrace(); return false; } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } return true; } else { return false; } } @Override public boolean isOpaqueCube() { return false; } @Override public int getRenderType() { return 3; } /* @Override public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer); TileEntitySummoningPillar pillar = (TileEntitySummoningPillar) worldIn.getTileEntity(pos); //pillar.setPillarLevel(0); return this.getDefaultState(); } */ }