diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java index 0ef48af0d3..2b96d3c97c 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftObjective.java @@ -2,13 +2,13 @@ package org.bukkit.craftbukkit.scoreboard; import net.minecraft.server.Scoreboard; import net.minecraft.server.ScoreboardObjective; -import net.minecraft.server.ScoreboardServer; import org.apache.commons.lang.Validate; import org.bukkit.OfflinePlayer; import org.bukkit.craftbukkit.util.CraftChatMessage; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.RenderType; import org.bukkit.scoreboard.Score; final class CraftObjective extends CraftScoreboardComponent implements Objective { @@ -86,6 +86,21 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective return null; } + @Override + public void setRenderType(RenderType renderType) throws IllegalStateException { + Validate.notNull(renderType, "RenderType cannot be null"); + CraftScoreboard scoreboard = checkState(); + + this.objective.a(CraftScoreboardTranslations.fromBukkitRender(renderType)); + } + + @Override + public RenderType getRenderType() throws IllegalStateException { + CraftScoreboard scoreboard = checkState(); + + return CraftScoreboardTranslations.toBukkitRender(this.objective.f()); + } + public Score getScore(OfflinePlayer player) throws IllegalArgumentException, IllegalStateException { Validate.notNull(player, "Player cannot be null"); CraftScoreboard scoreboard = checkState(); @@ -112,7 +127,7 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective if (getScoreboard().board.getObjective(objective.getName()) == null) { throw new IllegalStateException("Unregistered scoreboard component"); } - + return getScoreboard(); } diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java index 61c0a55c0f..7320f339fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboard.java @@ -10,13 +10,13 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.RenderType; import org.bukkit.scoreboard.Score; import org.bukkit.scoreboard.Team; import com.google.common.base.Function; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import net.minecraft.server.IScoreboardCriteria; import org.bukkit.craftbukkit.util.CraftChatMessage; public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard { @@ -33,15 +33,21 @@ public final class CraftScoreboard implements org.bukkit.scoreboard.Scoreboard { @Override public CraftObjective registerNewObjective(String name, String criteria, String displayName) throws IllegalArgumentException { + return registerNewObjective(name, criteria, displayName, RenderType.INTEGER); + } + + @Override + public CraftObjective registerNewObjective(String name, String criteria, String displayName, RenderType renderType) throws IllegalArgumentException { Validate.notNull(name, "Objective name cannot be null"); Validate.notNull(criteria, "Criteria cannot be null"); Validate.notNull(displayName, "Display name cannot be null"); + Validate.notNull(renderType, "RenderType cannot be null"); Validate.isTrue(name.length() <= 16, "The name '" + name + "' is longer than the limit of 16 characters"); Validate.isTrue(displayName.length() <= 128, "The display name '" + displayName + "' is longer than the limit of 128 characters"); Validate.isTrue(board.getObjective(name) == null, "An objective of name '" + name + "' already exists"); CraftCriteria craftCriteria = CraftCriteria.getFromBukkit(criteria); - ScoreboardObjective objective = board.registerObjective(name, craftCriteria.criteria, CraftChatMessage.fromStringOrNull(displayName), IScoreboardCriteria.EnumScoreboardHealthDisplay.INTEGER); + ScoreboardObjective objective = board.registerObjective(name, craftCriteria.criteria, CraftChatMessage.fromStringOrNull(displayName), CraftScoreboardTranslations.fromBukkitRender(renderType)); return new CraftObjective(this, objective); } diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java index d08e5a281e..207ffdd252 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java @@ -1,8 +1,10 @@ package org.bukkit.craftbukkit.scoreboard; +import net.minecraft.server.IScoreboardCriteria; import net.minecraft.server.Scoreboard; import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.RenderType; import com.google.common.collect.ImmutableBiMap; @@ -23,4 +25,11 @@ class CraftScoreboardTranslations { return Scoreboard.getSlotForName(SLOTS.get(slot)); } + static RenderType toBukkitRender(IScoreboardCriteria.EnumScoreboardHealthDisplay display) { + return RenderType.valueOf(display.name()); + } + + static IScoreboardCriteria.EnumScoreboardHealthDisplay fromBukkitRender(RenderType render) { + return IScoreboardCriteria.EnumScoreboardHealthDisplay.valueOf(render.name()); + } }