net.minecraft.util.EnumFacing#rotateY ( )源码实例Demo

下面列出了net.minecraft.util.EnumFacing#rotateY ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Wizardry   文件: BlockMagiciansWorktable.java
@Nonnull
@Override
public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) {
	EnumFacing placerFacing = placer.getHorizontalFacing();
	EnumFacing offsetDir = placerFacing.rotateY();
	BlockPos part2Pos = pos.offset(offsetDir);
	Block block = worldIn.getBlockState(part2Pos).getBlock();
	if (block.isReplaceable(worldIn, part2Pos)) {
		worldIn.setBlockState(part2Pos, getDefaultState().withProperty(FACING, placerFacing.getOpposite()).withProperty(ISLEFTSIDE, false));
		return getDefaultState().withProperty(FACING, placerFacing.getOpposite()).withProperty(ISLEFTSIDE, true);
	} else {
		block = worldIn.getBlockState(part2Pos.offset(offsetDir.getOpposite(), 2)).getBlock();
		part2Pos = part2Pos.offset(offsetDir.getOpposite(), 2);
		if (block.isReplaceable(worldIn, part2Pos)) {
			worldIn.setBlockState(part2Pos, getDefaultState().withProperty(FACING, placerFacing.getOpposite()).withProperty(ISLEFTSIDE, true));
		} else {
			return Blocks.AIR.getDefaultState();
		}
		return getDefaultState().withProperty(FACING, placerFacing.getOpposite()).withProperty(ISLEFTSIDE, false);
	}
}
 
源代码2 项目: Wizardry   文件: BlockWisdomWoodStairs.java
@Override
public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face) {
	if (net.minecraftforge.common.ForgeModContainer.disableStairSlabCulling)
		return super.doesSideBlockRendering(state, world, pos, face);

	if (state.isOpaqueCube())
		return true;

	state = this.getActualState(state, world, pos);

	EnumHalf half = state.getValue(HALF);
	EnumFacing side = state.getValue(FACING);
	EnumShape shape = state.getValue(SHAPE);
	if (face == EnumFacing.UP) return half == EnumHalf.TOP;
	if (face == EnumFacing.DOWN) return half == EnumHalf.BOTTOM;
	if (shape == EnumShape.OUTER_LEFT || shape == EnumShape.OUTER_RIGHT) return false;
	if (face == side) return true;
	if (shape == EnumShape.INNER_LEFT && face.rotateY() == side) return true;
	return shape == EnumShape.INNER_RIGHT && face.rotateYCCW() == side;
}
 
源代码3 项目: TFC2   文件: BlockStairsTFC.java
@Override
public boolean isSideSolid(IBlockState state,IBlockAccess world, BlockPos pos, EnumFacing side)
{
	boolean flipped = state.getValue(BlockStairs.HALF) == EnumHalf.TOP;
	EnumShape shape = (EnumShape)state.getValue(BlockStairs.SHAPE);
	EnumFacing facing = (EnumFacing)state.getValue(BlockStairs.FACING);
	if (side == EnumFacing.UP) return flipped;
	if (side == EnumFacing.DOWN) return !flipped;
	if (facing == side) return true;
	if (flipped)
	{
		if (shape == EnumShape.INNER_LEFT) return side == facing.rotateYCCW();
		if (shape == EnumShape.INNER_RIGHT) return side == facing.rotateY();
	}
	else
	{
		if (shape == EnumShape.INNER_LEFT) return side == facing.rotateY();
		if (shape == EnumShape.INNER_RIGHT) return side == facing.rotateYCCW();
	}
	return false;
}
 
源代码4 项目: TFC2   文件: BlockStairsTFC.java
@Override
public boolean doesSideBlockRendering(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing face)
{
	if (net.minecraftforge.common.ForgeModContainer.disableStairSlabCulling)
		return super.doesSideBlockRendering(state, world, pos, face);

	if ( state.isOpaqueCube() )
		return true;

	state = this.getActualState(state, world, pos);

	EnumHalf half = state.getValue(BlockStairs.HALF);
	EnumFacing side = state.getValue(BlockStairs.FACING);
	EnumShape shape = state.getValue(BlockStairs.SHAPE);
	if (face == EnumFacing.UP) return half == EnumHalf.TOP;
	if (face == EnumFacing.DOWN) return half == EnumHalf.BOTTOM;
	if (shape == EnumShape.OUTER_LEFT || shape == EnumShape.OUTER_RIGHT) return false;
	if (face == side) return true;
	if (shape == EnumShape.INNER_LEFT && face.rotateY() == side) return true;
	if (shape == EnumShape.INNER_RIGHT && face.rotateYCCW() == side) return true;
	return false;
}
 
