Ver código fonte

Major config refactor

Lortseam 4 anos atrás
pai
commit
0882ef3fbf

+ 53 - 38
src/main/java/me/lortseam/uglyscoreboardfix/Config.java

@@ -4,61 +4,76 @@ import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import me.lortseam.completeconfig.api.ConfigCategory;
-import me.lortseam.completeconfig.api.ConfigEntry;
 import net.minecraft.scoreboard.ScoreboardObjective;
 import net.minecraft.scoreboard.ScoreboardPlayerScore;
 
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class Config implements ConfigCategory {
+public final class Config {
 
-    @Getter
-    private static final Config instance = new Config();
+    public static final Sidebar SIDEBAR = new Sidebar();
 
-    private State state = State.AUTO;
-    @ConfigEntry("hide")
-    private HidePart hidePart = HidePart.SCORES;
-    @Getter
-    private SidebarPosition position = SidebarPosition.RIGHT;
+    @NoArgsConstructor(access = AccessLevel.PRIVATE)
+    public static final class Sidebar implements ConfigCategory {
 
-    @Override
-    public boolean isConfigPOJO() {
-        return true;
-    }
+        public final Hiding HIDING = new Hiding();
 
-    public boolean shouldHide(HidePart hidePart, ScoreboardObjective objective) {
-        return hidePart == this.hidePart && state.test(objective);
-    }
+        @Getter
+        private SidebarPosition position = SidebarPosition.RIGHT;
+
+        @Override
+        public boolean isConfigPOJO() {
+            return true;
+        }
+
+        @NoArgsConstructor(access = AccessLevel.PRIVATE)
+        public static final class Hiding implements ConfigCategory {
 
-    private enum State {
+            private State state = State.AUTO;
+            private HidePart hidePart = HidePart.SCORES;
+
+            public boolean shouldHide(HidePart hidePart, ScoreboardObjective objective) {
+                return hidePart == this.hidePart && state.test(objective);
+            }
 
-        ENABLED() {
             @Override
-            boolean test(ScoreboardObjective objective) {
+            public boolean isConfigPOJO() {
                 return true;
             }
-        },
-        AUTO() {
-            @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;
+
+            private enum State {
+
+                ENABLED() {
+                    @Override
+                    boolean test(ScoreboardObjective objective) {
+                        return true;
+                    }
+                },
+                AUTO() {
+                    @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;
                     }
-                }
-                return true;
-            }
-        },
-        DISABLED() {
-            @Override
-            boolean test(ScoreboardObjective objective) {
-                return false;
+                },
+                DISABLED() {
+                    @Override
+                    boolean test(ScoreboardObjective objective) {
+                        return false;
+                    }
+                };
+
+                abstract boolean test(ScoreboardObjective objective);
+
             }
-        };
 
-        abstract boolean test(ScoreboardObjective objective);
+        }
 
     }
 

+ 1 - 1
src/main/java/me/lortseam/uglyscoreboardfix/UglyScoreboardFix.java

@@ -15,7 +15,7 @@ public class UglyScoreboardFix implements ConfigOwner, ModMenuApi {
 
     @Override
     public void onInitializeClientConfig(ConfigBuilder builder) {
-        configHandler = builder.add(Config.getInstance()).finish();
+        configHandler = builder.add(Config.SIDEBAR).finish();
     }
 
     @Override

+ 6 - 6
src/main/java/me/lortseam/uglyscoreboardfix/mixin/InGameHudMixin.java

@@ -23,29 +23,29 @@ public abstract class InGameHudMixin {
 
     @Inject(method = "renderScoreboardSidebar", at = @At("HEAD"), cancellable = true)
     private void uglyscoreboardfix$modifySidebar(MatrixStack matrices, ScoreboardObjective objective, CallbackInfo ci) {
-        if (Config.getInstance().shouldHide(HidePart.SIDEBAR, objective)) {
+        if (Config.SIDEBAR.HIDING.shouldHide(HidePart.SIDEBAR, objective)) {
             ci.cancel();
         }
     }
 
     @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"))
     private String uglyscoreboardfix$modifyScore(String score, MatrixStack matrices, ScoreboardObjective objective) {
-        return Config.getInstance().shouldHide(HidePart.SCORES, objective) ? "" : score;
+        return Config.SIDEBAR.HIDING.shouldHide(HidePart.SCORES, objective) ? "" : score;
     }
 
     @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"), ordinal = 2)
     private int uglyscoreboardfix$modifySeperatorWidth(int seperatorWidth, MatrixStack matrices, ScoreboardObjective objective) {
-        return Config.getInstance().shouldHide(HidePart.SCORES, objective) ? 0 : seperatorWidth;
+        return Config.SIDEBAR.HIDING.shouldHide(HidePart.SCORES, objective) ? 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 Config.getInstance().shouldHide(HidePart.SCORES, objective) ? 0 : textRenderer.getWidth(score);
+        return Config.SIDEBAR.HIDING.shouldHide(HidePart.SCORES, objective) ? 0 : textRenderer.getWidth(score);
     }
 
     @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"), ordinal = 5)
     private int uglyscoreboardfix$modifyX1(int x1) {
-        if (Config.getInstance().getPosition() == SidebarPosition.LEFT) {
+        if (Config.SIDEBAR.getPosition() == SidebarPosition.LEFT) {
             xShift = x1;
             return 2;
         }
@@ -54,7 +54,7 @@ public abstract class InGameHudMixin {
 
     @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"), ordinal = 11)
     private int uglyscoreboardfix$modifyX2(int x2) {
-        if (Config.getInstance().getPosition() == SidebarPosition.LEFT) {
+        if (Config.SIDEBAR.getPosition() == SidebarPosition.LEFT) {
             return x2 - xShift;
         }
         return x2;

+ 16 - 15
src/main/resources/assets/uglyscoreboardfix/lang/de_de.json

@@ -1,18 +1,19 @@
 {
   "config.uglyscoreboardfix.title": "Ugly Scoreboard Fix Konfiguration",
-  "config.uglyscoreboardfix.config.hide": "Verstecke",
-  "config.uglyscoreboardfix.config.hide.scores": "Punkte",
-  "config.uglyscoreboardfix.config.hide.sidebar": "Sidebar",
-  "config.uglyscoreboardfix.config.hide.tooltip": "Bestimmt, ob nur die Punkte (rote Zahlen auf der rechten Seite) oder die Sidebar komplett ausgeblendet wird.",
-  "config.uglyscoreboardfix.config.state": "Status",
-  "config.uglyscoreboardfix.config.state.enabled": "Aktiviert",
-  "config.uglyscoreboardfix.config.state.auto": "Automatisch",
-  "config.uglyscoreboardfix.config.state.disabled": "Deaktiviert",
-  "config.uglyscoreboardfix.config.state.tooltip.0": "Bestimmt, ob der ausgewählte Teil des Scoreboards ausgeblendet wird oder nicht.",
-  "config.uglyscoreboardfix.config.state.tooltip.1": "Aktiviert - Immer eingeschaltet.",
-  "config.uglyscoreboardfix.config.state.tooltip.2": "Automatisch - Nur bei einer aufeinanderfolgenden Reihenfolge der Punkte aktiviert.",
-  "config.uglyscoreboardfix.config.state.tooltip.3": "Deaktiviert - Ausgeschaltet.",
-  "config.uglyscoreboardfix.config.position": "Position der Sidebar",
-  "config.uglyscoreboardfix.config.position.right": "Rechts",
-  "config.uglyscoreboardfix.config.position.left": "Links"
+  "config.uglyscoreboardfix.sidebar.hiding": "Ausblend-Optionen",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart": "Verstecke",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart.scores": "Punkte",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart.sidebar": "Sidebar",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart.tooltip": "Bestimmt, ob nur die Punkte (rote Zahlen auf der rechten Seite) oder die Sidebar komplett ausgeblendet wird.",
+  "config.uglyscoreboardfix.sidebar.hiding.state": "Status",
+  "config.uglyscoreboardfix.sidebar.hiding.state.enabled": "Aktiviert",
+  "config.uglyscoreboardfix.sidebar.hiding.state.auto": "Automatisch",
+  "config.uglyscoreboardfix.sidebar.hiding.state.disabled": "Deaktiviert",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.0": "Bestimmt, ob der ausgewählte Teil des Scoreboards ausgeblendet wird oder nicht.",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.1": "Aktiviert - Immer eingeschaltet.",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.2": "Automatisch - Nur bei einer aufeinanderfolgenden Reihenfolge der Punkte aktiviert.",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.3": "Deaktiviert - Ausgeschaltet.",
+  "config.uglyscoreboardfix.sidebar.position": "Position der Sidebar",
+  "config.uglyscoreboardfix.sidebar.position.right": "Rechts",
+  "config.uglyscoreboardfix.sidebar.position.left": "Links"
 }

+ 16 - 15
src/main/resources/assets/uglyscoreboardfix/lang/en_us.json

@@ -1,18 +1,19 @@
 {
   "config.uglyscoreboardfix.title": "Ugly Scoreboard Fix Configuration",
-  "config.uglyscoreboardfix.config.hide": "Hide",
-  "config.uglyscoreboardfix.config.hide.scores": "Scores",
-  "config.uglyscoreboardfix.config.hide.sidebar": "Sidebar",
-  "config.uglyscoreboardfix.config.hide.tooltip": "Whether to hide the scores only (red numbers on the right side) or the sidebar completely.",
-  "config.uglyscoreboardfix.config.state": "State",
-  "config.uglyscoreboardfix.config.state.enabled": "Enabled",
-  "config.uglyscoreboardfix.config.state.auto": "Auto",
-  "config.uglyscoreboardfix.config.state.disabled": "Disabled",
-  "config.uglyscoreboardfix.config.state.tooltip.0": "Defines whether to hide the selected scoreboard part or not.",
-  "config.uglyscoreboardfix.config.state.tooltip.1": "Enabled - Always enabled.",
-  "config.uglyscoreboardfix.config.state.tooltip.2": "Auto - Enabled only when scores are in consecutive order.",
-  "config.uglyscoreboardfix.config.state.tooltip.3": "Disabled - Disabled.",
-  "config.uglyscoreboardfix.config.position": "Sidebar position",
-  "config.uglyscoreboardfix.config.position.right": "Right",
-  "config.uglyscoreboardfix.config.position.left": "Left"
+  "config.uglyscoreboardfix.sidebar.hiding": "Hiding options",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart": "Hide",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart.scores": "Scores",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart.sidebar": "Sidebar",
+  "config.uglyscoreboardfix.sidebar.hiding.hidePart.tooltip": "Whether to hide the scores only (red numbers on the right side) or the sidebar completely.",
+  "config.uglyscoreboardfix.sidebar.hiding.state": "State",
+  "config.uglyscoreboardfix.sidebar.hiding.state.enabled": "Enabled",
+  "config.uglyscoreboardfix.sidebar.hiding.state.auto": "Auto",
+  "config.uglyscoreboardfix.sidebar.hiding.state.disabled": "Disabled",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.0": "Defines whether to hide the selected scoreboard part or not.",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.1": "Enabled - Always enabled.",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.2": "Auto - Enabled only when scores are in consecutive order.",
+  "config.uglyscoreboardfix.sidebar.hiding.state.tooltip.3": "Disabled - Disabled.",
+  "config.uglyscoreboardfix.sidebar.position": "Sidebar position",
+  "config.uglyscoreboardfix.sidebar.position.right": "Right",
+  "config.uglyscoreboardfix.sidebar.position.left": "Left"
 }