Skip to content

Commit af04c3a

Browse files
committed
Backport to mc1.20.1
1 parent a29b6a7 commit af04c3a

File tree

76 files changed

+959
-758
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+959
-758
lines changed

.github/workflows/check-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
build:
1919
strategy:
2020
matrix:
21-
java: [21]
21+
java: [17]
2222
os: [ubuntu-latest, windows-latest]
2323
runs-on: ${{ matrix.os }}
2424
steps:
@@ -39,7 +39,7 @@ jobs:
3939
- name: Build
4040
run: ./gradlew build --stacktrace
4141
- name: Capture build artifacts
42-
if: ${{ runner.os == 'Linux' && matrix.java == '21' }}
42+
if: ${{ runner.os == 'Linux' && matrix.java == '17' }}
4343
uses: actions/upload-artifact@v4
4444
with:
4545
name: artifacts

.github/workflows/release.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
release:
1616
strategy:
1717
matrix:
18-
java: [21]
18+
java: [17]
1919
os: [ubuntu-latest]
2020
runs-on: ${{ matrix.os }}
2121
steps:
@@ -34,15 +34,15 @@ jobs:
3434
if: ${{ runner.os != 'Windows' }}
3535
run: chmod +x ./gradlew
3636
- name: Build
37-
run: ./gradlew build neoforge:publishGithub fabric:publishGithub --stacktrace
38-
# run: ./gradlew build neoforge:publishGithub neoforge:publishModrinth fabric:publishGithub fabric:publishModrinth --stacktrace
39-
# run: ./gradlew build neoforge:publishGithub neoforge:publishModrinth neoforge:publishCurseforge fabric:publishGithub fabric:publishModrinth fabric:publishCurseforge --stacktrace
37+
run: ./gradlew build forge:publishGithub fabric:publishGithub --stacktrace
38+
# run: ./gradlew build forge:publishGithub forge:publishModrinth fabric:publishGithub fabric:publishModrinth --stacktrace
39+
# run: ./gradlew build forge:publishGithub forge:publishModrinth forge:publishCurseforge fabric:publishGithub fabric:publishModrinth fabric:publishCurseforge --stacktrace
4040
env:
4141
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4242
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
4343
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }}
4444
- name: Capture build artifacts
45-
if: ${{ runner.os == 'Linux' && matrix.java == '21' }}
45+
if: ${{ runner.os == 'Linux' && matrix.java == '17' }}
4646
uses: actions/upload-artifact@v4
4747
with:
4848
name: artifacts

