aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-05-10 13:31:05 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-05-10 13:31:05 +0300
commit2af6c131cff70219bcc1147674c180615b0f6746 (patch)
treed7bff4f48aaeafea6dff03f5933d638f462e8fdb /src/main
parent7f36f53ebb632d6c1950bf2e9f9951f94a872ee1 (diff)
downloadSkyblocker-2af6c131cff70219bcc1147674c180615b0f6746.tar.gz
Skyblocker-2af6c131cff70219bcc1147674c180615b0f6746.tar.bz2
Skyblocker-2af6c131cff70219bcc1147674c180615b0f6746.zip
Refactored config to work with the new config categorization
Changed formatting method From DecimalFormat to String#formatted to make it easier to configure. Also, the precision setting now applies instantly.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java46
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java20
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java20
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json8
5 files changed, 86 insertions, 10 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
index c6936335..94ecbc9e 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
@@ -8,12 +8,15 @@ import de.hysky.skyblocker.config.configs.UIAndVisualsConfig;
import de.hysky.skyblocker.utils.waypoint.Waypoint;
import dev.isxander.yacl3.api.ConfigCategory;
import dev.isxander.yacl3.api.*;
+import dev.isxander.yacl3.api.controller.ColorControllerBuilder;
import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder;
import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
+import java.awt.*;
+
public class UIAndVisualsCategory {
public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
return ConfigCategory.createBuilder()
@@ -355,6 +358,49 @@ public class UIAndVisualsCategory {
.build())
.build())
+ //Compact Damage Numbers
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage.enabled"))
+ .binding(defaults.uiAndVisuals.compactDamage.enabled,
+ () -> config.uiAndVisuals.compactDamage.enabled,
+ newValue -> config.uiAndVisuals.compactDamage.enabled = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage.precision"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage.precision.@Tooltip")))
+ .binding(defaults.uiAndVisuals.compactDamage.precision,
+ () -> config.uiAndVisuals.compactDamage.precision,
+ newValue -> config.uiAndVisuals.compactDamage.precision = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1,3).step(1))
+ .build())
+ .option(Option.<Color>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage.normalDamageColor"))
+ .binding(defaults.uiAndVisuals.compactDamage.normalDamageColor,
+ () -> config.uiAndVisuals.compactDamage.normalDamageColor,
+ newValue -> config.uiAndVisuals.compactDamage.normalDamageColor = newValue)
+ .controller(ColorControllerBuilder::create)
+ .build())
+ .option(Option.<Color>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage.critDamageGradientStart"))
+ .binding(defaults.uiAndVisuals.compactDamage.critDamageGradientStart,
+ () -> config.uiAndVisuals.compactDamage.critDamageGradientStart,
+ newValue -> config.uiAndVisuals.compactDamage.critDamageGradientStart = newValue)
+ .controller(ColorControllerBuilder::create)
+ .build())
+ .option(Option.<Color>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactDamage.critDamageGradientEnd"))
+ .binding(defaults.uiAndVisuals.compactDamage.critDamageGradientEnd,
+ () -> config.uiAndVisuals.compactDamage.critDamageGradientEnd,
+ newValue -> config.uiAndVisuals.compactDamage.critDamageGradientEnd = newValue)
+ .controller(ColorControllerBuilder::create)
+ .build())
+ .build()
+ )
+
.build();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
index 267dde14..9a20bfa8 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
@@ -4,6 +4,7 @@ import de.hysky.skyblocker.utils.waypoint.Waypoint;
import dev.isxander.yacl3.config.v2.api.SerialEntry;
import net.minecraft.util.Formatting;
+import java.awt.*;
import java.util.ArrayList;
import java.util.List;
@@ -56,6 +57,9 @@ public class UIAndVisualsConfig {
@SerialEntry
public FlameOverlay flameOverlay = new FlameOverlay();
+ @SerialEntry
+ public CompactDamage compactDamage = new CompactDamage();
+
public static class ChestValue {
@SerialEntry
public boolean enableChestValue = true;
@@ -247,4 +251,20 @@ public class UIAndVisualsConfig {
public int flameOpacity = 100;
}
+ public static class CompactDamage {
+ @SerialEntry
+ public boolean enabled = true;
+
+ @SerialEntry
+ public int precision = 1;
+
+ @SerialEntry
+ public Color normalDamageColor = new Color(0xFFFFFF);
+
+ @SerialEntry
+ public Color critDamageGradientStart = new Color(0xFFFF55);
+
+ @SerialEntry
+ public Color critDamageGradientEnd = new Color(0xFF5555);
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java
index ce967c7c..95a28e37 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java
@@ -107,7 +107,7 @@ public abstract class ClientPlayNetworkHandlerMixin {
@Inject(method = "onEntityTrackerUpdate", at = @At("TAIL"))
private void skyblocker$onEntityTrackerUpdate(EntityTrackerUpdateS2CPacket packet, CallbackInfo ci, @Local Entity entity) {
- if (!SkyblockerConfigManager.get().general.compactDamage.enabled || !(entity instanceof ArmorStandEntity armorStandEntity)) return;
+ if (!SkyblockerConfigManager.get().uiAndVisuals.compactDamage.enabled || !(entity instanceof ArmorStandEntity armorStandEntity)) return;
try { //Prevent packet handling fails if something goes wrong so that entity trackers still update, just without compact damage numbers
CompactDamage.compactDamage(armorStandEntity);
} catch (Exception e) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java b/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java
index 161ecf2e..6442f61d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java
@@ -23,8 +23,6 @@ public class CompactDamage {
private CompactDamage() {
}
- private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(SkyblockerConfigManager.get().general.compactDamage.format);
-
public static void compactDamage(ArmorStandEntity entity) {
if (!entity.isInvisible() || !entity.hasCustomName() || !entity.isCustomNameVisible() || entity.getFireTicks() != -1 || !entity.shouldHideBasePlate()) return;
//Dmg armor stands have no base plate and have a fire time of -1 (just one of these isn't enough to determine if it's a dmg armor stand)
@@ -39,7 +37,7 @@ public class CompactDamage {
String dmg = text.getString().replace(",", "");
if (!NumberUtils.isParsable(dmg)) return; //Sanity check
String prettifiedDmg = prettifyDamageNumber(Long.parseLong(dmg));
- prettierCustomName = Text.literal("").append(Text.literal(prettifiedDmg).withColor(SkyblockerConfigManager.get().general.compactDamage.normalDamageColor.getRGB() & 0x00FFFFFF)).setStyle(customName.getStyle());
+ prettierCustomName = Text.literal("").append(Text.literal(prettifiedDmg).withColor(SkyblockerConfigManager.get().uiAndVisuals.compactDamage.normalDamageColor.getRGB() & 0x00FFFFFF)).setStyle(customName.getStyle());
} else { //Crit damage
String dmg = siblings.subList(1, siblings.size() - 1) //First and last sibling are the crit symbols
.stream()
@@ -54,8 +52,8 @@ public class CompactDamage {
for (int i = 0; i < length; i++) {
prettierCustomName.append(Text.literal(prettifiedDmg.substring(i, i + 1)).withColor(
CustomArmorAnimatedDyes.interpolate(
- SkyblockerConfigManager.get().general.compactDamage.critDamageGradientStart.getRGB() & 0x00FFFFFF,
- SkyblockerConfigManager.get().general.compactDamage.critDamageGradientEnd.getRGB() & 0x00FFFFFF,
+ SkyblockerConfigManager.get().uiAndVisuals.compactDamage.critDamageGradientStart.getRGB() & 0x00FFFFFF,
+ SkyblockerConfigManager.get().uiAndVisuals.compactDamage.critDamageGradientEnd.getRGB() & 0x00FFFFFF,
i / (length - 1.0)
)
));
@@ -68,9 +66,13 @@ public class CompactDamage {
private static String prettifyDamageNumber(long damage) {
if (damage < 1_000) return String.valueOf(damage);
- if (damage < 1_000_000) return DECIMAL_FORMAT.format(damage / 1_000.0) + "k";
- if (damage < 1_000_000_000) return DECIMAL_FORMAT.format(damage / 1_000_000.0) + "m";
- if (damage < 1_000_000_000_000L) return DECIMAL_FORMAT.format(damage / 1_000_000_000.0) + "b";
- return DECIMAL_FORMAT.format(damage / 1_000_000_000_000.0) + "t"; //This will probably never be reached
+ if (damage < 1_000_000) return format(damage / 1_000.0) + "k";
+ if (damage < 1_000_000_000) return format(damage / 1_000_000.0) + "m";
+ if (damage < 1_000_000_000_000L) return format(damage / 1_000_000_000.0) + "b";
+ return format(damage / 1_000_000_000_000.0) + "t"; //This will probably never be reached
+ }
+
+ private static String format(double number) {
+ return ("%." + SkyblockerConfigManager.get().uiAndVisuals.compactDamage.precision + "f").formatted(number);
}
}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 283175d0..3e1c817c 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -504,6 +504,14 @@
"skyblocker.config.uiAndVisuals.chestValue.incompleteColor": "Incomplete Color",
"skyblocker.config.uiAndVisuals.chestValue.incompleteColor.@Tooltip": "The color to display when the price data is incomplete.",
+ "skyblocker.config.uiAndVisuals.compactDamage": "Compact Damage",
+ "skyblocker.config.uiAndVisuals.compactDamage.enabled": "Enabled",
+ "skyblocker.config.uiAndVisuals.compactDamage.precision": "Precision",
+ "skyblocker.config.uiAndVisuals.compactDamage.precision.@Tooltip" : "The number of digits to display after the decimal point.",
+ "skyblocker.config.uiAndVisuals.compactDamage.normalDamageColor": "Normal Damage Color",
+ "skyblocker.config.uiAndVisuals.compactDamage.critDamageGradientStart": "Crit Damage Gradient Start Color",
+ "skyblocker.config.uiAndVisuals.compactDamage.critDamageGradientEnd": "Crit Damage Gradient End Color",
+
"skyblocker.config.uiAndVisuals.compactorDeletorPreview": "Enable Compactor/Deletor Preview",
"skyblocker.config.uiAndVisuals.dontStripSkinAlphaValues": "Correct Transparent Skin Pixels",