Skip to content

Commit

Permalink
Merge pull request #8 from KingsMMA/fancy-scoreboard
Browse files Browse the repository at this point in the history
Fancy Scoreboard
  • Loading branch information
KingsMMA committed Jul 10, 2023
2 parents e207645 + 4584a51 commit 4f26f68
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public ConfigManager() {
categoryMap = new HashMap<>();

for (Class<? extends ConfigCategory> categoryClass : new Class[]{
GeneralCategory.class, GUILocationsCategory.class, PathViewerCategory.class, UpgradeBeaconCategory.class, CodeHiderCategory.class, SearchingTrackerCategory.class, MessageHiderCategory.class, AuctionTimerCategory.class
GeneralCategory.class, GUILocationsCategory.class, PathViewerCategory.class, UpgradeBeaconCategory.class, FancyScoreboardCategory.class, CodeHiderCategory.class, SearchingTrackerCategory.class, MessageHiderCategory.class, AuctionTimerCategory.class
}) {

try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package dev.kingrabbit.fruitfulutilities.config.categories;

import dev.kingrabbit.fruitfulutilities.config.CategoryInfo;
import dev.kingrabbit.fruitfulutilities.config.ConfigCategory;
import dev.kingrabbit.fruitfulutilities.config.properties.ConfigBoolean;

@SuppressWarnings("CanBeFinal")
@CategoryInfo(id = "scoreboard", display = "Fancy Scoreboard")
public class FancyScoreboardCategory extends ConfigCategory {

@ConfigBoolean(id = "fancy", display = "Balance Commas", description = "Adds commas to balances in the scoreboard, improving readability.")
public boolean fancy = true;


@ConfigBoolean(id = "numbers", display = "Hide Numbers", description = "Hides the red numbers on the side of the scoreboard.")
public boolean numbers = true;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package dev.kingrabbit.fruitfulutilities.mixin;

import dev.kingrabbit.fruitfulutilities.FruitfulUtilities;
import dev.kingrabbit.fruitfulutilities.config.ConfigManager;
import dev.kingrabbit.fruitfulutilities.config.categories.FancyScoreboardCategory;
import dev.kingrabbit.fruitfulutilities.util.NumberUtils;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.Redirect;

import java.util.List;

@Mixin(InGameHud.class)
public class InGameHudMixin {

@ModifyArg(method = "renderScoreboardSidebar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/TextRenderer;draw(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/text/Text;FFI)I"))
public Text fancyScoreboardNumbers(Text text) {
String textString = text.getString();
if (!(textString.startsWith("Coins: ") || textString.startsWith("Bank Gold: "))) return text;
ConfigManager configManager = FruitfulUtilities.getInstance().configManager;
if (!(configManager.enabled() && configManager.getCategory(FancyScoreboardCategory.class).fancy)) return text;

List<Text> siblings = text.getSiblings();

if (siblings.size() >= 1) {
List<Text> innerSiblings = siblings.get(0).getSiblings();
if (innerSiblings.size() >= 2) {
Text costText = innerSiblings.get(1);
Text newCostText = Text.literal(NumberUtils.toFancyNumber(Float.parseFloat(costText.getString().replaceAll(",", "")))).setStyle(costText.getStyle());
innerSiblings.set(1, newCostText);
}
}
return text;
}

@ModifyArg(method = "renderScoreboardSidebar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/TextRenderer;getWidth(Ljava/lang/String;)I", ordinal = 1))
public String removeScoreboardNumbersFromWidth(String text) {
ConfigManager configManager = FruitfulUtilities.getInstance().configManager;
return configManager.enabled() && configManager.getCategory(FancyScoreboardCategory.class).numbers ? "" : text;
}

@Redirect(method = "renderScoreboardSidebar", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/TextRenderer;draw(Lnet/minecraft/client/util/math/MatrixStack;Ljava/lang/String;FFI)I"))
public int removeScoreboardNumbers(TextRenderer instance, MatrixStack matrices, String text, float x, float y, int color) {
ConfigManager configManager = FruitfulUtilities.getInstance().configManager;
return configManager.enabled() && configManager.getCategory(FancyScoreboardCategory.class).numbers ? 0 : instance.draw(matrices, text, x, y, color);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@ public static String toFancyNumber(long num) {
return NumberFormat.getInstance(Locale.US).format(num);
}

public static String toFancyNumber(float num) {
return NumberFormat.getInstance(Locale.US).format(num);
}

}
1 change: 1 addition & 0 deletions src/main/resources/fruitfulutilities.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"BlockEntityRenderDispatcherMixin",
"ChunkRendererRegionMixin",
"ClientPlayNetworkHandlerMixin",
"InGameHudMixin",
"PlayerInventoryMixin"
],
"injectors": {
Expand Down

0 comments on commit 4f26f68

Please sign in to comment.