Skip to content

Commit

Permalink
Port to forge
Browse files Browse the repository at this point in the history
  • Loading branch information
dima-dencep committed Nov 27, 2023
1 parent b4efd59 commit 17605c9
Show file tree
Hide file tree
Showing 15 changed files with 290 additions and 181 deletions.
89 changes: 66 additions & 23 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,72 @@
on:
push:
branches: [ "fabric-1.19.3" ]
pull_request:
branches: [ "fabric-1.19.3" ]

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build --stacktrace --info
- name: Upload a Build Artifact
uses: actions/upload-artifact@v3
with:
name: Blur-Artifact
path: build/libs/blur-*.*.jar
if-no-files-found: error
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17

- name: Get previous tag
run: echo "previous_tag=$(git rev-parse $(git describe --tags --abbrev=0 --exclude *-dev) 2>/dev/null || echo '')" >> $GITHUB_ENV

- name: Build Changelog
id: build_changelog
uses: metcalfc/[email protected]
if: env.previous_tag
with:
myToken: ${{ secrets.GITHUB_TOKEN }}
head-ref: ${{ github.ref }}
base-ref: ${{ env.previous_tag }}
fetch: false

- name: Read value from Properties-file
id: read_property
uses: christian-draeger/[email protected]
with:
path: './gradle.properties'
properties: 'mod_version minecraft_version'

- name: Upload assets to releases
run: |
chmod +x gradlew
./gradlew build
- name: Publish to Modrinth & CurseForge
uses: Kir-Antipov/[email protected]
with:
modrinth-id: oY2B1pjg
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}

curseforge-id: 654373
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}

github-token: ${{ secrets.GITHUB_TOKEN }}

name: "[${{ steps.read_property.outputs.minecraft_version }}] v${{ steps.read_property.outputs.mod_version }}"

changelog: ${{steps.build_changelog.outputs.changelog}}

version-type: release

loaders: |
neoforge
forge
game-versions: |
${{ steps.read_property.outputs.minecraft_version }}
dependencies: |
config-menus-forge(optional){modrinth:5WeWGLoJ}{curseforge:544048}
java: |
17
44 changes: 21 additions & 23 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
plugins {
id 'fabric-loom' version '1.2-SNAPSHOT'
id 'dev.architectury.loom' version '1.2-SNAPSHOT'
id "io.github.p03w.machete" version "2.+"
id 'maven-publish'
}

loom {
forge {
mixinConfigs = [
"mixins.blur.json"
]
}
}

sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

Expand All @@ -12,42 +21,26 @@ group = project.maven_group

repositories {
maven {
name = 'Ladysnake Mods'
url = 'https://ladysnake.jfrog.io/artifactory/mods'
content {
includeGroup 'io.github.ladysnake'
includeGroupByRegex 'io\\.github\\.onyxstudios.*'
}
}
maven {
url = 'https://maven.terraformersmc.com/releases'
name = 'ConstructLegacy'
url = 'https://repo.constructlegacy.ru/public'
content {
includeGroup 'com.terraformersmc'
includeGroup 'com.github.dima_dencep.mods'
}
}
maven {
url = "https://api.modrinth.com/maven"
}
}

dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
forge "net.minecraftforge:forge:${project.loader_version}"

modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modImplementation "io.github.ladysnake:satin:${satin_version}"
include "io.github.ladysnake:satin:${satin_version}"

implementation 'com.google.code.findbugs:jsr305:3.0.2'
modImplementation "maven.modrinth:midnightlib:${project.midnightlib_version}"
include "maven.modrinth:midnightlib:${project.midnightlib_version}"
modImplementation include("com.github.dima_dencep.mods:satin-forge:${satin_version}")
}

