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

package com.hypixel.hytale.builtin.buildertools.snapshot;

import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Ref;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
import com.hypixel.hytale.math.vector.Vector3i;

public class ClipboardBoundsSnapshot implements ClipboardSnapshot<ClipboardBoundsSnapshot>
{
    public static final ClipboardBoundsSnapshot EMPTY;
    private final Vector3i min;
    private final Vector3i max;
    
    public ClipboardBoundsSnapshot(@Nonnull final BlockSelection selection) {
        this(selection.getSelectionMin(), selection.getSelectionMax());
    }
    
    public ClipboardBoundsSnapshot(final Vector3i min, final Vector3i max) {
        this.min = min;
        this.max = max;
    }
    
    public Vector3i getMin() {
        return this.min;
    }
    
    public Vector3i getMax() {
        return this.max;
    }
    
    @Override
    public ClipboardBoundsSnapshot restoreClipboard(final Ref<EntityStore> ref, final Player player, final World world, @Nonnull final BuilderToolsPlugin.BuilderState state, final ComponentAccessor<EntityStore> componentAccessor) {
        final ClipboardBoundsSnapshot snapshot = new ClipboardBoundsSnapshot(state.getSelection());
        state.getSelection().setSelectionArea(this.min, this.max);
        state.sendArea();
        return snapshot;
    }
    
    static {
        EMPTY = new ClipboardBoundsSnapshot(Vector3i.ZERO, Vector3i.ZERO);
    }
}
