From 0452237c8eb28fe8829e3137ad0433d321809596 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:26:43 +0200 Subject: [PATCH 1/7] chore: Use a Texture collection class --- .../java/com/rappytv/streakdisplay/api/Textures.java | 9 +++++++++ .../com/rappytv/streakdisplay/nametag/StreakNameTag.java | 7 ++----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 api/src/main/java/com/rappytv/streakdisplay/api/Textures.java diff --git a/api/src/main/java/com/rappytv/streakdisplay/api/Textures.java b/api/src/main/java/com/rappytv/streakdisplay/api/Textures.java new file mode 100644 index 0000000..eb50872 --- /dev/null +++ b/api/src/main/java/com/rappytv/streakdisplay/api/Textures.java @@ -0,0 +1,9 @@ +package com.rappytv.streakdisplay.api; + +import net.labymod.api.client.resources.ResourceLocation; + +public class Textures { + + public static final ResourceLocation STREAK = ResourceLocation.create("streakdisplay", "textures/streak.png"); + +} diff --git a/core/src/main/java/com/rappytv/streakdisplay/nametag/StreakNameTag.java b/core/src/main/java/com/rappytv/streakdisplay/nametag/StreakNameTag.java index f846570..70fb851 100644 --- a/core/src/main/java/com/rappytv/streakdisplay/nametag/StreakNameTag.java +++ b/core/src/main/java/com/rappytv/streakdisplay/nametag/StreakNameTag.java @@ -4,6 +4,7 @@ import com.rappytv.streakdisplay.StreakDisplayConfig; import com.rappytv.streakdisplay.api.StreakApiController; import java.util.UUID; +import com.rappytv.streakdisplay.api.Textures; import net.labymod.api.Laby; import net.labymod.api.client.component.Component; import net.labymod.api.client.component.format.NamedTextColor; @@ -13,15 +14,11 @@ import net.labymod.api.client.render.RenderPipeline; import net.labymod.api.client.render.font.RenderableComponent; import net.labymod.api.client.render.matrix.Stack; -import net.labymod.api.client.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; public class StreakNameTag extends NameTag { - private static final Icon STREAK = Icon.texture(ResourceLocation.create( - "streakdisplay", - "textures/streak.png" - )); + private static final Icon STREAK = Icon.texture(Textures.STREAK); private final StreakDisplayConfig config; private final StreakApiController controller; From 76c841fa934b9cf268f3ce1ebde721b9f04cc952 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:31:24 +0200 Subject: [PATCH 2/7] docs: Add longer addon description to readme --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 08ca761..9839f3a 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,7 @@ # StreakDisplay +With this addon you can see the streaks of other players below their name in a separate nametag. [This API](https://github.com/RappyTV/StreakAPI) is used to retrieve the streak data. + ### 📦 Installation 1. Press `Win` + `R` From e741ae2e0483b34ed8fcc46c797245306830c684 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:33:35 +0200 Subject: [PATCH 3/7] chore: Add streak endpoint constant --- .../streakdisplay/controller/DefaultStreakApiController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java b/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java index 5043e93..bd3ebdc 100644 --- a/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java +++ b/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java @@ -16,6 +16,7 @@ @Implements(StreakApiController.class) public class DefaultStreakApiController implements StreakApiController { + private static final String STREAK_ENDPOINT = "https://streaks.rappytv.com/streaks/%s"; private final Map cache = new HashMap<>(); private final Set resolving = new HashSet<>(); @@ -26,7 +27,7 @@ public void resolve(UUID uuid) { } this.resolving.add(uuid); Request.ofGson(JsonElement.class) - .url("https://streaks.rappytv.com/streaks/" + uuid.toString()) + .url(String.format(STREAK_ENDPOINT, uuid)) .handleErrorStream() .async() .execute(response -> { From d7c48f74237877a98b439e1b0bbca13b3a3bc783 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:38:01 +0200 Subject: [PATCH 4/7] feat: Add failure and success methods to avoid code duplication --- .../controller/DefaultStreakApiController.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java b/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java index bd3ebdc..1392b0c 100644 --- a/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java +++ b/core/src/main/java/com/rappytv/streakdisplay/controller/DefaultStreakApiController.java @@ -32,21 +32,27 @@ public void resolve(UUID uuid) { .async() .execute(response -> { if (response.hasException() || response.getStatusCode() != 200) { - this.cache.put(uuid, null); - this.resolving.remove(uuid); + this.cacheFailure(uuid); return; } JsonObject body = response.get().getAsJsonObject(); if (!body.has("streak") || !body.get("streak").isJsonPrimitive()) { - this.cache.put(uuid, null); - this.resolving.remove(uuid); + this.cacheFailure(uuid); return; } - this.cache.put(uuid, body.get("streak").getAsInt()); - this.resolving.remove(uuid); + this.cacheStreak(uuid, body.get("streak").getAsInt()); }); } + private void cacheFailure(UUID uuid) { + this.cacheStreak(uuid, null); + } + + private void cacheStreak(UUID uuid, Integer value) { + this.cache.put(uuid, value); + this.resolving.remove(uuid); + } + @Override public boolean has(UUID uuid) { return this.cache.containsKey(uuid); From b8ae4fb389e3b255005232eea5fb58c63fe60cb1 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:38:22 +0200 Subject: [PATCH 5/7] chore: Bump version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index a5206a1..ed961b4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { val versions = providers.gradleProperty("net.labymod.minecraft-versions").get().split(";") group = "org.example" -version = providers.environmentVariable("VERSION").getOrElse("1.0.0") +version = providers.environmentVariable("VERSION").getOrElse("1.0.1") labyMod { defaultPackageName = "com.rappytv.streakdisplay" From b1664956f09dbb0cfc35605d3117c2b4525b7ab8 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:40:44 +0200 Subject: [PATCH 6/7] feat: Add caching to speed up builds --- .github/workflows/build.yml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6092110..c6f7334 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,9 +2,9 @@ name: LabyAddon Build on: push: - branches: [ "master", "main" ] + branches: [ "master" ] pull_request: - branches: [ "master", "main" ] + branches: [ "master" ] workflow_dispatch: jobs: @@ -17,6 +17,20 @@ jobs: with: distribution: 'corretto' java-version: '21' + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-${{ runner.os }}- + - name: Cache Gradle wrapper + uses: actions/cache@v4 + with: + path: ~/.gradle/wrapper + key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + restore-keys: | + gradle-wrapper-${{ runner.os }}- - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle @@ -25,4 +39,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: Artifacts - path: build/libs/*-release.jar + path: build/libs/*-release.jar \ No newline at end of file From e94dd3dda987ef7d8a7097b09c5eca46dc739833 Mon Sep 17 00:00:00 2001 From: RappyTV Date: Thu, 25 Sep 2025 00:48:11 +0200 Subject: [PATCH 7/7] chore: Ignore .DS_Store files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 47d9f66..15eb67a 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ hs_err_pid* # User-specific stuff /.idea/ run/** +.DS_Store # CMake cmake-build-*/