Guest User

BlockMachine.java

a guest
Oct 20th, 2016
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. package com.gunn.modtest.blocks;
  2.  
  3. import com.gunn.modtest.ModTest;
  4. import com.gunn.modtest.states.ModStates;
  5. import com.gunn.modtest.states.ModStates.MachineTypes;
  6.  
  7. import net.minecraft.block.Block;
  8. import net.minecraft.block.material.Material;
  9. import net.minecraft.block.properties.IProperty;
  10. import net.minecraft.block.state.BlockStateContainer;
  11. import net.minecraft.block.state.IBlockState;
  12. import net.minecraft.entity.Entity;
  13. import net.minecraft.entity.player.EntityPlayer;
  14. import net.minecraft.init.Blocks;
  15. import net.minecraft.item.ItemBlock;
  16. import net.minecraft.item.ItemStack;
  17. import net.minecraft.util.EnumFacing;
  18. import net.minecraft.util.EnumHand;
  19. import net.minecraft.util.math.BlockPos;
  20. import net.minecraft.world.World;
  21. import net.minecraftforge.fml.common.registry.GameRegistry;
  22.  
  23. public class BlockMachine extends Block{
  24.  
  25. public BlockMachine() {
  26. super(Material.IRON);
  27.  
  28. setRegistryName("blockmachine");
  29. setUnlocalizedName(this.getRegistryName().toString());
  30.  
  31. setCreativeTab(ModTest.tabTest);
  32. setHardness(2F);
  33. setDefaultState(blockState.getBaseState().withProperty(ModStates.POWERED, Boolean.valueOf(false))
  34. .withProperty(ModStates.MACTYPE, ModStates.MachineTypes.DEFAULT));
  35.  
  36. GameRegistry.register(this);
  37. GameRegistry.register(new ItemBlock(this), getRegistryName());
  38. }
  39.  
  40. @Override
  41. public void onEntityWalk(World world, BlockPos pos, Entity entity){
  42. if(!world.isRemote && !isDisabled(world.getBlockState(pos))){
  43. spawnAnvil(world,new BlockPos(pos.getX(),pos.getY()+20,pos.getZ()));
  44. }
  45. }
  46.  
  47. @Override
  48. public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block){
  49. if(!world.isRemote && world.isBlockPowered(pos) && !isDisabled(state)){
  50. for(int i = -2; i <= 2; i++){
  51. for(int j = -2; j <= 2; j++){
  52. spawnAnvil(world,new BlockPos(pos.getX() + i,pos.getY()+20,pos.getZ() + j));
  53. }
  54. }
  55. }
  56. }
  57.  
  58. private void spawnAnvil(World world, BlockPos pos){
  59. if(world.isAirBlock(pos)){
  60. world.setBlockState(pos, Blocks.ANVIL.getDefaultState());
  61. }
  62. }
  63.  
  64. private boolean isDisabled(IBlockState state){
  65. return state.getValue(ModStates.POWERED);
  66. }
  67.  
  68. @Override
  69. public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ){
  70. if(!world.isRemote){
  71. if(getMetaFromState(state) == 0){
  72. world.setBlockState(pos, state.withProperty(ModStates.POWERED, true),3);
  73. }else{
  74. world.setBlockState(pos, state.withProperty(ModStates.POWERED, false),3);
  75. }
  76. }
  77. return true;
  78. }
  79.  
  80. @Override
  81. protected BlockStateContainer createBlockState(){
  82. return new BlockStateContainer(this, new IProperty[] {ModStates.MACTYPE,ModStates.POWERED});
  83. }
  84.  
  85. @Override
  86. public int getMetaFromState(IBlockState state) {
  87. MachineTypes type = (MachineTypes) state.getValue(ModStates.MACTYPE);
  88. return type.getID();
  89.  
  90. }
  91.  
  92. @Override
  93. public IBlockState getStateFromMeta(int meta) {
  94. return this.getDefaultState().withProperty(ModStates.MACTYPE, ModStates.MachineTypes.values()[meta]);
  95.  
  96. }
  97.  
  98. }
Add Comment
Please, Sign In to add comment