processResources {
inputs.property "version", project.version

filesMatching("fabric.mod.json") {
filesMatching("META-INF/mods.toml") {
expand "version": project.version
}
}
Expand All @@ -65,6 +58,11 @@ jar {
from "LICENSE"
}

machete {
ignoredTasks.add("shadowJar")
ignoredTasks.add("jar")
}

// configure the maven publication
publishing {
publications {
Expand Down
19 changes: 9 additions & 10 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G

loom.platform=forge

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.20
yarn_mappings=1.20+build.1
loader_version=0.14.21
minecraft_version=1.20.1
yarn_mappings=1.20.1+build.10
loader_version=1.20.1-47.1.3

# Mod Properties
mod_version=3.1.0
maven_group=com.tterrag.blur
archives_base_name=blur
mod_version=3.1.1
maven_group=com.github.dima_dencep.mods
archives_base_name=blur-forge

# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
fabric_version=0.83.0+1.20
satin_version=1.13.0
midnightlib_version=1.4.1-fabric
satin_version=1.20.1+1.15.0-SNAPSHOT
9 changes: 4 additions & 5 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
pluginManagement {
repositories {
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
}
maven { url "https://maven.fabricmc.net/" }
maven { url "https://maven.architectury.dev/" }
maven { url "https://maven.minecraftforge.net/" }
gradlePluginPortal()
}
}

rootProject.name = "blur"
rootProject.name = "blur-forge"
58 changes: 36 additions & 22 deletions src/main/java/com/tterrag/blur/Blur.java
Original file line number Diff line number Diff line change
@@ -1,58 +1,72 @@
package com.tterrag.blur;

import com.tterrag.blur.config.BlurConfig;
import eu.midnightdust.lib.util.MidnightColorUtil;
import ladysnake.satin.api.event.ShaderEffectRenderCallback;
import ladysnake.satin.api.managed.ManagedShaderEffect;
import ladysnake.satin.api.managed.ShaderEffectManager;
import ladysnake.satin.api.managed.uniform.Uniform1f;
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.Identifier;
import net.minecraftforge.client.event.ScreenEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;

import java.awt.Color;
import java.util.Objects;

public class Blur implements ClientModInitializer {

@Mod(Blur.MODID)
public class Blur {
public static final String MODID = "blur";
public static final MinecraftClient client = MinecraftClient.getInstance();
public static long start;
public static String prevScreen;
public static String oldScreen;
public static boolean screenHasBackground;

private static final ManagedShaderEffect blur = ShaderEffectManager.getInstance().manage(new Identifier(MODID, "shaders/post/fade_in_blur.json"),
shader -> shader.setUniformValue("Radius", (float) BlurConfig.radius));
shader -> shader.setUniformValue("Radius", BlurConfig.INSTANCE.radius.get().floatValue()));
private static final Uniform1f blurProgress = blur.findUniform1f("Progress");

@Override
public void onInitializeClient() {
BlurConfig.init("blur", BlurConfig.class);
public Blur() {
BlurConfig.CONFIG_SPEC_PAIR.getValue(); // pseudo-register

ShaderEffectRenderCallback.EVENT.register((deltaTick) -> {
MinecraftForge.EVENT_BUS.<ShaderEffectRenderCallback>addListener(event -> {
if (start > 0) {
blurProgress.set(getProgress(client.currentScreen != null));
blur.render(deltaTick);
blur.render(event.tickDelta);
}
});

MinecraftForge.EVENT_BUS.<ScreenEvent.BackgroundRendered>addListener(event -> Blur.screenHasBackground = true);
MinecraftForge.EVENT_BUS.<ScreenEvent.Opening>addListener(event -> {
if (event.getCurrentScreen() != null) {
oldScreen = event.getCurrentScreen().getClass().getName();
}

Blur.onScreenChange(event.getNewScreen());
});
MinecraftForge.EVENT_BUS.<ScreenEvent.Closing>addListener(event -> Blur.onScreenChange(BlurConfig.INSTANCE.strangeEffect.get() ? null : Objects.equals(oldScreen, event.getScreen().getClass().getName()) ? event.getScreen() : null));
}

private static boolean doFade = false;

public static void onScreenChange(Screen newGui) {
String guiClassName = newGui == null ? null : newGui.getClass().getName();

if (client.world != null) {
boolean excluded = newGui == null || BlurConfig.blurExclusions.stream().anyMatch(exclusion -> newGui.getClass().getName().contains(exclusion));
boolean excluded = newGui == null || BlurConfig.INSTANCE.blurExclusions.get().parallelStream().anyMatch(guiClassName::contains);
if (!excluded) {
screenHasBackground = false;
if (BlurConfig.showScreenTitle) System.out.println(newGui.getClass().getName());
blur.setUniformValue("Radius", (float) BlurConfig.radius);
if (BlurConfig.INSTANCE.showScreenTitle.get()) System.out.println(guiClassName);
blur.setUniformValue("Radius", BlurConfig.INSTANCE.radius.get().floatValue());
if (doFade) {
start = System.currentTimeMillis();
doFade = false;
}
prevScreen = newGui.getClass().getName();
} else if (newGui == null && BlurConfig.fadeOutTimeMillis > 0 && !Objects.equals(prevScreen, "")) {
blur.setUniformValue("Radius", (float) BlurConfig.radius);
prevScreen = guiClassName;
} else if (newGui == null && BlurConfig.INSTANCE.fadeOutTimeMillis.get() > 0 && !Objects.equals(prevScreen, "")) {
blur.setUniformValue("Radius", BlurConfig.INSTANCE.radius.get().floatValue());
start = System.currentTimeMillis();
doFade = true;
} else {
Expand All @@ -67,12 +81,12 @@ public static void onScreenChange(Screen newGui) {
private static float getProgress(boolean fadeIn) {
float x;
if (fadeIn) {
x = Math.min((System.currentTimeMillis() - start) / (float) BlurConfig.fadeTimeMillis, 1);
if (BlurConfig.ease) x *= (2 - x); // easeInCubic
x = Math.min((System.currentTimeMillis() - start) / (float) BlurConfig.INSTANCE.fadeTimeMillis.get(), 1);
if (BlurConfig.INSTANCE.ease.get()) x *= (2 - x); // easeInCubic
}
else {
x = Math.max(1 + (start - System.currentTimeMillis()) / (float) BlurConfig.fadeOutTimeMillis, 0);
if (BlurConfig.ease) x *= (2 - x); // easeOutCubic
x = Math.max(1 + (start - System.currentTimeMillis()) / (float) BlurConfig.INSTANCE.fadeOutTimeMillis.get(), 0);
if (BlurConfig.INSTANCE.ease.get()) x *= (2 - x); // easeOutCubic
if (x <= 0) {
start = 0;
screenHasBackground = false;
Expand All @@ -82,8 +96,8 @@ private static float getProgress(boolean fadeIn) {
}

public static int getBackgroundColor(boolean second, boolean fadeIn) {
int a = second ? BlurConfig.gradientEndAlpha : BlurConfig.gradientStartAlpha;
var col = MidnightColorUtil.hex2Rgb(second ? BlurConfig.gradientEnd : BlurConfig.gradientStart);
int a = second ? BlurConfig.INSTANCE.gradientEndAlpha.get() : BlurConfig.INSTANCE.gradientStartAlpha.get();
var col = Color.decode(second ? BlurConfig.INSTANCE.gradientEnd.get() : BlurConfig.INSTANCE.gradientStart.get());
int r = (col.getRGB() >> 16) & 0xFF;
int b = (col.getRGB() >> 8) & 0xFF;
int g = col.getRGB() & 0xFF;
Expand Down
Loading

0 comments on commit 17605c9

Please sign in to comment.