"Cannot remove from team" workaround

Eliminate lag spikes on render thread caused by IllegalStateException thrown in Scoreboard.removeScoreHolderFromTeam().

834

"Cannot remove from team" workaround

"Cannot remove from team" workaround

MC-270728

On some buggy servers you may have noticeable lag spikes caused by `Error executing task on client`: ```text net.minecraft.class_148: Main thread packet handler at net.minecraft.class_2600.method_11072(class_2600.java:33) ~[client-intermediary.jar:?] at net.minecraft.class_1255.method_18859(class_1255.java:156) ~[client-intermediary.jar:?] at net.minecraft.class_4093.method_18859(class_4093.java:23) ~[client-intermediary.jar:?] at net.minecraft.class_1255.method_16075(class_1255.java:130) ~[client-intermediary.jar:?] at net.minecraft.class_1255.method_5383(class_1255.java:115) ~[client-intermediary.jar:?] at net.minecraft.class_310.method_1523(class_310.java:1283) ~[client-intermediary.jar:?] at net.minecraft.class_310.method_1514(class_310.java:888) ~[client-intermediary.jar:?] at net.minecraft.client.main.Main.main(Main.java:265) ~[Fabric%201.20.4.jar:?] at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) ~[fabric-loader-0.15.7.jar:?] at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.15.7.jar:?] at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.15.7.jar:?] Caused by: java.lang.IllegalStateException: Player is either on another team or not on any team. Cannot remove from team 'Z/Sta/517631'. at net.minecraft.class_269.method_1157(class_269.java:307) ~[client-intermediary.jar:?] at net.minecraft.class_634.method_11099(class_634.java:2029) ~[client-intermediary.jar:?] at net.minecraft.class_5900.method_34173(class_5900.java:129) ~[client-intermediary.jar:?] at net.minecraft.class_5900.method_11054(class_5900.java:14) ~[client-intermediary.jar:?] at net.minecraft.class_2600.method_11072(class_2600.java:24) ~[client-intermediary.jar:?] ... 10 more ```

One thing this mod does is it replaces `IllegalStateException` throwing with `LOGGER.warn()`.

Default `net.minecraft.scoreboard.Scoreboard.removeScoreHolderFromTeam()` (`class_269.method_1157()`) implementation: ```java public void removeScoreHolderFromTeam(String scoreHolderName, Team team) { if (this.getScoreHolderTeam(scoreHolderName) != team) { throw new IllegalStateException("Player is either on another team or not on any team. Cannot remove from team '" + team.getName() + "'."); } else { this.teamsByScoreHolder.remove(scoreHolderName); team.getPlayerList().remove(scoreHolderName); } } ```

Though I'm not a Java coding guru, I don't understand why the exception is thrown on render thread.

ADS