diff --git a/patches/api/0005-Adventure.patch b/patches/api/0005-Adventure.patch
index 8202f4d33b..f520811536 100644
--- a/patches/api/0005-Adventure.patch
+++ b/patches/api/0005-Adventure.patch
@@ -4052,10 +4052,10 @@ index 5c855dbd0da895392f7a6e92cdc90782baf614ad..1ada91d790abedbc9b3aeb6e96467a0d
/**
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df1506858168d20d 100644
+index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..07a9fa68075a2c5f5a4a7519976b506526d95ca0 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -22,14 +22,93 @@ public interface Team {
+@@ -22,14 +22,102 @@ public interface Team {
*/
@NotNull
String getName() throws IllegalStateException;
@@ -4115,13 +4115,23 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
+ void suffix(@Nullable net.kyori.adventure.text.Component suffix) throws IllegalStateException, IllegalArgumentException;
+
+ /**
++ * Checks if the team has a color specified
++ *
++ * @return true if it has a color
++ * @throws IllegalStateException if this team has been unregistered
++ */
++ boolean hasColor();
++
++ /**
+ * Gets the color of the team.
+ *
+ * This only sets the team outline, other occurrences of colors such as in
+ * names are handled by prefixes / suffixes.
+ *
-+ * @return team color, defaults to {@link ChatColor#RESET}
++ * @return team color
+ * @throws IllegalStateException if this team has been unregistered
++ * @throws IllegalStateException if the team doesn't have a color
++ * @see #hasColor()
+ */
+ @NotNull net.kyori.adventure.text.format.TextColor color() throws IllegalStateException;
+
@@ -4131,8 +4141,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
+ * This only sets the team outline, other occurrences of colors such as in
+ * names are handled by prefixes / suffixes.
+ *
-+ * @param color new color, must be non-null. Use {@link ChatColor#RESET} for
-+ * no color
++ * @param color new color, null for no color
+ */
+ void color(@Nullable net.kyori.adventure.text.format.NamedTextColor color);
+ // Paper end
@@ -4149,7 +4158,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
String getDisplayName() throws IllegalStateException;
/**
-@@ -39,7 +118,9 @@ public interface Team {
+@@ -39,7 +127,9 @@ public interface Team {
* @throws IllegalArgumentException if displayName is longer than 128
* characters.
* @throws IllegalStateException if this team has been unregistered
@@ -4159,7 +4168,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
void setDisplayName(@NotNull String displayName) throws IllegalStateException, IllegalArgumentException;
/**
-@@ -47,8 +128,10 @@ public interface Team {
+@@ -47,8 +137,10 @@ public interface Team {
*
* @return Team prefix
* @throws IllegalStateException if this team has been unregistered
@@ -4170,7 +4179,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
String getPrefix() throws IllegalStateException;
/**
-@@ -59,7 +142,9 @@ public interface Team {
+@@ -59,7 +151,9 @@ public interface Team {
* @throws IllegalArgumentException if prefix is longer than 64
* characters
* @throws IllegalStateException if this team has been unregistered
@@ -4180,7 +4189,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
void setPrefix(@NotNull String prefix) throws IllegalStateException, IllegalArgumentException;
/**
-@@ -67,8 +152,10 @@ public interface Team {
+@@ -67,8 +161,10 @@ public interface Team {
*
* @return the team's current suffix
* @throws IllegalStateException if this team has been unregistered
@@ -4191,7 +4200,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
String getSuffix() throws IllegalStateException;
/**
-@@ -79,7 +166,9 @@ public interface Team {
+@@ -79,7 +175,9 @@ public interface Team {
* @throws IllegalArgumentException if suffix is longer than 64
* characters
* @throws IllegalStateException if this team has been unregistered
@@ -4201,7 +4210,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
void setSuffix(@NotNull String suffix) throws IllegalStateException, IllegalArgumentException;
/**
-@@ -90,8 +179,10 @@ public interface Team {
+@@ -90,8 +188,10 @@ public interface Team {
*
* @return team color, defaults to {@link ChatColor#RESET}
* @throws IllegalStateException if this team has been unregistered
@@ -4212,7 +4221,7 @@ index 0db7fe1b9fe5621ceed3f4f046691e359f5949dd..d5b39fb4fc16a342b5661e08df150685
ChatColor getColor() throws IllegalStateException;
/**
-@@ -102,7 +193,9 @@ public interface Team {
+@@ -102,7 +202,9 @@ public interface Team {
*
* @param color new color, must be non-null. Use {@link ChatColor#RESET} for
* no color
diff --git a/patches/api/0346-Improve-scoreboard-entries.patch b/patches/api/0346-Improve-scoreboard-entries.patch
index 34c175dad7..7918390f63 100644
--- a/patches/api/0346-Improve-scoreboard-entries.patch
+++ b/patches/api/0346-Improve-scoreboard-entries.patch
@@ -110,10 +110,10 @@ index 1ada91d790abedbc9b3aeb6e96467a0d78560f15..fc3456bb79f2fe1504359455b937c162
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index d5b39fb4fc16a342b5661e08df1506858168d20d..2b93692204a74ea0def513a54ddf77a40c64d3d2 100644
+index 07a9fa68075a2c5f5a4a7519976b506526d95ca0..51205a71d243195fdf35515374a1e9ef5df26bc0 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -301,9 +301,8 @@ public interface Team {
+@@ -310,9 +310,8 @@ public interface Team {
* @throws IllegalArgumentException if player is null
* @throws IllegalStateException if this team has been unregistered
* @see #addEntry(String)
@@ -124,7 +124,7 @@ index d5b39fb4fc16a342b5661e08df1506858168d20d..2b93692204a74ea0def513a54ddf77a4
void addPlayer(@NotNull OfflinePlayer player) throws IllegalStateException, IllegalArgumentException;
/**
-@@ -325,9 +324,8 @@ public interface Team {
+@@ -334,9 +333,8 @@ public interface Team {
* @throws IllegalArgumentException if player is null
* @throws IllegalStateException if this team has been unregistered
* @see #removeEntry(String)
@@ -135,7 +135,7 @@ index d5b39fb4fc16a342b5661e08df1506858168d20d..2b93692204a74ea0def513a54ddf77a4
boolean removePlayer(@NotNull OfflinePlayer player) throws IllegalStateException, IllegalArgumentException;
/**
-@@ -355,9 +353,8 @@ public interface Team {
+@@ -364,9 +362,8 @@ public interface Team {
* @throws IllegalArgumentException if player is null
* @throws IllegalStateException if this team has been unregistered
* @see #hasEntry(String)
@@ -146,7 +146,7 @@ index d5b39fb4fc16a342b5661e08df1506858168d20d..2b93692204a74ea0def513a54ddf77a4
boolean hasPlayer(@NotNull OfflinePlayer player) throws IllegalArgumentException, IllegalStateException;
/**
* Checks to see if the specified entry is a member of this team.
-@@ -388,6 +385,42 @@ public interface Team {
+@@ -397,6 +394,42 @@ public interface Team {
*/
void setOption(@NotNull Option option, @NotNull OptionStatus status) throws IllegalStateException;
diff --git a/patches/api/0355-Multiple-Entries-with-Scoreboards.patch b/patches/api/0355-Multiple-Entries-with-Scoreboards.patch
index e1d867d054..378ab2020f 100644
--- a/patches/api/0355-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/api/0355-Multiple-Entries-with-Scoreboards.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Multiple Entries with Scoreboards
diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java
-index 2b93692204a74ea0def513a54ddf77a40c64d3d2..04c8cc55a2fe19c888aba842775cc66648dddb0c 100644
+index 51205a71d243195fdf35515374a1e9ef5df26bc0..0f5c49d41c9460da0ba913b4ca8bef375f2c23df 100644
--- a/src/main/java/org/bukkit/scoreboard/Team.java
+++ b/src/main/java/org/bukkit/scoreboard/Team.java
-@@ -316,6 +316,60 @@ public interface Team {
+@@ -325,6 +325,60 @@ public interface Team {
*/
void addEntry(@NotNull String entry) throws IllegalStateException, IllegalArgumentException;
@@ -69,7 +69,7 @@ index 2b93692204a74ea0def513a54ddf77a40c64d3d2..04c8cc55a2fe19c888aba842775cc666
/**
* Removes the player from this team.
*
-@@ -338,6 +392,56 @@ public interface Team {
+@@ -347,6 +401,56 @@ public interface Team {
*/
boolean removeEntry(@NotNull String entry) throws IllegalStateException, IllegalArgumentException;
diff --git a/patches/server/0008-Adventure.patch b/patches/server/0008-Adventure.patch
index 02a72c3a7a..5c336dff9c 100644
--- a/patches/server/0008-Adventure.patch
+++ b/patches/server/0008-Adventure.patch
@@ -3385,10 +3385,10 @@ index afc059755ae3e7b1c0a4cf3c6b8f32ce13cc458d..5f2af880619e01a03e05258ae1f9fa58
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index 81f16dc1ed6e102af298600db75cab21a09bc00f..f86776aa42bd5520f8aaeaa46bb93ec4d5b4e27d 100644
+index 81f16dc1ed6e102af298600db75cab21a09bc00f..df1288e2e89716bba5ef73d2cdeb9a567f46a297 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-@@ -28,6 +28,55 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -28,6 +28,62 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
return this.team.getName();
}
@@ -3427,6 +3427,11 @@ index 81f16dc1ed6e102af298600db75cab21a09bc00f..f86776aa42bd5520f8aaeaa46bb93ec4
+ team.setPlayerSuffix(io.papermc.paper.adventure.PaperAdventure.asVanilla(suffix));
+ }
+ @Override
++ public boolean hasColor() {
++ CraftScoreboard scoreboard = checkState();
++ return this.team.getColor().getColor() != null;
++ }
++ @Override
+ public net.kyori.adventure.text.format.TextColor color() throws IllegalStateException {
+ CraftScoreboard scoreboard = checkState();
+ if (team.getColor().getColor() == null) throw new IllegalStateException("Team colors must have hex values");
@@ -3436,8 +3441,10 @@ index 81f16dc1ed6e102af298600db75cab21a09bc00f..f86776aa42bd5520f8aaeaa46bb93ec4
+ }
+ @Override
+ public void color(net.kyori.adventure.text.format.NamedTextColor color) {
-+ if (color == null) color = net.kyori.adventure.text.format.NamedTextColor.WHITE;
+ CraftScoreboard scoreboard = checkState();
++ if (color == null) {
++ this.team.setColor(net.minecraft.ChatFormatting.RESET);
++ }
+ team.setColor(io.papermc.paper.adventure.PaperAdventure.asVanilla(color));
+ }
+ // Paper end
diff --git a/patches/server/0493-Fix-CraftTeam-null-check.patch b/patches/server/0493-Fix-CraftTeam-null-check.patch
index 61de747dfd..a86676f8a2 100644
--- a/patches/server/0493-Fix-CraftTeam-null-check.patch
+++ b/patches/server/0493-Fix-CraftTeam-null-check.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix CraftTeam null check
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index f86776aa42bd5520f8aaeaa46bb93ec4d5b4e27d..2b87a652798cb632fe76bf20e9e7f8cb8bfb3b7b 100644
+index df1288e2e89716bba5ef73d2cdeb9a567f46a297..af4ab4be3722d3349f7f71da062dee493cd2aafe 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-@@ -253,7 +253,7 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -260,7 +260,7 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
@Override
public boolean hasEntry(String entry) throws IllegalArgumentException, IllegalStateException {
diff --git a/patches/server/0820-Improve-scoreboard-entries.patch b/patches/server/0820-Improve-scoreboard-entries.patch
index ee3bcefafe..4db7c1f77b 100644
--- a/patches/server/0820-Improve-scoreboard-entries.patch
+++ b/patches/server/0820-Improve-scoreboard-entries.patch
@@ -52,10 +52,10 @@ index 944080939ceaf2db8bcd7d3c01f4b97440e35cc1..0102c475b6e49777c1e24c32e5eff299
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index 2b87a652798cb632fe76bf20e9e7f8cb8bfb3b7b..47f2e8824fff51f4271e7aa61e233d57e3ca2942 100644
+index af4ab4be3722d3349f7f71da062dee493cd2aafe..d1844550bafa381a6dd88702dabef6de39be0907 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-@@ -302,6 +302,26 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -309,6 +309,26 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
}
}
diff --git a/patches/server/0837-Multiple-Entries-with-Scoreboards.patch b/patches/server/0837-Multiple-Entries-with-Scoreboards.patch
index 2f9e8e9118..21fc65abbd 100644
--- a/patches/server/0837-Multiple-Entries-with-Scoreboards.patch
+++ b/patches/server/0837-Multiple-Entries-with-Scoreboards.patch
@@ -70,10 +70,10 @@ index 610d312b9c8f6c8d1f102e8ba2fe9fc2cc3e98c5..3a4a0727ad44322e3ba85512cd077808
public void onObjectiveAdded(Objective objective) {
super.onObjectiveAdded(objective);
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-index 47f2e8824fff51f4271e7aa61e233d57e3ca2942..be5e4c2f3c552e0438ed1cc660e411c41fd13df7 100644
+index d1844550bafa381a6dd88702dabef6de39be0907..d3d9641862f4746469bca946ef6d89a88f15698b 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java
-@@ -226,6 +226,21 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -233,6 +233,21 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
scoreboard.board.addPlayerToTeam(entry, team);
}
@@ -95,7 +95,7 @@ index 47f2e8824fff51f4271e7aa61e233d57e3ca2942..be5e4c2f3c552e0438ed1cc660e411c4
@Override
public boolean removePlayer(OfflinePlayer player) throws IllegalStateException, IllegalArgumentException {
Validate.notNull(player, "OfflinePlayer cannot be null");
-@@ -245,6 +260,28 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
+@@ -252,6 +267,28 @@ final class CraftTeam extends CraftScoreboardComponent implements Team {
return true;
}