diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java b/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java index 472d910a65..55557ffabb 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java @@ -5,6 +5,7 @@ import java.util.Collections; import net.minecraft.advancements.AdvancementHolder; import org.bukkit.NamespacedKey; import org.bukkit.advancement.AdvancementDisplay; +import org.bukkit.advancement.AdvancementRequirements; import org.bukkit.craftbukkit.util.CraftNamespacedKey; public class CraftAdvancement implements org.bukkit.advancement.Advancement { @@ -29,6 +30,11 @@ public class CraftAdvancement implements org.bukkit.advancement.Advancement { return Collections.unmodifiableCollection(handle.value().criteria().keySet()); } + @Override + public AdvancementRequirements getRequirements() { + return new CraftAdvancementRequirements(handle.value().requirements()); + } + @Override public AdvancementDisplay getDisplay() { if (handle.value().display().isEmpty()) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirement.java b/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirement.java new file mode 100644 index 0000000000..fd567c06a0 --- /dev/null +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirement.java @@ -0,0 +1,26 @@ +package org.bukkit.craftbukkit.advancement; + +import java.util.Collections; +import java.util.List; +import org.bukkit.advancement.AdvancementRequirement; +import org.jetbrains.annotations.NotNull; + +public class CraftAdvancementRequirement implements AdvancementRequirement { + + private final List requirements; + + public CraftAdvancementRequirement(List list) { + this.requirements = list; + } + + @NotNull + @Override + public List getRequiredCriteria() { + return Collections.unmodifiableList(requirements); + } + + @Override + public boolean isStrict() { + return requirements.size() == 1; + } +} diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirements.java b/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirements.java new file mode 100644 index 0000000000..6993911bdc --- /dev/null +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirements.java @@ -0,0 +1,21 @@ +package org.bukkit.craftbukkit.advancement; + +import java.util.List; +import net.minecraft.advancements.AdvancementRequirements; +import org.bukkit.advancement.AdvancementRequirement; +import org.jetbrains.annotations.NotNull; + +public class CraftAdvancementRequirements implements org.bukkit.advancement.AdvancementRequirements { + + private final AdvancementRequirements requirements; + + public CraftAdvancementRequirements(AdvancementRequirements requirements) { + this.requirements = requirements; + } + + @NotNull + @Override + public List getRequirements() { + return requirements.requirements().stream().map((requirement) -> (AdvancementRequirement) new CraftAdvancementRequirement(requirement)).toList(); + } +}