Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ jobs:
- name: setup jdk
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'microsoft'
java-version: '25'
distribution: microsoft
- name: make gradle wrapper executable
run: chmod +x ./gradlew
- name: build
Expand All @@ -27,4 +27,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: Artifacts
path: build/libs/
path: build/libs/
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
<h3 align="center">splashwrap</h3>

## Features

Enables line wrapping for long resource pack splash texts. Configurable maximum line length and minimum text scale.

Compatible with [Give me a new splash text!](https://modrinth.com/mod/give-me-a-new-splash-text).

### Dependencies

[Mod Menu](https://modrinth.com/mod/modmenu) and [Cloth Config](https://modrinth.com/mod/cloth-config) optionally required to change config.
[Mod Menu](https://modrinth.com/mod/modmenu) and [Cloth Config](https://modrinth.com/mod/cloth-config) optionally required to change config.
24 changes: 8 additions & 16 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version "${loom_version}"
id 'net.fabricmc.fabric-loom' version "${loom_version}"
id 'maven-publish'
}

Expand All @@ -16,15 +16,13 @@ repositories {
}

dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings loom.officialMojangMappings()
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"

modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") {
api("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") {
exclude(group: "net.fabricmc.fabric-api")
}
modCompileOnly "com.terraformersmc:modmenu:${project.mod_menu_version}"
compileOnly "com.terraformersmc:modmenu:${project.mod_menu_version}"
}

processResources {
Expand All @@ -35,14 +33,8 @@ processResources {
}
}

configurations.all {
resolutionStrategy {
force("net.fabricmc:fabric-loader:$loader_version")
}
}

tasks.withType(JavaCompile).configureEach {
it.options.release = 21
it.options.release = 25
}

java {
Expand All @@ -51,8 +43,8 @@ java {
// If you remove this line, sources will not be generated.
withSourcesJar()

sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}

jar {
Expand All @@ -79,4 +71,4 @@ publishing {
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}
}
16 changes: 9 additions & 7 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@
org.gradle.jvmargs=-Xmx1G
org.gradle.parallel=true

# IntelliJ IDEA is not yet fully compatible with configuration cache, see: https://github.com/FabricMC/fabric-loom/issues/1349
org.gradle.configuration-cache=false

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.21.11
yarn_mappings=1.21.11+build.1
loader_version=0.18.2
loom_version=1.14-SNAPSHOT
minecraft_version=26.1
loader_version=0.18.5
loom_version=1.15-SNAPSHOT

# Mod Properties
mod_version=1.0.4
mod_version=1.0.5
maven_group=yungando.splashwrap
archives_base_name=splashwrap

# Dependencies
cloth_config_version=8.2.88
mod_menu_version=5.0.2
cloth_config_version=26.1.154
mod_menu_version=18.0.0-alpha.8
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
9 changes: 3 additions & 6 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.AutoConfigClient;
import yungando.splashwrap.config.SplashWrapConfig.SplashWrapAutoConfig;

public class ModMenuEntrypoint implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> AutoConfig.getConfigScreen(SplashWrapAutoConfig.class, parent).get();
return parent -> AutoConfigClient.getConfigScreen(SplashWrapAutoConfig.class, parent).get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.client.gui.ActiveTextCollector;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.client.gui.TextAlignment;
import net.minecraft.client.gui.components.SplashRenderer;
import net.minecraft.network.chat.Component;
Expand All @@ -22,29 +22,29 @@
import java.util.List;

@Mixin(SplashRenderer.class)
public class SplashTextRendererMixin {
public class SplashRendererMixin {
@Shadow @Final
private Component splash;

@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Font;width(Lnet/minecraft/network/chat/FormattedText;)I"))
@Redirect(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Font;width(Lnet/minecraft/network/chat/FormattedText;)I"))
private int scaleSplashText(Font instance, FormattedText formattedText) {
return Math.min(instance.width(this.splash), SplashWrap.config.minimumTextScale());
}

@Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/network/chat/Component;)V"))
private void wrapSplashText(GuiGraphics guiGraphics, int i, Font font, float f, CallbackInfo ci, @Local(ordinal = 1) int j, @Local ActiveTextCollector.Parameters parameters, @Local ActiveTextCollector activeTextCollector) {
@Inject(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/network/chat/Component;)V"))
private void wrapSplashText(GuiGraphicsExtractor guiGraphicsExtractor, int screenWidth, Font font, float alpha, CallbackInfo ci, @Local(name = "renderParameters") ActiveTextCollector.Parameters parameters, @Local(name = "textRenderer") ActiveTextCollector activeTextCollector) {
FormattedText splashText = this.splash;
List<FormattedCharSequence> splashTextLines = font.split(splashText, SplashWrap.config.maximumLineWidth());

int y = -8;

for (FormattedCharSequence splashLine : splashTextLines) {
activeTextCollector.accept(TextAlignment.CENTER, 0, y, parameters, splashLine);
activeTextCollector.accept(TextAlignment.LEFT, -font.width(splashLine) / 2, y, parameters, splashLine);
y += 9;
}
}

@WrapWithCondition(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/network/chat/Component;)V"))
@WrapWithCondition(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/network/chat/Component;)V"))
private boolean cancelVanillaDraw(ActiveTextCollector instance, TextAlignment textAlignment, int i, int j, ActiveTextCollector.Parameters parameters, Component component) {
return false;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/assets/splashwrap/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
"text.autoconfig.splashwrap.option.maximumLineWidth.@Tooltip": "The maximum width splash texts can be before wrapping to a new line.",
"text.autoconfig.splashwrap.option.minimumTextScale": "Minimum Text Scale",
"text.autoconfig.splashwrap.option.minimumTextScale.@Tooltip": "The minimum width that can be used to generate splash text scale. (Bigger number = smaller splash text)"
}
}
6 changes: 3 additions & 3 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
],
"depends": {
"fabricloader": ">=0.16.14",
"minecraft": ">=1.21.6",
"java": ">=21"
"minecraft": ">=26.1",
"java": ">=25"
}
}
}
9 changes: 6 additions & 3 deletions src/main/resources/splashwrap.mixins.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
{
"required": true,
"package": "yungando.splashwrap.mixin",
"compatibilityLevel": "JAVA_21",
"compatibilityLevel": "JAVA_25",
"injectors": {
"defaultRequire": 1
},
"overwrites": {
"requireAnnotations": true
},
"client": [
"SplashTextRendererMixin"
"SplashRendererMixin"
]
}
}
Loading