public static void generate(IWorldEditor editor, Cardinal dir, Coord pos, boolean active){ MetaBlock lever = new MetaBlock(Blocks.LEVER); lever.withProperty(BlockLever.POWERED, active); if(dir == Cardinal.UP){ lever.withProperty(BlockLever.FACING, EnumOrientation.UP_X); } else if(dir == Cardinal.DOWN){ lever.withProperty(BlockLever.FACING, EnumOrientation.DOWN_X); } else { lever.withProperty(BlockLever.FACING, Cardinal.orientation(Cardinal.reverse(dir))); } lever.set(editor, pos); }
private static EnumOrientation getLeverOrientation(StructureConfiguration configuration, Block foundBlock, BuildBlock block, EnumFacing assumedNorth) { EnumOrientation leverOrientation = EnumOrientation.NORTH; if (foundBlock instanceof BlockLever) { // Levers have a special facing. leverOrientation = BlockLever.EnumOrientation.valueOf(block.getProperty("facing").getValue().toUpperCase()); if (leverOrientation.getFacing() == EnumFacing.DOWN || leverOrientation.getFacing() == EnumFacing.UP) { if (leverOrientation.getFacing() == EnumFacing.DOWN) { leverOrientation = configuration.houseFacing == assumedNorth || configuration.houseFacing == assumedNorth.getOpposite() ? leverOrientation : leverOrientation == EnumOrientation.DOWN_X ? EnumOrientation.DOWN_Z : EnumOrientation.DOWN_X; } else { leverOrientation = configuration.houseFacing == assumedNorth || configuration.houseFacing == assumedNorth.getOpposite() ? leverOrientation : leverOrientation == EnumOrientation.UP_X ? EnumOrientation.UP_Z : EnumOrientation.UP_X; } } else { EnumFacing facing = leverOrientation.getFacing(); if (configuration.houseFacing.rotateY() == assumedNorth) { facing = facing.rotateY(); } else if (configuration.houseFacing.getOpposite() == assumedNorth) { } else if (configuration.houseFacing.rotateYCCW() == assumedNorth) { facing = facing.rotateYCCW(); } else { facing = facing.getOpposite(); } for (EnumOrientation tempOrientation : EnumOrientation.values()) { if (tempOrientation.getFacing() == facing) { leverOrientation = tempOrientation; break; } } } } return leverOrientation; }
private void generateChessPuzzle(World world, Random rand, int baseX, int baseY, int baseZ){ fillWithMetadataBlocks(world, baseX - 1, baseY + 1, baseZ - 1, baseX + 8, baseY + 4, baseZ + 8, Blocks.air.getDefaultState()); fillWithMossyStone(world, baseX - 1, baseY, baseZ - 1, baseX + 8, baseY, baseZ + 8, rand);// floor, which mostly will be overwritten by the chessboard fillWithMossyStone(world, baseX - 2, baseY, baseZ - 2, baseX + 9, baseY + 4, baseZ - 2, rand);// -Z wall fillWithMossyStone(world, baseX - 2, baseY, baseZ + 9, baseX + 9, baseY + 4, baseZ + 9, rand);// +Z wall fillWithMossyStone(world, baseX - 2, baseY, baseZ - 2, baseX - 2, baseY + 4, baseZ + 9, rand);// -X wall fillWithMossyStone(world, baseX + 9, baseY, baseZ - 2, baseX + 9, baseY + 4, baseZ + 9, rand);// +X wall fillWithMossyStone(world, baseX - 2, baseY + 5, baseZ - 2, baseX + 9, baseY + 5, baseZ + 9, rand);// roof world.setBlockState(new BlockPos(baseX + 2, baseY + 5, baseZ + 2), Blocks.redstone_lamp.getDefaultState()); world.setBlockState(new BlockPos(baseX + 5, baseY + 5, baseZ + 2), Blocks.redstone_lamp.getDefaultState()); world.setBlockState(new BlockPos(baseX + 5, baseY + 5, baseZ + 5), Blocks.redstone_lamp.getDefaultState()); world.setBlockState(new BlockPos(baseX + 2, baseY + 5, baseZ + 5), Blocks.redstone_lamp.getDefaultState()); world.setBlockState(new BlockPos(baseX + 2, baseY + 6, baseZ + 2), Blocks.lever.getDefaultState().withProperty(BlockLever.FACING, EnumOrientation.UP_X).withProperty(BlockLever.POWERED, true)); world.setBlockState(new BlockPos(baseX + 5, baseY + 6, baseZ + 2), Blocks.lever.getDefaultState().withProperty(BlockLever.FACING, EnumOrientation.UP_X).withProperty(BlockLever.POWERED, true)); world.setBlockState(new BlockPos(baseX + 5, baseY + 6, baseZ + 5), Blocks.lever.getDefaultState().withProperty(BlockLever.FACING, EnumOrientation.UP_X).withProperty(BlockLever.POWERED, true)); world.setBlockState(new BlockPos(baseX + 2, baseY + 6, baseZ + 5), Blocks.lever.getDefaultState().withProperty(BlockLever.FACING, EnumOrientation.UP_X).withProperty(BlockLever.POWERED, true)); MineChessUtils.generateChessBoard(world, baseX, baseY, baseZ); int randomPuzzle = rand.nextInt(2); for(int i = 0; i < 8; i++) { for(int j = 0; j < 8; j++) { String pieceString = boards[randomPuzzle][7 - j][7 - i]; if(!pieceString.equals(" ")) { EntityBaseChessPiece chessPiece; switch(pieceString.charAt(1)){ case 'K': chessPiece = new EntityKing(world); break; case 'Q': chessPiece = new EntityQueen(world); break; case 'N': chessPiece = new EntityKnight(world); break; case 'B': chessPiece = new EntityBishop(world); break; case 'R': chessPiece = new EntityRook(world); break; case 'P': chessPiece = new EntityPawn(world); break; default: continue; } chessPiece.setIsBlack(pieceString.charAt(0) == 'b'); chessPiece.computerPiece = pieceString.charAt(0) == 'b' == isComputerBlack[randomPuzzle]; chessPiece.isBlackTurn = !isComputerBlack[randomPuzzle]; chessPiece.setPosition((double)i + (double)baseX + 0.5D, baseY + 1.0D, (double)j + (double)baseZ + 0.5D); chessPiece.setTargetPosition(i, j); chessPiece.xOffset = baseX; chessPiece.zOffset = baseZ; chessPiece.mateInTimes = mateInTimes[randomPuzzle]; world.spawnEntityInWorld(chessPiece); } } } }