From 39ec0de64999b8b4c3cbb6687892c21189ee36cb Mon Sep 17 00:00:00 2001 From: Dave Date: Sat, 2 Nov 2024 14:14:37 +0100 Subject: [PATCH] Release v3.12.3+fabric-1.21.X # From TCDCommons API - Removed the "Refresh current screen" key-binding. It was meant for testing purposes only. - Resolved conflict with "Screenshot viewer". See #16. # From Better Statistics Screen - Hovering over stat widgets in BSS will now play a small on-hover sound, to make the UI feel more "lively". - Added a key-binding that allows you to toggle the stats HUD screen visibility. See #141. --- betterstats-3-fabric-1.21.3/gradle.properties | 6 +++--- .../betterstats/BetterStatsConfig.java | 4 +++- .../gui/stats/widget/AbstractStatWidget.java | 12 +++++++++++ .../betterstats/client/BetterStatsClient.java | 16 +++++++++++++++ .../gui/screen/hud/BetterStatsHudScreen.java | 19 ++++++++++++++++++ .../gui/widget/CreditsTabPersonWidget.java | 2 -- .../github/thecsdev/betterstats/util/BST.java | 4 +++- ...ar => tcdcommons-3.12.4+fabric-1.21.3.jar} | Bin 857371 -> 856659 bytes .../assets/betterstats/lang/en_us.json | 3 +++ betterstats-3-fabric-1.21/gradle.properties | 4 ++-- .../betterstats/BetterStatsConfig.java | 4 +++- .../gui/stats/widget/AbstractStatWidget.java | 12 +++++++++++ .../betterstats/client/BetterStatsClient.java | 16 +++++++++++++++ .../gui/screen/hud/BetterStatsHudScreen.java | 19 ++++++++++++++++++ .../gui/widget/CreditsTabPersonWidget.java | 2 -- .../github/thecsdev/betterstats/util/BST.java | 2 ++ ....jar => tcdcommons-3.12.4+fabric-1.21.jar} | Bin 856002 -> 855296 bytes .../assets/betterstats/lang/en_us.json | 3 +++ 18 files changed, 116 insertions(+), 12 deletions(-) rename betterstats-3-fabric-1.21.3/src/main/resources/META-INF/jarjar-excluded/{tcdcommons-3.12.3+fabric-1.21.3.jar => tcdcommons-3.12.4+fabric-1.21.3.jar} (95%) rename betterstats-3-fabric-1.21/src/main/resources/META-INF/jarjar-excluded/{tcdcommons-3.12.3+fabric-1.21.jar => tcdcommons-3.12.4+fabric-1.21.jar} (95%) diff --git a/betterstats-3-fabric-1.21.3/gradle.properties b/betterstats-3-fabric-1.21.3/gradle.properties index fe5c3326..beae8bbe 100644 --- a/betterstats-3-fabric-1.21.3/gradle.properties +++ b/betterstats-3-fabric-1.21.3/gradle.properties @@ -28,7 +28,7 @@ org.gradle.jvmargs=-Xmx1G mod_name = Better Statistics Screen mod_description = Improves the statistics screen and makes it more useful. mod_author = TheCSDev - mod_version = 3.13.2+fabric-1.21.3 + mod_version = 3.13.3+fabric-1.21.3 # Here you link the source code repository links: mod_contact_homepage = https://github.com/TheCSMods @@ -60,5 +60,5 @@ org.gradle.jvmargs=-Xmx1G # to list them as dependencies in `fabric.mod.json`. fabric_version=0.106.1+1.21.3 modmenu_version=12.0.0-beta.1 - architectury_version=14.0.3 - rei_version=16.0.783 + architectury_version=14.0.4 + rei_version=17.0.789 diff --git a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java index 45fca5b9..de9c3fe8 100644 --- a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java +++ b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java @@ -8,7 +8,9 @@ public class BetterStatsConfig extends AutoConfig { // ================================================== - public static @NonSerialized boolean DEBUG_MODE = false; + // Temporary configurations bound to the current game session + public static @NonSerialized boolean DEBUG_MODE = false; + public static @NonSerialized boolean SHOW_HUD_SCREEN = true; //client-sided // -------------------------------------------------- public @SerializedAs("common-forceFullVersion") boolean forceFullVersion = false; //v3.11+ public @SerializedAs("client-guiSmoothScroll") boolean guiSmoothScroll = true; diff --git a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java index 6f46cfd1..158e6197 100644 --- a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java +++ b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java @@ -1,5 +1,7 @@ package io.github.thecsdev.betterstats.api.client.gui.stats.widget; +import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; + import java.util.Objects; import io.github.thecsdev.betterstats.api.util.stats.SUStat; @@ -8,6 +10,8 @@ import io.github.thecsdev.tcdcommons.api.client.gui.util.TInputContext; import io.github.thecsdev.tcdcommons.api.client.gui.widget.TClickableWidget; import io.github.thecsdev.tcdcommons.api.util.annotations.Virtual; +import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.sound.SoundEvents; /** * A GUI widget that displays stats information from a given {@link SUStat}. @@ -72,8 +76,16 @@ public AbstractStatWidget(int x, int y, int width, int height, S stat) throws Nu public @Virtual @Override void render(TDrawContext pencil) { pencil.drawTFill(this.backgroundColor); } public @Virtual @Override void postRender(TDrawContext pencil) { + //render the borders if(isFocusedOrHovered()) pencil.drawTBorder(this.focusOutlineColor); else pencil.drawTBorder(this.outlineColor); + + //a neat little on-hover sound + if(isHovered() && !isFocused() && !this.__wasHovered) + MC_CLIENT.getSoundManager().play(PositionedSoundInstance.master( + SoundEvents.BLOCK_NOTE_BLOCK_HAT.value(), 1.8f, 0.05f)); + this.__wasHovered = isHovered(); } + private boolean __wasHovered = false; // ================================================== } \ No newline at end of file diff --git a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java index d67fc9b0..2de84d3d 100644 --- a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java +++ b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java @@ -11,27 +11,43 @@ import io.github.thecsdev.betterstats.api.client.registry.BSClientPlayerBadges; import io.github.thecsdev.betterstats.api.client.registry.BSStatsTabs; import io.github.thecsdev.betterstats.api.util.BSUtils; +import io.github.thecsdev.betterstats.util.BST; import io.github.thecsdev.tcdcommons.api.client.gui.util.GuiUtils; import io.github.thecsdev.tcdcommons.api.events.client.MinecraftClientEvent; import io.github.thecsdev.tcdcommons.api.events.client.gui.screen.GameMenuScreenEvent; import io.github.thecsdev.tcdcommons.api.events.item.ItemGroupEvent; import io.github.thecsdev.tcdcommons.api.hooks.client.gui.widget.ButtonWidgetHooks; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; public final class BetterStatsClient extends BetterStats { // ================================================== public static final MinecraftClient MC_CLIENT = MinecraftClient.getInstance(); + // -------------------------------------------------- + public static final KeyBinding KEYBIND_TOGGLE_HUD; // ================================================== + static + { + //register key-bindings + KEYBIND_TOGGLE_HUD = KeyBindingHelper.registerKeyBinding(new KeyBinding( + BST.keybind_toggleHud(), + InputUtil.UNKNOWN_KEY.getCode(), + getModID())); + } + // -------------------------------------------------- public BetterStatsClient() { //initialize and register stuff BSStatsTabs.register(); BSClientPlayerBadges.register(); + // ---------- modding the "Statistics" button //an event handler that will handle the game menu screen (the "pause" screen) GameMenuScreenEvent.INIT_WIDGETS_POST.register(gmScreen -> { diff --git a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java index 338f937f..40a0852f 100644 --- a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java +++ b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java @@ -1,7 +1,9 @@ package io.github.thecsdev.betterstats.client.gui.screen.hud; import static io.github.thecsdev.betterstats.BetterStats.getModID; +import static io.github.thecsdev.betterstats.BetterStatsConfig.SHOW_HUD_SCREEN; import static io.github.thecsdev.betterstats.api.client.gui.panel.BSComponentPanel.BS_WIDGETS_TEXTURE; +import static io.github.thecsdev.betterstats.client.BetterStatsClient.KEYBIND_TOGGLE_HUD; import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; import static io.github.thecsdev.tcdcommons.api.util.TextUtils.literal; import static io.github.thecsdev.tcdcommons.api.util.TextUtils.translatable; @@ -21,8 +23,10 @@ import io.github.thecsdev.tcdcommons.api.client.util.interfaces.IParentScreenProvider; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.tooltip.Tooltip; +import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket; import net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket.Mode; +import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -65,6 +69,9 @@ public final class BetterStatsHudScreen extends TWidgetHudScreen implements IPar //if the hud screen is opened, add some extra widgets to it if(isOpen()) { + //reset the "show hud screen" flag here + SHOW_HUD_SCREEN = true; + //obtain the better-stats's client play network handler final var bssCpnh = BetterStatsClientPlayNetworkHandler.of(MC_CLIENT.player); @@ -108,6 +115,18 @@ public final class BetterStatsHudScreen extends TWidgetHudScreen implements IPar // -------------------------------------------------- public final @Override void render(TDrawContext pencil) { + // ---------- handle key-bindings + if(KEYBIND_TOGGLE_HUD.wasPressed() && !isOpen()) + { + SHOW_HUD_SCREEN = !SHOW_HUD_SCREEN; + MC_CLIENT.getSoundManager().play(PositionedSoundInstance.master( + SoundEvents.BLOCK_NOTE_BLOCK_HAT, + SHOW_HUD_SCREEN ? 2 : 1.8f)); + } + + // ---------- handle rendering + if(!SHOW_HUD_SCREEN && !isOpen()) return; + //render super super.render(pencil); //super must be called here diff --git a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java index c90db2e8..a05c743f 100644 --- a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java +++ b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java @@ -48,7 +48,6 @@ public CreditsTabPersonWidget(int x, int y, int width, TcdWebApiPerson person, b this.fetchGitHubInfo = fetchGitHubInfo; } // ================================================== - @SuppressWarnings("deprecation") protected final @Override void init() { final var icon = new TTextureElement(2, 2, 16, 16); @@ -121,7 +120,6 @@ public CreditsTabPersonWidget(int x, int y, int width, TcdWebApiPerson person, b * Constructs a "display name" {@link Text} from a {@link RepositoryUserInfo}. * @param userInfo The {@link RepositoryUserInfo}. */ - @SuppressWarnings("deprecation") public static final Text getDisplayNameFromGHUser(RepositoryUserInfo userInfo) throws NullPointerException { final @Nullable var name = userInfo.getAccountName(); diff --git a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/util/BST.java b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/util/BST.java index 02a02477..4f5d1dfe 100644 --- a/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/util/BST.java +++ b/betterstats-3-fabric-1.21.3/src/main/java/io/github/thecsdev/betterstats/util/BST.java @@ -30,6 +30,8 @@ private BST() {} public static final MutableText stp_mc_killed() { return translatable("betterstats.stattype_phrase.minecraft.killed"); } public static final MutableText stp_mc_killedBy() { return translatable("betterstats.stattype_phrase.minecraft.killed_by"); } // -------------------------------------------------- + public static final String keybind_toggleHud() { return "betterstats.key_binding.toggle_hud_screen"; } + // -------------------------------------------------- public static final MutableText menu_file() { return translatable("betterstats.gui.menu_bar.menu_file"); } public static final MutableText menu_file_new() { return translatable("betterstats.gui.menu_bar.menu_file.new"); } public static final MutableText menu_file_open() { return translatable("betterstats.gui.menu_bar.menu_file.open"); } @@ -131,7 +133,7 @@ private BST() {} public static final MutableText gui_qsscreen_upload_stage4(Text qsCode) { return translatable("betterstats.gui.qs_screen.upload.stage_4", qsCode); } // public static final MutableText gui_qsscreen_download_title() { return translatable("betterstats.gui.qs_screen.download.title"); } - public static final MutableText gui_qsscreen_download_stageN1() { return translatable("betterstats.gui.qs_screen.download.stage_n1"); } + public static final MutableText gui_qsscreen_download_stageN1() { return translatable("betterstats.gui.qs_screen.download.stage_n1"); } public static final MutableText gui_qsscreen_download_stage0() { return translatable("betterstats.gui.qs_screen.download.stage_0"); } public static final MutableText gui_qsscreen_download_stage1() { return translatable("betterstats.gui.qs_screen.download.stage_1"); } public static final MutableText gui_qsscreen_download_stage2() { return translatable("betterstats.gui.qs_screen.download.stage_2"); } diff --git a/betterstats-3-fabric-1.21.3/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.3+fabric-1.21.3.jar b/betterstats-3-fabric-1.21.3/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.4+fabric-1.21.3.jar similarity index 95% rename from betterstats-3-fabric-1.21.3/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.3+fabric-1.21.3.jar rename to betterstats-3-fabric-1.21.3/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.4+fabric-1.21.3.jar index 4c285f317b923a4687d00c15fc0fc68aa4969582..2ddb318e90a2091808ed49e2e2c0f3449c84f004 100644 GIT binary patch delta 12365 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 diff --git a/betterstats-3-fabric-1.21.3/src/main/resources/assets/betterstats/lang/en_us.json b/betterstats-3-fabric-1.21.3/src/main/resources/assets/betterstats/lang/en_us.json index 53a2c0bc..8fd66a21 100644 --- a/betterstats-3-fabric-1.21.3/src/main/resources/assets/betterstats/lang/en_us.json +++ b/betterstats-3-fabric-1.21.3/src/main/resources/assets/betterstats/lang/en_us.json @@ -19,6 +19,9 @@ "betterstats.stattype_phrase.morestats.totem_popped_by": "Totems popped by", + "betterstats.key_binding.toggle_hud_screen": "Toggle statistics HUD", + + "betterstats.gui.menu_bar.menu_file": "File", "betterstats.gui.menu_bar.menu_file.new": "New", "betterstats.gui.menu_bar.menu_file.open": "Open", diff --git a/betterstats-3-fabric-1.21/gradle.properties b/betterstats-3-fabric-1.21/gradle.properties index 480708fc..a9e73879 100644 --- a/betterstats-3-fabric-1.21/gradle.properties +++ b/betterstats-3-fabric-1.21/gradle.properties @@ -28,7 +28,7 @@ org.gradle.jvmargs=-Xmx1G mod_name = Better Statistics Screen mod_description = Improves the statistics screen and makes it more useful. mod_author = TheCSDev - mod_version = 3.13.2+fabric-1.21 + mod_version = 3.13.3+fabric-1.21 # Here you link the source code repository links: mod_contact_homepage = https://github.com/TheCSMods @@ -48,7 +48,7 @@ org.gradle.jvmargs=-Xmx1G mod_icon = assets/betterstats/icon.png # This is the name of the Minecraft version your mod depends on: - mod_depends_minecraft = >=1.21 + mod_depends_minecraft = >=1.21 <1.21.2 # This is the resource pack format number of your mod's resource pack: # ( More info at https://minecraft.wiki/w/Pack_format ) diff --git a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java index 45fca5b9..de9c3fe8 100644 --- a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java +++ b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java @@ -8,7 +8,9 @@ public class BetterStatsConfig extends AutoConfig { // ================================================== - public static @NonSerialized boolean DEBUG_MODE = false; + // Temporary configurations bound to the current game session + public static @NonSerialized boolean DEBUG_MODE = false; + public static @NonSerialized boolean SHOW_HUD_SCREEN = true; //client-sided // -------------------------------------------------- public @SerializedAs("common-forceFullVersion") boolean forceFullVersion = false; //v3.11+ public @SerializedAs("client-guiSmoothScroll") boolean guiSmoothScroll = true; diff --git a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java index 6f46cfd1..158e6197 100644 --- a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java +++ b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/api/client/gui/stats/widget/AbstractStatWidget.java @@ -1,5 +1,7 @@ package io.github.thecsdev.betterstats.api.client.gui.stats.widget; +import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; + import java.util.Objects; import io.github.thecsdev.betterstats.api.util.stats.SUStat; @@ -8,6 +10,8 @@ import io.github.thecsdev.tcdcommons.api.client.gui.util.TInputContext; import io.github.thecsdev.tcdcommons.api.client.gui.widget.TClickableWidget; import io.github.thecsdev.tcdcommons.api.util.annotations.Virtual; +import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.sound.SoundEvents; /** * A GUI widget that displays stats information from a given {@link SUStat}. @@ -72,8 +76,16 @@ public AbstractStatWidget(int x, int y, int width, int height, S stat) throws Nu public @Virtual @Override void render(TDrawContext pencil) { pencil.drawTFill(this.backgroundColor); } public @Virtual @Override void postRender(TDrawContext pencil) { + //render the borders if(isFocusedOrHovered()) pencil.drawTBorder(this.focusOutlineColor); else pencil.drawTBorder(this.outlineColor); + + //a neat little on-hover sound + if(isHovered() && !isFocused() && !this.__wasHovered) + MC_CLIENT.getSoundManager().play(PositionedSoundInstance.master( + SoundEvents.BLOCK_NOTE_BLOCK_HAT.value(), 1.8f, 0.05f)); + this.__wasHovered = isHovered(); } + private boolean __wasHovered = false; // ================================================== } \ No newline at end of file diff --git a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java index d67fc9b0..2de84d3d 100644 --- a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java +++ b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java @@ -11,27 +11,43 @@ import io.github.thecsdev.betterstats.api.client.registry.BSClientPlayerBadges; import io.github.thecsdev.betterstats.api.client.registry.BSStatsTabs; import io.github.thecsdev.betterstats.api.util.BSUtils; +import io.github.thecsdev.betterstats.util.BST; import io.github.thecsdev.tcdcommons.api.client.gui.util.GuiUtils; import io.github.thecsdev.tcdcommons.api.events.client.MinecraftClientEvent; import io.github.thecsdev.tcdcommons.api.events.client.gui.screen.GameMenuScreenEvent; import io.github.thecsdev.tcdcommons.api.events.item.ItemGroupEvent; import io.github.thecsdev.tcdcommons.api.hooks.client.gui.widget.ButtonWidgetHooks; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; public final class BetterStatsClient extends BetterStats { // ================================================== public static final MinecraftClient MC_CLIENT = MinecraftClient.getInstance(); + // -------------------------------------------------- + public static final KeyBinding KEYBIND_TOGGLE_HUD; // ================================================== + static + { + //register key-bindings + KEYBIND_TOGGLE_HUD = KeyBindingHelper.registerKeyBinding(new KeyBinding( + BST.keybind_toggleHud(), + InputUtil.UNKNOWN_KEY.getCode(), + getModID())); + } + // -------------------------------------------------- public BetterStatsClient() { //initialize and register stuff BSStatsTabs.register(); BSClientPlayerBadges.register(); + // ---------- modding the "Statistics" button //an event handler that will handle the game menu screen (the "pause" screen) GameMenuScreenEvent.INIT_WIDGETS_POST.register(gmScreen -> { diff --git a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java index 338f937f..40a0852f 100644 --- a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java +++ b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java @@ -1,7 +1,9 @@ package io.github.thecsdev.betterstats.client.gui.screen.hud; import static io.github.thecsdev.betterstats.BetterStats.getModID; +import static io.github.thecsdev.betterstats.BetterStatsConfig.SHOW_HUD_SCREEN; import static io.github.thecsdev.betterstats.api.client.gui.panel.BSComponentPanel.BS_WIDGETS_TEXTURE; +import static io.github.thecsdev.betterstats.client.BetterStatsClient.KEYBIND_TOGGLE_HUD; import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; import static io.github.thecsdev.tcdcommons.api.util.TextUtils.literal; import static io.github.thecsdev.tcdcommons.api.util.TextUtils.translatable; @@ -21,8 +23,10 @@ import io.github.thecsdev.tcdcommons.api.client.util.interfaces.IParentScreenProvider; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.tooltip.Tooltip; +import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket; import net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket.Mode; +import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -65,6 +69,9 @@ public final class BetterStatsHudScreen extends TWidgetHudScreen implements IPar //if the hud screen is opened, add some extra widgets to it if(isOpen()) { + //reset the "show hud screen" flag here + SHOW_HUD_SCREEN = true; + //obtain the better-stats's client play network handler final var bssCpnh = BetterStatsClientPlayNetworkHandler.of(MC_CLIENT.player); @@ -108,6 +115,18 @@ public final class BetterStatsHudScreen extends TWidgetHudScreen implements IPar // -------------------------------------------------- public final @Override void render(TDrawContext pencil) { + // ---------- handle key-bindings + if(KEYBIND_TOGGLE_HUD.wasPressed() && !isOpen()) + { + SHOW_HUD_SCREEN = !SHOW_HUD_SCREEN; + MC_CLIENT.getSoundManager().play(PositionedSoundInstance.master( + SoundEvents.BLOCK_NOTE_BLOCK_HAT, + SHOW_HUD_SCREEN ? 2 : 1.8f)); + } + + // ---------- handle rendering + if(!SHOW_HUD_SCREEN && !isOpen()) return; + //render super super.render(pencil); //super must be called here diff --git a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java index c90db2e8..a05c743f 100644 --- a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java +++ b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/client/gui/widget/CreditsTabPersonWidget.java @@ -48,7 +48,6 @@ public CreditsTabPersonWidget(int x, int y, int width, TcdWebApiPerson person, b this.fetchGitHubInfo = fetchGitHubInfo; } // ================================================== - @SuppressWarnings("deprecation") protected final @Override void init() { final var icon = new TTextureElement(2, 2, 16, 16); @@ -121,7 +120,6 @@ public CreditsTabPersonWidget(int x, int y, int width, TcdWebApiPerson person, b * Constructs a "display name" {@link Text} from a {@link RepositoryUserInfo}. * @param userInfo The {@link RepositoryUserInfo}. */ - @SuppressWarnings("deprecation") public static final Text getDisplayNameFromGHUser(RepositoryUserInfo userInfo) throws NullPointerException { final @Nullable var name = userInfo.getAccountName(); diff --git a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/util/BST.java b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/util/BST.java index 02a02477..91a323af 100644 --- a/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/util/BST.java +++ b/betterstats-3-fabric-1.21/src/main/java/io/github/thecsdev/betterstats/util/BST.java @@ -30,6 +30,8 @@ private BST() {} public static final MutableText stp_mc_killed() { return translatable("betterstats.stattype_phrase.minecraft.killed"); } public static final MutableText stp_mc_killedBy() { return translatable("betterstats.stattype_phrase.minecraft.killed_by"); } // -------------------------------------------------- + public static final String keybind_toggleHud() { return "betterstats.key_binding.toggle_hud_screen"; } + // -------------------------------------------------- public static final MutableText menu_file() { return translatable("betterstats.gui.menu_bar.menu_file"); } public static final MutableText menu_file_new() { return translatable("betterstats.gui.menu_bar.menu_file.new"); } public static final MutableText menu_file_open() { return translatable("betterstats.gui.menu_bar.menu_file.open"); } diff --git a/betterstats-3-fabric-1.21/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.3+fabric-1.21.jar b/betterstats-3-fabric-1.21/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.4+fabric-1.21.jar similarity index 95% rename from betterstats-3-fabric-1.21/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.3+fabric-1.21.jar rename to betterstats-3-fabric-1.21/src/main/resources/META-INF/jarjar-excluded/tcdcommons-3.12.4+fabric-1.21.jar index 936dfb2b29ae95523c38fff2527cfb8920c15777..cc49ef26a345c738ecd4631a26e3958bc754826a 100644 GIT binary patch delta 12406 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 diff --git a/betterstats-3-fabric-1.21/src/main/resources/assets/betterstats/lang/en_us.json b/betterstats-3-fabric-1.21/src/main/resources/assets/betterstats/lang/en_us.json index 53a2c0bc..9bc2d077 100644 --- a/betterstats-3-fabric-1.21/src/main/resources/assets/betterstats/lang/en_us.json +++ b/betterstats-3-fabric-1.21/src/main/resources/assets/betterstats/lang/en_us.json @@ -19,6 +19,9 @@ "betterstats.stattype_phrase.morestats.totem_popped_by": "Totems popped by", + "betterstats.key_binding.toggle_hud_screen": "Toggle statistics HUD", + + "betterstats.gui.menu_bar.menu_file": "File", "betterstats.gui.menu_bar.menu_file.new": "New", "betterstats.gui.menu_bar.menu_file.open": "Open",