package com.hypixel.hytale.component.query;
import com.hypixel.hytale.component.Archetype;
import com.hypixel.hytale.component.ComponentRegistry;
import com.hypixel.hytale.component.ComponentType;
import javax.annotation.Nonnull;
public interface Query<ECS_TYPE> {
@Nonnull
static <ECS_TYPE> AnyQuery<ECS_TYPE> any() {
return AnyQuery.INSTANCE;
}
@Nonnull
static <ECS_TYPE> NotQuery<ECS_TYPE> not(Query<ECS_TYPE> query) {
return new NotQuery<ECS_TYPE>(query);
}
@Nonnull
@SafeVarargs
static <ECS_TYPE> AndQuery<ECS_TYPE> and(Query<ECS_TYPE>... queries) {
return new AndQuery<ECS_TYPE>(queries);
}
@Nonnull
@SafeVarargs
static <ECS_TYPE> OrQuery<ECS_TYPE> or(Query<ECS_TYPE>... queries) {
return new OrQuery<ECS_TYPE>(queries);
}
boolean test(Archetype<ECS_TYPE> var1);
boolean requiresComponentType(ComponentType<ECS_TYPE, ?> var1);
void validateRegistry(ComponentRegistry<ECS_TYPE> var1);
void validate();
}