源代码5 项目: enderutilities   文件: PositionUtils.java
/**
 * Returns the rotation that would transform <b>facingOriginal</b> into <b>facingRotated</b>.
 * @param facingOriginal
 * @param facingRotated
 * @return
 */
public static Rotation getRotation(EnumFacing facingOriginal, EnumFacing facingRotated)
{
    if (facingOriginal.getAxis() == EnumFacing.Axis.Y ||
        facingRotated.getAxis() == EnumFacing.Axis.Y || facingOriginal == facingRotated)
    {
        return Rotation.NONE;
    }

    if (facingRotated == facingOriginal.getOpposite())
    {
        return Rotation.CLOCKWISE_180;
    }

    return facingRotated == facingOriginal.rotateY() ? Rotation.CLOCKWISE_90 : Rotation.COUNTERCLOCKWISE_90;
}
 
源代码6 项目: enderutilities   文件: TileEntityEnergyBridge.java
private boolean isObstructedQuadrant(World world, BlockPos basePos, EnumFacing facing, BlockPos ... positions)
{
    EnumFacing dirNext = facing.rotateY(); // the direction 90 degrees clock wise

    for (BlockPos pos : positions)
    {
        int x = pos.getX() * facing.getXOffset() + pos.getZ() * facing.getZOffset();
        int y = pos.getY();
        int z = pos.getX() * dirNext.getXOffset() + pos.getZ() * dirNext.getZOffset();

        if (world.isAirBlock(basePos.add(x, y, z)) == false)
        {
            return true;
        }
    }

    return false;
}
 
源代码7 项目: Minecoprocessors   文件: RedstoneUtil.java
private static EnumFacing rotateFacing(EnumFacing facing, int rotation) {
  if (rotation >= 0) {
    for (int i = 0; i < rotation; i++) {
      facing = facing.rotateY();
    }
  } else {
    rotation = -rotation;
    for (int i = 0; i < rotation; i++) {
      facing = facing.rotateYCCW();
    }
  }
  return facing;
}
 
源代码8 项目: Valkyrien-Skies   文件: BlockPhysicsInfuser.java
@Override
public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing,
    float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) {
    EnumFacing playerFacing = placer.getHorizontalFacing();
    if (!placer.isSneaking()) {
        playerFacing = playerFacing.getOpposite();
    }

    // Find the facing that's closest to what the player wanted.
    EnumFacing facingHorizontal;
    if (canPlaceBlockAtWithFacing(worldIn, pos, playerFacing)) {
        facingHorizontal = playerFacing;
    } else if (canPlaceBlockAtWithFacing(worldIn, pos, playerFacing.rotateY())) {
        facingHorizontal = playerFacing.rotateY();
    } else if (canPlaceBlockAtWithFacing(worldIn, pos, playerFacing.rotateYCCW())) {
        facingHorizontal = playerFacing.rotateYCCW();
    } else if (canPlaceBlockAtWithFacing(worldIn, pos, playerFacing.getOpposite())) {
        facingHorizontal = playerFacing.getOpposite();
    } else {
        // There was no valid facing! How the did this method even get called!
        throw new IllegalStateException(
            "Cannot find valid state for placement for Physics Infuser!");
    }

    return this.getDefaultState()
        .withProperty(FACING, facingHorizontal)
        .withProperty(INFUSER_LIGHT_ON, false);
}
 
源代码9 项目: pycode-minecraft   文件: ShapeGen.java
public static void cube(World world, int width, int depth, int height, IBlockState block_state, BlockPos pos, EnumFacing facing) {
    floor(world, width, depth, block_state, pos, facing);
    floor(world, width, depth, block_state, pos.offset(EnumFacing.UP, height), facing);
    for (int i = 0; i < 4; i++) {
        wall(world, depth, height, block_state, pos, facing);
        pos = pos.offset(facing, depth - 1);
        facing = facing.rotateY();
    }
}
 
