Browse Source

Refactor + hide sidebar

Lortseam 4 years ago
parent
commit
23317d5ef5

+ 1 - 1
gradle.properties

@@ -6,7 +6,7 @@ yarn_mappings=1.16.3+build.11
 loader_version=0.9.3+build.207
 
 # Mod Properties
-mod_version=0.1.3
+mod_version=0.2.0
 maven_group=me.lortseam
 archives_base_name=uglyscoreboardfix
 

+ 7 - 0
src/main/java/me/lortseam/uglyscoreboardfix/Hide.java

@@ -0,0 +1,7 @@
+package me.lortseam.uglyscoreboardfix;
+
+public enum Hide {
+
+    SIDEBAR, SCORES
+
+}

+ 37 - 0
src/main/java/me/lortseam/uglyscoreboardfix/Type.java

@@ -0,0 +1,37 @@
+package me.lortseam.uglyscoreboardfix;
+
+import net.minecraft.scoreboard.ScoreboardObjective;
+import net.minecraft.scoreboard.ScoreboardPlayerScore;
+
+public enum Type {
+
+    ALWAYS() {
+        @Override
+        boolean test(ScoreboardObjective objective) {
+            return true;
+        }
+    },
+    CONSECUTIVE_ORDER() {
+        @Override
+        boolean test(ScoreboardObjective objective) {
+            int[] scores = objective.getScoreboard().getAllPlayerScores(objective).stream().mapToInt(ScoreboardPlayerScore::getScore).toArray();
+            if (scores.length >= 2) {
+                for (int i = 1; i < scores.length; i++) {
+                    if (scores[i - 1] + 1 != scores[i]) {
+                        return false;
+                    }
+                }
+            }
+            return true;
+        }
+    },
+    DISABLED() {
+        @Override
+        boolean test(ScoreboardObjective objective) {
+            return false;
+        }
+    };
+
+    abstract boolean test(ScoreboardObjective objective);
+
+}

+ 6 - 17
src/main/java/me/lortseam/uglyscoreboardfix/UglyScoreboardFix.java

@@ -10,7 +10,6 @@ import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.api.EnvType;
 import net.fabricmc.api.Environment;
 import net.minecraft.scoreboard.ScoreboardObjective;
-import net.minecraft.scoreboard.ScoreboardPlayerScore;
 
 @Environment(EnvType.CLIENT)
 public class UglyScoreboardFix implements ClientModInitializer, ConfigCategory, ModMenuApi {
@@ -22,9 +21,9 @@ public class UglyScoreboardFix implements ClientModInitializer, ConfigCategory,
     @Getter
     private ConfigManager configManager;
     @ConfigEntry
-    private boolean enabled = true;
+    private Type type = Type.CONSECUTIVE_ORDER;
     @ConfigEntry
-    private boolean consecutiveOrderOnly = true;
+    private Hide hide = Hide.SCORES;
 
     @Override
     public void onInitializeClient() {
@@ -33,21 +32,11 @@ public class UglyScoreboardFix implements ClientModInitializer, ConfigCategory,
         configManager.register(this);
     }
 
-    public boolean shouldHideScores(ScoreboardObjective objective) {
-        if (!enabled) {
-            return false;
+    public Hide getHide(ScoreboardObjective objective) {
+        if (!type.test(objective)) {
+            return null;
         }
-        if (consecutiveOrderOnly) {
-            int[] scores = objective.getScoreboard().getAllPlayerScores(objective).stream().mapToInt(ScoreboardPlayerScore::getScore).toArray();
-            if (scores.length >= 2) {
-                for (int i = 1; i < scores.length; i++) {
-                    if (scores[i - 1] + 1 != scores[i]) {
-                        return false;
-                    }
-                }
-            }
-        }
-        return true;
+        return hide;
     }
 
 }

+ 13 - 3
src/main/java/me/lortseam/uglyscoreboardfix/mixin/MixinInGameHud.java

@@ -1,5 +1,6 @@
 package me.lortseam.uglyscoreboardfix.mixin;
 
+import me.lortseam.uglyscoreboardfix.Hide;
 import me.lortseam.uglyscoreboardfix.UglyScoreboardFix;
 import net.minecraft.client.font.TextRenderer;
 import net.minecraft.client.gui.hud.InGameHud;
@@ -7,25 +8,34 @@ import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.scoreboard.ScoreboardObjective;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
 import org.spongepowered.asm.mixin.injection.ModifyVariable;
 import org.spongepowered.asm.mixin.injection.Redirect;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 
 @Mixin(InGameHud.class)
 public abstract class MixinInGameHud {
 
+    @Inject(method = "renderScoreboardSidebar", at = @At("HEAD"), cancellable = true)
+    private void uglyscoreboardfix$modifySidebar(MatrixStack matrices, ScoreboardObjective objective, CallbackInfo ci) {
+        if (UglyScoreboardFix.getInstance().getHide(objective) == Hide.SIDEBAR) {
+            ci.cancel();
+        }
+    }
+
     @ModifyVariable(method = "renderScoreboardSidebar", at = @At(value = "STORE"))
     private String uglyscoreboardfix$modifyScore(String score, MatrixStack matrices, ScoreboardObjective objective) {
-        return UglyScoreboardFix.getInstance().shouldHideScores(objective) ? "" : score;
+        return UglyScoreboardFix.getInstance().getHide(objective) == Hide.SCORES ? "" : score;
     }
 
     @ModifyVariable(method = "renderScoreboardSidebar", at = @At(value = "STORE"), ordinal = 2)
     private int uglyscoreboardfix$modifySeperatorWidth(int seperatorWidth, MatrixStack matrices, ScoreboardObjective objective) {
-        return UglyScoreboardFix.getInstance().shouldHideScores(objective) ? 0 : seperatorWidth;
+        return UglyScoreboardFix.getInstance().getHide(objective) == Hide.SCORES ? 0 : seperatorWidth;
     }
 
     @Redirect(method = "renderScoreboardSidebar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/TextRenderer;getWidth(Ljava/lang/String;)I", ordinal = 1))
     private int uglyscoreboardfix$modifyScoreWidth(TextRenderer textRenderer, String score, MatrixStack matrices, ScoreboardObjective objective) {
-        return UglyScoreboardFix.getInstance().shouldHideScores(objective) ? 0 : textRenderer.getWidth(score);
+        return UglyScoreboardFix.getInstance().getHide(objective) == Hide.SCORES ? 0 : textRenderer.getWidth(score);
     }
 
 }

+ 7 - 2
src/main/resources/assets/uglyscoreboardfix/lang/de_de.json

@@ -1,5 +1,10 @@
 {
   "config.uglyscoreboardfix.title": "Ugly Scoreboard Fix Konfiguration",
-  "config.uglyscoreboardfix.uglyScoreboardFix.enabled": "Aktiviert",
-  "config.uglyscoreboardfix.uglyScoreboardFix.consecutiveOrderOnly": "Nur bei aufeinanderfolgender Reihenfolge"
+  "config.uglyscoreboardfix.uglyScoreboardFix.hide": "Verstecke",
+  "config.uglyscoreboardfix.uglyScoreboardFix.hide.scores": "Punkte",
+  "config.uglyscoreboardfix.uglyScoreboardFix.hide.sidebar": "Sidebar",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type": "Typ",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type.always": "Immer",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type.consecutiveOrder": "Aufeinanderfolgende Reihenfolge",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type.disabled": "Deaktiviert"
 }

+ 7 - 2
src/main/resources/assets/uglyscoreboardfix/lang/en_us.json

@@ -1,5 +1,10 @@
 {
   "config.uglyscoreboardfix.title": "Ugly Scoreboard Fix Configuration",
-  "config.uglyscoreboardfix.uglyScoreboardFix.enabled": "Enabled",
-  "config.uglyscoreboardfix.uglyScoreboardFix.consecutiveOrderOnly": "Consecutive order only"
+  "config.uglyscoreboardfix.uglyScoreboardFix.hide": "Hide",
+  "config.uglyscoreboardfix.uglyScoreboardFix.hide.scores": "Scores",
+  "config.uglyscoreboardfix.uglyScoreboardFix.hide.sidebar": "Sidebar",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type": "Type",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type.always": "Always",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type.consecutiveOrder": "Consecutive order",
+  "config.uglyscoreboardfix.uglyScoreboardFix.type.disabled": "Disabled"
 }