From 4dbcd98640bf3c50fbd0961cb66d33c57ac4a6d7 Mon Sep 17 00:00:00 2001
From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>
Date: Mon, 21 Aug 2023 00:05:24 +0800
Subject: Refactor code

---
 .../tabhud/screenbuilder/ScreenBuilder.java        | 45 ++++++-------
 .../tabhud/screenbuilder/ScreenMaster.java         | 22 +++----
 .../tabhud/screenbuilder/pipeline/AlignStage.java  | 46 +++++---------
 .../screenbuilder/pipeline/CollideStage.java       | 24 +++----
 .../tabhud/screenbuilder/pipeline/PlaceStage.java  | 42 ++++++------
 .../tabhud/screenbuilder/pipeline/StackStage.java  | 30 ++++-----
 .../skyblock/tabhud/util/PlayerListMgr.java        |  4 +-
 .../skyblock/tabhud/util/PlayerLocator.java        | 74 +++++++++-------------
 .../tabhud/widget/DungeonPlayerWidget.java         |  2 +-
 .../skyblock/tabhud/widget/EventWidget.java        |  2 +-
 .../skyblock/tabhud/widget/ForgeWidget.java        | 14 ++--
 .../skyblock/tabhud/widget/IslandOwnersWidget.java |  4 +-
 .../skyblock/tabhud/widget/VolcanoWidget.java      | 16 ++---
 .../skyblocker/skyblock/tabhud/widget/Widget.java  |  8 +--
 .../tabhud/widget/component/Component.java         |  2 +-
 .../tabhud/widget/component/ProgressComponent.java | 22 +++----
 .../tabhud/widget/component/TableComponent.java    |  6 +-
 .../skyblock/tabhud/widget/hud/HudCommsWidget.java |  4 +-
 .../tabhud/widget/rift/RiftProgressWidget.java     |  2 +-
 19 files changed, 159 insertions(+), 210 deletions(-)

(limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock')

diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
index 76b675ce..084a6ffd 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java
@@ -28,21 +28,21 @@ import net.minecraft.util.Identifier;
 public class ScreenBuilder {
 
     // layout pipeline
-    private ArrayList<PipelineStage> layoutPipeline = new ArrayList<>();
+    private final ArrayList<PipelineStage> layoutPipeline = new ArrayList<>();
 
     // all widget instances this builder knows
-    private ArrayList<Widget> instances = new ArrayList<>();
+    private final ArrayList<Widget> instances = new ArrayList<>();
     // maps alias -> widget instance
-    private HashMap<String, Widget> objectMap = new HashMap<>();
+    private final HashMap<String, Widget> objectMap = new HashMap<>();
 
-    private String builderName;
+    private final String builderName;
 
     /**
      * Create a ScreenBuilder from a json.
      */
     public ScreenBuilder(Identifier ident) {
 
-        try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident);) {
+        try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager().openAsReader(ident)) {
             this.builderName = ident.getPath();
 
             JsonObject json = JsonParser.parseReader(reader).getAsJsonObject();
@@ -79,23 +79,23 @@ public class ScreenBuilder {
         // do widgets that require args the normal way
         JsonElement arg;
         switch (name) {
-            case "EventWidget":
+            case "EventWidget" -> {
                 return new EventWidget(widget.get("inGarden").getAsBoolean());
-
-            case "DungeonPlayerWidget":
+            }
+            case "DungeonPlayerWidget" -> {
                 return new DungeonPlayerWidget(widget.get("player").getAsInt());
-
-            case "ErrorWidget":
+            }
+            case "ErrorWidget" -> {
                 arg = widget.get("text");
                 if (arg == null) {
                     return new ErrorWidget();
                 } else {
                     return new ErrorWidget(arg.getAsString());
                 }
-
-            case "Widget":
+            }
+            case "Widget" ->
                 // clown case sanity check. don't instantiate the superclass >:|
-                throw new NoSuchElementException(builderName + "[ERROR]: No such Widget type \"Widget\"!");
+                    throw new NoSuchElementException(builderName + "[ERROR]: No such Widget type \"Widget\"!");
         }
 
         // reflect something together for the "normal" ones.
@@ -143,18 +143,13 @@ public class ScreenBuilder {
 
         String op = descr.get("op").getAsString();
 
-        switch (op) {
-            case "place":
-                return new PlaceStage(this, descr);
-            case "stack":
-                return new StackStage(this, descr);
-            case "align":
-                return new AlignStage(this, descr);
-            case "collideAgainst":
-                return new CollideStage(this, descr);
-            default:
-                throw new NoSuchElementException("No such op " + op + " as requested by " + this.builderName);
-        }
+        return switch (op) {
+            case "place" -> new PlaceStage(this, descr);
+            case "stack" -> new StackStage(this, descr);
+            case "align" -> new AlignStage(this, descr);
+            case "collideAgainst" -> new CollideStage(this, descr);
+            default -> throw new NoSuchElementException("No such op " + op + " as requested by " + this.builderName);
+        };
     }
 
     /**
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
index 165e875d..f771ce83 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java
@@ -7,15 +7,11 @@ import java.util.Map;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 
 import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.pipeline.PipelineStage;
 import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
 import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
 import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
 import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
@@ -33,9 +29,9 @@ public class ScreenMaster {
 
     private static final int VERSION = 1;
 
-    private static HashMap<String, ScreenBuilder> standardMap = new HashMap<>();
-    private static HashMap<String, ScreenBuilder> screenAMap = new HashMap<>();
-    private static HashMap<String, ScreenBuilder> screenBMap = new HashMap<>();
+    private static final HashMap<String, ScreenBuilder> standardMap = new HashMap<>();
+    private static final HashMap<String, ScreenBuilder> screenAMap = new HashMap<>();
+    private static final HashMap<String, ScreenBuilder> screenBMap = new HashMap<>();
 
     /**
      * Load a screen mapping from an identifier
@@ -49,12 +45,10 @@ public class ScreenMaster {
         location = location.replace(".json", "");
 
         ScreenBuilder sb = new ScreenBuilder(ident);
-        if (screenType.equals("standard")) {
-            standardMap.put(location, sb);
-        } else if (screenType.equals("screen_a")) {
-            screenAMap.put(location, sb);
-        } else if (screenType.equals("screen_b")) {
-            screenBMap.put(location, sb);
+        switch (screenType) {
+            case "standard" -> standardMap.put(location, sb);
+            case "screen_a" -> screenAMap.put(location, sb);
+            case "screen_b" -> screenBMap.put(location, sb);
         }
     }
 
@@ -117,7 +111,7 @@ public class ScreenMaster {
                                 .entrySet()) {
 
                             try (BufferedReader reader = MinecraftClient.getInstance().getResourceManager()
-                                    .openAsReader(entry.getKey());) {
+                                    .openAsReader(entry.getKey())) {
                                 JsonObject json = JsonParser.parseReader(reader).getAsJsonObject();
                                  if (json.get("format_version").getAsInt() != VERSION) {
                                     throw new IllegalStateException(String.format("Resource pack isn't compatible! Expected version %d, got %d", VERSION, json.get("format_version").getAsInt()));
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java
index 74ebed64..76789a4c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java
@@ -25,7 +25,7 @@ public class AlignStage extends PipelineStage {
 
         private final String str;
 
-        private AlignReference(String d) {
+        AlignReference(String d) {
             this.str = d;
         }
 
@@ -39,11 +39,11 @@ public class AlignStage extends PipelineStage {
         }
     }
 
-    private AlignReference reference;
+    private final AlignReference reference;
 
     public AlignStage(ScreenBuilder builder, JsonObject descr) {
         this.reference = AlignReference.parse(descr.get("reference").getAsString());
-        this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
+        this.primary = new ArrayList<>(descr.getAsJsonArray("apply_to")
                 .asList()
                 .stream()
                 .map(x -> builder.getInstance(x.getAsString()))
@@ -54,40 +54,28 @@ public class AlignStage extends PipelineStage {
         int wHalf, hHalf;
         for (Widget wid : primary) {
             switch (this.reference) {
-                case HORICENT:
-                    wid.setX((screenW - wid.getWidth()) / 2);
-                    break;
-                case VERTCENT:
-                    wid.setY((screenH - wid.getHeight()) / 2);
-                    break;
-                case LEFTCENT:
+                case HORICENT -> wid.setX((screenW - wid.getWidth()) / 2);
+                case VERTCENT -> wid.setY((screenH - wid.getHeight()) / 2);
+                case LEFTCENT -> {
                     wHalf = screenW / 2;
                     wid.setX(wHalf - ScreenConst.WIDGET_PAD_HALF - wid.getWidth());
-                    break;
-                case RIGHTCENT:
+                }
+                case RIGHTCENT -> {
                     wHalf = screenW / 2;
                     wid.setX(wHalf + ScreenConst.WIDGET_PAD_HALF);
-                    break;
-                case TOPCENT:
+                }
+                case TOPCENT -> {
                     hHalf = screenH / 2;
                     wid.setY(hHalf - ScreenConst.WIDGET_PAD_HALF - wid.getHeight());
-                    break;
-                case BOTCENT:
+                }
+                case BOTCENT -> {
                     hHalf = screenH / 2;
                     wid.setY(hHalf + ScreenConst.WIDGET_PAD_HALF);
-                    break;
-                case TOP:
-                    wid.setY(ScreenConst.getScreenPad());
-                    break;
-                case BOT:
-                    wid.setY(screenH - wid.getHeight() - ScreenConst.getScreenPad());
-                    break;
-                case LEFT:
-                    wid.setX(ScreenConst.getScreenPad());
-                    break;
-                case RIGHT:
-                    wid.setX(screenW - wid.getWidth() - ScreenConst.getScreenPad());
-                    break;
+                }
+                case TOP -> wid.setY(ScreenConst.getScreenPad());
+                case BOT -> wid.setY(screenH - wid.getHeight() - ScreenConst.getScreenPad());
+                case LEFT -> wid.setX(ScreenConst.getScreenPad());
+                case RIGHT -> wid.setX(screenW - wid.getWidth() - ScreenConst.getScreenPad());
             }
         }
     }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java
index 30031c93..b6a5f789 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java
@@ -19,7 +19,7 @@ public class CollideStage extends PipelineStage {
 
         private final String str;
 
-        private CollideDirection(String d) {
+        CollideDirection(String d) {
             this.str = d;
         }
 
@@ -33,16 +33,16 @@ public class CollideStage extends PipelineStage {
         }
     }
 
-    private CollideDirection direction;
+    private final CollideDirection direction;
 
     public CollideStage(ScreenBuilder builder, JsonObject descr) {
         this.direction = CollideDirection.parse(descr.get("direction").getAsString());
-        this.primary = new ArrayList<Widget>(descr.getAsJsonArray("widgets")
+        this.primary = new ArrayList<>(descr.getAsJsonArray("widgets")
                 .asList()
                 .stream()
                 .map(x -> builder.getInstance(x.getAsString()))
                 .toList());
-        this.secondary = new ArrayList<Widget>(descr.getAsJsonArray("colliders")
+        this.secondary = new ArrayList<>(descr.getAsJsonArray("colliders")
                 .asList()
                 .stream()
                 .map(x -> builder.getInstance(x.getAsString()))
@@ -51,18 +51,10 @@ public class CollideStage extends PipelineStage {
 
     public void run(int screenW, int screenH) {
         switch (this.direction) {
-            case LEFT:
-                primary.forEach(w -> collideAgainstL(screenW, w));
-                break;
-            case RIGHT:
-                primary.forEach(w -> collideAgainstR(screenW, w));
-                break;
-            case TOP:
-                primary.forEach(w -> collideAgainstT(screenH, w));
-                break;
-            case BOT:
-                primary.forEach(w -> collideAgainstB(screenH, w));
-                break;
+            case LEFT -> primary.forEach(w -> collideAgainstL(screenW, w));
+            case RIGHT -> primary.forEach(w -> collideAgainstR(screenW, w));
+            case TOP -> primary.forEach(w -> collideAgainstT(screenH, w));
+            case BOT -> primary.forEach(w -> collideAgainstB(screenH, w));
         }
     }
 
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java
index 31a27001..a950f8f2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java
@@ -24,7 +24,7 @@ public class PlaceStage extends PipelineStage {
 
         private final String str;
 
-        private PlaceLocation(String d) {
+        PlaceLocation(String d) {
             this.str = d;
         }
 
@@ -38,11 +38,11 @@ public class PlaceStage extends PipelineStage {
         }
     }
 
-    private PlaceLocation where;
+    private final PlaceLocation where;
 
     public PlaceStage(ScreenBuilder builder, JsonObject descr) {
         this.where = PlaceLocation.parse(descr.get("where").getAsString());
-        this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
+        this.primary = new ArrayList<>(descr.getAsJsonArray("apply_to")
                 .asList()
                 .stream()
                 .map(x -> builder.getInstance(x.getAsString()))
@@ -53,42 +53,42 @@ public class PlaceStage extends PipelineStage {
     public void run(int screenW, int screenH) {
         Widget wid = primary.get(0);
         switch (where) {
-            case CENTER:
+            case CENTER -> {
                 wid.setX((screenW - wid.getWidth()) / 2);
                 wid.setY((screenH - wid.getHeight()) / 2);
-                break;
-            case TOPCENT:
+            }
+            case TOPCENT -> {
                 wid.setX((screenW - wid.getWidth()) / 2);
                 wid.setY(ScreenConst.getScreenPad());
-                break;
-            case BOTCENT:
+            }
+            case BOTCENT -> {
                 wid.setX((screenW - wid.getWidth()) / 2);
                 wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad());
-                break;
-            case LEFTCENT:
+            }
+            case LEFTCENT -> {
                 wid.setX(ScreenConst.getScreenPad());
                 wid.setY((screenH - wid.getHeight()) / 2);
-                break;
-            case RIGHTCENT:
+            }
+            case RIGHTCENT -> {
                 wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad());
                 wid.setY((screenH - wid.getHeight()) / 2);
-                break;
-            case TLCORNER:
+            }
+            case TLCORNER -> {
                 wid.setX(ScreenConst.getScreenPad());
                 wid.setY(ScreenConst.getScreenPad());
-                break;
-            case TRCORNER:
+            }
+            case TRCORNER -> {
                 wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad());
                 wid.setY(ScreenConst.getScreenPad());
-                break;
-            case BLCORNER:
+            }
+            case BLCORNER -> {
                 wid.setX(ScreenConst.getScreenPad());
                 wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad());
-                break;
-            case BRCORNER:
+            }
+            case BRCORNER -> {
                 wid.setX((screenW - wid.getWidth()) - ScreenConst.getScreenPad());
                 wid.setY((screenH - wid.getHeight()) - ScreenConst.getScreenPad());
-                break;
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java
index b32a3cca..5eb575c3 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java
@@ -17,7 +17,7 @@ public class StackStage extends PipelineStage {
 
         private final String str;
 
-        private StackDirection(String d) {
+        StackDirection(String d) {
             this.str = d;
         }
 
@@ -40,7 +40,7 @@ public class StackStage extends PipelineStage {
 
         private final String str;
 
-        private StackAlign(String d) {
+        StackAlign(String d) {
             this.str = d;
         }
 
@@ -54,13 +54,13 @@ public class StackStage extends PipelineStage {
         }
     }
 
-    private StackDirection direction;
-    private StackAlign align;
+    private final StackDirection direction;
+    private final StackAlign align;
 
     public StackStage(ScreenBuilder builder, JsonObject descr) {
         this.direction = StackDirection.parse(descr.get("direction").getAsString());
         this.align = StackAlign.parse(descr.get("align").getAsString());
-        this.primary = new ArrayList<Widget>(descr.getAsJsonArray("apply_to")
+        this.primary = new ArrayList<>(descr.getAsJsonArray("apply_to")
                 .asList()
                 .stream()
                 .map(x -> builder.getInstance(x.getAsString()))
@@ -69,12 +69,8 @@ public class StackStage extends PipelineStage {
 
     public void run(int screenW, int screenH) {
         switch (this.direction) {
-            case HORIZONTAL:
-                stackWidgetsHoriz(screenW);
-                break;
-            case VERTICAL:
-                stackWidgetsVert(screenH);
-                break;
+            case HORIZONTAL -> stackWidgetsHoriz(screenW);
+            case VERTICAL -> stackWidgetsVert(screenH);
         }
     }
 
@@ -86,9 +82,9 @@ public class StackStage extends PipelineStage {
 
         int y = switch (this.align) {
 
-            case TOP -> y = ScreenConst.getScreenPad();
-            case BOT -> y = (screenH - compHeight) - ScreenConst.getScreenPad();
-            default -> y = (screenH - compHeight) / 2;
+            case TOP -> ScreenConst.getScreenPad();
+            case BOT -> (screenH - compHeight) - ScreenConst.getScreenPad();
+            default -> (screenH - compHeight) / 2;
         };
 
         for (Widget wid : primary) {
@@ -106,9 +102,9 @@ public class StackStage extends PipelineStage {
 
         int x = switch (this.align) {
 
-            case LEFT-> x = ScreenConst.getScreenPad();
-            case RIGHT -> x = (screenW - compWidth) - ScreenConst.getScreenPad();
-            default -> x = (screenW - compWidth) / 2;
+            case LEFT -> ScreenConst.getScreenPad();
+            case RIGHT -> (screenW - compWidth) - ScreenConst.getScreenPad();
+            default -> (screenW - compWidth) / 2;
         };
 
         for (Widget wid : primary) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
index 30cc242e..7b35bcce 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
@@ -94,7 +94,7 @@ public class PlayerListMgr {
 			return null;
 		}
 		String str = txt.getString().trim();
-		if (str.length() == 0) {
+		if (str.isEmpty()) {
 			return null;
 		}
 		return str;
@@ -144,7 +144,7 @@ public class PlayerListMgr {
 		}
 
 		// Avoid returning an empty component - Rift advertisements needed this
-		if (newText.getString().length() == 0) {
+		if (newText.getString().isEmpty()) {
 			return null;
 		}
 
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java
index e6aa0336..11c9d860 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java
@@ -7,7 +7,7 @@ import me.xmrvizzy.skyblocker.utils.Utils;
  */
 public class PlayerLocator {
 
-    public static enum Location {
+    public enum Location {
         DUNGEON("dungeon"),
         GUEST_ISLAND("guest_island"),
         HOME_ISLAND("home_island"),
@@ -31,7 +31,7 @@ public class PlayerLocator {
 
         public final String internal;
 
-        private Location(String i) {
+        Location(String i) {
             // as used internally by the mod, e.g. in the json
             this.internal = i;
         }
@@ -44,60 +44,44 @@ public class PlayerLocator {
             return Location.UNKNOWN;
         }
 
-        String areaDesciptor = PlayerListMgr.strAt(41);
+        String areaDescriptor = PlayerListMgr.strAt(41);
 
-        if (areaDesciptor == null || areaDesciptor.length() < 6) {
+        if (areaDescriptor == null || areaDescriptor.length() < 6) {
             return Location.UNKNOWN;
         }
 
-        if (areaDesciptor.startsWith("Dungeon")) {
+        if (areaDescriptor.startsWith("Dungeon")) {
             return Location.DUNGEON;
         }
 
-        switch (areaDesciptor.substring(6)) {
-            case "Private Island":
+        return switch (areaDescriptor.substring(6)) {
+            case "Private Island" -> {
                 String islandType = PlayerListMgr.strAt(44);
                 if (islandType == null) {
-                    return Location.UNKNOWN;
+                    yield Location.UNKNOWN;
                 } else if (islandType.endsWith("Guest")) {
-                    return Location.GUEST_ISLAND;
+                    yield Location.GUEST_ISLAND;
                 } else {
-                    return Location.HOME_ISLAND;
+                    yield Location.HOME_ISLAND;
                 }
-            case "Crimson Isle":
-                return Location.CRIMSON_ISLE;
-            case "Dungeon Hub":
-                return Location.DUNGEON_HUB;
-            case "The Farming Islands":
-                return Location.FARMING_ISLAND;
-            case "The Park":
-                return Location.PARK;
-            case "Dwarven Mines":
-                return Location.DWARVEN_MINES;
-            case "Crystal Hollows":
-                return Location.CRYSTAL_HOLLOWS;
-            case "The End":
-                return Location.END;
-            case "Gold Mine":
-                return Location.GOLD_MINE;
-            case "Deep Caverns":
-                return Location.DEEP_CAVERNS;
-            case "Hub":
-                return Location.HUB;
-            case "Spider's Den":
-                return Location.SPIDER_DEN;
-            case "Jerry's Workshop":
-                return Location.JERRY;
-            case "Garden":
-                return Location.GARDEN;
-            case "Instanced":
-                return Location.INSTANCED;
-            case "The Rift":
-            	return Location.THE_RIFT;
-            case "Dark Auction":
-            	return Location.DARK_AUCTION;
-            default:
-                return Location.UNKNOWN;
-        }
+            }
+            case "Crimson Isle" -> Location.CRIMSON_ISLE;
+            case "Dungeon Hub" -> Location.DUNGEON_HUB;
+            case "The Farming Islands" -> Location.FARMING_ISLAND;
+            case "The Park" -> Location.PARK;
+            case "Dwarven Mines" -> Location.DWARVEN_MINES;
+            case "Crystal Hollows" -> Location.CRYSTAL_HOLLOWS;
+            case "The End" -> Location.END;
+            case "Gold Mine" -> Location.GOLD_MINE;
+            case "Deep Caverns" -> Location.DEEP_CAVERNS;
+            case "Hub" -> Location.HUB;
+            case "Spider's Den" -> Location.SPIDER_DEN;
+            case "Jerry's Workshop" -> Location.JERRY;
+            case "Garden" -> Location.GARDEN;
+            case "Instanced" -> Location.INSTANCED;
+            case "The Rift" -> Location.THE_RIFT;
+            case "Dark Auction" -> Location.DARK_AUCTION;
+            default -> Location.UNKNOWN;
+        };
     }
 }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java
index e565bd8f..2ba0c0cc 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java
@@ -45,7 +45,7 @@ public class DungeonPlayerWidget extends Widget {
         MSGS.add("More is better!");
     }
 
-    private int player;
+    private final int player;
 
     // title needs to be changeable here
     public DungeonPlayerWidget(int player) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java
index b3563f1b..7d07ad75 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/EventWidget.java
@@ -11,7 +11,7 @@ import net.minecraft.util.Formatting;
 public class EventWidget extends Widget {
     private static final MutableText TITLE = Text.literal("Event Info").formatted(Formatting.YELLOW, Formatting.BOLD);
 
-    private boolean isInGarden;
+    private final boolean isInGarden;
 
     public EventWidget(boolean isInGarden) {
         super(TITLE, Formatting.YELLOW.getColorValue());
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java
index 96b85fef..ed87d496 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/ForgeWidget.java
@@ -48,22 +48,22 @@ public class ForgeWidget extends Widget {
             Text l1, l2;
 
             switch (fstr.substring(3)) {
-                case "LOCKED":
+                case "LOCKED" -> {
                     l1 = Text.literal("Locked").formatted(Formatting.RED);
                     l2 = switch (slot) {
                         case 3 -> Text.literal("Needs HotM 3").formatted(Formatting.GRAY);
                         case 4 -> Text.literal("Needs HotM 4").formatted(Formatting.GRAY);
                         case 5 -> Text.literal("Needs PotM 2").formatted(Formatting.GRAY);
                         default ->
-                            Text.literal("This message should not appear").formatted(Formatting.RED, Formatting.BOLD);
+                                Text.literal("This message should not appear").formatted(Formatting.RED, Formatting.BOLD);
                     };
                     c = new IcoFatTextComponent(Ico.BARRIER, l1, l2);
-                    break;
-                case "EMPTY":
+                }
+                case "EMPTY" -> {
                     l1 = Text.literal("Empty").formatted(Formatting.GRAY);
                     c = new IcoTextComponent(Ico.FURNACE, l1);
-                    break;
-                default:
+                }
+                default -> {
                     String[] parts = fstr.split(": ");
                     if (parts.length != 2) {
                         c = new IcoFatTextComponent();
@@ -72,7 +72,7 @@ public class ForgeWidget extends Widget {
                         l2 = Text.literal("Done in: ").formatted(Formatting.GRAY).append(Text.literal(parts[1]).formatted(Formatting.WHITE));
                         c = new IcoFatTextComponent(Ico.FIRE, l1, l2);
                     }
-                    break;
+                }
             }
             this.addComponent(c);
         }
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java
index a978654f..2e8e2c40 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java
@@ -37,8 +37,8 @@ public class IslandOwnersWidget extends Widget {
                 break;
             }
 
-            String name = null, lastseen = null;
-            Formatting format = null;
+            String name, lastseen;
+            Formatting format;
             if (m.group("nameA") != null) {
                 name = m.group("nameA");
                 lastseen = m.group("lastseen");
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
index d0e01590..90f947ba 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java
@@ -22,21 +22,21 @@ public class VolcanoWidget extends Widget {
 
     static {
         BOOM_TYPE.put("INACTIVE",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.BARRIER), Formatting.DARK_GRAY));
+                new Pair<>(new ItemStack(Items.BARRIER), Formatting.DARK_GRAY));
         BOOM_TYPE.put("CHILL",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.ICE), Formatting.AQUA));
+                new Pair<>(new ItemStack(Items.ICE), Formatting.AQUA));
         BOOM_TYPE.put("LOW",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.FLINT_AND_STEEL), Formatting.GRAY));
+                new Pair<>(new ItemStack(Items.FLINT_AND_STEEL), Formatting.GRAY));
         BOOM_TYPE.put("DISRUPTIVE",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.CAMPFIRE), Formatting.WHITE));
+                new Pair<>(new ItemStack(Items.CAMPFIRE), Formatting.WHITE));
         BOOM_TYPE.put("MEDIUM",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.LAVA_BUCKET), Formatting.YELLOW));
+                new Pair<>(new ItemStack(Items.LAVA_BUCKET), Formatting.YELLOW));
         BOOM_TYPE.put("HIGH",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.FIRE_CHARGE), Formatting.GOLD));
+                new Pair<>(new ItemStack(Items.FIRE_CHARGE), Formatting.GOLD));
         BOOM_TYPE.put("EXPLOSIVE",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.TNT), Formatting.RED));
+                new Pair<>(new ItemStack(Items.TNT), Formatting.RED));
         BOOM_TYPE.put("CATACLYSMIC",
-                new Pair<ItemStack, Formatting>(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED));
+                new Pair<>(new ItemStack(Items.SKELETON_SKULL), Formatting.DARK_RED));
     }
 
     public VolcanoWidget() {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java
index 3e037256..bca67b70 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java
@@ -25,13 +25,13 @@ import net.minecraft.util.Formatting;
  */
 public abstract class Widget {
 
-    private ArrayList<Component> components = new ArrayList<>();
+    private final ArrayList<Component> components = new ArrayList<>();
     private int w = 0, h = 0;
     private int x = 0, y = 0;
-    private int color;
-    private Text title;
+    private final int color;
+    private final Text title;
 
-    private static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer;
+    private static final TextRenderer txtRend = MinecraftClient.getInstance().textRenderer;
 
     static final int BORDER_SZE_N = txtRend.fontHeight + 4;
     static final int BORDER_SZE_S = 4;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java
index 57e26ab2..118d3cfe 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/Component.java
@@ -13,7 +13,7 @@ public abstract class Component {
     public static final int PAD_S = 2;
     public static final int PAD_L = 4;
 
-    static TextRenderer txtRend = MinecraftClient.getInstance().textRenderer;
+    static final TextRenderer txtRend = MinecraftClient.getInstance().textRenderer;
 
     // these should always be the content dimensions without any padding.
     int width, height;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java
index a7cc8d12..90e210e9 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java
@@ -19,25 +19,25 @@ public class ProgressComponent extends Component {
     private static final int ICO_OFFS = 4;
     private static final int COL_BG_BAR = 0xf0101010;
 
-    private ItemStack ico;
-    private Text desc, bar;
-    private float pcnt;
-    private int color;
-    private int barW;
+    private final ItemStack ico;
+    private final Text desc, bar;
+    private final float pcnt;
+    private final int color;
+    private final int barW;
 
     public ProgressComponent(ItemStack ico, Text d, Text b, float pcnt, int color) {
-        this.ico = (ico == null) ? Ico.BARRIER : ico;
-        this.desc = d;
-        this.bar = b;
-        this.color = 0xff000000 | color;
-        this.pcnt = pcnt;
-
         if (d == null || b == null) {
             this.ico = Ico.BARRIER;
             this.desc = Text.literal("No data").formatted(Formatting.GRAY);
             this.bar = Text.literal("---").formatted(Formatting.GRAY);
             this.pcnt = 100f;
             this.color = 0xff000000 | Formatting.DARK_GRAY.getColorValue();
+        } else {
+            this.ico = (ico == null) ? Ico.BARRIER : ico;
+            this.desc = d;
+            this.bar = b;
+            this.pcnt = pcnt;
+            this.color = 0xff000000 | color;
         }
 
         this.barW = BAR_WIDTH;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java
index 30287dc0..850bbb0d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/TableComponent.java
@@ -8,9 +8,9 @@ import net.minecraft.client.gui.DrawContext;
  */
 public class TableComponent extends Component {
 
-    private Component[][] comps;
-    private int color;
-    private int cols, rows;
+    private final Component[][] comps;
+    private final int color;
+    private final int cols, rows;
     private int cellW, cellH;
 
     public TableComponent(int w, int h, int col) {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java
index ab8546cc..88d40891 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java
@@ -29,8 +29,8 @@ public class HudCommsWidget extends Widget {
     // the ctor eventually tries to get the font's height, which doesn't work
     //   when called before the client window is created (roughly).
     // the rebdering god 2 from the fabricord explained that detail, thanks!
-    public static HudCommsWidget INSTANCE = new HudCommsWidget();
-    public static HudCommsWidget INSTANCE_CFG = new HudCommsWidget();
+    public static final HudCommsWidget INSTANCE = new HudCommsWidget();
+    public static final HudCommsWidget INSTANCE_CFG = new HudCommsWidget();
 
     // another repulsive hack to make this widget-like hud element work with the new widget class
     // DON'T USE WITH THE WIDGET SYSTEM, ONLY USE FOR DWARVENHUD!
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java
index ea67a309..375a41b9 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java
@@ -36,7 +36,7 @@ public class RiftProgressWidget extends Widget {
 
 		boolean hasTimecharms = false;
 		boolean hasEnigmaSouls = false;
-		int montezumaPos = 0;
+		int montezumaPos;
 
 		// Check each position to see what is or isn't there so we don't try adding
 		// invalid components
-- 
cgit