Skip to content

Commit 653781e

Browse files
committed
Fix component data not being compared when determining whether to write the scoreboard
1 parent 138bfe8 commit 653781e

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.ladysnake.cca.mixin.scoreboard;
2+
3+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
4+
import net.minecraft.scoreboard.ScoreboardState;
5+
import org.ladysnake.cca.internal.scoreboard.CcaPackedState;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Shadow;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
10+
import java.util.Objects;
11+
12+
@Mixin(ScoreboardState.class)
13+
public class MixinScoreboardState {
14+
@Shadow
15+
private ScoreboardState.Packed packedState;
16+
17+
@ModifyExpressionValue(method = "set", at = @At(value = "INVOKE", target = "Lnet/minecraft/scoreboard/ScoreboardState$Packed;equals(Ljava/lang/Object;)Z"))
18+
private boolean compareComponentValues(boolean original, ScoreboardState.Packed packed){
19+
return original && Objects.equals(((CcaPackedState) (Object) packed).cca$getSerializedComponents(), ((CcaPackedState) (Object) packedState).cca$getSerializedComponents());
20+
}
21+
}

cardinal-components-scoreboard/src/main/resources/mixins.cardinal_components_scoreboard.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"MixinPersistentState",
1111
"MixinPlayerManager",
1212
"MixinScoreboard",
13+
"MixinScoreboardState",
1314
"MixinServerScoreboard",
1415
"MixinTeam",
1516
"ServerScoreboardAccessor",

0 commit comments

Comments
 (0)