Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.redstoneguy.lights.blocks;
- import javax.annotation.Nullable;
- import com.redstoneguy.lights.init.EntitySit;
- import net.minecraft.block.Block;
- import net.minecraft.block.SoundType;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.state.BlockFaceShape;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.item.BlockItemUseContext;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemBlock;
- import net.minecraft.state.DirectionProperty;
- import net.minecraft.state.StateContainer;
- import net.minecraft.state.StateContainer.Builder;
- import net.minecraft.state.properties.BlockStateProperties;
- import net.minecraft.util.BlockRenderLayer;
- import net.minecraft.util.EnumFacing;
- import net.minecraft.util.Mirror;
- import net.minecraft.util.Rotation;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.IBlockReader;
- import net.minecraft.world.World;
- import net.minecraftforge.event.entity.EntityMountEvent;
- import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock;
- import net.minecraftforge.event.world.BlockEvent.BreakEvent;
- import net.minecraftforge.eventbus.api.SubscribeEvent;
- public class SeatLight extends BlockBasic {
- public static final DirectionProperty FACING = DirectionProperty.create("facing", EnumFacing.values());
- private String id;
- private Properties properties;
- public SeatLight(Properties properties, String id) {
- super(properties, id);
- this.properties = properties;
- this.id = id;
- this.setDefaultState(stateContainer.getBaseState().with(FACING, EnumFacing.NORTH));
- }
- public String getItemId() {
- return this.id; }
- public Properties getBlockProperties() {
- return this.properties; }
- public Item.Properties getItemProperties() {
- return new Item.Properties().containerItem( new ItemBlock(this, new Item.Properties()).setRegistryName(this.id).asItem() ); }
- public static Properties getProperties()
- {
- return Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(0.3f, 15).lightValue(15);
- }
- @SubscribeEvent
- public void onRightClickBlock(RightClickBlock event)
- {
- if(!event.getWorld().isRemote)
- {
- World w = event.getWorld();
- BlockPos p = event.getPos();
- Block b = w.getBlockState(p).getBlock();
- EntityPlayer e = event.getEntityPlayer();
- if((isModBlock(b) || b instanceof SeatLight ) && !EntitySit.OCCUPIED.containsKey(p) && e.getHeldItemMainhand().isEmpty())
- {
- EntitySit sit = new EntitySit(w, p);
- w.spawnEntity(sit);
- e.startRiding(sit);
- }
- }
- }
- @SubscribeEvent
- public static void onBreak(BreakEvent event)
- {
- if(EntitySit.OCCUPIED.containsKey(event.getPos()))
- {
- EntitySit.OCCUPIED.get(event.getPos()).remove();
- EntitySit.OCCUPIED.remove(event.getPos());
- }
- }
- @SubscribeEvent
- public static void onEntityMount(EntityMountEvent event)
- {
- if(event.isDismounting())
- {
- Entity e = event.getEntityBeingMounted();
- if(e instanceof EntitySit)
- {
- e.remove();
- EntitySit.OCCUPIED.remove(e.getPosition());
- }
- }
- }
- @SubscribeEvent
- public static boolean isModBlock(Block b)
- {
- return false;
- }
- @Override
- public BlockRenderLayer getRenderLayer() {
- return BlockRenderLayer.CUTOUT;
- }
- public boolean isFullCube(IBlockState state) {
- return true;
- }
- //STUFF THAT SHOULDNT BE HARD TO DO BUT IS
- @Nullable
- @Override
- public IBlockState getStateForPlacement(BlockItemUseContext context) {
- BlockPos pos = context.getPos();
- return this.getDefaultState().with(FACING, EnumFacing.getFacingFromVector(pos.getX(), pos.getY(), pos.getZ()));
- }
- @Override
- protected void fillStateContainer(StateContainer.Builder<Block, IBlockState> builder) {
- builder.add(FACING);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement