###############################################################################
# ctm.properties
###############################################################################
# Sample ctm.properties file for use with MCPatcher's extended Connected
# Textures mod.
#
# This file is offered without any copyright restrictions. Please copy and
# modify it to suit your needs.
#
# For each block or terrain tile you wish to override with connected or random
# textures, use this template and create a .properties file in the /ctm folder
# of your texture pack.  You no longer have to name them block<n>.properties or
# terrain<n>.properties, but if you do not follow this convention, you must
# specify block IDs or tile numbers inside the .properties file instead.
#
# Different types of connected texture methods are available with different
# requirements and restrictions.  See below for details for each method.
#
# All property names are case-sensitive.
###############################################################################

###############################################################################
# General properties used by all methods:
###############################################################################

# (Optional) List of block and/or tile IDs this method should apply to.
# Multiple .properties file can refer to the same block/tile and they will be
# processed in alphabetical order by filename.  All tile-based entries are
# checked before block ID-based ones.  The first match wins.
blockIDs=<list of block IDs 0-4095>
tileIDs=<list of tiles in terrain.png 0-255>
# These two properties can be omitted if they can be inferred from the filename
# instead:
#   /ctm/block<id>.properties assumes
#     blockIDs=<id>
#     tileIDs=
#   /ctm/terrain<tile>.properties assumes
#     blockIDs=
#     tileIDs=<tile>
#   unless you specify them explicitly.

# (Required) Name of source texture.  This can be anywhere in your texture pack
# and multiple .properties files can share the same source (with different tile
# numbers).
source=<path of png within texture pack>

# (Required) Method to use when choosing a block's replacement texture:
# ctm: Standard 8-way method (glass in the original CTM).
# horizontal: Connect to blocks on left and right only (bookshelves).
# vertical: Connect to blocks above and below only.
# top: Connect to block above only (sandstone).
# random: Pick a tile at random.
# repeat: Repeat a fixed pattern over large areas.
# fixed: Use a single fixed tile.  Equivalent to random with only one tile.
method=<ctm | horizontal | vertical | top | random | repeat | fixed>

# (Required for some methods) List of tiles to use.  Remember that tiles are
# indexed from left to right, top to bottom starting at 0 with 16 per row.
# Syntax is a list of tiles or tile ranges.  The following are equivalent:
# tiles=4-6 8-10
# tiles=4 5 6 8 9 10
tiles=<list of tiles between 0 and 255>

# (Optional) Connect type.  For methods that connect to adjacent blocks,
# specify how the game should decide if two blocks should be connected.
# block: Connect if block id of this block = block id of neighbor.
# tile: Connect if tile texture of this block = tile of neighbor.
# material: Connect if block material (stone, dirt, etc.) = neighbor's.
# The default is block for /ctm/block<id>.properties and tile for
# /ctm/terrain<tile>.properties.
connect=<block | tile | material>

# (Optional) Faces.  Limit the mod to only certain faces of the block.
# bottom: Bottom face (negative y).
# top: Top face (positive y).
# north: North face (negative z).
# south: South face (positive z).
# east: East face (positive x).
# west: West face (negative x).
# sides: Shorthand for north south east west.
# all: All sides.
# NOTE:  This property is ignored on non-standard blocks.
faces=<combination of: north south east west top bottom sides all>

# (Optional) Metadata.  Limit the mod to only blocks with certain metadata
# values.  Uses the same syntax as the "tiles" property and can be any list of
# values between 0 and 31.
metadata=<list of values between 0 and 31>

