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

package com.hypixel.hytale.builtin.hytalegenerator.datastructures.voxelspace;

import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
import java.util.function.Predicate;
import javax.annotation.Nullable;
import javax.annotation.Nonnull;
import com.hypixel.hytale.math.vector.Vector3i;

public interface VoxelSpace<T>
{
    boolean set(final T p0, final int p1, final int p2, final int p3);
    
    boolean set(final T p0, @Nonnull final Vector3i p1);
    
    void set(final T p0);
    
    void setOrigin(final int p0, final int p1, final int p2);
    
    @Nullable
    T getContent(final int p0, final int p1, final int p2);
    
    @Nullable
    T getContent(@Nonnull final Vector3i p0);
    
    boolean replace(final T p0, final int p1, final int p2, final int p3, @Nonnull final Predicate<T> p4);
    
    void pasteFrom(@Nonnull final VoxelSpace<T> p0);
    
    int getOriginX();
    
    int getOriginY();
    
    int getOriginZ();
    
    String getName();
    
    boolean isInsideSpace(final int p0, final int p1, final int p2);
    
    boolean isInsideSpace(@Nonnull final Vector3i p0);
    
    void forEach(final VoxelConsumer<? super T> p0);
    
    @Nonnull
    default Bounds3i getBounds() {
        return new Bounds3i(new Vector3i(this.minX(), this.minY(), this.minZ()), new Vector3i(this.maxX(), this.maxY(), this.maxZ()));
    }
    
    int minX();
    
    int maxX();
    
    int minY();
    
    int maxY();
    
    int minZ();
    
    int maxZ();
    
    int sizeX();
    
    int sizeY();
    
    int sizeZ();
}
