package net.minecraft.command.construction;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.command.IPermission;
import net.minecraft.command.descriptors.OperatorDescriptor;
import net.minecraft.command.type.IDataType;
import net.minecraft.command.type.management.TypeID;
public class OperatorConstructor
{
private final ArrayList<IDataType<?>> operands = new ArrayList<>();
private final Set<TypeID<?>> resultTypes;
private final IPermission permission;
public OperatorConstructor(final IPermission permission, final TypeID<?>... resultTypes)
{
this.permission = permission;
this.resultTypes = new HashSet<>(Arrays.asList(resultTypes));
}
public OperatorConstructor(final IPermission permission, final Set<TypeID<?>> resultTypes)
{
this.permission = permission;
this.resultTypes = resultTypes;
}
public final OperatorConstructor then(final IDataType<?> dataType)
{
this.operands.add(dataType);
return this;
}
public OperatorDescriptor construct(final OperatorConstructable constructable)
{
this.operands.trimToSize();
return new OperatorDescriptorConstructable(this.operands, constructable, this.resultTypes, this.permission);
}
}