"Cannot remove from team" workaround

"Cannot remove from team" workaround

Mod

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

Client CursedOptimization

492 downloads
6 followers
Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

"Cannot remove from team" workaround

MC-270728

On some buggy servers you may have noticeable lag spikes caused by Error executing task on client:

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:

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.


Project members

BlueGradientHorizon

Member

Details

Licensed CC0-1.0
Published 6 months ago
Updated 6 months ago