// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.builtin.hytalegenerator;

import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.material.Material;
import java.util.ArrayList;
import java.util.List;

public class BlockMask
{
    private MaterialSet skippedBlocks;
    private MaterialSet defaultMask;
    private final List<MaterialSet> sourceBlocks;
    private final List<MaterialSet> destinationBlocks;
    
    public BlockMask() {
        this.skippedBlocks = new MaterialSet();
        this.defaultMask = new MaterialSet();
        this.sourceBlocks = new ArrayList<MaterialSet>(0);
        this.destinationBlocks = new ArrayList<MaterialSet>(0);
    }
    
    public boolean canPlace(@Nonnull final Material material) {
        return !this.skippedBlocks.test(material);
    }
    
    public boolean canPlace(final int materialHash) {
        return !this.skippedBlocks.test(materialHash);
    }
    
    public boolean canReplace(final Material source, final Material destination) {
        return this.canReplace(source.hashMaterialIds(), destination.hashMaterialIds());
    }
    
    public boolean canReplace(final int sourceHash, final int destinationHash) {
        for (int i = 0; i < this.sourceBlocks.size(); ++i) {
            if (this.sourceBlocks.get(i).test(sourceHash)) {
                return this.destinationBlocks.get(i).test(destinationHash);
            }
        }
        return !this.defaultMask.test(destinationHash);
    }
    
    public void setSkippedBlocks(@Nonnull final MaterialSet materialSet) {
        this.skippedBlocks = materialSet;
    }
    
    public void putBlockMaskEntry(@Nonnull final MaterialSet source, @Nonnull final MaterialSet destination) {
        this.sourceBlocks.add(source);
        this.destinationBlocks.add(destination);
    }
    
    public void setDefaultMask(@Nonnull final MaterialSet materialSet) {
        this.defaultMask = materialSet;
    }
}
