Skip to content

Commit a3decc4

Browse files
committed
Backport to mc1.20.1
1 parent a6d34e6 commit a3decc4

39 files changed

Lines changed: 339 additions & 308 deletions

.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}")
@@ -31,7 +33,8 @@ subprojects {
3133

3234
afterEvaluate {
3335
publishMods {
34-
file = project.name == "fabric" ? remapJar.archiveFile : jar.archiveFile
36+
file = project.name == "fabric" ? remapJar.archiveFile : name == "forge"
37+
? project.file("build/libs/${mod_id}-${name}-${mod_version}.jar") : jar.archiveFile
3538
version = mod_version
3639
type = me.modmuss50.mpp.ReleaseType.of(release_type)
3740
displayName = "v${mod_version}-${capsLoader(project.name)}"

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

Lines changed: 8 additions & 17 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"
@@ -107,16 +98,16 @@ processResources {
10798
// Java
10899
"java_version": java_version,
109100
"java_versions_fabric_list": asJsonList(java_versions_fabric),
110-
"java_versions_neoforge": java_versions_neoforge,
101+
"java_versions_forge": java_versions_forge,
111102
// Minecraft
112103
"minecraft_versions_fabric_list": asJsonList(minecraft_versions_fabric),
113-
"minecraft_versions_neoforge": minecraft_versions_neoforge,
104+
"minecraft_versions_forge": minecraft_versions_forge,
114105
// Fabric
115106
"fabric_loader_versions_list": asJsonList(fabric_loader_versions),
116107
"fabric_api_versions_list": asJsonList(fabric_api_versions),
117-
// NeoForge
118-
"neoforge_loader_versions": neoforge_loader_versions,
119-
"neoforge_versions": neoforge_versions,
108+
// Forge
109+
"forge_loader_versions": forge_loader_versions,
110+
"forge_versions": forge_versions,
120111
// Dependencies
121112
"modmenu_versions_fabric_list": asJsonList(modmenu_versions_fabric),
122113
]

common/build.gradle

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
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")
48
}
59

610
dependencies {
711
compileOnly("org.spongepowered:mixin:${mixin_version}")
812
compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
913
}
1014

11-
neoForge {
12-
version = neoforge_version // Shut up
13-
neoFormVersion = neoform_version
14-
// Automatically enable AccessTransformers if the file exists
15-
def at = file("src/main/resources/META-INF/accesstransformer.cfg")
16-
if (at.exists()) accessTransformers.from(at.absolutePath)
17-
parchment {
18-
minecraftVersion = parchment_minecraft_version
19-
mappingsVersion = parchment_version
15+
minecraft {
16+
version(minecraft_version)
17+
if (file("src/main/resources/${mod_id}.accesswidener").exists()) {
18+
accessWideners(file("src/main/resources/${mod_id}.accesswidener"))
2019
}
2120
}
2221

common/src/main/java/dev/terminalmc/commandkeys/config/Config.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
*
4242
* <p>When a profile is activated it is automatically moved to the start of the
4343
* list, so the list maintains most-recently-used order and the current active
44-
* profile can be obtained using {@code getFirst()}.</p>
44+
* profile can be obtained using {@code get(0)}.</p>
4545
*
4646
* <p>The profile list is guaranteed to contain at least one instance at all
4747
* times, and at least two if the singleplayer default instance is not also the
@@ -147,19 +147,19 @@ public void setRatelimitTicks(int ticks) {
147147
* @return the most recently activated {@link Profile}.
148148
*/
149149
public Profile activeProfile() {
150-
return profiles.getFirst();
150+
return profiles.get(0);
151151
}
152152

153153
/**
154154
* Activates the {@link Profile} at {@code index}, if it is not already
155155
* active.
156156
*/
157157
public void activateProfile(int index) {
158-
profiles.getFirst().getMacros().forEach((macro) -> {
158+
profiles.get(0).getMacros().forEach((macro) -> {
159159
if (!macro.resumeRepeatingStatus) macro.stopRepeating();
160160
});
161161
if (index != 0) {
162-
profiles.addFirst(profiles.remove(index));
162+
profiles.add(0, profiles.remove(index));
163163
if (index == spDefault) spDefault = 0;
164164
else if (index > spDefault) spDefault++;
165165
if (index == mpDefault) mpDefault = 0;
@@ -355,8 +355,8 @@ public Config deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
355355
int spDefault;
356356
int mpDefault;
357357
if (version == 1) {
358-
profiles.addFirst(ctx.deserialize(obj.get("mpDefaultProfile"), Profile.class));
359-
profiles.addFirst(ctx.deserialize(obj.get("spDefaultProfile"), Profile.class));
358+
profiles.add(0, ctx.deserialize(obj.get("mpDefaultProfile"), Profile.class));
359+
profiles.add(0, ctx.deserialize(obj.get("spDefaultProfile"), Profile.class));
360360
if (profiles.size() < 2) throw new JsonParseException(
361361
"Expected 2 or more profiles, got " + profiles.size());
362362
spDefault = 0;

common/src/main/java/dev/terminalmc/commandkeys/config/Macro.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public void trigger(@Nullable Keybind trigger) {
224224
}
225225
case TYPE -> {
226226
if (!messages.isEmpty()) {
227-
CommandKeys.type(messages.getFirst().string);
227+
CommandKeys.type(messages.get(0).string);
228228
}
229229
}
230230
case CYCLE -> {

common/src/main/java/dev/terminalmc/commandkeys/gui/screen/OptionsScreen.java

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,37 @@
1717
package dev.terminalmc.commandkeys.gui.screen;
1818

1919
import com.mojang.blaze3d.platform.InputConstants;
20-
import com.mojang.blaze3d.platform.Window;
2120
import dev.terminalmc.commandkeys.CommandKeys;
2221
import dev.terminalmc.commandkeys.config.Config;
22+
import dev.terminalmc.commandkeys.gui.widget.list.MainOptionList;
2323
import dev.terminalmc.commandkeys.gui.widget.list.OptionList;
2424
import dev.terminalmc.commandkeys.gui.widget.list.ProfileOptionList;
25-
import dev.terminalmc.commandkeys.gui.widget.list.MainOptionList;
2625
import net.minecraft.client.Minecraft;
2726
import net.minecraft.client.gui.Font;
2827
import net.minecraft.client.gui.GuiGraphics;
2928
import net.minecraft.client.gui.components.Button;
3029
import net.minecraft.client.gui.components.StringWidget;
30+
import net.minecraft.client.gui.screens.OptionsSubScreen;
3131
import net.minecraft.client.gui.screens.Screen;
32-
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
3332
import net.minecraft.network.chat.CommonComponents;
3433
import net.minecraft.network.chat.Component;
3534
import org.jetbrains.annotations.NotNull;
3635

36+
import java.util.function.Supplier;
37+
3738
import static dev.terminalmc.commandkeys.util.Localization.localized;
3839

3940
/**
4041
* Contains one tightly-coupled {@link OptionList}, which is used to display
4142
* all option control widgets.
4243
*/
4344
public class OptionsScreen extends OptionsSubScreen {
44-
public static final int TOP_MARGIN = 32;
45-
public static final int BOTTOM_MARGIN = 32;
46-
public static final int LIST_ENTRY_SPACE = 25;
47-
public static final int LIST_ENTRY_HEIGHT = 20;
48-
public static final int BASE_ROW_WIDTH = Window.BASE_WIDTH;
49-
public static final int BASE_LIST_ENTRY_WIDTH = BASE_ROW_WIDTH - 20;
45+
public final int listTop = 32;
46+
public final Supplier<Integer> listBottom = () -> height - 32;
47+
public static final int listItemHeight = 25;
48+
public static final int listEntryHeight = 20;
49+
public static final int baseRowWidth = 320;
50+
public static final int baseListEntryWidth = baseRowWidth - 20;
5051

5152
protected OptionList optionList;
5253

@@ -55,13 +56,13 @@ public OptionsScreen(Screen lastScreen, boolean inGame) {
5556
inGame ? localized("option", "profile", CommandKeys.profile().getDisplayName())
5657
: localized("option", "main"));
5758
if (inGame) {
58-
optionList = new ProfileOptionList(Minecraft.getInstance(), 0, 0, TOP_MARGIN,
59-
LIST_ENTRY_SPACE, BASE_LIST_ENTRY_WIDTH, LIST_ENTRY_HEIGHT,
59+
optionList = new ProfileOptionList(Minecraft.getInstance(), 0, 0, listTop,
60+
listBottom.get(), listItemHeight, baseListEntryWidth, listEntryHeight,
6061
CommandKeys.profile());
6162
}
6263
else {
63-
optionList = new MainOptionList(Minecraft.getInstance(), 0, 0, TOP_MARGIN,
64-
LIST_ENTRY_SPACE, BASE_LIST_ENTRY_WIDTH, LIST_ENTRY_HEIGHT, null);
64+
optionList = new MainOptionList(Minecraft.getInstance(), 0, 0, listTop,
65+
listBottom.get(), listItemHeight, baseListEntryWidth, listEntryHeight, null);
6566
}
6667
}
6768

@@ -75,11 +76,6 @@ protected void init() {
7576
reload();
7677
}
7778

78-
@Override
79-
protected void addOptions() {
80-
// Not currently used
81-
}
82-
8379
@Override
8480
public void resize(@NotNull Minecraft mc, int width, int height) {
8581
super.resize(mc, width, height);
@@ -113,6 +109,7 @@ public boolean mouseReleased(double mouseX, double mouseY, int delta) {
113109

114110
@Override
115111
public void render(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float delta) {
112+
renderDirtBackground(graphics);
116113
super.render(graphics, mouseX, mouseY, delta);
117114
}
118115

@@ -136,21 +133,21 @@ public OptionList reload() {
136133

137134
public OptionList reload(int width, int height) {
138135
clearWidgets();
139-
optionList = optionList.reload(this, width, height - TOP_MARGIN - BOTTOM_MARGIN,
140-
optionList.getScrollAmount());
136+
optionList = optionList.reload(this, width, listBottom.get() - listTop,
137+
listTop, listBottom.get(), optionList.getScrollAmount());
141138
addRenderableWidget(optionList);
142139

143140
// Title text
144141
Font font = Minecraft.getInstance().font;
145142
addRenderableWidget(new StringWidget(width / 2 - (font.width(title) / 2),
146-
Math.max(0, TOP_MARGIN / 2 - font.lineHeight / 2),
143+
Math.max(0, listTop / 2 - font.lineHeight / 2),
147144
font.width(title), font.lineHeight, title, font).alignLeft());
148145

149146
// Done button
150147
addRenderableWidget(Button.builder(CommonComponents.GUI_DONE, (button) -> onClose())
151-
.pos(width / 2 - BASE_LIST_ENTRY_WIDTH / 2, Math.min(height - LIST_ENTRY_HEIGHT,
152-
height - BOTTOM_MARGIN / 2 - LIST_ENTRY_HEIGHT / 2))
153-
.size(BASE_LIST_ENTRY_WIDTH, LIST_ENTRY_HEIGHT)
148+
.pos(width / 2 - baseListEntryWidth / 2, Math.min(height - listEntryHeight,
149+
height - 32 / 2 - listEntryHeight / 2))
150+
.size(baseListEntryWidth, listEntryHeight)
154151
.build());
155152

156153
return optionList;

common/src/main/java/dev/terminalmc/commandkeys/gui/widget/list/MacroBindList.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818

1919
import com.mojang.blaze3d.platform.InputConstants;
2020
import dev.terminalmc.commandkeys.CommandKeys;
21-
import dev.terminalmc.commandkeys.config.*;
21+
import dev.terminalmc.commandkeys.config.Keybind;
22+
import dev.terminalmc.commandkeys.config.Macro;
23+
import dev.terminalmc.commandkeys.config.Profile;
2224
import dev.terminalmc.commandkeys.mixin.accessor.KeyMappingAccessor;
2325
import net.minecraft.client.Minecraft;
24-
import net.minecraft.client.gui.screens.options.controls.KeyBindsScreen;
26+
import net.minecraft.client.gui.screens.controls.KeyBindsScreen;
2527
import org.jetbrains.annotations.NotNull;
2628
import org.jetbrains.annotations.Nullable;
2729

@@ -38,10 +40,10 @@ public abstract class MacroBindList extends OptionList {
3840
private InputConstants.Key heldKey;
3941
private InputConstants.Key sendKey;
4042

41-
public MacroBindList(Minecraft mc, int width, int height, int y,
43+
public MacroBindList(Minecraft mc, int width, int height, int top, int bottom,
4244
int itemHeight, int entryWidth, int entryHeight,
4345
@NotNull Profile profile) {
44-
super(mc, width, height, y, itemHeight, entryWidth, entryHeight);
46+
super(mc, width, height, top, bottom, itemHeight, entryWidth, entryHeight);
4547
this.profile = profile;
4648
}
4749

0 commit comments

Comments
 (0)