package gtPlusPlus.xmod.ic2.block.RTGGenerator; import java.util.List; import java.util.Random; import org.apache.commons.lang3.mutable.MutableObject; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.xmod.ic2.block.kieticgenerator.tileentity.TileEntityKineticWindGenerator; import gtPlusPlus.xmod.ic2.item.IC2_Items; import gtPlusPlus.xmod.ic2.item.ItemGenerators; import ic2.core.IC2; import ic2.core.Ic2Items; import ic2.core.block.BlockMultiID; import ic2.core.block.TileEntityBlock; import ic2.core.block.reactor.tileentity.TileEntityNuclearReactorElectric; import ic2.core.init.InternalName; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.*; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockRTG extends BlockMultiID { public BlockRTG(final InternalName internalName1) { super(internalName1, Material.iron, ItemGenerators.class); this.setCreativeTab(AddToCreativeTab.tabMachines); this.setHardness(3.0F); this.setStepSound(soundTypeMetal); IC2_Items.blockRTG = new ItemStack(this, 1, 0); IC2_Items.blockKineticGenerator = new ItemStack(this, 1, 1); GameRegistry.registerTileEntity(TileEntityRTG.class, "RTG Mach II"); GameRegistry.registerTileEntity(TileEntityKineticWindGenerator.class, "Wind Ripper Mach II"); } @Override public void getSubBlocks(final Item j, final CreativeTabs tabs, final List itemList) { final Item item = Item.getItemFromBlock(this); if (!item.getHasSubtypes()) { itemList.add(new ItemStack(this)); } else { for (int i = 0; i < 16; i++) { final ItemStack is = new ItemStack(this, 1, i); if (is.getItem().getUnlocalizedName(is) == null) { break; } itemList.add(is); } } } @Override public String getTextureFolder(final int id) { return "generator"; } @Override public int damageDropped(final int meta) { switch (meta) { case 2: return 2; } return 0; } @Override public Class getTeClass(final int meta, final MutableObject[]> ctorArgTypes, final MutableObject ctorArgs) { try { switch (meta) { case 0: return TileEntityRTG.class; case 1: return TileEntityKineticWindGenerator.class; } } catch (final Exception e) { throw new RuntimeException(e); } return null; } /* * * { case 0: return TileEntityGenerator.class; case 1: return TileEntityGeoGenerator.class; case 2: return TileEntityWaterGenerator.class; case 3: return TileEntitySolarGenerator.class; case 4: return TileEntityWindGenerator.class; case 5: return TileEntityNuclearReactorElectric.class; case 6: return TileEntityRTGenerator.class; case 7: return TileEntitySemifluidGenerator.class; case 8: return TileEntityStirlingGenerator.class; case 9: return TileEntityKineticGenerator.class; } * * (non-Javadoc) * @see net.minecraft.block.Block#randomDisplayTick(net.minecraft.world.World, int, int, int, java.util.Random) */ @Override public void randomDisplayTick(final World world, final int x, final int y, final int z, final Random random) { if (!IC2.platform.isRendering()) { return; } final int meta = world.getBlockMetadata(x, y, z); if ((meta == 0) && (this.isActive(world, x, y, z))) { final TileEntityBlock te = (TileEntityBlock)this.getOwnTe(world, x, y, z); if (te == null) { return; } final int l = te.getFacing(); final float f = x + 0.5F; final float f1 = y + 0.0F + ((random.nextFloat() * 6.0F) / 16.0F); final float f2 = z + 0.5F; final float f3 = 0.52F; final float f4 = (random.nextFloat() * 0.6F) - 0.3F; switch (l) { case 4: world.spawnParticle("smoke", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", f - f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); break; case 5: world.spawnParticle("smoke", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", f + f3, f1, f2 + f4, 0.0D, 0.0D, 0.0D); break; case 2: world.spawnParticle("smoke", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", f + f4, f1, f2 - f3, 0.0D, 0.0D, 0.0D); break; case 3: world.spawnParticle("smoke", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", f + f4, f1, f2 + f3, 0.0D, 0.0D, 0.0D); } } else if (meta == 5) { final TileEntityNuclearReactorElectric te = (TileEntityNuclearReactorElectric)this.getOwnTe(world, x, y, z); if (te == null) { return; } int puffs = te.heat / 1000; if (puffs <= 0) { return; } puffs = world.rand.nextInt(puffs); for (int n = 0; n < puffs; n++) { world.spawnParticle("smoke", x + random.nextFloat(), y + 0.95F, z + random.nextFloat(), 0.0D, 0.0D, 0.0D); } puffs -= world.rand.nextInt(4) + 3; for (int n = 0; n < puffs; n++) { world.spawnParticle("flame", x + random.nextFloat(), y + 1.0F, z + random.nextFloat(), 0.0D, 0.0D, 0.0D); } } } @Override public boolean onBlockActivated(final World world, final int i, final int j, final int k, final EntityPlayer entityplayer, final int side, final float a, final float b, final float c) { if ((entityplayer.getCurrentEquippedItem() != null) && (entityplayer.getCurrentEquippedItem().isItemEqual(Ic2Items.reactorChamber))) { return false; } return super.onBlockActivated(world, i, j, k, entityplayer, side, a, b, c); } @Override @SideOnly(Side.CLIENT) public EnumRarity getRarity(final ItemStack stack) { return stack.getItemDamage() == 5 ? EnumRarity.uncommon : EnumRarity.common; } }