aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0585-Add-missing-team-sidebar-display-slots.patch
blob: 3b0dfacf0832cdc8f59234b3981e02f34b3f97c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Fri, 1 Oct 2021 08:04:39 -0700
Subject: [PATCH] Add missing team sidebar display slots

== AT ==
public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations
public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations toBukkitSlot(Lnet/minecraft/world/scores/DisplaySlot;)Lorg/bukkit/scoreboard/DisplaySlot;
public org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations fromBukkitSlot(Lorg/bukkit/scoreboard/DisplaySlot;)Lnet/minecraft/world/scores/DisplaySlot;

diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java b/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java
index ef80e6b4dff557daaab1b9fde4d8d40171017e6c..271aad69af4db015970aad842a7bb34dcb6bfd0e 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/FieldRename.java
@@ -35,6 +35,7 @@ public class FieldRename {
         }
 
         return switch (owner) {
+            case "org/bukkit/scoreboard/DisplaySlot" -> FieldRename.convertDisplaySlot(from); // Paper - DisplaySlot
             case "org/bukkit/block/banner/PatternType" -> FieldRename.convertPatternTypeName(apiVersion, from);
             case "org/bukkit/enchantments/Enchantment" -> FieldRename.convertEnchantmentName(apiVersion, from);
             case "org/bukkit/block/Biome" -> FieldRename.convertBiomeName(apiVersion, from);
@@ -60,6 +61,16 @@ public class FieldRename {
     //}
     // Paper end
 
+    // Paper start - DisplaySlot
+    @DoNotReroute
+    public static String convertDisplaySlot(final String from) {
+        if (from.startsWith("SIDEBAR_") && !from.startsWith("SIDEBAR_TEAM_")) {
+            return from.replace("SIDEBAR_", "SIDEBAR_TEAM_");
+        }
+        return from;
+    }
+    // Paper end - DisplaySlot
+
     // PatternType
     private static final FieldRenameData PATTERN_TYPE_DATA = FieldRenameData.Builder.newBuilder()
             .forVersionsBefore(ApiVersion.FIELD_NAME_PARITY)
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java
index 73c5ffff70605b32188a9bb5fb6c0ee04cb66efe..711d227f5ee6d63356a94a0567968da48e9f284c 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java
@@ -7,35 +7,22 @@ import org.bukkit.scoreboard.RenderType;
 
 public final class CraftScoreboardTranslations {
     static final int MAX_DISPLAY_SLOT = 19;
+    @Deprecated // Paper
     static final ImmutableBiMap<DisplaySlot, String> SLOTS = ImmutableBiMap.<DisplaySlot, String>builder()
             .put(DisplaySlot.BELOW_NAME, "below_name")
             .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(net.minecraft.world.scores.DisplaySlot minecraft) {
+        if (true) return DisplaySlot.NAMES.value(minecraft.getSerializedName()); // Paper
         return CraftScoreboardTranslations.SLOTS.inverse().get(minecraft.getSerializedName());
     }
 
     public static net.minecraft.world.scores.DisplaySlot fromBukkitSlot(DisplaySlot slot) {
+        if (true) return net.minecraft.world.scores.DisplaySlot.CODEC.byName(slot.getId()); // Paper
         return net.minecraft.world.scores.DisplaySlot.CODEC.byName(CraftScoreboardTranslations.SLOTS.get(slot));
     }
 
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..69c9678f8218c240be1044eeabe1c6bef7747b1e
--- /dev/null
+++ b/src/test/java/io/papermc/paper/scoreboard/DisplaySlotTest.java
@@ -0,0 +1,24 @@
+package io.papermc.paper.scoreboard;
+
+import org.bukkit.craftbukkit.scoreboard.CraftScoreboardTranslations;
+import org.bukkit.scoreboard.DisplaySlot;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+public class DisplaySlotTest {
+
+    @Test
+    public void testBukkitToMinecraftDisplaySlots() {
+        for (DisplaySlot bukkitSlot : DisplaySlot.values()) {
+            assertNotNull(CraftScoreboardTranslations.fromBukkitSlot(bukkitSlot));
+        }
+    }
+
+    @Test
+    public void testMinecraftToBukkitDisplaySlots() {
+        for (net.minecraft.world.scores.DisplaySlot nmsSlot : net.minecraft.world.scores.DisplaySlot.values()) {
+            assertNotNull(CraftScoreboardTranslations.toBukkitSlot(nmsSlot));
+        }
+    }
+}