package com.pixelutilitys.blocks; import com.pixelutilitys.gui.GuiRadio; import com.pixelutilitys.tileentitys.TileEntityRadio; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.Random; public class RadioBlock extends Block implements ITileEntityProvider { public TileEntityRadio radio; public RadioBlock() { super(Material.wood); setHardness(2.0F); setResistance(10.0F); setStepSound(Block.soundTypeStone); setBlockName("Radio"); setCreativeTab(CreativeTabs.tabDecorations); setBlockTextureName("pixelutilitys:radio"); } @Override public int quantityDropped(Random random) { return 1; } @Override public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { if (par5EntityPlayer.isSneaking()) { } else { Side side = FMLCommonHandler.instance().getEffectiveSide(); if (side == Side.CLIENT) { openGUI(par1World, par2, par3, par4); } } return true; } @SideOnly(Side.CLIENT) private void openGUI(World par1World, int par2, int par3, int par4) { TileEntityRadio ter = (TileEntityRadio) par1World.getTileEntity(par2, par3, par4); Minecraft.getMinecraft().displayGuiScreen(new GuiRadio(ter)); } @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean isOpaqueCube() { return false; } @Override public int getRenderType() { return 189; } @Override public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { setBlockBoundsBasedOnState(par1World, par2, par3, par4); return super .getSelectedBoundingBoxFromPool(par1World, par2, par3, par4); } @Override public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { switch (par1IBlockAccess.getTileEntity(par2, par3, par4) .getBlockMetadata()) { default: setBlockBounds(0.0F, 0.0F, 0.4F, 1.0F, 0.5F, 0.7F); break; case 1: setBlockBounds(0.4F, 0.5F, 0.0F, 0.7F, 0.0F, 1.0F); break; case 2: setBlockBounds(0.0F, 0.0F, 0.4F, 1.0F, 0.5F, 0.7F); break; case 3: setBlockBounds(0.4F, 0.5F, 0.0F, 0.7F, 0.0F, 1.0F); break; } } /** * Called when the block is placed in the world. */ @Override public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { int l = MathHelper .floor_double((double) (par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; int i1 = par1World.getBlockMetadata(par2, par3, par4) >> 2; ++l; l %= 4; if (l == 3) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 2 | i1 << 2, 2); } if (l == 0) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 3 | i1 << 2, 2); } if (l == 1) { par1World.setBlockMetadataWithNotify(par2, par3, par4, i1 << 2, 2); } if (l == 2) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 1 | i1 << 2, 2); } } @SideOnly(Side.CLIENT) /** * A randomly called display update to be able to add particles or other items for display */ @Override public void randomDisplayTick(World par1World, int x, int y, int z, Random par5Random) { TileEntityRadio radio = (TileEntityRadio) Minecraft.getMinecraft().theWorld.getTileEntity(x, y, z); if (radio.isPlaying()) for (int l = 0; l < 4; ++l) { double d0 = (double) ((float) x + par5Random.nextFloat()); double d1 = (double) ((float) y + par5Random.nextFloat()); double d2 = (double) ((float) z + par5Random.nextFloat()); double d3; double d4; double d5; int i1 = par5Random.nextInt(2) * 2 - 1; d3 = ((double) par5Random.nextFloat() - 0.5D) * 0.5D; d4 = ((double) par5Random.nextFloat() - 0.5D) * 0.5D; d5 = ((double) par5Random.nextFloat() - 0.5D) * 0.5D; if (par1World.getBlock(x - 1, y, z) != this && par1World.getBlock(x + 1, y, z) != this) { d0 = (double) x + 0.5D + 0.25D * (double) i1; d3 = (double) (par5Random.nextFloat() * 2.0F * (float) i1); } else { d2 = (double) z + 0.5D + 0.25D * (double) i1; d5 = (double) (par5Random.nextFloat() * 2.0F * (float) i1); } par1World.spawnParticle("note", d0, d1, d2, d3, d4, d5); } } @Override public TileEntity createNewTileEntity(World var1, int var2) { return new TileEntityRadio(); } }