/** * Returns the orientation of the bed in degrees. */ public float getBedOrientationInDegrees() { if (this.bedLocation != null) { EnumFacing enumfacing = (EnumFacing)this.world.getBlockState(this.bedLocation).getValue(BlockHorizontal.FACING); switch (enumfacing) { case SOUTH: return 90.0F; case WEST: return 0.0F; case NORTH: return 270.0F; case EAST: return 180.0F; } } return 0.0F; }
public StructureBlock(boolean canMirror) { super(Material.PISTON); this.canMirror = canMirror; setSoundType(SoundType.STONE); setHardness(0.5f); IBlockState defaultState = this.blockState .getBaseState() .withProperty(BlockHorizontal.FACING, EnumFacing.NORTH); if (canMirror) { defaultState = defaultState.withProperty(MIRROR, false); } setDefaultState(defaultState); }
public StructureShapeBlock() { super(Material.PISTON); setSoundType(SoundType.STONE); setHardness(0.5f); setUnlocalizedName(NAME); IBlockState state = this.blockState.getBaseState().withProperty(BlockHorizontal.FACING, EnumFacing.NORTH); if (canMirror()) { state = state.withProperty(MIRROR, false); } setDefaultState(state); }
@Override @Deprecated public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB mask, List<AxisAlignedBB> list, Entity collidingEntity) { final IStructureTE te = (IStructureTE) world.getTileEntity(pos); if (te != null) { final BlockPos mloc = te.getMasterBlockLocation(); final StructureBlock sb = StructureRegistry.getStructureBlock(te.getRegHash()); if (sb == null || sb.getPattern().getCollisionBoxes() == null) { return; } localToGlobalCollisionBoxes(mloc.getX(), mloc.getY(), mloc.getZ(), mask, list, sb.getPattern().getCollisionBoxes(), state.getValue(BlockHorizontal.FACING), getMirror(state), sb.getPattern().getBlockBounds() ); } }
@Override public BlockPos getMasterBlockLocation() { if (!masterLocation.isPresent()) { final IBlockState state = getWorld().getBlockState(pos); final StructureBlock sb = StructureRegistry.getStructureBlock(definitionHash); if (sb == null) { return pos; } masterLocation = Optional.of(localToGlobal( -local.getX(), -local.getY(), -local.getZ(), pos.getX(), pos.getY(), pos.getZ(), state.getValue(BlockHorizontal.FACING), getMirror(state), sb.getPattern().getBlockBounds())); } return masterLocation.get(); }
@Override @SideOnly(Side.CLIENT) public AxisAlignedBB getRenderBoundingBox() { if (!renderBounds.isPresent()) { final StructureBlock sb = getMasterBlockInstance(); if (sb == null) { return INFINITE_EXTENT_AABB; } final IBlockState state = getWorld().getBlockState(pos); final EnumFacing orientation = state.getValue(BlockHorizontal.FACING); final boolean mirror = StructureBlock.getMirror(state); renderBounds = Optional.of(localToGlobalBoundingBox(pos, local, sb.getPattern(), orientation, mirror)); } return renderBounds.get(); }
default IBlockState getTransmutedBlock() { final StructureBlock sb = StructureRegistry.getStructureBlock(getRegHash()); if (sb != null) { final IBlockState state = getWorld().getBlockState(getPos()); if (state != null && state.getBlock() instanceof IStructureTE) { final IBlockState block = sb.getPattern().getBlock(getLocal()).getBlockState(); return block == null ? Blocks.AIR.getDefaultState() : localToGlobal( block, state.getValue(BlockHorizontal.FACING), getMirror(state) ); } } return Blocks.AIR.getDefaultState(); }
public void renderShelf(TileEntityDisplay te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { EnumFacing facing = te.getWorld().getBlockState(te.getPos()).getValue(BlockHorizontal.FACING); for (int i = 0; i < 4; ++i) { if (!te.getStackInSlot(i).isEmpty()) { EntityItem customItem = new EntityItem(te.getWorld()); customItem.hoverStart = 0.0F; customItem.setItem(te.getStackInSlot(i)); GlStateManager.pushMatrix(); GlStateManager.translate((float) x, (float) y, (float) z); if (facing == EnumFacing.NORTH || facing == EnumFacing.SOUTH) { if (i < 2) { GlStateManager.translate(0.25F + (0.5F * i), 0.5F, 0.5F); } else { GlStateManager.translate(0.25F + (0.5F * (i - 2)), 0F, 0.5F); } } else { if (i < 2) { GlStateManager.translate(0.5F, 0.5F, 0.75F - (0.5F * i)); } else { GlStateManager.translate(0.5F, 0F, 0.75F - (0.5F * (i - 2))); } } if (ConfigHandler.laidDownShelves && !(te.getStackInSlot(i).getItem() instanceof ItemBlock)) { GlStateManager.rotate(-90, 1, 0, 0); GlStateManager.translate(0, -0.25, 0.075); } GlStateManager.rotate(90 * facing.getOpposite().getHorizontalIndex(), 0.0F, 1.0F, 0.0F); GlStateManager.scale(0.7F, 0.7F, 0.7F); itemRender.doRender(customItem, 0, 0, 0, 0, 0); GlStateManager.popMatrix(); } } }
@Override public void onLivingUpdate() { // ensure that jumpkins spawn aligned as blocks (TODO - doesn't work) if (this.firstUpdate) { this.alignToBlocks(); } if (!this.world.isRemote) { // if it's daytime, jumpkins have a chance to turn into pumpkins if (ModConfiguration.jumpkinsDespawnDuringDaytime && this.world.isDaytime()) { float brightness = this.getBrightness(); if (brightness > 0.5F && this.world.canBlockSeeSky(this.getPosition()) && ((this.rand.nextFloat() * 30F) < ((brightness - 0.4F) * 2.0F))) { // but only if the config says so, and mobGriefing is turned on, and they're on the ground or in water if (ModConfiguration.jumpkinsTurnToPumpkins && this.world.getGameRules().getBoolean("mobGriefing") && (this.onGround || this.isInWater())) { IBlockState state = Blocks.PUMPKIN.getDefaultState().withProperty(BlockHorizontal.FACING, this.getHorizontalFacing()); this.world.setBlockState(this.getPosition(), state); } this.setDead(); this.spawnExplosionParticle(); } } } super.onLivingUpdate(); }
@Override protected BlockStateContainer createBlockState() { if (canMirror) { return new BlockStateContainer(this, BlockHorizontal.FACING, MIRROR); } return new BlockStateContainer(this, BlockHorizontal.FACING); }
@Override @Deprecated public IBlockState getStateFromMeta(int meta) { final EnumFacing facing = EnumFacing.getHorizontal(meta & 0x3); IBlockState state = getDefaultState().withProperty(BlockHorizontal.FACING, facing); if (canMirror) { state = state.withProperty(MIRROR, (meta & 0x4) != 0); } return state; }
public int getMetaFromState(IBlockState state) { final EnumFacing facing = state.getValue(BlockHorizontal.FACING); final boolean mirror = getMirror(state); if (canMirror) { return facing.getHorizontalIndex() | (mirror ? 1 << 2 : 0); } else { return facing.getHorizontalIndex(); } }
@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, pos, state, placer, stack); final EnumFacing orientation = state.getValue(BlockHorizontal.FACING); final boolean mirror = getMirror(state); formStructure(world, pos, state, 0x2); updateExternalNeighbours(world, pos, getPattern(), orientation, mirror, false); }
@Override @Deprecated public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB mask, List<AxisAlignedBB> list, Entity entityIn) { if (getPattern().getCollisionBoxes() != null) { localToGlobalCollisionBoxes( pos.getX(), pos.getY(), pos.getZ(), mask, list, getPattern().getCollisionBoxes(), state.getValue(BlockHorizontal.FACING), getMirror(state), getPattern().getBlockBounds() ); } }
@Override protected BlockStateContainer createBlockState() { if (canMirror()) { return new BlockStateContainer(this, BlockHorizontal.FACING, MIRROR); } return new BlockStateContainer(this, BlockHorizontal.FACING); }
@Deprecated public IBlockState getStateFromMeta(int meta) { final EnumFacing facing = EnumFacing.getHorizontal(meta & 0x3); IBlockState state = getDefaultState().withProperty(BlockHorizontal.FACING, facing); if (canMirror()) { state = state.withProperty(MIRROR, (meta & 0x4) != 0); } return state; }
public int getMetaFromState(IBlockState state) { final EnumFacing facing = state.getValue(BlockHorizontal.FACING); final boolean mirror = getMirror(state); if (canMirror()) { return facing.getHorizontalIndex() | (mirror ? 1 << 2 : 0); } else { return facing.getHorizontalIndex(); } }
@Override public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest) { final IStructureTE te = (IStructureTE) world.getTileEntity(pos); final boolean isPlayerCreative = player != null && player.capabilities.isCreativeMode; final boolean isPlayerSneaking = player != null && player.isSneaking(); final StructureBlock sb = StructureRegistry.getStructureBlock(te.getRegHash()); if (sb != null) { sb.breakStructure(world, te.getMasterBlockLocation(), state.getValue(BlockHorizontal.FACING), getMirror(state), isPlayerCreative, isPlayerSneaking ); updateExternalNeighbours(world, te.getMasterBlockLocation(), sb.getPattern(), state.getValue(BlockHorizontal.FACING), getMirror(state), false ); } else { world.setBlockToAir(pos); } return true; }
@Override public IBlockState alterBlockState(IBlockState state, EnumFacing orientation, boolean mirror) { final EnumFacing facing = state.getValue(BlockHorizontal.FACING); return state.withProperty(BlockHorizontal.FACING, localToGlobal(facing, orientation, mirror)); }
@Override public IBlockState alterBlockState(IBlockState state, EnumFacing orientation, boolean mirror) { final EnumFacing facing = state.getValue(BlockHorizontal.FACING); final EnumShape shape = state.getValue(SHAPE); final EnumHalf half = state.getValue(HALF); return state .withProperty(BlockHorizontal.FACING, localToGlobal(facing, orientation, mirror)) .withProperty(SHAPE, mirror & half == EnumHalf.BOTTOM ? opp[shape.ordinal()] : shape); }
@Override public boolean matchBlockState(IBlockState b1, IBlockState b2) { final EnumFacing b1Facing = b1.getValue(BlockHorizontal.FACING); final EnumFacing b2Facing = b2.getValue(BlockHorizontal.FACING); final EnumHalf b1Half = b1.getValue(HALF); final EnumHalf b2Half = b2.getValue(HALF); final EnumShape b1Shape = b1.getValue(SHAPE); final EnumShape b2Shape = b2.getValue(SHAPE); if (b1Half != b2Half) { return false; } if (b1Facing == b2Facing) { return b1Shape == b2Shape; } if (b1Facing.getOpposite() == b2Facing) { return false; } if ((b1Shape == EnumShape.OUTER_RIGHT && b2Shape == EnumShape.OUTER_LEFT) || (b1Shape == EnumShape.INNER_RIGHT && b2Shape == EnumShape.INNER_LEFT) || (b1Shape == EnumShape.OUTER_LEFT && b2Shape == EnumShape.OUTER_RIGHT) || (b1Shape == EnumShape.INNER_LEFT && b2Shape == EnumShape.INNER_RIGHT)) { return true; } return false; }
@Override @Nonnull public IBlockState getStateFromMeta(int meta) { EnumFacing face = EnumFacing.values()[meta & 7]; boolean isLit = (meta >> 3) == 1; return this.blockState.getBaseState().withProperty(IS_LIT, isLit).withProperty(BlockHorizontal.FACING, face); }
@Override @Nonnull protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, BlockHorizontal.FACING, IS_LIT) { @Override @Nonnull protected StateImplementation createState(@Nonnull Block block, ImmutableMap<IProperty<?>, Comparable<?>> properties, ImmutableMap<IUnlistedProperty<?>, Optional<?>> unlistedProperties) { return new State(block, properties); } }; }
private static void PlaceBed(World world, BlockPos cornerPosition, EnumFacing facing) { // This is the "north west" corner. BlockPos itemPosition = cornerPosition.offset(facing.rotateY(), 1).offset(facing.getOpposite(), 2).down(); IBlockState bedFootState = Blocks.BED.getDefaultState().withProperty(BlockHorizontal.FACING, facing) .withProperty(BlockBed.OCCUPIED, Boolean.valueOf(false)).withProperty(BlockBed.PART, BlockBed.EnumPartType.FOOT); if (world.setBlockState(itemPosition, bedFootState, 3)) { IBlockState bedHeadState = bedFootState.withProperty(BlockBed.PART, BlockBed.EnumPartType.HEAD); world.setBlockState(itemPosition.offset(facing), bedHeadState, 3); } }
protected void generateTrunkFruit(World world, int age, BlockPos pos, EnumFacing direction) { IBlockState newFruit = fruitAgeHandler.apply(trunkFruit, age); if (newFruit != null) { if (trunkFruit.getPropertyKeys().contains(BlockHorizontal.FACING)) trunkFruit = trunkFruit.withProperty(BlockCocoa.FACING, direction.getOpposite()); setTrunkFruit(world, pos); } }
public static RelativeFacing getRelativeFacing(IBlockAccess world, BlockPos pos, EnumFacing facing, RelativeFacing relativeFacing) { BlockPos target = getBlockPosRelativeTo(world, pos, facing, relativeFacing); IBlockState state = world.getBlockState(target); if(state.getProperties().containsKey(BlockHorizontal.FACING)) { EnumFacing otherFacing = (EnumFacing) world.getBlockState(target).getValue(BlockHorizontal.FACING); return getDirectionRelativeTo(facing, otherFacing); } return RelativeFacing.NONE; }
private IBlockState getCorrectCocoState(World worldObj, BlockPos pos) { if (worldObj.isAirBlock(pos)) { for (EnumFacing facing : EnumFacing.Plane.HORIZONTAL) { BlockPos testPos = pos.offset(facing); IBlockState testState = worldObj.getBlockState(testPos); Block testBlock = testState.getBlock(); if (testBlock == Blocks.LOG && testState.getValue(BlockOldLog.VARIANT) == BlockPlanks.EnumType.JUNGLE) { return Blocks.COCOA.getDefaultState().withProperty(BlockHorizontal.FACING, facing); } } } return null; }
public static boolean isFrontPort(IBlockState blockState, EnumFacing side) { return blockState.getValue(BlockHorizontal.FACING) == side; }
public static boolean isBackPort(IBlockState blockState, EnumFacing side) { return blockState.getValue(BlockHorizontal.FACING).getOpposite() == side; }
public static boolean isLeftPort(IBlockState blockState, EnumFacing side) { return blockState.getValue(BlockHorizontal.FACING).rotateYCCW() == side; }
public static boolean isRightPort(IBlockState blockState, EnumFacing side) { return blockState.getValue(BlockHorizontal.FACING).rotateY() == side; }
public static BlockPos getFrontBlock(IBlockAccess blockAccess, BlockPos pos) { return pos.offset(blockAccess.getBlockState(pos).getValue(BlockHorizontal.FACING)); }
public EntityPlayer.SleepResult trySleep(BlockPos bedLocation) { EnumFacing enumfacing = (EnumFacing)this.world.getBlockState(bedLocation).getValue(BlockHorizontal.FACING); if (!this.world.isRemote) { if (this.isPlayerSleeping() || !this.isEntityAlive()) { return EntityPlayer.SleepResult.OTHER_PROBLEM; } if (!this.world.provider.isSurfaceWorld()) { return EntityPlayer.SleepResult.NOT_POSSIBLE_HERE; } if (this.world.isDaytime()) { return EntityPlayer.SleepResult.NOT_POSSIBLE_NOW; } if (!this.func_190774_a(bedLocation, enumfacing)) { return EntityPlayer.SleepResult.TOO_FAR_AWAY; } double d0 = 8.0D; double d1 = 5.0D; List<EntityMob> list = this.world.<EntityMob>getEntitiesWithinAABB(EntityMob.class, new AxisAlignedBB((double)bedLocation.getX() - 8.0D, (double)bedLocation.getY() - 5.0D, (double)bedLocation.getZ() - 8.0D, (double)bedLocation.getX() + 8.0D, (double)bedLocation.getY() + 5.0D, (double)bedLocation.getZ() + 8.0D)); if (!list.isEmpty()) { return EntityPlayer.SleepResult.NOT_SAFE; } } if (this.isRiding()) { this.dismountRidingEntity(); } this.setSize(0.2F, 0.2F); if (this.world.isBlockLoaded(bedLocation)) { float f1 = 0.5F + (float)enumfacing.getFrontOffsetX() * 0.4F; float f = 0.5F + (float)enumfacing.getFrontOffsetZ() * 0.4F; this.setRenderOffsetForSleep(enumfacing); this.setPosition((double)((float)bedLocation.getX() + f1), (double)((float)bedLocation.getY() + 0.6875F), (double)((float)bedLocation.getZ() + f)); } else { this.setPosition((double)((float)bedLocation.getX() + 0.5F), (double)((float)bedLocation.getY() + 0.6875F), (double)((float)bedLocation.getZ() + 0.5F)); } this.sleeping = true; this.sleepTimer = 0; this.bedLocation = bedLocation; this.motionX = 0.0D; this.motionY = 0.0D; this.motionZ = 0.0D; if (!this.world.isRemote) { this.world.updateAllPlayersSleepingFlag(); } return EntityPlayer.SleepResult.OK; }
@Override public BlockStateContainer createBlockState(Block block) { return new BlockStateContainer(block, BlockHorizontal.FACING); }
@Override public IBlockState getDefaultState(IBlockState baseState) { return baseState.withProperty(BlockHorizontal.FACING, EnumFacing.NORTH); }
@Override public IBlockState getPlacementState(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { return state.withProperty(BlockHorizontal.FACING, placer.getAdjustedHorizontalFacing().getOpposite()); }
@Override public IBlockState getStateFromMeta(Block block, int meta) { return block.getDefaultState().withProperty(BlockHorizontal.FACING, EnumFacing.getHorizontal(meta & 0x03)); }
@Override public int getMetaFromState(IBlockState state) { return state.getValue(BlockHorizontal.FACING).getHorizontalIndex(); }