From 5771d42c980181c1c3c500bb1cc836602b857ec4 Mon Sep 17 00:00:00 2001 From: replaceitem Date: Mon, 28 Dec 2020 12:44:17 +0100 Subject: [PATCH] scoreboard_add returns current criterion and null --- docs/scarpet/api/Scoreboard.md | 2 +- src/main/java/carpet/script/api/Scoreboards.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/scarpet/api/Scoreboard.md b/docs/scarpet/api/Scoreboard.md index 09004484..826c5328 100644 --- a/docs/scarpet/api/Scoreboard.md +++ b/docs/scarpet/api/Scoreboard.md @@ -11,7 +11,7 @@ With specified `objective` and ### `scoreboard_add(objective, criterion?)` Adds a new objective to scoreboard. If `criterion` is not specified, assumes `'dummy'`. -If the objective already exists, changes the criterion of that objective and returns false. +If the objective already exists, changes the criterion of that objective and returns `false`. If the criterion was not specified but the objective already exists, returns the current criterion. If the objective was added, returns `true`. If nothing is affected, returns `null`
diff --git a/src/main/java/carpet/script/api/Scoreboards.java b/src/main/java/carpet/script/api/Scoreboards.java
index 44968d4e..d7cdf1e8 100644
--- a/src/main/java/carpet/script/api/Scoreboards.java
+++ b/src/main/java/carpet/script/api/Scoreboards.java
@@ -137,6 +137,8 @@ public class Scoreboards {
 
             ScoreboardObjective objective = scoreboard.getObjective(objectiveName);
             if (objective != null) {
+                if(lv.size() == 1) return (_c, _t) -> StringValue.of(objective.getCriterion().getName());
+                if(objective.getCriterion().equals(criterion) || lv.size() == 1) return LazyValue.NULL;
                 ((Scoreboard_scarpetMixin)scoreboard).getObjectivesByCriterion().get(objective.getCriterion()).remove(objective);
                 ((ScoreboardObjective_scarpetMixin) objective).setCriterion(criterion);
                 (((Scoreboard_scarpetMixin)scoreboard).getObjectivesByCriterion().computeIfAbsent(criterion, (criterion1) -> Lists.newArrayList())).add(objective);