aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-07-14 15:49:11 -0400
committerGitHub <noreply@github.com>2023-07-14 15:49:11 -0400
commitb63b73b2815db7e1442981e550980e5784c33e78 (patch)
tree5a78632555eee355bc858c5f7da7cbe939a85c2b /src/main
parentd29e8df47677c3e9f05636eb8ebfd88ea1da612c (diff)
parent65c0b0c57e4f1fb888fbd1bde97b0929d663e50b (diff)
downloadSkyblocker-b63b73b2815db7e1442981e550980e5784c33e78.tar.gz
Skyblocker-b63b73b2815db7e1442981e550980e5784c33e78.tar.bz2
Skyblocker-b63b73b2815db7e1442981e550980e5784c33e78.zip
Merge pull request #201 from AzureAaron/skyblock-levels-fixes-improvements
Skyblock Levels fixes + Tab Hud improvements
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java19
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java23
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java14
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json4
8 files changed, 54 insertions, 27 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
index 67734438..6b681d4c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
@@ -18,8 +18,8 @@ public class AdFilter extends ChatPatternListener {
// Groups:
// 1. Player name
// 2. Message
- // (?:§8\[[§fadbc0-9]+§8\] )?§[67abc](?:\[[§A-Za-z0-9+]+\] )?([A-Za-z0-9_]+)§[f7]: (.+)
- super("(?:§8\\[[§fadbc0-9]+§8\\] )?§[67abc](?:\\[[§A-Za-z0-9+]+\\] )?([A-Za-z0-9_]+)§[f7]: (.+)");
+ // (?:§8\[[§feadbc0-9]+§8\] )?(?:.+ )?§[67abc](?:\[[§A-Za-z0-9+]+\] )?([A-Za-z0-9_]+)§[f7]: (.+)
+ super("(?:§8\\[[§feadbc0-9]+§8\\] )?(?:.+ )?§[67abc](?:\\[[§A-Za-z0-9+]+\\] )?([A-Za-z0-9_]+)§[f7]: (.+)");
}
@Override
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index bd616c2c..04cfaea3 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -188,6 +188,25 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.BoundedDiscrete(min = 10, max = 200)
@ConfigEntry.Gui.Tooltip()
public int tabHudScale = 100;
+ @ConfigEntry.Gui.Tooltip
+ public boolean plainPlayerNames = false;
+ @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
+ @ConfigEntry.Gui.Tooltip
+ public NameSorting nameSorting = NameSorting.DEFAULT;
+
+ }
+
+ public enum NameSorting {
+ DEFAULT,
+ ALPHABETICAL;
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case DEFAULT -> "Default";
+ case ALPHABETICAL -> "Alphabetical";
+ };
+ }
}
public static class Bars {
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 c1f9e235..443cca55 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
@@ -25,10 +25,10 @@ public class DungeonPlayerWidget extends Widget {
// group 1: name
// group 2: class (or literal "EMPTY" pre dungeon start)
// group 3: level (or nothing, if pre dungeon start)
- // as a side effect, this regex keeps the iron man icon in the name
- // not sure if that should be
+ // this regex filters out the ironman icon as well as rank prefixes and emblems
+ // \[\d*\] (?:\[[A-Za-z]+\] )?(?<name>[A-Za-z0-9_]*) (?:.* )?\((?<class>\S*) ?(?<level>[LXVI]*)\)
private static final Pattern PLAYER_PATTERN = Pattern
- .compile("\\[\\d*\\] (?<name>.*) \\((?<class>\\S*) ?(?<level>[LXVI]*)\\)");
+ .compile("\\[\\d*\\] (?:\\[[A-Za-z]+\\] )?(?<name>[A-Za-z0-9_]*) (?:.* )?\\((?<class>\\S*) ?(?<level>[LXVI]*)\\)");
private static final HashMap<String, ItemStack> ICOS = new HashMap<>();
private static final ArrayList<String> MSGS = new ArrayList<>();
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 6c2d6b47..e81a6d85 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
@@ -20,8 +20,9 @@ public class IslandOwnersWidget extends Widget {
// matches an owner
// group 1: player name
// group 2: last seen, if owner not online
+ // ^(?<nameA>.*) \((?<lastseen>.*)\)$|^\[\d*\] (?:\[[A-Za-z]+\] )?(?<nameB>[A-Za-z0-9_]*)(?: .*)?$|^(?<nameC>.*)$
private static final Pattern OWNER_PATTERN = Pattern
- .compile("^(?<nameA>.*) \\((?<lastseen>.*)\\)$|^\\[\\d*\\] (?<nameB>.*)$|^(?<nameC>.*)$");
+ .compile("^(?<nameA>.*) \\((?<lastseen>.*)\\)$|^\\[\\d*\\] (?:\\[[A-Za-z]+\\] )?(?<nameB>[A-Za-z0-9_]*)(?: .*)?$|^(?<nameC>.*)$");
public IslandOwnersWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java
index 4324dad9..4b03da6e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java
@@ -19,7 +19,8 @@ public class IslandSelfWidget extends Widget {
// matches an owner
// group 1: player name, optionally offline time
- private static final Pattern OWNER_PATTERN = Pattern.compile("^\\[\\d*\\] (.*)$|^(.*)$");
+ // ^\[\d*\] (?:\[[A-Za-z]+\] )?([A-Za-z0-9_() ]*)(?: .*)?$|^(.*)$
+ private static final Pattern OWNER_PATTERN = Pattern.compile("^\\[\\d*\\] (?:\\[[A-Za-z]+\\] )?([A-Za-z0-9_() ]*)(?: .*)?$|^(.*)$");
public IslandSelfWidget() {
super(TITLE, Formatting.DARK_PURPLE.getColorValue());
@@ -28,8 +29,9 @@ public class IslandSelfWidget extends Widget {
if (m == null) {
break;
}
- PlainTextComponent ptc = new PlainTextComponent(Text.of(m.group(1)));
- this.addComponent(ptc);
+
+ Text entry = (m.group(1) != null) ? Text.of(m.group(1)) : Text.of(m.group(2));
+ this.addComponent(new PlainTextComponent(entry));
}
this.pack();
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java
index 2cd710eb..439fcb56 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java
@@ -1,19 +1,18 @@
package me.xmrvizzy.skyblocker.skyblock.tabhud.widget;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlayerComponent;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.TableComponent;
-
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
+import java.util.ArrayList;
+import java.util.Comparator;
+
// this widget shows a list of players with their skins.
// responsible for non-private-island areas
@@ -22,7 +21,7 @@ public class PlayerListWidget extends Widget {
private static final MutableText TITLE = Text.literal("Players").formatted(Formatting.GREEN,
Formatting.BOLD);
- private ArrayList<PlayerListEntry> list = new ArrayList<>();
+ private final ArrayList<PlayerListEntry> list = new ArrayList<>();
public PlayerListWidget() {
super(TITLE, Formatting.GREEN.getColorValue());
@@ -42,19 +41,15 @@ public class PlayerListWidget extends Widget {
// https://stackoverflow.com/questions/7139382/java-rounding-up-to-an-int-using-math-ceil#21830188
int tblW = ((listlen - 80) - 1) / 20 + 1;
- TableComponent tc = new TableComponent(tblW, (listlen - 80 >= 20) ? 20 : listlen - 80,
- Formatting.GREEN.getColorValue());
+ TableComponent tc = new TableComponent(tblW, Math.min(listlen - 80, 20), Formatting.GREEN.getColorValue());
for (int i = 80; i < listlen; i++) {
list.add(PlayerListMgr.getRaw(i));
}
- Collections.sort(list, new Comparator<PlayerListEntry>() {
- @Override
- public int compare(PlayerListEntry o1, PlayerListEntry o2) {
- return o1.getProfile().getName().toLowerCase().compareTo(o2.getProfile().getName().toLowerCase());
- }
- });
+ if (SkyblockerConfig.get().general.tabHud.nameSorting == SkyblockerConfig.NameSorting.ALPHABETICAL) {
+ list.sort(Comparator.comparing(o -> o.getProfile().getName().toLowerCase()));
+ }
int x = 0, y = 0;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java
index fd66ec73..1be6adda 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java
@@ -1,8 +1,11 @@
package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.PlayerSkinDrawer;
import net.minecraft.client.network.PlayerListEntry;
+import net.minecraft.scoreboard.Team;
+import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
/**
@@ -12,12 +15,15 @@ public class PlayerComponent extends Component {
private static final int SKIN_ICO_DIM = 8;
- private String name;
- private Identifier tex;
+ private final Text name;
+ private final Identifier tex;
public PlayerComponent(PlayerListEntry ple) {
-
- name = ple.getProfile().getName();
+
+ boolean plainNames = SkyblockerConfig.get().general.tabHud.plainPlayerNames;
+ Team team = ple.getScoreboardTeam();
+ String username = ple.getProfile().getName();
+ name = (team != null && !plainNames) ? Text.empty().append(team.getPrefix()).append(Text.literal(username).formatted(team.getColor())).append(team.getSuffix()) : Text.of(username);
tex = ple.getSkinTexture();
this.width = SKIN_ICO_DIM + PAD_S + txtRend.getWidth(name);
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 9dc2a856..0cf9933c 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -36,6 +36,10 @@
"text.autoconfig.skyblocker.option.general.tabHud.tabHudEnabled": "Enable fancy tab HUD",
"text.autoconfig.skyblocker.option.general.tabHud.tabHudScale": "Scale factor of fancy tab HUD",
"text.autoconfig.skyblocker.option.general.tabHud.tabHudScale.@Tooltip": "Value in %, relative to your vanilla GUI scale",
+ "text.autoconfig.skyblocker.option.general.tabHud.plainPlayerNames": "Plain Player Names",
+ "text.autoconfig.skyblocker.option.general.tabHud.plainPlayerNames.@Tooltip":"Enable to display player names without any special formatting on public islands.",
+ "text.autoconfig.skyblocker.option.general.tabHud.nameSorting": "Player Name Sorting Method",
+ "text.autoconfig.skyblocker.option.general.tabHud.nameSorting.@Tooltip": "Alphabetical sorting sorts names alphabetically while Default has no particular order.",
"text.autoconfig.skyblocker.option.general.itemTooltip": "Item Tooltip",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableNPCPrice": "Enable NPC Price",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableMotesPrice": "Enable Motes Price",