源代码10 项目: TFC2   文件: BlockStairsTFC.java
/**
 * @return Can this block attach to other blocks for support checks in this direction
 */
@Override
public boolean canSupportFacing(IBlockState myState, IBlockAccess world, BlockPos pos, EnumFacing facing)
{
	EnumFacing f = (EnumFacing)myState.getValue(BlockStairs.FACING);
	if(facing == f.rotateY() || facing == f.rotateYCCW())
		return true;

	return myState.getBlock().isSideSolid(myState, world, pos, facing);
}
 
源代码11 项目: TFC2   文件: BlockStairsTFC.java
/**
 * Returns a bounding box representing an eighth of a block (a block whose three dimensions are halved).
 * Used in all stair shapes except STRAIGHT (gets added alone in the case of OUTER; alone with a quarter block in
 * case of INSIDE).
 */
private static AxisAlignedBB getCollEighthBlock(IBlockState bstate)
{
	EnumFacing enumfacing = (EnumFacing)bstate.getValue(BlockStairs.FACING);
	EnumFacing enumfacing1;

	switch ((BlockStairs.EnumShape)bstate.getValue(BlockStairs.SHAPE))
	{
	case OUTER_LEFT:
	default:
		enumfacing1 = enumfacing;
		break;
	case OUTER_RIGHT:
		enumfacing1 = enumfacing.rotateY();
		break;
	case INNER_RIGHT:
		enumfacing1 = enumfacing.getOpposite();
		break;
	case INNER_LEFT:
		enumfacing1 = enumfacing.rotateYCCW();
	}

	boolean flag = bstate.getValue(BlockStairs.HALF) == BlockStairs.EnumHalf.TOP;

	switch (enumfacing1)
	{
	case NORTH:
	default:
		return flag ? AABB_OCT_BOT_NW : AABB_OCT_TOP_NW;
	case SOUTH:
		return flag ? AABB_OCT_BOT_SE : AABB_OCT_TOP_SE;
	case WEST:
		return flag ? AABB_OCT_BOT_SW : AABB_OCT_TOP_SW;
	case EAST:
		return flag ? AABB_OCT_BOT_NE : AABB_OCT_TOP_NE;
	}
}
 
源代码12 项目: Signals   文件: DirectionalityRenderer.java
private void build(TIntObjectHashMap<BakedRenderer> bakedRenderers, ImmutableList<NetworkRail<MCPos>> edge){

        for(int edgeIndex = 1; edgeIndex < edge.size() - 1; edgeIndex++) {
            NetworkRail<MCPos> prevRail = edge.get(edgeIndex - 1);
            MCNetworkRail curRail = (MCNetworkRail)edge.get(edgeIndex);
            NetworkRail<MCPos> nextRail = edge.get(edgeIndex + 1);

            EnumHeading prevHeading = curRail.getPos().getRelativeHeading(prevRail.getPos());
            EnumHeading nextHeading = nextRail.getPos().getRelativeHeading(curRail.getPos());
            if(prevHeading == null || nextHeading == null || prevHeading != nextHeading || curRail.getPos().getDimID() != nextRail.getPos().getDimID() || curRail.getPos().getDimID() != prevRail.getPos().getDimID()) continue;

            BakedRenderer bakedRenderer = bakedRenderers.get(curRail.getPos().getDimID());
            if(bakedRenderer == null) {
                bakedRenderer = new BakedRenderer();
                bakedRenderers.put(curRail.getPos().getDimID(), bakedRenderer);
            }

            MCPos pos = curRail.getPos();
            EnumFacing facing = HeadingUtils.toFacing(nextHeading).getOpposite();
            EnumFacing rotatedFacing = facing.rotateY();
            EnumFacing rotatedFacing2 = facing.rotateYCCW();
            int yOffset = AbstractRailRenderer.getRailHeightOffset(curRail, facing);

            Vec3d posVec = new Vec3d(pos.getX() + 0.5, pos.getY() + (yOffset != 0 ? 0.6001 : 0.1001), pos.getZ() + 0.5);

            double arrowSize = 0.1;
            double spacing = 0.1;

            for(int i = -2; i < -1; i++) {
                Vec3d shiftedPosVec = posVec.addVector(facing.getFrontOffsetX() * spacing * i, spacing * i * yOffset + 0.001, facing.getFrontOffsetZ() * spacing * i);
                Vec3d vecBack = shiftedPosVec.addVector(facing.getFrontOffsetX() * arrowSize, arrowSize * yOffset, facing.getFrontOffsetZ() * arrowSize);
                Vec3d c1 = vecBack.addVector(rotatedFacing.getFrontOffsetX() * arrowSize, 0, rotatedFacing.getFrontOffsetZ() * arrowSize);
                Vec3d c2 = vecBack.addVector(rotatedFacing2.getFrontOffsetX() * arrowSize, 0, rotatedFacing2.getFrontOffsetZ() * arrowSize);

                bakedRenderer.add(shiftedPosVec.x, shiftedPosVec.y, shiftedPosVec.z);
                bakedRenderer.add(c1.x, c1.y, c1.z);
                //buffer.pos(shiftedPosVec.x, shiftedPosVec.y, shiftedPosVec.z).color(r, g, b, 1).endVertex();
                bakedRenderer.add(c2.x, c2.y, c2.z);
            }
        }
    }
 
