Advertisement
Guest User

Untitled

a guest
Jan 15th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.24 KB | None | 0 0
  1. package com.darva.parachronology.blocks;
  2.  
  3. import com.darva.parachronology.BlockReference;
  4. import com.darva.parachronology.DisplaceListBuilder;
  5. import com.darva.parachronology.Parachronology;
  6. import com.darva.parachronology.entity.DisplacerEntity;
  7. import com.darva.parachronology.items.DiplacerItemBlock;
  8. import com.darva.parachronology.utility.tasks.TransformTask;
  9. import net.minecraft.block.Block;
  10. import net.minecraft.block.BlockContainer;
  11. import net.minecraft.block.material.Material;
  12. import net.minecraft.block.properties.IProperty;
  13. import net.minecraft.block.properties.PropertyEnum;
  14. import net.minecraft.block.state.BlockState;
  15. import net.minecraft.block.state.IBlockState;
  16. import net.minecraft.client.resources.model.ModelResourceLocation;
  17. import net.minecraft.creativetab.CreativeTabs;
  18. import net.minecraft.entity.EntityLivingBase;
  19. import net.minecraft.entity.item.EntityItem;
  20. import net.minecraft.item.Item;
  21. import net.minecraft.item.ItemStack;
  22. import net.minecraft.tileentity.TileEntity;
  23. import net.minecraft.util.AxisAlignedBB;
  24. import net.minecraft.util.BlockPos;
  25. import net.minecraft.util.IStringSerializable;
  26. import net.minecraft.world.World;
  27. import net.minecraftforge.client.model.ModelLoader;
  28. import net.minecraftforge.fml.common.registry.GameRegistry;
  29. import net.minecraftforge.fml.relauncher.Side;
  30. import net.minecraftforge.fml.relauncher.SideOnly;
  31.  
  32. import java.util.ArrayList;
  33. import java.util.HashMap;
  34. import java.util.List;
  35. import java.util.Random;
  36.  
  37. /**
  38. * Created by James on 8/23/2015.
  39. */
  40. public class Displacer extends BlockContainer {
  41.  
  42. private String[] spawnableList = {"Enderman", "Zombie", "Skeleton", "Spider", "Blaze"};
  43. public static final PropertyEnum TIER = PropertyEnum.create("tier",Displacer.EnumTier.class);
  44.  
  45. @Override
  46. public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
  47. worldIn.scheduleUpdate(pos, worldIn.getBlockState(pos).getBlock(), 20);
  48. }
  49.  
  50. @Override
  51. protected BlockState createBlockState() {
  52. return new BlockState(this, new IProperty[] {TIER});
  53. }
  54.  
  55. public Displacer(Material p_i45394_1_) {
  56. super(Material.rock);
  57. this.setHardness(1);
  58. //this.setLightOpacity(1);
  59. this.setTickRandomly(true);
  60. this.setRegistryName("displacer");
  61. setDefaultState(blockState.getBaseState().withProperty(TIER, EnumTier.TIER1));
  62. GameRegistry.registerBlock(this, DiplacerItemBlock.class, "displacer");
  63. }
  64.  
  65.  
  66.  
  67. @Override
  68. public String getUnlocalizedName() {
  69. return "parachronology:displacer";
  70. }
  71.  
  72. @Override
  73. public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) {
  74. AxisAlignedBB bb;
  75.  
  76. bb = AxisAlignedBB.fromBounds(pos.getX() - 3, pos.getY() - 3, pos.getZ() - 3, pos.getX() + 3, pos.getY() + 3, pos.getZ() + 3);
  77.  
  78. List<EntityItem> items = world.getEntitiesWithinAABB(EntityItem.class, bb);
  79.  
  80.  
  81. // for (EntityItem item : items) {
  82. // if (item.getEntityItem().getItem() instanceof Moment) {
  83. // item.getEntityItem().stackSize--;
  84. // this.transform(world, pos.getX(), pos.getY(), pos.getZ());
  85. // world.scheduleUpdate(pos, world.getBlockState(pos).getBlock(), 20);
  86. // return;
  87. // }
  88. //
  89. //
  90. // if (OreDictionary.getOreID(item.getName())== OreDictionary.getOreID(new ItemStack(Blocks.log).getDisplayName()) && !world.isRemote)
  91. // {
  92. // ItemStack petrified = new ItemStack(Parachronology.petrifiedWood,item.getEntityItem().stackSize);
  93. // EntityItem newItem = new EntityItem(world,item.posX,item.posY,item.posZ,petrified);
  94. // world.spawnEntityInWorld(newItem);
  95. // newItem.motionX =0;
  96. // newItem.motionY=0;
  97. // item.setDead();
  98. // }
  99. // }
  100. world.scheduleUpdate(pos, world.getBlockState(pos).getBlock(), 20);
  101.  
  102.  
  103. }
  104.  
  105. @SideOnly(Side.CLIENT)
  106. public void registerModel() {
  107. ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), 0, new ModelResourceLocation(getRegistryName(), "inventory"));
  108. ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), 1, new ModelResourceLocation(getRegistryName(), "inventory"));
  109. ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), 2, new ModelResourceLocation(getRegistryName(), "inventory"));
  110. }
  111.  
  112. @Override
  113. @SideOnly(Side.CLIENT)
  114. public void getSubBlocks(Item unknown, CreativeTabs tab, List subItems) {
  115. for (int ix = 0; ix < 3; ix++) {
  116. subItems.add(new ItemStack(this, 1, ix));
  117. }
  118. }
  119.  
  120. @Override
  121. public int damageDropped(IBlockState state) {
  122. return getMetaFromState(state);
  123. }
  124.  
  125. private void transform(World world, int tx, int ty, int tz) {
  126. if (world.isRemote)
  127. return;
  128. int tier = getMetaFromState(world.getBlockState(new BlockPos(tx, ty, tz)));
  129. HashMap<BlockReference, ArrayList<BlockReference>> transforms = DisplaceListBuilder.Instance().getDisplacements(tier);
  130. Random r = new Random();
  131. for (int x = -1; x <= 1; x++) {
  132. for (int y = -1; y <= 1; y++) {
  133. for (int z = -1; z <= 1; z++) {
  134. Block block = world.getBlockState(new BlockPos(x + tx, y + ty, z + tz)).getBlock();
  135. BlockReference ref = BlockReference.readBlockFromString(Block.blockRegistry.getNameForObject(block) + ":" + block.getMetaFromState(world.getBlockState(new BlockPos(tx,ty,tz))));
  136. if (ref != null && transforms.containsKey(ref)) {
  137. BlockReference to = transforms.get(ref).get(r.nextInt(transforms.get(ref).size()));
  138.  
  139. TransformTask tranform = new TransformTask(world,x+tx,y+ty,z+tz,to);
  140. Parachronology.proxy.getScheduler().schedule(r.nextInt(15),tranform,Side.SERVER);
  141. }
  142. }
  143. }
  144. }
  145.  
  146. }
  147.  
  148. @Override
  149. public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
  150. return new DisplacerEntity();
  151. }
  152.  
  153. @Override
  154. public IBlockState getStateFromMeta(int meta) {
  155. switch (meta)
  156. {
  157. case 0: return getDefaultState().withProperty(TIER,EnumTier.TIER1);
  158. case 1: return getDefaultState().withProperty(TIER,EnumTier.TIER2);
  159. case 2: return getDefaultState().withProperty(TIER,EnumTier.TIER3);
  160.  
  161. }
  162. return getDefaultState();
  163. }
  164.  
  165. @Override
  166. public int getMetaFromState(IBlockState state) {
  167. EnumTier type = (EnumTier) state.getValue(TIER);
  168. return type.getID();
  169. }
  170.  
  171. public enum EnumTier implements IStringSerializable {
  172. TIER1(0, "tier1"),
  173. TIER2(1, "tier2"),
  174. TIER3(2, "tier3");
  175.  
  176. private int ID;
  177. private String name;
  178.  
  179. private EnumTier(int ID, String name) {
  180. this.ID = ID;
  181. this.name = name;
  182. }
  183.  
  184. @Override
  185. public String getName() {
  186. return name;
  187. }
  188.  
  189. public int getID() {
  190. return ID;
  191. }
  192. }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement