From 3acbec693b93de43a91cc8bd4b5d4ba0466305ef Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Thu, 9 Dec 2021 19:51:35 +0100 Subject: support 1.18.x minecraft version and update to 1.4.2 [skip ci] --- .github/workflows/beta.yml | 52 ------------ .github/workflows/buildrelease.yml | 92 ---------------------- build.gradle | 14 +++- gradle.properties | 12 +-- .../skyblocker/utils/RenderUtilsLiving.java | 6 +- .../me/xmrvizzy/skyblocker/utils/Vertexer.java | 20 ++--- src/main/resources/fabric.mod.json | 4 +- src/main/resources/skyblocker.mixins.json | 3 +- 8 files changed, 32 insertions(+), 171 deletions(-) delete mode 100644 .github/workflows/beta.yml delete mode 100644 .github/workflows/buildrelease.yml diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml deleted file mode 100644 index 54292277..00000000 --- a/.github/workflows/beta.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Build Beta - -on: - push: - branches: - - '**' - pull_request: - - -jobs: - # This workflow contains a single job called "build" - build: - # The type of runner that the job will run on - runs-on: ubuntu-latest - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - - - uses: actions/github-script@v2 - with: - result-encoding: string - script: | - const fs = require("fs"); - let file = fs.readFileSync("./gradle.properties"); - file = file.toString().split("\n").map(e => e.trim().startsWith("mod_version") ? `${e}-beta-${process.env.GITHUB_SHA.substring(0, 7)}` : e).join("\n"); - fs.writeFileSync("./gradle.properties", file); - - - name: Set up JDK 16 - uses: actions/setup-java@v2 - with: - distribution: 'adopt' - java-version: '16' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build with Gradle - run: ./gradlew build - - - uses: actions/github-script@v2 - id: fname - with: - result-encoding: string - script: | - const fs = require("fs") - return fs.readdirSync("build/libs/").filter(e => !e.endsWith("dev.jar") && !e.endsWith("sources.jar") && e.endsWith(".jar"))[0].replace(".jar", ""); - - - uses: actions/upload-artifact@v2 - with: - name: ${{ steps.fname.outputs.result }} - path: build/libs/ \ No newline at end of file diff --git a/.github/workflows/buildrelease.yml b/.github/workflows/buildrelease.yml deleted file mode 100644 index afc4bf68..00000000 --- a/.github/workflows/buildrelease.yml +++ /dev/null @@ -1,92 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: Build Release - -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the master branch -on: - release: - types: [created] - -jobs: - # This workflow contains a single job called "build" - build: - # The type of runner that the job will run on - runs-on: ubuntu-latest - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - - name: Set up JDK 16 - uses: actions/setup-java@v2 - with: - distribution: 'adopt' - java-version: '16' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build with Gradle - run: ./gradlew build - - - uses: actions/upload-artifact@v2 - with: - name: Artifacts - path: build/libs/ - - - name: Read Changelog - id: read_changelog - shell: bash - run: | - CHANGELOG=$(sed '/___/Q' CHANGELOG.md | grep -v '# ') - echo "Changelog:\n$CHANGELOG" - CHANGELOG="${CHANGELOG//'%'/'%25'}" - CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" - CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - echo "::set-output name=changelog::$CHANGELOG" - - - uses: actions/github-script@v2 - id: fname - with: - result-encoding: string - script: | - const fs = require("fs") - return fs.readdirSync("build/libs/").filter(e => !e.endsWith("dev.jar") && !e.endsWith("sources.jar") && e.endsWith(".jar"))[0] - - name: Release - id: uploadrelease - uses: softprops/action-gh-release@v1 - with: - body: ${{ steps.read_changelog.outputs.changelog }} - files: build/libs/${{ steps.fname.outputs.result }} - - - name: Publish to Modrinth - id: modrinth - env: - MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} - CHANGELOG: ${{ steps.read_changelog.outputs.changelog }} - run: ./gradlew publishModrinth - - - name: Get version tag - id: version_tag - run: | - [[ ! "$GITHUB_REF" =~ refs/tags ]] && exit - echo "::set-output name=value::${GITHUB_REF#refs/tags/}" - - - name: Discord notification - env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - uses: Ilshidur/action-discord@master - with: - args: | - "@here" - "Skyblocker ${{ steps.version_tag.outputs.value }}" - "" - "Changelog" - "```md" - "${{ steps.read_changelog.outputs.changelog }}" - "```" - ":inbox_tray: Download latest version on Modrinth or Github:" - "<:modrinth:900697862206287882> <${{ steps.modrinth.outputs.url }}>" - "<:github:900697885706952725> <${{ steps.uploadrelease.outputs.url }}>" - "" - "" \ No newline at end of file diff --git a/build.gradle b/build.gradle index c5656d10..fc535314 100644 --- a/build.gradle +++ b/build.gradle @@ -7,8 +7,8 @@ plugins { import com.modrinth.minotaur.TaskModrinthUpload import com.modrinth.minotaur.request.VersionType -sourceCompatibility = JavaVersion.VERSION_16 -targetCompatibility = JavaVersion.VERSION_16 +sourceCompatibility = JavaVersion.VERSION_17 +targetCompatibility = JavaVersion.VERSION_17 archivesBaseName = project.archives_base_name version = "${project.mod_version}+${project.minecraft_version}" @@ -67,8 +67,14 @@ processResources { } tasks.withType(JavaCompile).configureEach { - // Minecraft 1.17 (21w19a) upwards uses Java 16. - it.options.release = 16 + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + + // Minecraft 1.18 upwards uses Java 17. + it.options.release = 17 } java { diff --git a/gradle.properties b/gradle.properties index 52e12079..e4b56d12 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,18 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties (https://fabricmc.net/versions.html) -minecraft_version=1.17.1 -yarn_mappings=1.17.1+build.65 -loader_version=0.12.11 +minecraft_version=1.18 +yarn_mappings=1.18+build.1 +loader_version=0.12.8 #Fabric api -fabric_version=0.44.0+1.17 +fabric_version=0.43.1+1.18 # Dependencies ## Cloth Api (https://www.curseforge.com/minecraft/mc-mods/cloth-config/files) -clothconfig_version=5.2.47 +clothconfig_version=6.0.42 ## Mod Menu (https://www.curseforge.com/minecraft/mc-mods/modmenu/files) -mod_menu_version=2.0.14 +mod_menu_version=3.0.0 # Mod Properties mod_version = 1.4.3 diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java index f6fb1bc1..962421b7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java @@ -67,17 +67,17 @@ public class RenderUtilsLiving { if (fill) { int opacity = (int) (MinecraftClient.getInstance().options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24; - mc.textRenderer.draw(text, -halfWidth, 0f, 553648127, false, matrices.peek().getModel(), immediate, true, opacity, 0xf000f0); + mc.textRenderer.draw(text, -halfWidth, 0f, 553648127, false, matrices.peek().getPositionMatrix(), immediate, true, opacity, 0xf000f0); immediate.draw(); } else { matrices.push(); matrices.translate(1, 1, 0); - mc.textRenderer.draw(text.copy(), -halfWidth, 0f, 0x202020, false, matrices.peek().getModel(), immediate, true, 0, 0xf000f0); + mc.textRenderer.draw(text.copy(), -halfWidth, 0f, 0x202020, false, matrices.peek().getPositionMatrix(), immediate, true, 0, 0xf000f0); immediate.draw(); matrices.pop(); } - mc.textRenderer.draw(text, -halfWidth, 0f, -1, false, matrices.peek().getModel(), immediate, true, 0, 0xf000f0); + mc.textRenderer.draw(text, -halfWidth, 0f, -1, false, matrices.peek().getPositionMatrix(), immediate, true, 0, 0xf000f0); immediate.draw(); RenderSystem.disableBlend(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java index f9ac629e..12f4b0fd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java @@ -57,17 +57,17 @@ public class Vertexer { int[] color = quadColor.getAllColors(); if (cullMode != CULL_FRONT) { - vertexConsumer.vertex(matrices.peek().getModel(), x1, y1, z1).color(color[0], color[1], color[2], color[3]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x2, y2, z2).color(color[4], color[5], color[6], color[7]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x3, y3, z3).color(color[8], color[9], color[10], color[11]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x4, y4, z4).color(color[12], color[13], color[14], color[15]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x1, y1, z1).color(color[0], color[1], color[2], color[3]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x2, y2, z2).color(color[4], color[5], color[6], color[7]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x3, y3, z3).color(color[8], color[9], color[10], color[11]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x4, y4, z4).color(color[12], color[13], color[14], color[15]).next(); } if (cullMode != CULL_BACK) { - vertexConsumer.vertex(matrices.peek().getModel(), x4, y4, z4).color(color[0], color[1], color[2], color[3]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x3, y3, z3).color(color[4], color[5], color[6], color[7]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x2, y2, z2).color(color[8], color[9], color[10], color[11]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x1, y1, z1).color(color[12], color[13], color[14], color[15]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x4, y4, z4).color(color[0], color[1], color[2], color[3]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x3, y3, z3).color(color[4], color[5], color[6], color[7]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x2, y2, z2).color(color[8], color[9], color[10], color[11]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x1, y1, z1).color(color[12], color[13], color[14], color[15]).next(); } } @@ -132,8 +132,8 @@ public class Vertexer { } public static void vertexLine(MatrixStack matrices, VertexConsumer vertexConsumer, float x1, float y1, float z1, float x2, float y2, float z2, LineColor lineColor) { - Matrix4f model = matrices.peek().getModel(); - Matrix3f normal = matrices.peek().getNormal(); + Matrix4f model = matrices.peek().getPositionMatrix(); + Matrix3f normal = matrices.peek().getNormalMatrix(); Vec3f normalVec = getNormal(normal, x1, y1, z1, x2, y2, z2); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 250e5737..09320692 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,8 +29,8 @@ "fabricloader": ">=0.12.11", "fabric": "*", "cloth-config2": "*", - "minecraft": "1.17.x", - "java": ">=16" + "minecraft": "1.18.x", + "java": ">=17" }, "custom": { "modmenu": { diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index bfc6b0f2..abc219fa 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -1,11 +1,10 @@ { "required": true, "package": "me.xmrvizzy.skyblocker.mixin", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_17", "client": [ "ChatHudListenerMixin", "ClientPlayerEntityMixin", - "ClientPlayNetworkHandlerMixin", "InGameHudMixin", "ItemRendererMixin", "MinecraftClientMixin", -- cgit From 2c2c8ae6555d6f099b67c4af21fbe5a0e6fa4383 Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Sun, 12 Dec 2021 21:50:14 +0100 Subject: fix log4j2 --- gradle.properties | 10 +++++----- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index e4b56d12..a9840524 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties (https://fabricmc.net/versions.html) -minecraft_version=1.18 -yarn_mappings=1.18+build.1 -loader_version=0.12.8 +minecraft_version=1.18.1 +yarn_mappings=1.18.1+build.2 +loader_version=0.12.11 #Fabric api -fabric_version=0.43.1+1.18 +fabric_version=0.44.0+1.18 # Dependencies ## Cloth Api (https://www.curseforge.com/minecraft/mc-mods/cloth-config/files) -clothconfig_version=6.0.42 +clothconfig_version=6.1.48 ## Mod Menu (https://www.curseforge.com/minecraft/mc-mods/modmenu/files) mod_menu_version=3.0.0 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 54e9a60b..a33384a3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists \ No newline at end of file -- cgit From 329404b510645d6f59f7b3798cd35490d25fc6d4 Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Sun, 12 Dec 2021 22:05:05 +0100 Subject: update to 1.4.3 [skip ci] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ae3b825..56c1626e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ changed dependency Skyblocker requiere minimum **fabricloader** 0.12.11 Fixes -* security fix +* security fix Full Changelog: https://github.com/LifeIsAParadox/Skyblocker/compare/v1.4.1...v1.4.2 ___ -- cgit From fd0def9717dd7b2e961170c0e709ae682fd83de6 Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Sat, 18 Dec 2021 23:32:57 +0100 Subject: Create beta.yml --- .github/workflows/beta.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/beta.yml diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml new file mode 100644 index 00000000..c5927d9e --- /dev/null +++ b/.github/workflows/beta.yml @@ -0,0 +1,52 @@ +name: Build Beta + +on: + push: + branches: + - '**' + pull_request: + + +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + - uses: actions/github-script@v2 + with: + result-encoding: string + script: | + const fs = require("fs"); + let file = fs.readFileSync("./gradle.properties"); + file = file.toString().split("\n").map(e => e.trim().startsWith("mod_version") ? `${e}-beta-${process.env.GITHUB_SHA.substring(0, 7)}` : e).join("\n"); + fs.writeFileSync("./gradle.properties", file); + + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build + + - uses: actions/github-script@v2 + id: fname + with: + result-encoding: string + script: | + const fs = require("fs") + return fs.readdirSync("build/libs/").filter(e => !e.endsWith("dev.jar") && !e.endsWith("sources.jar") && e.endsWith(".jar"))[0].replace(".jar", ""); + + - uses: actions/upload-artifact@v2 + with: + name: ${{ steps.fname.outputs.result }} + path: build/libs/ \ No newline at end of file -- cgit From 286b6df579ad8290b19338dad5f10e78e578b3bb Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Tue, 25 Jan 2022 00:59:23 +0100 Subject: [skip ci] --- .github/workflows/buildrelease.yml | 92 ++++++++++++++++++++++++++++++++++++++ build.gradle | 5 ++- gradle.properties | 3 +- src/main/resources/fabric.mod.json | 5 +-- 4 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/buildrelease.yml diff --git a/.github/workflows/buildrelease.yml b/.github/workflows/buildrelease.yml new file mode 100644 index 00000000..b1fa84d8 --- /dev/null +++ b/.github/workflows/buildrelease.yml @@ -0,0 +1,92 @@ +# This is a basic workflow to help you get started with Actions + +name: Build Release + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + release: + types: [created] + +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build + + - uses: actions/upload-artifact@v2 + with: + name: Artifacts + path: build/libs/ + + - name: Read Changelog + id: read_changelog + shell: bash + run: | + CHANGELOG=$(sed '/___/Q' CHANGELOG.md | grep -v '# ') + echo "Changelog:\n$CHANGELOG" + CHANGELOG="${CHANGELOG//'%'/'%25'}" + CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" + CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" + echo "::set-output name=changelog::$CHANGELOG" + + - uses: actions/github-script@v2 + id: fname + with: + result-encoding: string + script: | + const fs = require("fs") + return fs.readdirSync("build/libs/").filter(e => !e.endsWith("dev.jar") && !e.endsWith("sources.jar") && e.endsWith(".jar"))[0] + - name: Release + id: uploadrelease + uses: softprops/action-gh-release@v1 + with: + body: ${{ steps.read_changelog.outputs.changelog }} + files: build/libs/${{ steps.fname.outputs.result }} + + - name: Publish to Modrinth + id: modrinth + env: + MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} + CHANGELOG: ${{ steps.read_changelog.outputs.changelog }} + run: ./gradlew publishModrinth + + - name: Get version tag + id: version_tag + run: | + [[ ! "$GITHUB_REF" =~ refs/tags ]] && exit + echo "::set-output name=value::${GITHUB_REF#refs/tags/}" + + - name: Discord notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + uses: Ilshidur/action-discord@master + with: + args: | + "@here" + "Skyblocker ${{ steps.version_tag.outputs.value }}" + "" + "Changelog" + "```md" + "${{ steps.read_changelog.outputs.changelog }}" + "```" + ":inbox_tray: Download latest version on Modrinth or Github:" + "<:modrinth:900697862206287882> <${{ steps.modrinth.outputs.url }}>" + "<:github:900697885706952725> <${{ steps.uploadrelease.outputs.url }}>" + "" + "" \ No newline at end of file diff --git a/build.gradle b/build.gradle index fc535314..a05703ab 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 archivesBaseName = project.archives_base_name -version = "${project.mod_version}+${project.minecraft_version}" +version = "${project.mod_version}+${project.suported_version}" group = project.maven_group repositories { @@ -103,8 +103,9 @@ task publishModrinth(type: TaskModrinthUpload) { token = System.getenv('MODRINTH_TOKEN') projectId = project.modrinth_id versionNumber = "v${project.version}" - versionName = "Skyblocker ${project.mod_version} (${project.minecraft_version})" + versionName = "Skyblocker ${project.mod_version} (${project.suported_version})" uploadFile = remapJar + addGameVersion('1.17.1') addGameVersion((String) project.minecraft_version) addLoader('fabric') versionType = VersionType.RELEASE diff --git a/gradle.properties b/gradle.properties index a9840524..3952ba70 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,5 @@ mod_menu_version=3.0.0 mod_version = 1.4.3 maven_group = me.xmrvizzy archives_base_name = skyblocker -modrinth_id=y6DuFGwJ \ No newline at end of file +modrinth_id=y6DuFGwJ +suported_version=1.17.x-1.18.x \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 09320692..8ef1482d 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -5,7 +5,7 @@ "name": "Skyblocker", "description": "Hypixel Skyblock Mod", "authors": ["xMrVizzy", "d3dx9", "LifeIsAParadox"], - "contributors": ["ExternalTime", "Zailer43"], + "contributors": ["ExternalTime", "Zailer43", "TacoMonkey"], "contact": { "homepage": "https://hysky.de", "sources": "https://github.com/LifeIsAParadox/Skyblocker", @@ -29,8 +29,7 @@ "fabricloader": ">=0.12.11", "fabric": "*", "cloth-config2": "*", - "minecraft": "1.18.x", - "java": ">=17" + "minecraft": ["1.18.x","1.17.x"] }, "custom": { "modmenu": { -- cgit From 555e91138895e98ee36426c11b8b75e6187573dd Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Sat, 22 Jan 2022 15:45:45 -0500 Subject: Added Wiki Lookup Added a keybind which, when pressed will open up the wiki page of the player's held item. --- .../xmrvizzy/skyblocker/SkyblockerInitializer.java | 2 + .../skyblocker/skyblock/item/WikiLookup.java | 70 ++++++++++++++++++++++ .../resources/assets/skyblocker/lang/en_us.json | 1 + 3 files changed, 73 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index b3a50697..93eac100 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; +import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import net.fabricmc.api.ClientModInitializer; public class SkyblockerInitializer implements ClientModInitializer { @@ -11,5 +12,6 @@ public class SkyblockerInitializer implements ClientModInitializer { HotbarSlotLock.init(); SkyblockerConfig.init(); PriceInfoTooltip.init(); + WikiLookup.init(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java new file mode 100644 index 00000000..ea2faeb4 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -0,0 +1,70 @@ +package me.xmrvizzy.skyblocker.skyblock.item; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.util.Util; +import org.lwjgl.glfw.GLFW; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; + +public class WikiLookup { + public static KeyBinding wikiLookup; + static MinecraftClient client = MinecraftClient.getInstance(); + static String id; + public static Gson gson = new Gson(); + + public static void init(){ + wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.wikiLookup", + GLFW.GLFW_KEY_Y, + "key.categories.skyblocker" + )); + ClientTickEvents.END_CLIENT_TICK.register(client -> { + while (wikiLookup.wasPressed()) { + id = getSkyblockId(); + + try { + //Setting up a connection with the repo + String urlString = "https://raw.githubusercontent.com/NotEnoughUpdates/NotEnoughUpdates-REPO/master/items/" + id + ".json"; + URL url = new URL(urlString); + URLConnection request = url.openConnection(); + request.connect(); + + //yoinking the wiki link + JsonElement root = JsonParser.parseReader(new InputStreamReader((InputStream) request.getContent())); + JsonObject rootobj = root.getAsJsonObject(); + String wikiLink = rootobj.get("info").getAsString(); + Util.getOperatingSystem().open(wikiLink); + } catch (IOException e) { + e.printStackTrace(); + } + + } + }); + } + + public static String getSkyblockId() { + + //Grabbing the skyblock NBT data + ItemStack mainHandStack = client.player.getMainHandStack(); + NbtCompound nbt = mainHandStack.getSubNbt("ExtraAttributes"); + if (nbt != null) { + id = nbt.getString("id"); + } + + return id; + } + +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index a1f0198e..680787e8 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -1,6 +1,7 @@ { "key.categories.skyblocker": "Skyblocker", "key.hotbarSlotLock": "Slot Lock (Hotbar)", + "key.wikiLookup": "Wiki Lookup", "text.autoconfig.skyblocker.title": "Skyblocker Settings", -- cgit From ca6ed04a8aa6880ff339d0b6557940ff638cff4c Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Sat, 22 Jan 2022 15:49:44 -0500 Subject: Updated FEATURES.md --- FEATURES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/FEATURES.md b/FEATURES.md index 9c9afafc..29adb224 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -7,4 +7,5 @@ * Drill Fuel in Item Durability Bar * Hotbar Slot Lock Keybind (Select the hotbar slot you want to lock/unlock and press the button) * price tooltip: npc, bazaar (avg, lbin), ah, museum -* reparty: write /rp to reparty \ No newline at end of file +* reparty: write /rp to reparty +* Wiki Lookup \ No newline at end of file -- cgit From 908f2546046086121c5ef903040e38f6ecbe57ea Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Sat, 22 Jan 2022 18:31:53 -0500 Subject: Squashed a bug and changed default hey to something less stupid --- .../java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java index ea2faeb4..30da694e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -10,6 +10,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; +import net.minecraft.text.Text; import net.minecraft.util.Util; import org.lwjgl.glfw.GLFW; @@ -28,7 +29,7 @@ public class WikiLookup { public static void init(){ wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( "key.wikiLookup", - GLFW.GLFW_KEY_Y, + GLFW.GLFW_KEY_F4, "key.categories.skyblocker" )); ClientTickEvents.END_CLIENT_TICK.register(client -> { @@ -47,8 +48,9 @@ public class WikiLookup { JsonObject rootobj = root.getAsJsonObject(); String wikiLink = rootobj.get("info").getAsString(); Util.getOperatingSystem().open(wikiLink); - } catch (IOException e) { + } catch (IOException | NullPointerException e) { e.printStackTrace(); + client.player.sendMessage(Text.of("Can't locate a wiki article for this item..."), false); } } @@ -58,8 +60,8 @@ public class WikiLookup { public static String getSkyblockId() { //Grabbing the skyblock NBT data - ItemStack mainHandStack = client.player.getMainHandStack(); - NbtCompound nbt = mainHandStack.getSubNbt("ExtraAttributes"); + ItemStack mainStack = client.player.getMainHandStack(); + NbtCompound nbt = mainStack.getSubNbt("ExtraAttributes"); if (nbt != null) { id = nbt.getString("id"); } -- cgit From d7e30fadc33f823f7f31d9ee320b6a61a7b188d6 Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Tue, 25 Jan 2022 03:21:38 +0100 Subject: update readme [skip ci] --- FEATURES.md | 8 ++++--- README.md | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 71 insertions(+), 10 deletions(-) diff --git a/FEATURES.md b/FEATURES.md index 29adb224..0b53c91f 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -1,11 +1,13 @@ * Bars: Health and absorption, Mana, Defense, XP * Hide Messages: Ability Cooldown, Heal, AOTE, Implosion, Molten Wave * Dungeon Minimap -* Dungeon Puzzle Solver: Three Weirdos, Blaze +* Dungeon Puzzle Solver: + * Three Weirdos + * Blaze * F7 Terminal: Order, Color, Name * Dwarven Mines Solver: Fetchur, Puzzler * Drill Fuel in Item Durability Bar -* Hotbar Slot Lock Keybind (Select the hotbar slot you want to lock/unlock and press the button) +* Hotbar Slot Lock Keybind (Select the hotbar slot you want to lock/unlock and press the lockbutton) * price tooltip: npc, bazaar (avg, lbin), ah, museum * reparty: write /rp to reparty -* Wiki Lookup \ No newline at end of file +* Wiki Lookup: press f4 to open the wiki page about the held item \ No newline at end of file diff --git a/README.md b/README.md index 2ec42dd3..f3f960d2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + + ## Skyblocker [![modrinth statistic](https://img.shields.io/badge/dynamic/json?color=5da545&label=Download&labelColor=cecece&query=downloads&url=https://api.modrinth.com/api/v1/mod/y6DuFGwJ&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMSAxMSIgd2lkdGg9IjE0LjY2NyIgaGVpZ2h0PSIxNC42NjciICB4bWxuczp2PSJodHRwczovL3ZlY3RhLmlvL25hbm8iPjxkZWZzPjxjbGlwUGF0aCBpZD0iQSI+PHBhdGggZD0iTTAgMGgxMXYxMUgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNBKSI+PHBhdGggZD0iTTEuMzA5IDcuODU3YTQuNjQgNC42NCAwIDAgMS0uNDYxLTEuMDYzSDBDLjU5MSA5LjIwNiAyLjc5NiAxMSA1LjQyMiAxMWMxLjk4MSAwIDMuNzIyLTEuMDIgNC43MTEtMi41NTZoMGwtLjc1LS4zNDVjLS44NTQgMS4yNjEtMi4zMSAyLjA5Mi0zLjk2MSAyLjA5MmE0Ljc4IDQuNzggMCAwIDEtMy4wMDUtMS4wNTVsMS44MDktMS40NzQuOTg0Ljg0NyAxLjkwNS0xLjAwM0w4LjE3NCA1LjgybC0uMzg0LS43ODYtMS4xMTYuNjM1LS41MTYuNjk0LS42MjYuMjM2LS44NzMtLjM4N2gwbC0uMjEzLS45MS4zNTUtLjU2Ljc4Ny0uMzcuODQ1LS45NTktLjcwMi0uNTEtMS44NzQuNzEzLTEuMzYyIDEuNjUxLjY0NSAxLjA5OC0xLjgzMSAxLjQ5MnptOS42MTQtMS40NEE1LjQ0IDUuNDQgMCAwIDAgMTEgNS41QzExIDIuNDY0IDguNTAxIDAgNS40MjIgMCAyLjc5NiAwIC41OTEgMS43OTQgMCA0LjIwNmguODQ4QzEuNDE5IDIuMjQ1IDMuMjUyLjgwOSA1LjQyMi44MDljMi42MjYgMCA0Ljc1OCAyLjEwMiA0Ljc1OCA0LjY5MSAwIC4xOS0uMDEyLjM3Ni0uMDM0LjU2bC43NzcuMzU3aDB6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM1ZGE0MjYiLz48L2c+PC9zdmc+)](https://modrinth.com/mod/skyblocker-liap) [![github statistic](https://img.shields.io/github/downloads/lifeisaparadox/skyblocker/total?labelColor=cecece&color=000000&label=Download&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMTIgMTIgNDAgNDAiPjxwYXRoIGZpbGw9IiMzMzMzMzMiIGQ9Ik0zMiwxMy40Yy0xMC41LDAtMTksOC41LTE5LDE5YzAsOC40LDUuNSwxNS41LDEzLDE4YzEsMC4yLDEuMy0wLjQsMS4zLTAuOWMwLTAuNSwwLTEuNywwLTMuMiBjLTUuMywxLjEtNi40LTIuNi02LjQtMi42QzIwLDQxLjYsMTguOCw0MSwxOC44LDQxYy0xLjctMS4yLDAuMS0xLjEsMC4xLTEuMWMxLjksMC4xLDIuOSwyLDIuOSwyYzEuNywyLjksNC41LDIuMSw1LjUsMS42IGMwLjItMS4yLDAuNy0yLjEsMS4yLTIuNmMtNC4yLTAuNS04LjctMi4xLTguNy05LjRjMC0yLjEsMC43LTMuNywyLTUuMWMtMC4yLTAuNS0wLjgtMi40LDAuMi01YzAsMCwxLjYtMC41LDUuMiwyIGMxLjUtMC40LDMuMS0wLjcsNC44LTAuN2MxLjYsMCwzLjMsMC4yLDQuNywwLjdjMy42LTIuNCw1LjItMiw1LjItMmMxLDIuNiwwLjQsNC42LDAuMiw1YzEuMiwxLjMsMiwzLDIsNS4xYzAsNy4zLTQuNSw4LjktOC43LDkuNCBjMC43LDAuNiwxLjMsMS43LDEuMywzLjVjMCwyLjYsMCw0LjYsMCw1LjJjMCwwLjUsMC40LDEuMSwxLjMsMC45YzcuNS0yLjYsMTMtOS43LDEzLTE4LjFDNTEsMjEuOSw0Mi41LDEzLjQsMzIsMTMuNHoiLz48L3N2Zz4%3D)](https://github.com/LifeIsAParadox/Skyblocker/releases/latest) @@ -5,23 +7,65 @@ [![Discord](https://img.shields.io/discord/879732108745125969?logo=discord&labelColor=cecece&color=7289DA&label=%E2%80%8B)](https://discord.com/invite/aNNJHQykck) [![modrinth statistic](https://img.shields.io/badge/buy%20me%20coffee-skyblocker?color=434B57&query=e&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgo8c3ZnIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiIHdpZHRoPSIxODEuOTg4Mm1tIiBoZWlnaHQ9IjExNS45NTYyOW1tIiB2aWV3Qm94PSIwIDAgNjQ0Ljg0MDEgNDEwLjg2ODc1IiBpZD0ic3ZnNDIzOCIgdmVyc2lvbj0iMS4xIiBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIxMzcyNSIgc29kaXBvZGk6ZG9jbmFtZT0iY3VwbG9nby5zdmciPgogIDxkZWZzIGlkPSJkZWZzNDI0MCIvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcgaWQ9ImJhc2UiIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgYm9yZGVyY29sb3I9IiM2NjY2NjYiIGJvcmRlcm9wYWNpdHk9IjEuMCIgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiIGlua3NjYXBlOnpvb209IjAuMzUiIGlua3NjYXBlOmN4PSI3ODAuMjc3MTgiIGlua3NjYXBlOmN5PSItMjE0LjU2NTYxIiBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIgc2hvd2dyaWQ9ImZhbHNlIiBmaXQtbWFyZ2luLXRvcD0iMCIgZml0LW1hcmdpbi1sZWZ0PSIwIiBmaXQtbWFyZ2luLXJpZ2h0PSIwIiBmaXQtbWFyZ2luLWJvdHRvbT0iMCIgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxMjgwIiBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI2OTkiIGlua3NjYXBlOndpbmRvdy14PSIwIiBpbmtzY2FwZTp3aW5kb3cteT0iMSIgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIvPgogIDxtZXRhZGF0YSBpZD0ibWV0YWRhdGE0MjQzIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yayByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPgogICAgICAgIDxkYzp0aXRsZS8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIiBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIiBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzcuNTc5OTY0LC0xMzUuNDk5MjcpIj4KICAgIDxnIGlkPSJnNDAiIHRyYW5zZm9ybT0ibWF0cml4KDEuMTQyMTUyOCwwLDAsLTEuMTQyMTUyOCwyNjUuOTMzOTgsNDYwLjczMDk1KSI+CiAgICAgIDxnIGlkPSJnNDE4NCI+CiAgICAgICAgPHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGgzOCIgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgZD0ibSAwLDAgYyAtMTkuOTQ2LC0yLjQ5MiAtMzYuMTUxLC0wLjYyMiAtMzYuMTUxLC0wLjYyMiBsIDAsMTIyLjEzMiAzOC4wMiwwIGMgMCwwIDQyLjM4NSwtMTEuODM5IDQyLjM4NSwtNTYuNzA0IEMgNDQuMjU0LDIzLjY4IDIzLjA2Myw3LjQ3OCAwLDAgTSAxMDUuMDYzLDg1LjczOSBDIDg4LjQzNSwxNzMuNTYgMC42MjQsMTg0LjQ3MyAwLjYyNCwxODQuNDczIGwgLTM5My4zMzMsMCBjIC0xMi45OSwwIC0xNC41ODgsLTE3LjE0OCAtMTQuNTg4LC0xNy4xNDggMCwwIC0xLjc1MiwtMTU3LjQzIC0wLjQ4MSwtMjU0LjExMiAzLjUyNCwtNTIuMDkzIDU1LjU5NywtNTcuNDM1IDU1LjU5NywtNTcuNDM1IDAsMCAxNzcuNzAxLDAuNTIgMjU3LjIsMS4wMzkgNTIuNDEsOS4xODEgNTcuNjc0LDU1LjE1NSA1Ny4xNTUsODAuMyA5My41MjcsLTUuMTk2IDE1OS41MTUsNjAuOCAxNDIuODg5LDE0OC42MjIiIHRyYW5zZm9ybT0ibWF0cml4KDEuMDk0NDI0NSwwLDAsMS4wOTQ0MjQ1LDI0Ni44NTUzNiw4Mi44NjE0NDYpIi8+CiAgICAgICAgPHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg0MiIgc3R5bGU9ImZpbGw6I2ZmNWY1ZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgZD0ibSAwLDAgYyA0LjQ0NSwtMi4yMzggNy4yODUsMC41NDMgNy4yODUsMC41NDMgMCwwIDY1LjA0NSw1OS4zNjcgOTQuMzQ4LDkzLjU1NyAyNi4wNjMsMzAuNTg2IDI3Ljc2Miw4Mi4xMjkgLTE2Ljk5NywxMDEuMzg4IC00NC43NTgsMTkuMjU4IC04MS41ODQsLTIyLjY1NyAtODEuNTg0LC0yMi42NTcgLTMxLjkzNSwzNS4xMjMgLTgwLjI2OCwzMy4zNDUgLTEwMi42MjMsOS41NzUgLTIyLjM1NCwtMjMuNzcgLTE0LjU0OCwtNjQuNTY4IDIuMTI5LC04Ny4yNzQgMTUuNjU1LC0yMS4zMTQgODQuNDY1LC04Mi42NDQgOTQuODk0LC05My4wMTYgMCwwIDAuNzYsLTAuNzk1IDIuNTQ4LC0yLjExNiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4=)](https://ko-fi.com/wohlhabend) -Hypixel Skyblock Mod for Minecraft 1.17+ this [Features](FEATURES.md) are implemented + +Hypixel Skyblock Mod for Minecraft 1.17.x + 1.18.x -### Table of content +### Table of content +* [Features](#features) +* [Images](#images) * [Requirements](#requirements) * [Install Fabric](#install-fabric) * [Install Skyblocker](#install-skyblocker) -* [Alternative](#alternative) easy install (modpack) (recommended) +* [Modpack](#modpack) easy install (recommended) Table of contents generated with markdown-toc +___ +## Features +
+open + +* Bars: Health and absorption, Mana, Defense, XP +* Hide Messages: Ability Cooldown, Heal, AOTE, Implosion, Molten Wave +* Dungeon Minimap +* Dungeon Puzzle Solver: + * Three Weirdos + * Blaze + * F7 Terminal: Order, Color, Name +* Dwarven Mines Solver: Fetchur, Puzzler +* Drill Fuel in Item Durability Bar +* Hotbar Slot Lock Keybind (Select the hotbar slot you want to lock/unlock and press the lockbutton) +* price tooltip: npc, bazaar (avg, lbin), ah, museum +* reparty: write /rp to reparty +* Wiki Lookup: press f4 to open the wiki page about the held item + +
+ +___ +## Images +
+open (no images yet) + + + +
+ ___ ## Requirements -**Fabric Loader**: https://fabricmc.net/use/ \ +
+open + +**Fabric Loader** 0.12.11 or higher: https://fabricmc.net/use/ \ **Fabric API**: https://modrinth.com/mod/fabric-api/versions \ (optional) **modmenu**: https://modrinth.com/mod/modmenu + +
+ ___ ## Install Fabric +
+open + 1. Download the Fabric installer from https://fabricmc.net/use/. Similar to Forge, this installer will generate all of the required files for whichever version of Minecraft you select. However, Fabric does not have multiple installers for each version and you can install any version you want via the same installer. 2. Open the Fabric installer, which should automatically have the `Client` tab selected at the top. \ ![install image](https://web.archive.org/web/20211023134637im_/https://images.shockbyte.com/knowledgebase/javaw_0EdmmFE7hw.png) @@ -35,8 +79,15 @@ ___ 1. Open the Minecraft Launcher and the newly created Fabric profile should automatically be selected. Click `Play`, and your Fabric install will load up. \ ![Install image 2](https://web.archive.org/web/20211023134637im_/https://images.shockbyte.com/knowledgebase/javaw_r8qQWFtkAh.png) \ Source and images: schockbyte.com + +
+ ___ ## Install Skyblocker + +
+open + 1. Download Skyblocker from [Modrinth](https://modrinth.com/mod/skyblocker-liap/versions) or [Github](https://github.com/LifeIsAParadox/Skyblocker/releases/latest) 2. Download Fabric Api from [Modrinth](https://modrinth.com/mod/fabric-api/versions) or [Curseforge](https://www.curseforge.com/minecraft/mc-mods/fabric-api) 1. (optional) Download Modmenu from [Modrinth](https://modrinth.com/mod/modmenu/versions) or [Curseforge](https://www.curseforge.com/minecraft/mc-mods/modmenu) @@ -51,9 +102,17 @@ ___ 6. After moving all the files, open the Minecraft Launcher and start the game using your Fabric profile. Source and image: schockbyte.com + +
+ ___ -## Alternative -Installing via modpack +## Modpack + +
+open + 1. Download the [skyblocker modpack](https://github.com/LifeIsAParadox/Skyblocker-modpack/releases/latest). Select Multimc or ~~Curseforge~~ version. 1. (Multimc) Drag and drop the zip into Multi mc and start the new instance. Every time you start the instance the modpack checks and updates mods to the latest version. - 2. (Curseforge) not implemented yet \ No newline at end of file + 2. (Curseforge) not implemented yet + +
\ No newline at end of file -- cgit From 7510d292ca8e9e32df8efb6c204f5ece9a00d23a Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Tue, 25 Jan 2022 16:31:16 -0500 Subject: Added rich presence and fishing ding --- build.gradle | 7 +- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 8 ++- .../skyblocker/config/SkyblockerConfig.java | 24 +++++++ .../skyblocker/mixin/SoundManagerMixin.java | 27 ++++++++ .../java/me/xmrvizzy/skyblocker/utils/Discord.java | 74 ++++++++++++++++++++++ .../java/me/xmrvizzy/skyblocker/utils/Utils.java | 49 ++++++++++++++ .../resources/assets/skyblocker/lang/en_us.json | 10 ++- src/main/resources/skyblocker.mixins.json | 9 +-- 8 files changed, 201 insertions(+), 7 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java diff --git a/build.gradle b/build.gradle index a05703ab..16fe78a9 100644 --- a/build.gradle +++ b/build.gradle @@ -29,6 +29,7 @@ repositories { url 'https://repo.maven.apache.org/maven2' name 'Maven Central' } + maven {url "https://jitpack.io"} } @@ -53,7 +54,11 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - + + modImplementation("com.github.thatgravyboat:DiscordIPC:d813b27") { + exclude module: 'log4j' + } + include "com.github.thatgravyboat:DiscordIPC:d813b27" // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. // You may need to force-disable transitiveness on them. } diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 6c6a6d2a..fac4107a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -1,7 +1,9 @@ package me.xmrvizzy.skyblocker; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.container.ContainerSolverManager; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; +import me.xmrvizzy.skyblocker.utils.Discord; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; @@ -35,7 +37,11 @@ public class SkyblockerMod { if (ticks % 20 == 0) { if (client.world != null && !client.isInSingleplayer()) Utils.sbChecker(); - + Discord.update(); + if (Discord.connected){ + if (SkyblockerConfig.get().general.richPresence.enableRichPresence) Discord.updatePresence(Discord.getInfo(), SkyblockerConfig.get().general.richPresence.customMessage); + if (!SkyblockerConfig.get().general.richPresence.enableRichPresence || !Utils.isSkyblock || client.world == null) Discord.stop(); + } ticks = 0; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 74cff226..a424ea14 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -24,6 +24,10 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.TransitiveObject public Messages messages = new Messages(); + @ConfigEntry.Category("fishing") + @ConfigEntry.Gui.TransitiveObject + public Fishing fishing = new Fishing(); + public static class General { public String apiKey; @@ -31,6 +35,10 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.CollapsibleObject(startExpanded = true) public Bars bars = new Bars(); + @ConfigEntry.Category("RichPresence") + @ConfigEntry.Gui.CollapsibleObject() + public RichPresence richPresence = new RichPresence(); + @ConfigEntry.Gui.Excluded public List lockedSlots = new ArrayList<>(); } @@ -38,6 +46,13 @@ public class SkyblockerConfig implements ConfigData { public static class Bars { public boolean enableBars = true; } + public static class RichPresence { + @ConfigEntry.Gui.Tooltip() + public boolean enableRichPresence = true; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) + public Info info = Info.LOCATION; + public String customMessage; + } public static class Locations { @ConfigEntry.Category("dungeons") @@ -80,6 +95,15 @@ public class SkyblockerConfig implements ConfigData { public boolean hideAds = false; } + public static class Fishing { + public boolean enableFishingDing = false; + } + public enum Info { + PIGGY, + BITS, + LOCATION + } + public static void init() { AutoConfig.register(SkyblockerConfig.class, GsonConfigSerializer::new); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java new file mode 100644 index 00000000..94380724 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java @@ -0,0 +1,27 @@ +package me.xmrvizzy.skyblocker.mixin; + + +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.sound.SoundInstance; +import net.minecraft.client.sound.SoundManager; +import net.minecraft.sound.SoundEvents; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SoundManager.class) +public class SoundManagerMixin { + + private MinecraftClient client = MinecraftClient.getInstance(); + + @Inject(at = @At("HEAD"), method = "play(Lnet/minecraft/client/sound/SoundInstance;)V") + private void play(SoundInstance sound, CallbackInfo ci) { + if (sound.getId().toString().equals("minecraft:entity.player.splash")){ + if (client.player.fishHook != null) + if (client.player.fishHook.isInOpenWater() && sound.getX() != client.player.getX() && sound.getY() != client.player.getY() && sound.getZ() != client.player.getZ() && SkyblockerConfig.get().fishing.enableFishingDing) + client.player.playSound(SoundEvents.ENTITY_ARROW_HIT_PLAYER, 1, 1); + } + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java new file mode 100644 index 00000000..e04f2bdd --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java @@ -0,0 +1,74 @@ +package me.xmrvizzy.skyblocker.utils; + +import com.jagrosh.discordipc.IPCClient; +import com.jagrosh.discordipc.IPCListener; +import com.jagrosh.discordipc.entities.RichPresence; +import com.jagrosh.discordipc.entities.RichPresenceButton; +import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.DecimalFormat; + + +public class Discord { + public static Logger logger = LoggerFactory.getLogger(SkyblockerMod.NAMESPACE); + public static IPCClient ipcClient = new IPCClient(934607927837356052L); + public static boolean connected = false; + public static boolean warned = false; + public static DecimalFormat dFormat = new DecimalFormat("###,###.##"); + + + public static void updatePresence(String state, String details){ + logger.debug("updatePresence"); + RichPresence.Builder builder = new RichPresence.Builder(); + RichPresenceButton[] button = new RichPresenceButton[0]; + builder.setState(state) + .setDetails(details) + .setButtons(button) + .setLargeImage("skyblocker-default"); + ipcClient.sendRichPresence(builder.build()); + } + + public static String getInfo(){ + String info = null; + if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.BITS) info = "Bits: " + Utils.getBits(); + if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.PIGGY) info = "Purse: " + dFormat.format(Utils.getPurse()); + if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.LOCATION) info = "⏣ " + Utils.getLocation(); + return info; + } + + public static void stop(){ + ipcClient.close(); + ipcClient = null; + connected = false; + } + + public static void update(){ + if (Utils.isSkyblock && SkyblockerConfig.get().general.richPresence.enableRichPresence){ + + if (!connected){ + try { + ipcClient = new IPCClient(934607927837356052L); + ipcClient.connect(); + connected = true; + + } catch (Exception e) { + if (!warned){ + if (e.getLocalizedMessage().equals("java.net.SocketException: Connection refused")) + logger.warn("Discord client not running"); + warned = true; + } + } + } + + ipcClient.setListener(new IPCListener() { + @Override + public void onDisconnect(IPCClient client, Throwable t) { + IPCListener.super.onDisconnect(client, t); + connected = false; + } + }); + } +}} diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index 87e5c846..93a28993 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -2,6 +2,7 @@ package me.xmrvizzy.skyblocker.utils; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.minecraft.client.MinecraftClient; @@ -33,6 +34,7 @@ public class Utils { ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip); } isSkyblock = true; + } else isSkyblock = false; @@ -44,6 +46,53 @@ public class Utils { } } + public static String getLocation() { + String location = null; + List sidebarLines = getSidebar(); + try{ + for (int i = 0; i < sidebarLines.size(); i++) { + if(sidebarLines.get(i).contains("⏣")) location = sidebarLines.get(i); + } + location = location.replace('⏣', ' ').strip(); + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + } + return location; + } + public static double getPurse() { + String purseString = null; + double purse = 0; + + List sidebarLines = getSidebar(); + try{ + for (int i = 0; i < sidebarLines.size(); i++) { + if(sidebarLines.get(i).contains("Piggy:")) purseString = sidebarLines.get(i); + if(sidebarLines.get(i).contains("Purse:")) purseString = sidebarLines.get(i); + } + if (purseString != null) purse = Double.parseDouble(purseString.replaceAll("[^0-9.]", "").strip()); + else purse = 0; + + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + } + return purse; + } + public static int getBits() { + int bits = 0; + String bitsString = null; + List sidebarLines = getSidebar(); + try{ + for (int i = 0; i < sidebarLines.size(); i++) { + if(sidebarLines.get(i).contains("Bits")) bitsString = sidebarLines.get(i); + } + bits = Integer.parseInt(bitsString.replaceAll("Bits:", "").strip()); + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + } + return bits; + } + + public static List getSidebar() { List lines = new ArrayList<>(); MinecraftClient client = MinecraftClient.getInstance(); diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 680787e8..0ad63665 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -9,6 +9,11 @@ "text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API Key (WIP)", "text.autoconfig.skyblocker.option.general.bars": "Health, Mana, Defence & XP Bars", "text.autoconfig.skyblocker.option.general.bars.enableBars": "Enable Bars", + "text.autoconfig.skyblocker.option.general.richPresence": "Discord Rich Presence", + "text.autoconfig.skyblocker.option.general.richPresence.info": "Skyblock Info", + "text.autoconfig.skyblocker.option.general.richPresence.enableRichPresence": "Enabled", + "text.autoconfig.skyblocker.option.general.richPresence.customMessage": "Custom Message", + "text.autoconfig.skyblocker.category.locations": "Locations", "text.autoconfig.skyblocker.option.locations.dungeons": "Dungeons", @@ -32,5 +37,8 @@ "text.autoconfig.skyblocker.option.messages.hideAOTE": "Hide AOTE Messages", "text.autoconfig.skyblocker.option.messages.hideImplosion": "Hide Implosion Message", "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "Hide Molten Wave Message", - "text.autoconfig.skyblocker.option.messages.hideAds": "Hide Ads From Public Chat" + "text.autoconfig.skyblocker.option.messages.hideAds": "Hide Ads From Public Chat", + + "text.autoconfig.skyblocker.category.fishing": "Fishing", + "text.autoconfig.skyblocker.option.fishing.enableFishingDing": "Enable Fishing Ding" } \ No newline at end of file diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index abc219fa..7fd36007 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -3,15 +3,16 @@ "package": "me.xmrvizzy.skyblocker.mixin", "compatibilityLevel": "JAVA_17", "client": [ + "AccessorWorldRenderer", "ChatHudListenerMixin", "ClientPlayerEntityMixin", + "GenericContainerScreenHandlerMixin", + "GenericContainerScreenMixin", "InGameHudMixin", "ItemRendererMixin", + "LeverBlockMixin", "MinecraftClientMixin", - "AccessorWorldRenderer", - "GenericContainerScreenMixin", - "GenericContainerScreenHandlerMixin", - "LeverBlockMixin" + "SoundManagerMixin" ], "injectors": { "defaultRequire": 1 -- cgit From 68845ac4718986e22f47fbd38a43d10116137889 Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Tue, 25 Jan 2022 16:53:02 -0500 Subject: Simple typo fix --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56c1626e..d6f13385 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Release 1.4.3 -changed dependency Skyblocker requiere minimum **fabricloader** 0.12.11 +changed dependency Skyblocker requires minimum **fabricloader** 0.12.11 Fixes * security fix @@ -104,4 +104,4 @@ ___ # Skyblocker Fabric 1.17.1 This release updates the skyblocker mod to mc version 1.17. -This is the first time i created/edited a mod. \ No newline at end of file +This is the first time I created/edited a mod. \ No newline at end of file -- cgit