aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0692-Add-missing-team-sidebar-display-slots.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0692-Add-missing-team-sidebar-display-slots.patch')
-rw-r--r--patches/server/0692-Add-missing-team-sidebar-display-slots.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/patches/server/0692-Add-missing-team-sidebar-display-slots.patch b/patches/server/0692-Add-missing-team-sidebar-display-slots.patch
new file mode 100644
index 0000000000..ee0f1ced64
--- /dev/null
+++ b/patches/server/0692-Add-missing-team-sidebar-display-slots.patch
@@ -0,0 +1,102 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Fri, 1 Oct 2021 08:04:39 -0700
+Subject: [PATCH] Add missing team sidebar display slots
+
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java
+index e2d3fe9af7d3bd82bee519b20e141cd58f68bbd6..944a4fee237730c0d89567aaa6ddf268467aa0e0 100644
+--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java
++++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java
+@@ -7,36 +7,23 @@ import org.bukkit.scoreboard.DisplaySlot;
+ import org.bukkit.scoreboard.RenderType;
+
+ public final class CraftScoreboardTranslations {
+- static final int MAX_DISPLAY_SLOT = 19;
++ static final int MAX_DISPLAY_SLOT = Scoreboard.getDisplaySlotNames().length; // Paper
++ @Deprecated // Paper
+ static final ImmutableBiMap<DisplaySlot, String> SLOTS = ImmutableBiMap.<DisplaySlot, String>builder()
+ .put(DisplaySlot.BELOW_NAME, "belowName")
+ .put(DisplaySlot.PLAYER_LIST, "list")
+ .put(DisplaySlot.SIDEBAR, "sidebar")
+- .put(DisplaySlot.SIDEBAR_BLACK, "sidebar.team.black")
+- .put(DisplaySlot.SIDEBAR_DARK_BLUE, "sidebar.team.dark_blue")
+- .put(DisplaySlot.SIDEBAR_DARK_GREEN, "sidebar.team.dark_green")
+- .put(DisplaySlot.SIDEBAR_DARK_AQUA, "sidebar.team.dark_aqua")
+- .put(DisplaySlot.SIDEBAR_DARK_RED, "sidebar.team.dark_red")
+- .put(DisplaySlot.SIDEBAR_DARK_PURPLE, "sidebar.team.dark_purple")
+- .put(DisplaySlot.SIDEBAR_GOLD, "sidebar.team.gold")
+- .put(DisplaySlot.SIDEBAR_GRAY, "sidebar.team.gray")
+- .put(DisplaySlot.SIDEBAR_DARK_GRAY, "sidebar.team.dark_gray")
+- .put(DisplaySlot.SIDEBAR_BLUE, "sidebar.team.blue")
+- .put(DisplaySlot.SIDEBAR_GREEN, "sidebar.team.green")
+- .put(DisplaySlot.SIDEBAR_AQUA, "sidebar.team.aqua")
+- .put(DisplaySlot.SIDEBAR_RED, "sidebar.team.red")
+- .put(DisplaySlot.SIDEBAR_LIGHT_PURPLE, "sidebar.team.light_purple")
+- .put(DisplaySlot.SIDEBAR_YELLOW, "sidebar.team.yellow")
+- .put(DisplaySlot.SIDEBAR_WHITE, "sidebar.team.white")
+ .buildOrThrow();
+
+ private CraftScoreboardTranslations() {}
+
+ public static DisplaySlot toBukkitSlot(int i) {
++ if (true) return org.bukkit.scoreboard.DisplaySlot.NAMES.value(Scoreboard.getDisplaySlotName(i)); // Paper
+ return CraftScoreboardTranslations.SLOTS.inverse().get(Scoreboard.getDisplaySlotName(i));
+ }
+
+ public static int fromBukkitSlot(DisplaySlot slot) {
++ if (true) return Scoreboard.getDisplaySlotByName(slot.getId()); // Paper
+ return Scoreboard.getDisplaySlotByName(CraftScoreboardTranslations.SLOTS.get(slot));
+ }
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+index 89a32de0a3fbb7465b078b2aa1cc1d156a4a174d..27646d963bd1158f3fe0a9c0593a312404f0e7b0 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+@@ -252,6 +252,14 @@ public class Commodore
+ desc = getOriginalOrRewrite( desc );
+ }
+ // Paper end
++ // Paper start - DisplaySlot
++ if (owner.equals("org/bukkit/scoreboard/DisplaySlot")) {
++ if (name.startsWith("SIDEBAR_") && !name.startsWith("SIDEBAR_TEAM_")) {
++ super.visitFieldInsn(opcode, owner, name.replace("SIDEBAR_", "SIDEBAR_TEAM_"), desc);
++ return;
++ }
++ }
++ // Paper end - DisplaySlot
+
+ if ( owner.equals( "org/bukkit/block/Biome" ) )
+ {
+diff --git a/src/test/java/io/papermc/paper/scoreboard/DisplaySlotTest.java b/src/test/java/io/papermc/paper/scoreboard/DisplaySlotTest.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..bb41a2f2c0a5e3b4cb3fe1b584e0ceb7a7116afb
+--- /dev/null
++++ b/src/test/java/io/papermc/paper/scoreboard/DisplaySlotTest.java
+@@ -0,0 +1,26 @@
++package io.papermc.paper.scoreboard;
++
++import net.minecraft.world.scores.Scoreboard;
++import org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations;
++import org.bukkit.scoreboard.DisplaySlot;
++import org.junit.Test;
++
++import static org.junit.Assert.assertNotEquals;
++import static org.junit.Assert.assertNotNull;
++
++public class DisplaySlotTest {
++
++ @Test
++ public void testBukkitToMinecraftDisplaySlots() {
++ for (DisplaySlot value : DisplaySlot.values()) {
++ assertNotEquals(-1, CraftScoreboardTranslations.fromBukkitSlot(value));
++ }
++ }
++
++ @Test
++ public void testMinecraftToBukkitDisplaySlots() {
++ for (String name : Scoreboard.getDisplaySlotNames()) {
++ assertNotNull(CraftScoreboardTranslations.toBukkitSlot(Scoreboard.getDisplaySlotByName(name)));
++ }
++ }
++}