Add more advancement API
== AT == public net.minecraft.advancements.Advancement decorateName(Lnet/minecraft/advancements/DisplayInfo;)Lnet/minecraft/network/chat/Component; Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
This commit is contained in:
@@ -35,12 +35,47 @@ public class CraftAdvancement implements org.bukkit.advancement.Advancement {
|
||||
return new CraftAdvancementRequirements(this.handle.value().requirements());
|
||||
}
|
||||
|
||||
// Paper start - Add more advancement API
|
||||
@Override
|
||||
public AdvancementDisplay getDisplay() {
|
||||
if (this.handle.value().display().isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new CraftAdvancementDisplay(this.handle.value().display().get());
|
||||
public io.papermc.paper.advancement.AdvancementDisplay getDisplay() {
|
||||
return this.handle.value().display().map(d -> d.paper).orElse(null);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@io.papermc.paper.annotation.DoNotUse
|
||||
public AdvancementDisplay getDisplay0() { // May be called by plugins via Commodore
|
||||
return this.handle.value().display().map(CraftAdvancementDisplay::new).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.kyori.adventure.text.Component displayName() {
|
||||
return io.papermc.paper.adventure.PaperAdventure.asAdventure(net.minecraft.advancements.Advancement.name(this.handle));
|
||||
}
|
||||
|
||||
@Override
|
||||
public org.bukkit.advancement.Advancement getParent() {
|
||||
return this.handle.value().parent()
|
||||
.map(net.minecraft.server.MinecraftServer.getServer().getAdvancements()::get)
|
||||
.map(AdvancementHolder::toBukkit)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<org.bukkit.advancement.Advancement> getChildren() {
|
||||
final com.google.common.collect.ImmutableList.Builder<org.bukkit.advancement.Advancement> children = com.google.common.collect.ImmutableList.<org.bukkit.advancement.Advancement>builder();
|
||||
final net.minecraft.advancements.AdvancementNode advancementNode = net.minecraft.server.MinecraftServer.getServer().getAdvancements().tree().get(this.handle);
|
||||
if (advancementNode != null) {
|
||||
for (final net.minecraft.advancements.AdvancementNode child : advancementNode.children()) {
|
||||
children.add(child.holder().toBukkit());
|
||||
}
|
||||
}
|
||||
return children.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public org.bukkit.advancement.Advancement getRoot() {
|
||||
final net.minecraft.advancements.AdvancementNode advancementNode = net.minecraft.server.MinecraftServer.getServer().getAdvancements().tree().get(this.handle);
|
||||
return java.util.Objects.requireNonNull(advancementNode, "could not find internal advancement node for advancement " + this.handle.id()).root().holder().toBukkit();
|
||||
}
|
||||
// Paper end - Add more advancement API
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.craftbukkit.util.CraftChatMessage;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@Deprecated // Paper
|
||||
public class CraftAdvancementDisplay implements org.bukkit.advancement.AdvancementDisplay {
|
||||
|
||||
private final DisplayInfo handle;
|
||||
|
||||
Reference in New Issue
Block a user