build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
plugins {
22
id("fabric-loom") version("${loom_version}") apply(false)
3-
id("net.neoforged.moddev") version("${moddev_version}") apply(false)
3+
id("net.minecraftforge.gradle") version("${forgegradle_version}") apply(false)
4+
id("org.spongepowered.gradle.vanilla") version("${vanillagradle_version}") apply(false)
5+
id("org.spongepowered.mixin") version("${mixingradle_version}") apply(false)
46
id("org.cadixdev.licenser") version("${licenser_version}") apply(false)
57
id("me.modmuss50.mod-publish-plugin") version("${mpp_version}")
68
id("org.ajoberstar.grgit.service") version("${grgitservice_version}")
@@ -55,7 +57,8 @@ subprojects {
5557

5658
afterEvaluate {
5759
publishMods {
58-
file = project.name == "fabric" ? remapJar.archiveFile : jar.archiveFile
60+
file = project.name == "fabric" ? remapJar.archiveFile : name == "forge"
61+
? project.file("build/libs/${mod_id}-${name}-${mod_version}.jar") : jar.archiveFile
5962
version = mod_version
6063
type = me.modmuss50.mpp.ReleaseType.of(release_type)
6164
displayName = "v${mod_version}-${capsLoader(project.name)}"

buildSrc/src/main/groovy/multiloader-common.gradle

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,9 @@ repositories {
2525
}
2626
filter { includeGroupAndSubgroups("org.spongepowered") }
2727
}
28-
exclusiveContent {
29-
forRepositories(
30-
maven {
31-
name = "ParchmentMC"
32-
url = "https://maven.parchmentmc.org"
33-
},
34-
maven {
35-
name = "NeoForge"
36-
url = "https://maven.neoforged.net/releases"
37-
}
38-
)
39-
filter { includeGroup("org.parchmentmc.data") }
28+
maven {
29+
name = "ParchmentMC"
30+
url = "https://maven.parchmentmc.org"
4031
}
4132
maven {
4233
name = "Modrinth"
@@ -111,19 +102,19 @@ processResources {
111102
// Java
112103
"java_version": java_version,
113104
"java_versions_fabric_list": asJsonList(java_versions_fabric),
114-
"java_versions_neoforge": java_versions_neoforge,
105+
"java_versions_forge": java_versions_forge,
115106
// Minecraft
116107
"minecraft_versions_fabric_list": asJsonList(minecraft_versions_fabric),
117-
"minecraft_versions_neoforge": minecraft_versions_neoforge,
108+
"minecraft_versions_forge": minecraft_versions_forge,
118109
// Fabric
119110
"fabric_loader_versions_list": asJsonList(fabric_loader_versions),
120111
"fabric_api_versions_list": asJsonList(fabric_api_versions),
121-
// NeoForge
122-
"neoforge_loader_versions": neoforge_loader_versions,
123-
"neoforge_versions": neoforge_versions,
112+
// Forge
113+
"forge_loader_versions": forge_loader_versions,
114+
"forge_versions": forge_versions,
124115
// Dependencies
125116
"clothconfig_versions_fabric_list": asJsonList(clothconfig_versions_fabric),
126-
"clothconfig_versions_neoforge": clothconfig_versions_neoforge,
117+
"clothconfig_versions_forge": clothconfig_versions_forge,
127118
"modmenu_versions_fabric_list": asJsonList(modmenu_versions_fabric),
128119
]
129120

common/build.gradle

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,43 @@
1+
buildscript {
2+
dependencies.add("classpath", "org.spongepowered:vanillagradle:${vanillagradle_version}")
3+
}
4+
15
plugins {
26
id("multiloader-common")
3-
id("net.neoforged.moddev")
7+
id("org.spongepowered.gradle.vanilla")
8+
}
9+
10+
// Mixin plugin requires new ASM
11+
configurations.configureEach {
12+
resolutionStrategy.eachDependency { details ->
13+
if (details.requested.group == "org.ow2.asm") {
14+
details.useVersion(asm_version)
15+
details.because("Mixin requires new ASM")
16+
}
17+
}
418
}
519

620
dependencies {
21+
compileOnly "org.ow2.asm:asm:${asm_version}"
22+
compileOnly "org.ow2.asm:asm-analysis:${asm_version}"
23+
compileOnly "org.ow2.asm:asm-commons:${asm_version}"
24+
compileOnly "org.ow2.asm:asm-tree:${asm_version}"
25+
compileOnly "org.ow2.asm:asm-util:${asm_version}"
26+
727
compileOnly("org.spongepowered:mixin:${mixin_version}")
828
// compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
929

1030
// Cloth Config API
11-
api("me.shedaniel.cloth:cloth-config-neoforge:${clothconfig_version}")
31+
api("me.shedaniel.cloth:cloth-config-forge:${clothconfig_version}")
1232

1333
// ItemLocks
1434
implementation("maven.modrinth:tJzrFuyy:${itemlocks_version}")
1535
}
1636

17-
neoForge {
18-
version = neoforge_version // Shut up
19-
neoFormVersion = neoform_version
20-
// Automatically enable AccessTransformers if the file exists
21-
def at = file("src/main/resources/META-INF/accesstransformer.cfg")
22-
if (at.exists()) accessTransformers.from(at.absolutePath)
23-
parchment {
24-
minecraftVersion = parchment_minecraft_version
25-
mappingsVersion = parchment_version
37+
minecraft {
38+
version(minecraft_version)
39+
if (file("src/main/resources/${mod_id}.accesswidener").exists()) {
40+
accessWideners(file("src/main/resources/${mod_id}.accesswidener"))
2641
}
2742
}
2843

common/src/main/java/dev/terminalmc/clientsort/client/compat/itemlocks/ItemLocksWrapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package dev.terminalmc.clientsort.client.compat.itemlocks;
1818

19+
import dev.terminalmc.clientsort.client.ClientSort;
1920
import net.minecraft.world.inventory.Slot;
2021

2122
public class ItemLocksWrapper {
@@ -35,6 +36,10 @@ public static boolean isLocked(Slot slot) {
3536
} catch (NoClassDefFoundError | NoSuchMethodError ignored) {
3637
hasFailed = true;
3738
return false;
39+
} catch (Exception e) {
40+
ClientSort.LOG.error("ItemLocks isLocked check failed with error:", e);
41+
hasFailed = true;
42+
return false;
3843
}
3944
}
4045
}

common/src/main/java/dev/terminalmc/clientsort/client/config/Config.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import dev.terminalmc.clientsort.client.order.SortOrder;
2323
import dev.terminalmc.clientsort.platform.Services;
2424
import net.minecraft.resources.ResourceLocation;
25+
import net.minecraft.util.Mth;
2526
import net.minecraft.world.entity.player.Inventory;
2627
import net.minecraft.world.inventory.*;
2728
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
@@ -185,38 +186,38 @@ public enum CONTROL_BUTTON {
185186
* Ensures that all config values are valid.
186187
*/
187188
private void validate() {
188-
options.interactionInterval = Math.clamp(
189+
options.interactionInterval = Mth.clamp(
189190
options.interactionInterval,
190191
Options.INTERACTION_INTERVAL_MIN,
191192
Options.INTERACTION_INTERVAL_MAX
192193
);
193-
options.soundInterval = Math.clamp(
194+
options.soundInterval = Mth.clamp(
194195
options.soundInterval,
195196
Options.SOUND_INTERVAL_MIN,
196197
Options.SOUND_INTERVAL_MAX
197198
);
198-
options.soundPitchMin = Math.clamp(
199+
options.soundPitchMin = Mth.clamp(
199200
options.soundPitchMin,
200201
Options.SOUND_PITCH_MIN,
201202
Options.SOUND_PITCH_MAX
202203
);
203-
options.soundPitchMax = Math.clamp(
204+
options.soundPitchMax = Mth.clamp(
204205
options.soundPitchMax,
205206
options.soundPitchMin, // Not less than configured min
206207
Options.SOUND_PITCH_MAX
207208
);
208-
options.soundVolume = Math.clamp(
209+
options.soundVolume = Mth.clamp(
209210
options.soundVolume,
210211
Options.SOUND_VOLUME_MIN,
211212
Options.SOUND_VOLUME_MAX
212213
);
213214
options.buttonDefaultOffset = new Vec2i(
214-
Math.clamp(
215+
Mth.clamp(
215216
options.buttonDefaultOffset.x(),
216217
Options.BUTTON_DEFAULT_OFFSET_MIN,
217218
Options.BUTTON_DEFAULT_OFFSET_MAX
218219
),
219-
Math.clamp(
220+
Mth.clamp(
220221
options.buttonDefaultOffset.y(),
221222
Options.BUTTON_DEFAULT_OFFSET_MIN,
222223
Options.BUTTON_DEFAULT_OFFSET_MAX

common/src/main/java/dev/terminalmc/clientsort/client/gui/screen/edit/GroupSelectorScreen.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,6 @@ public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float
9191
}
9292
}
9393

94-
@Override
95-
protected void renderBlurredBackground(float partialTick) {
96-
// Heavy blur, we want the widgets to really stand out
97-
int original = Minecraft.getInstance().options.menuBackgroundBlurriness().get();
98-
Minecraft.getInstance().options.menuBackgroundBlurriness().set(6);
99-
super.renderBlurredBackground(partialTick);
100-
Minecraft.getInstance().options.menuBackgroundBlurriness().set(original);
101-
}
102-
10394
@Override
10495
public void onClose() {
10596
super.onClose();

common/src/main/java/dev/terminalmc/clientsort/client/gui/screen/edit/PositionEditScreen.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -287,22 +287,6 @@ public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float
287287
}
288288
}
289289

290-
/**
291-
* Modifies the background blur to be constant irrespective of the
292-
* configured value.
293-
* <p>
294-
* Minimal blur is used to prevent the editable widgets disappearing under
295-
* underlay items on a higher render layer, while still keeping the underlay
296-
* detail discernible.
297-
*/
298-
@Override
299-
protected void renderBlurredBackground(float partialTick) {
300-
int original = Minecraft.getInstance().options.menuBackgroundBlurriness().get();
301-
Minecraft.getInstance().options.menuBackgroundBlurriness().set(1);
302-
super.renderBlurredBackground(partialTick);
303-
Minecraft.getInstance().options.menuBackgroundBlurriness().set(original);
304-
}
305-
306290
/**
307291
* Draws a horizontal and a vertical line to trace this widget back to its
308292
* positional origin point.

common/src/main/java/dev/terminalmc/clientsort/client/gui/widget/ControlButton.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package dev.terminalmc.clientsort.client.gui.widget;
1919

2020
import com.mojang.blaze3d.platform.InputConstants;
21+
import dev.terminalmc.clientsort.client.ClientSort;
2122
import dev.terminalmc.clientsort.client.config.Vec2i;
2223
import dev.terminalmc.clientsort.client.gui.screen.edit.ContainerPositionEditScreen;
2324
import dev.terminalmc.clientsort.client.gui.screen.edit.PlayerPositionEditScreen;
@@ -26,11 +27,11 @@
2627
import net.minecraft.client.Minecraft;
2728
import net.minecraft.client.gui.GuiGraphics;
2829
import net.minecraft.client.gui.components.Button;
29-
import net.minecraft.client.gui.components.WidgetSprites;
3030
import net.minecraft.client.gui.screens.Screen;
3131
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
3232
import net.minecraft.network.chat.CommonComponents;
3333
import net.minecraft.resources.ResourceLocation;
34+
import net.minecraft.util.Mth;
3435
import net.minecraft.world.Container;
3536
import net.minecraft.world.inventory.Slot;
3637
import org.jetbrains.annotations.NotNull;
@@ -41,12 +42,15 @@ public abstract class ControlButton extends Button {
4142
public static final int HALF_WIDTH = WIDTH / 2;
4243
public static final int HALF_HEIGHT = HEIGHT / 2;
4344

45+
private static final ResourceLocation TEXTURE =
46+
new ResourceLocation(ClientSort.MOD_ID, "textures/gui.png");
47+
4448
private final Screen screen;
4549
public final Container container;
4650
public final String layoutKey;
4751
final boolean isPlayerInv;
4852
private final Slot referenceSlot;
49-
private final WidgetSprites sprites;
53+
private final Vec2i spriteOffset;
5054

5155
public Vec2i offset;
5256

@@ -56,7 +60,7 @@ protected ControlButton(
5660
String layoutKey,
5761
boolean isPlayerInv,
5862
Slot referenceSlot,
59-
WidgetSprites sprites,
63+
Vec2i spriteOffset,
6064
Vec2i offset,
6165
OnPress onPress,
6266
boolean active
@@ -79,7 +83,7 @@ protected ControlButton(
7983
this.layoutKey = layoutKey;
8084
this.isPlayerInv = isPlayerInv;
8185
this.referenceSlot = referenceSlot;
82-
this.sprites = sprites;
86+
this.spriteOffset = spriteOffset;
8387
this.offset = offset;
8488
this.active = active;
8589
}
@@ -120,12 +124,12 @@ public void renderWidget(@NotNull GuiGraphics graphics, int mouseX, int mouseY,
120124
AbstractContainerScreenAccessor acs = (AbstractContainerScreenAccessor)screen;
121125

122126
// Keep visible
123-
int newX = Math.clamp(
127+
int newX = Mth.clamp(
124128
acs.getLeftPos() + acs.getImageWidth() + offset.x(),
125129
0,
126130
screen.width - WIDTH
127131
);
128-
int newY = Math.clamp(
132+
int newY = Mth.clamp(
129133
acs.getTopPos() + referenceSlot.y + offset.y(),
130134
0,
131135
screen.height - HEIGHT
@@ -134,15 +138,22 @@ public void renderWidget(@NotNull GuiGraphics graphics, int mouseX, int mouseY,
134138
setX(newX);
135139
setY(newY);
136140

137-
ResourceLocation texture = sprites.get(isActive(), isHoveredOrFocused());
138-
graphics.blitSprite(texture, getX(), getY(), 0, width, height);
141+
int u = spriteOffset.x() * WIDTH;
142+
int v = spriteOffset.y() * HEIGHT;
143+
if (!isActive()) {
144+
v += HEIGHT * 2;
145+
} else if (isHovered() || isFocused()) {
146+
v += HEIGHT;
147+
}
148+
149+
graphics.blit(TEXTURE, getX(), getY(), u, v, width, height);
139150
}
140151

141152
@Override
142153
protected void onDrag(double mouseX, double mouseY, double dragX, double dragY) {
143154
AbstractContainerScreenAccessor acs = (AbstractContainerScreenAccessor)screen;
144-
int newX = Math.clamp((int)mouseX - HALF_WIDTH, 0, screen.width - WIDTH);
145-
int newY = Math.clamp((int)mouseY - HALF_HEIGHT, 0, screen.height - HEIGHT);
155+
int newX = Mth.clamp((int)mouseX - HALF_WIDTH, 0, screen.width - WIDTH);
156+
int newY = Mth.clamp((int)mouseY - HALF_HEIGHT, 0, screen.height - HEIGHT);
146157

147158
offset = new Vec2i(
148159
newX - (acs.getLeftPos() + acs.getImageWidth()),

0 commit comments

Comments
 (0)