// Path: src/main/java/CustomOreGen/Util/TouchingDescriptor.java
// public enum TouchingContactType {
//     Any,
//     Face,
//     Edge,
//     Vertex,
//     FaceAndEdge,
// }
// 
// Path: src/main/java/CustomOreGen/Util/TouchingDescriptor.java
// public enum TouchingDirection {
//     Any,
//     North,
//     East,
//     South,
//     West,
//     Up,
//     Down,
//     NorthSouth,
//     EastWest,
//     NorthEast,
//     NorthWest,
//     SouthEast,
//     SouthWest,
//     Vertical,
//     Horizontal,
// }
// 
// Path: src/main/java/CustomOreGen/Util/TouchingDescriptor.java
// public enum TouchingVolume {
//     Any,
//     PlaneXY,
//     PlaneXZ,
//     PlaneYZ,
// }


import org.w3c.dom.Node;
import CustomOreGen.Util.TouchingDescriptor.TouchingContactType;
import CustomOreGen.Util.TouchingDescriptor.TouchingDirection;
import CustomOreGen.Util.TouchingDescriptor.TouchingVolume;
package CustomOreGen.Config;



public class ValidatorTouchingDescriptor extends ValidatorBlockDescriptor {
    private final int MINIMUM_POSSIBLE_TOUCHES = 0;
    // 3x3x3 cube surrounding block
    private final int MAXIMUM_POSSIBLE_TOUCHES = (3 * 3 * 3) - 1;

    private final int DEFAULT_MINIMUM_TOUCHES = 1;
    // default to the maximum otherwise user might create a touching rule and it will be missing some touches 
    private final int DEFAULT_MAXIMUM_TOUCHES = MAXIMUM_POSSIBLE_TOUCHES;
    
    private final TouchingVolume DEFAULT_VOLUME = TouchingVolume.Any;
    private final TouchingContactType DEFAULT_CONTACT_TYPE = TouchingContactType.Face;
    private final TouchingDirection DEFAULT_DIRECTION = TouchingDirection.Any;
    private final boolean DEFAULT_MANDATORY = false;
    private final boolean DEFAULT_NEGATE = false;

    public int minimumTouches = DEFAULT_MINIMUM_TOUCHES;
    public int maximumTouches = DEFAULT_MAXIMUM_TOUCHES;
// Path: src/main/java/CustomOreGen/Util/TouchingDescriptor.java
// public enum TouchingContactType {
//     Any,
//     Face,
//     Edge,
//     Vertex,
//     FaceAndEdge,
// }
// 
// Path: src/main/java/CustomOreGen/Util/TouchingDescriptor.java
// public enum TouchingDirection {
//     Any,
//     North,
//     East,
//     South,
//     West,
//     Up,
//     Down,
//     NorthSouth,
//     EastWest,
//     NorthEast,
//     NorthWest,
//     SouthEast,
//     SouthWest,
//     Vertical,
//     Horizontal,
// }
// 
// Path: src/main/java/CustomOreGen/Util/TouchingDescriptor.java
// public enum TouchingVolume {
//     Any,
//     PlaneXY,
//     PlaneXZ,
//     PlaneYZ,
// }


// Path: src/main/java/CustomOreGen/Config/ValidatorTouchingDescriptor.java
import org.w3c.dom.Node;
import CustomOreGen.Util.TouchingDescriptor.TouchingContactType;
import CustomOreGen.Util.TouchingDescriptor.TouchingDirection;
import CustomOreGen.Util.TouchingDescriptor.TouchingVolume;

package CustomOreGen.Config;



public class ValidatorTouchingDescriptor extends ValidatorBlockDescriptor {
    private final int MINIMUM_POSSIBLE_TOUCHES = 0;
    // 3x3x3 cube surrounding block
    private final int MAXIMUM_POSSIBLE_TOUCHES = (3 * 3 * 3) - 1;

    private final int DEFAULT_MINIMUM_TOUCHES = 1;
    // default to the maximum otherwise user might create a touching rule and it will be missing some touches 
    private final int DEFAULT_MAXIMUM_TOUCHES = MAXIMUM_POSSIBLE_TOUCHES;
    
    private final TouchingVolume DEFAULT_VOLUME = TouchingVolume.Any;
    private final TouchingContactType DEFAULT_CONTACT_TYPE = TouchingContactType.Face;
    private final TouchingDirection DEFAULT_DIRECTION = TouchingDirection.Any;
    private final boolean DEFAULT_MANDATORY = false;
    private final boolean DEFAULT_NEGATE = false;

    public int minimumTouches = DEFAULT_MINIMUM_TOUCHES;
    public int maximumTouches = DEFAULT_MAXIMUM_TOUCHES;
    public TouchingVolume volume = DEFAULT_VOLUME;