papermc/patches/api/0448-Add-more-scoreboard-API.patch
2024-01-14 13:47:09 +01:00

90 lines
3.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sat, 16 Dec 2023 14:45:46 -0800
Subject: [PATCH] Add more scoreboard API
diff --git a/src/main/java/org/bukkit/scoreboard/Objective.java b/src/main/java/org/bukkit/scoreboard/Objective.java
index a193ffabb05160b462dee1ba8f687fdbc84405b6..bd4d84cbf220ab02f09ece97873bbf0bdf7a45ba 100644
--- a/src/main/java/org/bukkit/scoreboard/Objective.java
+++ b/src/main/java/org/bukkit/scoreboard/Objective.java
@@ -175,4 +175,24 @@ public interface Objective {
*/
@NotNull Score getScoreFor(@NotNull org.bukkit.entity.Entity entity) throws IllegalArgumentException, IllegalStateException;
// Paper end - improve scoreboard entries
+
+ // Paper start - add more score API
+ /**
+ * Gets if this objective will auto update score
+ * displays on changes.
+ *
+ * @return true if auto updating
+ * @throws IllegalStateException if this objective has been unregistered
+ */
+ boolean willAutoUpdateDisplay();
+
+ /**
+ * Sets if this objective will auto update
+ * score displays on changes.
+ *
+ * @param autoUpdateDisplay true to auto update
+ * @throws IllegalStateException if this objective has been unregistered
+ */
+ void setAutoUpdateDisplay(boolean autoUpdateDisplay);
+ // Paper end - add more score API
}
diff --git a/src/main/java/org/bukkit/scoreboard/Score.java b/src/main/java/org/bukkit/scoreboard/Score.java
index 1eaa9a93f8eff5f18a6cce2d74f21eb19db273c8..5b6f243492d55d2db0d6944dc6daca9b181551d6 100644
--- a/src/main/java/org/bukkit/scoreboard/Score.java
+++ b/src/main/java/org/bukkit/scoreboard/Score.java
@@ -83,4 +83,50 @@ public interface Score {
*/
void resetScore() throws IllegalStateException;
// Paper end
+
+ // Paper start - add more score API
+ /**
+ * Gets if this score is triggerable and cannot
+ * be used by the {@code /trigger} command executed
+ * by the owner of this score.
+ *
+ * @return true if triggerable, false if not triggerable, score isn't set, or the objective isn't {@link Criteria#TRIGGER}
+ * @throws IllegalStateException if the associated objective has been unregistered
+ */
+ boolean isTriggerable();
+
+ /**
+ * Sets if this score is triggerable and can
+ * be used by the {@code /trigger} command
+ * executed by the owner of this score. Can
+ * only be set on {@link Criteria#TRIGGER} objectives.
+ * <p>
+ * If the score doesn't exist (aka {@link #isScoreSet()} returns false),
+ * this will create the score with a 0 value.
+ *
+ * @param triggerable true to enable trigger, false to disable
+ * @throws IllegalArgumentException if this objective isn't {@link Criteria#TRIGGER}
+ * @throws IllegalStateException if the associated objective has been unregistered
+ */
+ void setTriggerable(boolean triggerable);
+
+ /**
+ * Get the custom name for this entry.
+ *
+ * @return the custom name or null if not set (or score isn't set)
+ * @throws IllegalStateException if the associated objective has been unregistered
+ */
+ @Nullable net.kyori.adventure.text.Component customName();
+
+ /**
+ * Sets the custom name for this entry.
+ * <p>
+ * If the score doesn't exist (aka {@link #isScoreSet()} returns false),
+ * this will create the score with a 0 value.
+ *
+ * @param customName the custom name or null to reset
+ * @throws IllegalStateException if the associated objective has been unregistered
+ */
+ void customName(net.kyori.adventure.text.@Nullable Component customName);
+ // Paper end - add more score API
}