diff --git a/src/main/java/org/bukkit/advancement/Advancement.java b/src/main/java/org/bukkit/advancement/Advancement.java index 17527c2f..e683af5e 100644 --- a/src/main/java/org/bukkit/advancement/Advancement.java +++ b/src/main/java/org/bukkit/advancement/Advancement.java @@ -19,6 +19,14 @@ public interface Advancement extends Keyed { @NotNull Collection getCriteria(); + /** + * Returns the requirements for this advancement. + * + * @return an AdvancementRequirements object. + */ + @NotNull + AdvancementRequirements getRequirements(); + /** * Returns the display information for this advancement. * diff --git a/src/main/java/org/bukkit/advancement/AdvancementRequirement.java b/src/main/java/org/bukkit/advancement/AdvancementRequirement.java new file mode 100644 index 00000000..ec591d28 --- /dev/null +++ b/src/main/java/org/bukkit/advancement/AdvancementRequirement.java @@ -0,0 +1,23 @@ +package org.bukkit.advancement; + +import java.util.List; +import org.jetbrains.annotations.NotNull; + +public interface AdvancementRequirement { + + /** + * Get all required criteria. + * + * @return the list of required criteria for this requirement. + */ + @NotNull + List getRequiredCriteria(); + + /** + * Check if the requirement is strict. + * + * @return true if requirement list contains one criteria, false if + * multiple. + */ + boolean isStrict(); +} diff --git a/src/main/java/org/bukkit/advancement/AdvancementRequirements.java b/src/main/java/org/bukkit/advancement/AdvancementRequirements.java new file mode 100644 index 00000000..4bb79dd5 --- /dev/null +++ b/src/main/java/org/bukkit/advancement/AdvancementRequirements.java @@ -0,0 +1,26 @@ +package org.bukkit.advancement; + +import java.util.List; +import org.jetbrains.annotations.NotNull; + +/** + * The list of requirements for the advancement. + * + * Requirements are complimentary to criteria. They are just lists that contain + * more lists, which in turn contains strings that equal the names of the + * criteria. Ultimately defining the logic around how criteria are completed in + * order to grant the advancement. + * + * @see Advancement Definition + * @see Advancement Requirements + */ +public interface AdvancementRequirements { + + /** + * Get all the requirements present in this advancement. + * + * @return an unmodifiable copy of all requirements. + */ + @NotNull + List getRequirements(); +}