|
@@ -11,10 +11,24 @@ import org.apache.commons.lang3.ArrayUtils;
|
|
|
import java.lang.reflect.Type;
|
|
|
import java.util.function.Predicate;
|
|
|
|
|
|
+/**
|
|
|
+ * A GUI provider is used to generate a GUI for an {@link Entry}. This class stores a predicate, which an entry has to
|
|
|
+ * fulfill, and an {@link EntryBuilder}, which performs the actual GUI generation.
|
|
|
+ */
|
|
|
@Environment(EnvType.CLIENT)
|
|
|
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
|
|
public final class GuiProvider {
|
|
|
|
|
|
+ /**
|
|
|
+ * Creates a new GUI provider for a custom entry type, filtered by a predicate and value types.
|
|
|
+ *
|
|
|
+ * @param entryType the custom entry class
|
|
|
+ * @param builder the entry builder
|
|
|
+ * @param predicate a predicate which the entry has to fulfill
|
|
|
+ * @param types the valid value types
|
|
|
+ * @param <E> the custom entry type
|
|
|
+ * @return the created GUI provider
|
|
|
+ */
|
|
|
public static <E extends Entry<?>> GuiProvider create(Class<E> entryType, EntryBuilder<? extends E> builder, Predicate<E> predicate, Type... types) {
|
|
|
return new GuiProvider(entry -> {
|
|
|
if (entry.getClass() != (entryType != null ? entryType : Entry.class)) return false;
|
|
@@ -23,14 +37,38 @@ public final class GuiProvider {
|
|
|
}, builder);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Creates a new GUI provider for a custom entry type, filtered by value types.
|
|
|
+ *
|
|
|
+ * @param entryType the custom entry class
|
|
|
+ * @param builder the entry builder
|
|
|
+ * @param types the valid value types
|
|
|
+ * @param <E> the custom entry type
|
|
|
+ * @return the created GUI provider
|
|
|
+ */
|
|
|
public static <E extends Entry<?>> GuiProvider create(Class<E> entryType, EntryBuilder<? extends E> builder, Type... types) {
|
|
|
return create(entryType, builder, entry -> true, types);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Creates a new GUI provider for the default entry type, filtered by a predicate and value types.
|
|
|
+ *
|
|
|
+ * @param builder the entry builder
|
|
|
+ * @param predicate a predicate which the entry has to fulfill
|
|
|
+ * @param types the valid value types
|
|
|
+ * @return the created GUI provider
|
|
|
+ */
|
|
|
public static GuiProvider create(EntryBuilder<?> builder, Predicate<Entry<?>> predicate, Type... types) {
|
|
|
return create(null, builder, predicate, types);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Creates a new GUI provider for the default entry type, filtered by value types.
|
|
|
+ *
|
|
|
+ * @param builder the entry builder
|
|
|
+ * @param types the valid value types
|
|
|
+ * @return the created GUI provider
|
|
|
+ */
|
|
|
public static GuiProvider create(EntryBuilder<?> builder, Type... types) {
|
|
|
if (types.length == 0) {
|
|
|
throw new IllegalArgumentException("Types must not be empty");
|