# (Optional) Render pass.  Specifies the render pass during which the new
# texture should be used.
# 0: Normal, solid block rendering pass.  Virtually all blocks use this pass.
#    Only on/off transparency is supported.
# 1: Existing translucent blocks (water, ice, etc.).
# With MCPatcher, two new rendering passes are available:
# 2: Same as pass #0 but with backface culling disabled.  Use this to render
#    all six faces of the glass block frame.
# 3: Extra pass with full alpha support.  Will be hidden when rendered behind
#    water, etc., from pass #1.  The blending method can be changed in
#    /renderpass.properties.
renderPass=0
# NOTE: Due to renderer limitations, specifying a renderPass requires block
# ID-based ctm (either by naming the file /ctm/block<nnn>.properties or using
# blockIDs=... instead of tileIDs=...), not tile number-based.
#
# The rendering passes happen in this order: 0, 2, 1, 3
#
# To make colored glass, you need two sets of tiles: one for the frame and
# another for the overlay.  Here is an example, assuming the first four rows
# of the image are the frame and the second four are the overlay:
#
# /ctm/block20.properties:
#   source=/ctm/myglass.png
#   method=ctm
#   tiles=0-11 16-27 32-43 48-59
#   renderPass=2
#
# /ctm/block20a.properties:
#   source=/ctm/myglass.png
#   method=ctm
#   tiles=64-75 80-91 96-107 112-123
#   renderPass=3
#
# /ctm/block102.properties:
#   source=/ctm/myglass.png
#   method=ctm
#   tiles=0-11 16-27 32-43 48-59
#
# /ctm/block102a.properties:
#   source=/ctm/myglass.png
#   method=ctm
#   tiles=64-75 80-91 96-107 112-123
#   renderPass=3
#
# NOTE:  We use renderPass=2 for the glass block frame (block 20) but not the
# glass pane (block 102).  This is because the glass pane is rendered with 0
# thickness which causes Z-fighting unless the back face is culled.  So the
# default render pass of 0 is actually best.

###############################################################################
# Everything below here is for specific ctm methods.  Each .properties file
# should contain only one of these sections.
###############################################################################

###############################################################################
# Standard 8-way connected textures
###############################################################################

method=ctm
source=<source png>
# (Optional) List of tiles to use, must be exactly 48 tiles.  The default is
# the upper left 12x4 area:
tiles=0-11 16-27 32-43 48-59

###############################################################################
# Horizontal-only connected textures
###############################################################################

method=horizontal
source=<source png>
# (Optional) List of tiles to use, must be exactly 4 tiles.  The default is the
# rightmost 4 tiles on the first row.
tiles=12-15

###############################################################################
# Vertical-only connected textures
###############################################################################

method=vertical
source=<source png>
# (Required) List of tiles to use, must be exactly 4 tiles.  There is no
# default; you must specify a list here.
tiles=<list of tiles>

###############################################################################
# Top connected textures
###############################################################################

method=top
source=<source png>
# (Optional) Only one tile is needed.
tiles=66

###############################################################################
# Random textures
###############################################################################

method=random
source=<source png>
# (Required) List of tiles to choose from.  There is no default; you must
# specify a list here.
tiles=<list of tiles>
# (Optional) List of weights to apply to the random choice.  For example, if
# you have
# tiles=6-11
# weights=10 1 10 2 7 3
# then tiles 6 and 8 will have a weight of 10, 7 will have a weight of 1, etc.
# Weights do not have to total 100 or any other particular value.  In the above
# example, tiles 6 and 8 will be used ~30.3% (10/(10+1+10+2+7+3)) of the time
# and so forth.
weights=<same-size list of weights>
# (Optional) Desired level of symmetry for the faces of each block.  Applies to
# standard blocks only.
# none: All 6 faces are textured independently.  This is the default.
# opposite: 2-way symmetry; opposing faces have the same texture, but each pair
# can potentially have a different texture.
# all: All 6 faces have the same texture.
symmetry=<none | opposite | all>

###############################################################################
# Repeat pattern textures
###############################################################################

method=repeat
source=<source png>
# (Required) Width of the repeating pattern.
width=<width of pattern>
# (Required) Height of the repeating pattern.
height=<height of pattern>
# (Required) List of exactly width * height tiles.  You do not have to arrange
# them in a rectangle, but doing so makes things easier to see how the pattern
# will look in-game.  Obviously total area cannot exceed 256 tiles, but an,
# e.g., 20x12 pattern is permissible.
tiles=<list of width * height tiles>
# (Optional) Desired level of symmetry for the faces of each block.  Applies to
# standard blocks only.
# none: All 6 faces are textured so that the pattern tiling looks the same from
# all sides.  This is the default.
# opposite: 2-way symmetry; opposing faces have the same texture, which means
# that tiling on the south and east faces will be mirrored left-to-right from
# compared to the north and west faces.
symmetry=<none | opposite>

###############################################################################
# Fixed textures
###############################################################################

method=fixed
source=<source png>
# (Required) Single tile to use.
tiles=<single tile>