Advertisement
Guest User

help facing

a guest
Mar 18th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1. package com.redstoneguy.lights.blocks;
  2.  
  3. import javax.annotation.Nullable;
  4.  
  5. import com.redstoneguy.lights.init.EntitySit;
  6. import net.minecraft.block.Block;
  7. import net.minecraft.block.SoundType;
  8. import net.minecraft.block.material.Material;
  9. import net.minecraft.block.state.BlockFaceShape;
  10. import net.minecraft.block.state.IBlockState;
  11. import net.minecraft.entity.Entity;
  12. import net.minecraft.entity.player.EntityPlayer;
  13. import net.minecraft.item.BlockItemUseContext;
  14. import net.minecraft.item.Item;
  15. import net.minecraft.item.ItemBlock;
  16. import net.minecraft.state.DirectionProperty;
  17. import net.minecraft.state.StateContainer;
  18. import net.minecraft.state.StateContainer.Builder;
  19. import net.minecraft.state.properties.BlockStateProperties;
  20. import net.minecraft.util.BlockRenderLayer;
  21. import net.minecraft.util.EnumFacing;
  22. import net.minecraft.util.Mirror;
  23. import net.minecraft.util.Rotation;
  24. import net.minecraft.util.math.BlockPos;
  25. import net.minecraft.world.IBlockReader;
  26. import net.minecraft.world.World;
  27. import net.minecraftforge.event.entity.EntityMountEvent;
  28. import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock;
  29. import net.minecraftforge.event.world.BlockEvent.BreakEvent;
  30. import net.minecraftforge.eventbus.api.SubscribeEvent;
  31.  
  32. public class SeatLight extends BlockBasic {
  33.  
  34. public static final DirectionProperty FACING = DirectionProperty.create("facing", EnumFacing.values());
  35.  
  36. private String id;
  37. private Properties properties;
  38. public SeatLight(Properties properties, String id) {
  39. super(properties, id);
  40. this.properties = properties;
  41. this.id = id;
  42. this.setDefaultState(stateContainer.getBaseState().with(FACING, EnumFacing.NORTH));
  43.  
  44. }
  45. public String getItemId() {
  46. return this.id; }
  47. public Properties getBlockProperties() {
  48. return this.properties; }
  49. public Item.Properties getItemProperties() {
  50. return new Item.Properties().containerItem( new ItemBlock(this, new Item.Properties()).setRegistryName(this.id).asItem() ); }
  51. public static Properties getProperties()
  52. {
  53. return Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(0.3f, 15).lightValue(15);
  54. }
  55.  
  56. @SubscribeEvent
  57. public void onRightClickBlock(RightClickBlock event)
  58. {
  59. if(!event.getWorld().isRemote)
  60. {
  61. World w = event.getWorld();
  62. BlockPos p = event.getPos();
  63. Block b = w.getBlockState(p).getBlock();
  64. EntityPlayer e = event.getEntityPlayer();
  65.  
  66. if((isModBlock(b) || b instanceof SeatLight ) && !EntitySit.OCCUPIED.containsKey(p) && e.getHeldItemMainhand().isEmpty())
  67. {
  68. EntitySit sit = new EntitySit(w, p);
  69.  
  70. w.spawnEntity(sit);
  71. e.startRiding(sit);
  72. }
  73. }
  74. }
  75.  
  76. @SubscribeEvent
  77. public static void onBreak(BreakEvent event)
  78. {
  79. if(EntitySit.OCCUPIED.containsKey(event.getPos()))
  80. {
  81. EntitySit.OCCUPIED.get(event.getPos()).remove();
  82. EntitySit.OCCUPIED.remove(event.getPos());
  83. }
  84. }
  85.  
  86. @SubscribeEvent
  87. public static void onEntityMount(EntityMountEvent event)
  88. {
  89. if(event.isDismounting())
  90. {
  91. Entity e = event.getEntityBeingMounted();
  92.  
  93. if(e instanceof EntitySit)
  94. {
  95. e.remove();
  96. EntitySit.OCCUPIED.remove(e.getPosition());
  97. }
  98. }
  99. }
  100.  
  101. @SubscribeEvent
  102. public static boolean isModBlock(Block b)
  103. {
  104. return false;
  105. }
  106.  
  107. @Override
  108. public BlockRenderLayer getRenderLayer() {
  109. return BlockRenderLayer.CUTOUT;
  110. }
  111.  
  112. public boolean isFullCube(IBlockState state) {
  113. return true;
  114. }
  115.  
  116. //STUFF THAT SHOULDNT BE HARD TO DO BUT IS
  117.  
  118. @Nullable
  119. @Override
  120. public IBlockState getStateForPlacement(BlockItemUseContext context) {
  121. BlockPos pos = context.getPos();
  122. return this.getDefaultState().with(FACING, EnumFacing.getFacingFromVector(pos.getX(), pos.getY(), pos.getZ()));
  123. }
  124.  
  125. @Override
  126. protected void fillStateContainer(StateContainer.Builder<Block, IBlockState> builder) {
  127. builder.add(FACING);
  128. }
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement