Skip to content

Commit

Permalink
1.0.3 release: ability to disable PNG recompression
Browse files Browse the repository at this point in the history
  • Loading branch information
hevav committed Feb 3, 2023
1 parent 693a816 commit df3137f
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 36 deletions.
57 changes: 42 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,67 @@
name: Java CI with Gradle

on: [ push, pull_request ]
on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 11, 17 ]
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@v3.0.1
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v3.1.1
uses: actions/checkout@v3.0.0
- name: Set up JDK
uses: actions/setup-java@v3.0.0
with:
distribution: adopt
java-version: ${{ matrix.java }}
java-version: 11
- name: Build FastMOTD
run: ./gradlew build
- name: Upload FastMOTD
uses: actions/upload-artifact@v3.0.0
with:
name: FastMOTD Built On ${{ matrix.java }} JDK
name: FastMOTD
path: "build/libs/FastMOTD*.jar"
- uses: dev-drprasad/delete-tag-and-release@v0.2.0
if: ${{ github.event_name == 'push' }}
with:
delete_release: true
tag_name: dev-build-jdk-${{ matrix.java }}
tag_name: dev-build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Find git version
id: git-version
run: echo "id=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Find correct JAR
if: ${{ github.event_name == 'push' }}
id: find-jar
run: |
output="$(find build/libs/ ! -name "*-javadoc.jar" ! -name "*-sources.jar" -type f -printf "%f\n")"
echo "::set-output name=jarname::$output"
- name: Release the build
uses: ncipollo/release-action@v1.10.0
if: ${{ github.event_name == 'push' }}
uses: ncipollo/release-action@v1
with:
artifacts: "build/libs/FastMOTD*.jar"
artifacts: build/libs/${{ steps.find-jar.outputs.jarname }}
body: ${{ join(github.event.commits.*.message, '\n') }}
prerelease: true
name: JDK ${{ matrix.java }} Dev-build
tag: dev-build-jdk-${{ matrix.java }}
name: Dev-build ${{ steps.git-version.outputs.id }}
tag: dev-build
- name: Upload to Modrinth
if: ${{ github.event_name == 'push' }}
uses: RubixDev/modrinth-upload@v1.0.0
with:
token: ${{ secrets.MODRINTH_TOKEN }}
file_path: build/libs/${{ steps.find-jar.outputs.jarname }}
name: Dev-build ${{ steps.git-version.outputs.id }}
version: ${{ steps.git-version.outputs.id }}
changelog: ${{ join(github.event.commits.*.message, '\n') }}
game_versions: 1.7.2
release_type: beta
loaders: velocity
featured: false
project_id: OfMfkdiO
51 changes: 51 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Java CI with Gradle

on:
release:
types: [published]

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3.0.0
- name: Set up JDK
uses: actions/setup-java@v3.0.0
with:
distribution: adopt
java-version: 11
- name: Build FastMOTD
run: ./gradlew build
- name: Upload FastMOTD
uses: actions/upload-artifact@v3.0.0
with:
name: FastMOTD
path: "build/libs/FastMOTD*.jar"
- name: Find correct JAR
id: find-jar
run: |
output="$(find build/libs/ ! -name "*-javadoc.jar" ! -name "*-sources.jar" -type f -printf "%f\n")"
echo "::set-output name=jarname::$output"
- name: Upload to the GitHub release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: build/libs/${{ steps.find-jar.outputs.jarname }}
asset_name: ${{ steps.find-jar.outputs.jarname }}
asset_content_type: application/java-archive
- name: Upload to Modrinth
uses: RubixDev/modrinth-upload@v1.0.0
with:
token: ${{ secrets.MODRINTH_TOKEN }}
file_path: build/libs/${{ steps.find-jar.outputs.jarname }}
name: Release ${{ github.event.release.tag_name }}
version: ${{ github.event.release.tag_name }}
changelog: ${{ github.event.release.body }}
game_versions: 1.7.2
release_type: release
loaders: velocity
featured: false
project_id: OfMfkdiO
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.2
1.0.3
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ plugins {
}

setGroup("net.elytrium")
setVersion("1.0.2")
setVersion("1.0.3")

java {
setSourceCompatibility(JavaVersion.VERSION_11)
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/net/elytrium/fastmotd/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ public static class MAIN {
public int FAKE_ONLINE_ADD_PERCENT = 20;
@Comment({
"Accepted values: from 0.0 to 1.0.",
"Keep this value as low as possible"
"Keep this value as low as possible",
"Set -1 to disable PNG recompression"
})
public double PNG_QUALITY = 0.0;
public boolean LOG_PINGS = false;
Expand Down
41 changes: 23 additions & 18 deletions src/main/java/net/elytrium/fastmotd/utils/MOTDGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,28 +91,33 @@ private void generate(int i, String favicon) {
}

private String getFavicon(Path faviconLocation) throws IOException {
BufferedImage image = ImageIO.read(Files.newInputStream(faviconLocation));

ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
try (ImageOutputStream out = ImageIO.createImageOutputStream(outBytes)) {
ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(image);
ImageWriter writer = ImageIO.getImageWriters(type, "png").next();

ImageWriteParam param = writer.getDefaultWriteParam();
if (param.canWriteCompressed()) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality((float) Settings.IMP.MAIN.PNG_QUALITY);
byte[] imageBytes;

if (Settings.IMP.MAIN.PNG_QUALITY < 0) {
imageBytes = Files.readAllBytes(faviconLocation);
} else {
BufferedImage image = ImageIO.read(Files.newInputStream(faviconLocation));
ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
try (ImageOutputStream out = ImageIO.createImageOutputStream(outBytes)) {
ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(image);
ImageWriter writer = ImageIO.getImageWriters(type, "png").next();

ImageWriteParam param = writer.getDefaultWriteParam();
if (param.canWriteCompressed()) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality((float) Settings.IMP.MAIN.PNG_QUALITY);
}

writer.setOutput(out);
writer.write(null, new IIOImage(image, null, null), param);
writer.dispose();
}

writer.setOutput(out);
writer.write(null, new IIOImage(image, null, null), param);
writer.dispose();
imageBytes = outBytes.toByteArray();
outBytes.close();
}

String favicon = "data:image/png;base64," + Base64.getEncoder().encodeToString(outBytes.toByteArray());
outBytes.close();

return favicon;
return "data:image/png;base64," + Base64.getEncoder().encodeToString(imageBytes);
}

public void update(int max, int online) {
Expand Down

0 comments on commit df3137f

Please sign in to comment.