Kaynağa Gözat

Add sidebar position option

Lortseam 4 yıl önce
ebeveyn
işleme
b2e5ec38aa

+ 2 - 0
src/main/java/me/lortseam/uglyscoreboardfix/Config.java

@@ -17,6 +17,8 @@ public final class Config implements ConfigCategory {
     private State state = State.AUTO;
     @ConfigEntry("hide")
     private HideType hideType = HideType.SCORES;
+    @Getter
+    private SidebarPosition position = SidebarPosition.RIGHT;
 
     @Override
     public boolean isConfigPOJO() {

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

@@ -0,0 +1,7 @@
+package me.lortseam.uglyscoreboardfix;
+
+public enum SidebarPosition {
+
+    RIGHT, LEFT
+
+}

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

@@ -2,11 +2,13 @@ package me.lortseam.uglyscoreboardfix.mixin;
 
 import me.lortseam.uglyscoreboardfix.Config;
 import me.lortseam.uglyscoreboardfix.HideType;
+import me.lortseam.uglyscoreboardfix.SidebarPosition;
 import net.minecraft.client.font.TextRenderer;
 import net.minecraft.client.gui.hud.InGameHud;
 import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.scoreboard.ScoreboardObjective;
 import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Unique;
 import org.spongepowered.asm.mixin.injection.At;
 import org.spongepowered.asm.mixin.injection.Inject;
 import org.spongepowered.asm.mixin.injection.ModifyVariable;
@@ -16,6 +18,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 @Mixin(InGameHud.class)
 public abstract class InGameHudMixin {
 
+    @Unique
+    private int xShift;
+
     @Inject(method = "renderScoreboardSidebar", at = @At("HEAD"), cancellable = true)
     private void uglyscoreboardfix$modifySidebar(MatrixStack matrices, ScoreboardObjective objective, CallbackInfo ci) {
         if (Config.getInstance().shouldHide(HideType.SIDEBAR, objective)) {
@@ -23,12 +28,12 @@ public abstract class InGameHudMixin {
         }
     }
 
-    @ModifyVariable(method = "renderScoreboardSidebar", at = @At(value = "STORE"))
+    @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"))
     private String uglyscoreboardfix$modifyScore(String score, MatrixStack matrices, ScoreboardObjective objective) {
         return Config.getInstance().shouldHide(HideType.SCORES, objective) ? "" : score;
     }
 
-    @ModifyVariable(method = "renderScoreboardSidebar", at = @At(value = "STORE"), ordinal = 2)
+    @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"), ordinal = 2)
     private int uglyscoreboardfix$modifySeperatorWidth(int seperatorWidth, MatrixStack matrices, ScoreboardObjective objective) {
         return Config.getInstance().shouldHide(HideType.SCORES, objective) ? 0 : seperatorWidth;
     }
@@ -38,4 +43,21 @@ public abstract class InGameHudMixin {
         return Config.getInstance().shouldHide(HideType.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) {
+            xShift = x1;
+            return 2;
+        }
+        return x1;
+    }
+
+    @ModifyVariable(method = "renderScoreboardSidebar", at = @At("STORE"), ordinal = 11)
+    private int uglyscoreboardfix$modifyX2(int x2) {
+        if (Config.getInstance().getPosition() == SidebarPosition.LEFT) {
+            return x2 - xShift;
+        }
+        return x2;
+    }
+
 }

+ 4 - 1
src/main/resources/assets/uglyscoreboardfix/lang/de_de.json

@@ -11,5 +11,8 @@
   "config.uglyscoreboardfix.config.state.tooltip.0": "Bestimmt, ob diese Mod aktiviert ist 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.state.tooltip.3": "Deaktiviert - Ausgeschaltet.",
+  "config.uglyscoreboardfix.config.position": "Position der Sidebar",
+  "config.uglyscoreboardfix.config.position.right": "Rechts",
+  "config.uglyscoreboardfix.config.position.left": "Links"
 }

+ 4 - 1
src/main/resources/assets/uglyscoreboardfix/lang/en_us.json

@@ -11,5 +11,8 @@
   "config.uglyscoreboardfix.config.state.tooltip.0": "Defines whether this mod is active 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.state.tooltip.3": "Disabled - Disabled.",
+  "config.uglyscoreboardfix.config.position": "Sidebar position",
+  "config.uglyscoreboardfix.config.position.right": "Right",
+  "config.uglyscoreboardfix.config.position.left": "Left"
 }