From 066a74e744af7018543bf3f42b67f0cb209e2815 Mon Sep 17 00:00:00 2001 From: Nothixal Date: Sat, 23 Nov 2024 21:25:14 +1100 Subject: [PATCH] #1490: Add method to get Advancement requirements --- .../advancement/CraftAdvancement.java | 6 +++++ .../CraftAdvancementRequirement.java | 26 +++++++++++++++++++ .../CraftAdvancementRequirements.java | 21 +++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirement.java create mode 100644 src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirements.java diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java index 472d910a6..55557ffab 100644 --- a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java +++ b/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/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirement.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirement.java new file mode 100644 index 000000000..fd567c06a --- /dev/null +++ b/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/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirements.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementRequirements.java new file mode 100644 index 000000000..6993911bd --- /dev/null +++ b/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(); + } +}