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 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-*/ 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/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" 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..1392b0c 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,26 +27,32 @@ 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 -> { 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); 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; 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`