BlackSpark644

BlockGenericPowerBank

May 16th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.52 KB | None | 0 0
  1. package me.jonak.upower.generics
  2.  
  3. import me.jonak.upower.block.tileentities.TilePowerBank
  4. import me.jonak.upower.core.UPower
  5. import me.jonak.upower.material.MaterialMachine
  6. import net.minecraft.block.properties.PropertyInteger
  7. import net.minecraft.block.state.{BlockStateContainer, IBlockState}
  8. import net.minecraft.block.{Block, ITileEntityProvider}
  9. import net.minecraft.item.Item
  10. import net.minecraft.tileentity.TileEntity
  11. import net.minecraft.util.math.BlockPos
  12. import net.minecraft.world.{IBlockAccess, World}
  13.  
  14. /**
  15.   * Created by jonak on 5/10/2016.
  16.   */
  17.  
  18. object BlockGenericPowerBank
  19. {
  20.     var CHARGE_PERCENT: PropertyInteger = PropertyInteger.create("charge_percent", 0, 10)
  21. }
  22.  
  23. abstract class BlockGenericPowerBank(maxEnergy: Int, maxOutput: Int, name: String = "powerbank_generic")
  24.     extends Block(new MaterialMachine) with ITileEntityProvider
  25. {
  26.     import BlockGenericPowerBank._
  27.  
  28.     private final val blockName = name
  29.     protected val item: Item
  30.  
  31.     def getName: String = blockName
  32.  
  33.     def getItem: Item = item
  34.  
  35.     def registerRecipe(): Unit // Registers the block's recipe.
  36.  
  37.     override def createNewTileEntity(worldIn: World, meta: Int): TileEntity =
  38.     {
  39.         println("Placed Tile: " + (if(worldIn.isRemote) "SERVER" else "CLIENT"))
  40.         new TilePowerBank(0, maxEnergy, maxOutput)
  41.     }
  42.  
  43.     override def createBlockState: BlockStateContainer = new BlockStateContainer(this, CHARGE_PERCENT)
  44.  
  45.     override def getActualState(state: IBlockState, worldIn: IBlockAccess, pos: BlockPos): IBlockState =
  46.     {
  47.         val tileHere = worldIn.getTileEntity(pos).asInstanceOf[TilePowerBank]
  48.         val currentPower = tileHere.getPowerContained
  49.         val maxPower = tileHere.getMaxPower
  50.         val percentTen = TilePowerBank.getPercentTen(maxPower, currentPower)
  51.  
  52.         setLightLevel(percentTen.toInt / 10)
  53.  
  54.         println("State updated: " + currentPower + "/" + maxPower + "/" + percentTen)
  55.         return state.withProperty(CHARGE_PERCENT, percentTen)
  56.     }
  57.  
  58.     override def getMetaFromState(state: IBlockState): Int = state.getValue[Integer](CHARGE_PERCENT)
  59.  
  60.     override def getStateFromMeta(meta: Int): IBlockState = getDefaultState.withProperty(CHARGE_PERCENT, Integer.valueOf(meta))
  61.  
  62.     setUnlocalizedName(name) // Sets the unlocalized name based on initialization parameters.
  63.     setRegistryName(name) // Sets the registry name based on the initialization parameters.
  64.     setCreativeTab(UPower.uPowerCreativeTab) // Sets the tab to the mod's creative tab.
  65.     setDefaultState(getBlockState.getBaseState.withProperty(CHARGE_PERCENT, Integer.valueOf(0))) // Sets the default state to 0% charge.
  66.  
  67. }
Add Comment
Please, Sign In to add comment