From 28cf8bc0b04e0217c2663b3f72c009c8736b8673 Mon Sep 17 00:00:00 2001 From: Dev Date: Fri, 29 Sep 2023 16:38:24 +0200 Subject: [PATCH] Development progress --- betterstats-3-fabric-1.20.1/gradle.properties | 4 +- .../thecsdev/betterstats/BetterStats.java | 3 +- .../betterstats/BetterStatsConfig.java | 8 ++ .../betterstats/client/BetterStatsClient.java | 2 + .../gui/screen/hud/BetterStatsHudScreen.java | 25 ++++-- .../gui/stats/panel/ActionBarPanel.java | 15 ++++ .../BetterStatsClientNetworkHandler.java | 69 +++++++++++++++++ .../network/BetterStatsNetworkHandler.java | 72 ++++++++++++++++++ .../network/PlayerPreferences.java | 12 +++ ...jar => tcdcommons-3.0.0+fabric-1.20.1.jar} | Bin 407541 -> 410214 bytes 10 files changed, 202 insertions(+), 8 deletions(-) create mode 100644 betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/network/BetterStatsClientNetworkHandler.java create mode 100644 betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/BetterStatsNetworkHandler.java create mode 100644 betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/PlayerPreferences.java rename betterstats-3-fabric-1.20.1/src/main/resources/META-INF/jarjar/{tcdcommons-3.0.0-beta.2+fabric-1.20.1.jar => tcdcommons-3.0.0+fabric-1.20.1.jar} (60%) diff --git a/betterstats-3-fabric-1.20.1/gradle.properties b/betterstats-3-fabric-1.20.1/gradle.properties index ad325e5e..64de0715 100644 --- a/betterstats-3-fabric-1.20.1/gradle.properties +++ b/betterstats-3-fabric-1.20.1/gradle.properties @@ -16,7 +16,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.0.0-beta.2+fabric-1.20.1 + mod_version = 3.0.0+fabric-1.20.1 mod_contact_homepage = https://github.com/TheCSMods mod_contact_sources = https://github.com/TheCSMods/mc-better-stats @@ -38,7 +38,7 @@ org.gradle.jvmargs=-Xmx1G mod_depends_minecraft = >=1.20 mod_depends_java = >=17 - mod_jar_tcdcommons = META-INF/jarjar/tcdcommons-3.0.0-beta.2+fabric-1.20.1.jar + mod_jar_tcdcommons = META-INF/jarjar/tcdcommons-3.0.0+fabric-1.20.1.jar pack_mcmeta_format = 15 diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStats.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStats.java index 7a99dc65..683da45e 100644 --- a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStats.java +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStats.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.github.thecsdev.betterstats.network.BetterStatsNetworkHandler; import net.fabricmc.loader.api.FabricLoader; public class BetterStats extends Object @@ -55,7 +56,7 @@ else if(!isInstanceValid(this)) this.config.tryLoadFromFile(true); //init stuff - //TODO - Initialize common stuff here (client/dedicated-server/internal-server) + BetterStatsNetworkHandler.init(); } // ================================================== public static BetterStats getInstance() { return Instance; } diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java index fc9d52a8..3394a265 100644 --- a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/BetterStatsConfig.java @@ -8,6 +8,14 @@ public class BetterStatsConfig extends AutoConfig { // ================================================== public static @NonSerialized boolean DEBUG_MODE = false; + + /** + * Indicates whether or not the user consents to this mod + * communicating with the server the user is playing on. + * @apiNote CHANGING THE VALUE OF THIS VARIABLE TO {@code true} + * MUST NOT AND SHALL NOT BE DONE WITHOUT THE USER'S CONSENT! + */ + public static @NonSerialized boolean LEGAL_NET_CONSENT = false; // -------------------------------------------------- public @SerializedAs("guiMobsFollowCursor") boolean guiMobsFollowCursor = true; // ================================================== diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java index 60c0710e..3a15b383 100644 --- a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/BetterStatsClient.java @@ -6,6 +6,7 @@ import io.github.thecsdev.betterstats.api.client.gui.screen.BetterStatsScreen; import io.github.thecsdev.betterstats.api.client.registry.BSClientPlayerBadges; import io.github.thecsdev.betterstats.api.client.registry.BSStatsTabs; +import io.github.thecsdev.betterstats.network.BetterStatsNetworkHandler; import io.github.thecsdev.tcdcommons.api.client.gui.util.GuiUtils; import io.github.thecsdev.tcdcommons.api.events.client.gui.screen.GameMenuScreenEvent; import io.github.thecsdev.tcdcommons.api.hooks.client.gui.widget.ButtonWidgetHooks; @@ -22,6 +23,7 @@ public BetterStatsClient() //initialize and register stuff BSStatsTabs.register(); BSClientPlayerBadges.register(); + BetterStatsNetworkHandler.init(); //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.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java index d9cdef03..162ba9a1 100644 --- a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/screen/hud/BetterStatsHudScreen.java @@ -1,11 +1,13 @@ package io.github.thecsdev.betterstats.client.gui.screen.hud; +import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; import static io.github.thecsdev.betterstats.BetterStats.getModID; import static io.github.thecsdev.tcdcommons.api.util.TextUtils.translatable; import org.jetbrains.annotations.Nullable; import io.github.thecsdev.betterstats.BetterStats; +import io.github.thecsdev.betterstats.client.network.BetterStatsClientNetworkHandler; import io.github.thecsdev.tcdcommons.api.client.gui.screen.TScreenWrapper; import io.github.thecsdev.tcdcommons.api.client.gui.screen.TWidgetHudScreen; import io.github.thecsdev.tcdcommons.api.client.gui.util.TDrawContext; @@ -30,24 +32,37 @@ public final class BetterStatsHudScreen extends TWidgetHudScreen implements IPar private @Nullable Screen parent; // private float requestTimer = 0; - private final int requestDelay = 100; + private final int requestDelay = 20 * 10; // ================================================== private BetterStatsHudScreen() { super(TEXT_TITLE, HUD_SCREEN_ID); } // -------------------------------------------------- protected final @Override TScreenWrapper createScreenWrapper() { return new BetterStatsHudScreenWrapper(this); } + protected final @Override void onClosed() + { + super.onClosed(); //super must be called here + final boolean live = (entryCount() != 0); + BetterStatsClientNetworkHandler.c2s_liveStats(live); + } // ================================================== public final @Override void render(TDrawContext pencil) { //render super - super.render(pencil); + super.render(pencil); //super must be called here + + // ---------- handle auto-requesting + //don't auto-request during user setup + if(this.client == null || isOpen()) return; - //handle auto-requesting - if(this.client == null || isOpen()) return; //don't auto-request during user setup this.requestTimer += pencil.deltaTime; if(this.requestTimer > this.requestDelay) { this.requestTimer = 0; - this.client.getNetworkHandler().sendPacket(new ClientStatusC2SPacket(Mode.REQUEST_STATS)); + + //network optimization; + //- do not send packets when a screen is opened + //- do not send packets when an overlay is present + if(MC_CLIENT.currentScreen == null && MC_CLIENT.getOverlay() == null) + MC_CLIENT.getNetworkHandler().sendPacket(new ClientStatusC2SPacket(Mode.REQUEST_STATS)); } } // ================================================== diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/stats/panel/ActionBarPanel.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/stats/panel/ActionBarPanel.java index eacafe88..e05929c2 100644 --- a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/stats/panel/ActionBarPanel.java +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/gui/stats/panel/ActionBarPanel.java @@ -1,5 +1,6 @@ package io.github.thecsdev.betterstats.client.gui.stats.panel; +import static io.github.thecsdev.betterstats.BetterStatsConfig.LEGAL_NET_CONSENT; import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; import static io.github.thecsdev.tcdcommons.api.util.TextUtils.translatable; @@ -50,6 +51,20 @@ public ActionBarPanel(int x, int y, int width, ActionBarPanelProxy proxy) throws btn_options.setTooltip(Tooltip.of(translatable("options.title"))); btn_options.setIcon(new UITexture(BS_WIDGETS_TEXTURE, new Rectangle(0, 40, 20, 20))); addChild(btn_options, false); + + //bss network button + final var btn_bssNet = new TButtonWidget(btn_options.getX() - 21, btn_options.getY(), 20, 20); + btn_bssNet.setTooltip(Tooltip.of(translatable("TODO - Tooltip"))); //FIXME - BSS NET tooltip + btn_bssNet.setIcon(LEGAL_NET_CONSENT ? + new UITexture(BS_WIDGETS_TEXTURE, new Rectangle(20, 80, 20, 20)) : + new UITexture(BS_WIDGETS_TEXTURE, new Rectangle(0, 80, 20, 20))); + btn_bssNet.setOnClick(__ -> + { + //FIXME - Implement BSS NET consent screen! + LEGAL_NET_CONSENT = !LEGAL_NET_CONSENT; + refresh(); + }); + addChild(btn_bssNet, false); } // ================================================== public static interface ActionBarPanelProxy diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/network/BetterStatsClientNetworkHandler.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/network/BetterStatsClientNetworkHandler.java new file mode 100644 index 00000000..d93c1a27 --- /dev/null +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/client/network/BetterStatsClientNetworkHandler.java @@ -0,0 +1,69 @@ +package io.github.thecsdev.betterstats.client.network; + +import static io.github.thecsdev.betterstats.BetterStatsConfig.LEGAL_NET_CONSENT; +import static io.github.thecsdev.betterstats.client.BetterStatsClient.MC_CLIENT; +import static io.github.thecsdev.betterstats.network.BetterStatsNetworkHandler.C2S_LIVE_STATS; +import static io.github.thecsdev.betterstats.network.BetterStatsNetworkHandler.NETWORK_VERSION; +import static io.github.thecsdev.betterstats.network.BetterStatsNetworkHandler.S2C_I_HAVE_BSS; + +import org.jetbrains.annotations.ApiStatus.Internal; + +import io.github.thecsdev.tcdcommons.api.events.client.MinecraftClientEvent; +import io.github.thecsdev.tcdcommons.api.network.CustomPayloadNetwork; +import io.netty.buffer.Unpooled; +import net.minecraft.network.NetworkSide; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; + +public final @Internal class BetterStatsClientNetworkHandler +{ + // ================================================== + private BetterStatsClientNetworkHandler() {} + // -------------------------------------------------- + private static boolean serverHasBSS = false; + // ================================================== + public static void init() {} + static + { + //initialize event handlers + MinecraftClientEvent.DISCONNECTED.register(client -> + { + //when the client disconnects, clear all flags, including user consent + serverHasBSS = false; + LEGAL_NET_CONSENT = false; + }); + + //initialize network handlers + CustomPayloadNetwork.registerReceiver(NetworkSide.CLIENTBOUND, S2C_I_HAVE_BSS, ctx -> + { + //obtain data buffer and make sure data is present + final var buffer = ctx.getPacketBuffer(); + if(buffer.readableBytes() == 0) return; + + //obtain network version and compare it + final int netVer = buffer.readIntLE(); + if(netVer != NETWORK_VERSION) return; + + //server has BSS + serverHasBSS = true; + }); + } + // ================================================== + /** + * Returns {@code true} if {@link BetterStatsClientNetworkHandler} + * is allowed to communicate with the server. + */ + public static boolean comms() { return MC_CLIENT.isInSingleplayer() || (serverHasBSS && LEGAL_NET_CONSENT); } + // -------------------------------------------------- + public static final void c2s_liveStats(boolean receiveLiveUpdates) + { + //if communications are off, don't send + if(!comms()) return; + + //construct and send + final var data = new PacketByteBuf(Unpooled.buffer()); + data.writeBoolean(receiveLiveUpdates); + MC_CLIENT.getNetworkHandler().sendPacket(new CustomPayloadS2CPacket(C2S_LIVE_STATS, data)); + } + // ================================================== +} \ No newline at end of file diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/BetterStatsNetworkHandler.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/BetterStatsNetworkHandler.java new file mode 100644 index 00000000..5cd2cc50 --- /dev/null +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/BetterStatsNetworkHandler.java @@ -0,0 +1,72 @@ +package io.github.thecsdev.betterstats.network; + +import java.util.WeakHashMap; + +import org.jetbrains.annotations.ApiStatus.Internal; + +import io.github.thecsdev.betterstats.BetterStats; +import io.github.thecsdev.tcdcommons.api.events.server.PlayerManagerEvent; +import io.github.thecsdev.tcdcommons.api.network.CustomPayloadNetwork; +import io.netty.buffer.Unpooled; +import net.minecraft.network.NetworkSide; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; + +/** + * Represents the server-side network handler for {@link BetterStats}. + */ +public final @Internal class BetterStatsNetworkHandler +{ + // ================================================== + private BetterStatsNetworkHandler() {} + // -------------------------------------------------- + public static final int NETWORK_VERSION = 1; + // + public static final Identifier S2C_I_HAVE_BSS; + public static final Identifier C2S_LIVE_STATS; + // -------------------------------------------------- + public static final WeakHashMap PlayerPrefs; + // ================================================== + public static void init() {} + static + { + //init packet IDs + final var modId = BetterStats.getModID(); + S2C_I_HAVE_BSS = new Identifier(modId, "s2c_bss"); + C2S_LIVE_STATS = new Identifier(modId, "c2s_live_stats"); + + //init variables + PlayerPrefs = new WeakHashMap<>(); + + //init event handlers + PlayerManagerEvent.PLAYER_CONNECTED.register(player -> + { + PlayerPrefs.put(player, new PlayerPreferences()); + s2c_iHaveBSS(player); + }); + + //init network handlers + CustomPayloadNetwork.registerReceiver(NetworkSide.SERVERBOUND, C2S_LIVE_STATS, ctx -> + { + //obtain prefs + final var prefs = PlayerPrefs.get(ctx.getPlayer()); + if(prefs == null) return; //shouldn't happen at all, but just in case + + //update prefs + prefs.liveStats = ctx.getPacketBuffer().readBoolean(); + }); + } + // ================================================== + /** + * Sends the {@link #S2C_I_HAVE_BSS} packet to a given {@link ServerPlayerEntity}. + */ + public static void s2c_iHaveBSS(ServerPlayerEntity player) + { + final var data = new PacketByteBuf(Unpooled.buffer()); + data.writeIntLE(NETWORK_VERSION); + player.networkHandler.sendPacket(new CustomPayloadS2CPacket(S2C_I_HAVE_BSS, data)); + } + // ================================================== +} \ No newline at end of file diff --git a/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/PlayerPreferences.java b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/PlayerPreferences.java new file mode 100644 index 00000000..a86e3194 --- /dev/null +++ b/betterstats-3-fabric-1.20.1/src/main/java/io/github/thecsdev/betterstats/network/PlayerPreferences.java @@ -0,0 +1,12 @@ +package io.github.thecsdev.betterstats.network; + +import org.jetbrains.annotations.ApiStatus.Internal; + +public final @Internal class PlayerPreferences +{ + /** + * When set to true, the {@link BetterStatsNetworkHandler} will + * automatically update the client on their stats changes, live. + */ + public boolean liveStats = false; +} \ No newline at end of file diff --git a/betterstats-3-fabric-1.20.1/src/main/resources/META-INF/jarjar/tcdcommons-3.0.0-beta.2+fabric-1.20.1.jar b/betterstats-3-fabric-1.20.1/src/main/resources/META-INF/jarjar/tcdcommons-3.0.0+fabric-1.20.1.jar similarity index 60% rename from betterstats-3-fabric-1.20.1/src/main/resources/META-INF/jarjar/tcdcommons-3.0.0-beta.2+fabric-1.20.1.jar rename to betterstats-3-fabric-1.20.1/src/main/resources/META-INF/jarjar/tcdcommons-3.0.0+fabric-1.20.1.jar index 5592bcb9a9513def9389d60b6073743be65dfb19..3b6118b8144d0f88f9cec7226846f5454bb01b7b 100644 GIT binary patch delta 56033 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 Qbfol7zC@BZ9zt01f8y2I761SM delta 54478 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 Vi_O;GtG`#lVVmuIf3zO9{{yzi%Ps%_