@Override
public void render(TileEntityEnergyBridge teeb, double x, double y, double z, float partialTicks, int destroyStage, float partial)
{
    if (teeb.getIsActive() == false)
    {
        return;
    }

    TileEntityEnergyBridge.Type type = teeb.getType();
    double rot = (teeb.getWorld().getTotalWorldTime() % 100.0d) * Math.PI  / 50.0d + (Math.PI / 50.0d * partialTicks);
    x += 0.5d;
    z += 0.5d;

    BlockPos pos = teeb.getPos();
    // Energy Bridge Transmitter
    if (type == Type.TRANSMITTER)
    {
        this.renderBeamVertical(x, y, z, teeb.beamYMin - pos.getY(), 0.0d, 0.2d, rot, 3.0d, teeb.getIsPowered());
        this.renderBeamVertical(x, y, z, 1.0d, teeb.beamYMax - pos.getY(), 0.2d, rot, 3.0d, teeb.getIsPowered());
    }
    // Energy Bridge Receiver
    else if (type == Type.RECEIVER)
    {
        this.renderBeamVertical(x, y, z, teeb.beamYMin - pos.getY(), 0.0d, 0.2d, rot,  3.0d, teeb.getIsPowered());
        this.renderBeamVertical(x, y, z, 1.0d, teeb.beamYMax - pos.getY(), 0.2d, rot, -3.0d, teeb.getIsPowered());
    }
    // Energy Bridge Resonator
    else if (type == Type.RESONATOR)
    {
        EnumFacing dirFront = teeb.getFacing();
        EnumFacing dirSide = dirFront.rotateY();

        // From Resonator to Receiver
        GlStateManager.pushMatrix();
        GlStateManager.translate(x + 0.5d * dirFront.getXOffset(), y + 0.5d, z + 0.5d * dirFront.getZOffset());
        GlStateManager.rotate(90, -dirSide.getXOffset(), 0, -dirSide.getZOffset());
        GlStateManager.translate(-x, -y, -z);
        this.renderBeamVertical(x, y, z, 0.0d, 2.0d, 0.2d, rot, 3.0d, teeb.getIsPowered());
        GlStateManager.popMatrix();

        // From resonator to next resonator
        GlStateManager.pushMatrix();
        GlStateManager.translate(x + 0.3d * dirSide.getXOffset() - 0.2d * dirFront.getXOffset(), y + 0.5d, z + 0.3d * dirSide.getZOffset() - 0.2d * dirFront.getZOffset());
        GlStateManager.rotate(90, dirFront.getXOffset(), 0, dirFront.getZOffset());
        GlStateManager.rotate(45, -dirSide.getXOffset(), 0, -dirSide.getZOffset());
        GlStateManager.translate(-x, -y, -z);
        this.renderBeamVertical(x, y, z, 0.0d, 4.2d, 0.14d, rot, 3.0d, teeb.getIsPowered());
        GlStateManager.popMatrix();
    }
}