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

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

import com.hypixel.hytale.server.core.universe.PlayerRef;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
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;

public interface ClipboardSnapshot<T extends SelectionSnapshot<?>> extends SelectionSnapshot<T>
{
    @Nullable
    T restoreClipboard(final Ref<EntityStore> p0, final Player p1, final World p2, final BuilderToolsPlugin.BuilderState p3, final ComponentAccessor<EntityStore> p4);
    
    default T restore(final Ref<EntityStore> ref, @Nonnull final Player player, final World world, final ComponentAccessor<EntityStore> componentAccessor) {
        final PlayerRef playerRefComponent = componentAccessor.getComponent(ref, PlayerRef.getComponentType());
        assert playerRefComponent != null;
        final BuilderToolsPlugin.BuilderState state = BuilderToolsPlugin.getState(player, playerRefComponent);
        if (state == null) {
            return null;
        }
        return this.restoreClipboard(ref, player, world, state, componentAccessor);
    }
    
    default static {
        if (ClipboardSnapshot$1.$assertionsDisabled) {}
    }
}
