Skip to content

Commit 768378f

Browse files
committed
Backport to mc1.20.1
1 parent f2ca008 commit 768378f

File tree

30 files changed

+402
-451
lines changed

30 files changed

+402
-451
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}")
@@ -42,7 +44,8 @@ subprojects {
4244

4345
afterEvaluate {
4446
publishMods {
45-
file = project.name == "fabric" ? remapJar.archiveFile : jar.archiveFile
47+
file = project.name == "fabric" ? remapJar.archiveFile : name == "forge"
48+
? project.file("build/libs/${mod_id}-${name}-${mod_version}.jar") : jar.archiveFile
4649
version = mod_version
4750
type = me.modmuss50.mpp.ReleaseType.of(release_type)
4851
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"
@@ -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),
121112
// NeoForge
122-
"neoforge_loader_versions": neoforge_loader_versions,
123-
"neoforge_versions": neoforge_versions,
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
filesMatching(["pack.mcmeta", "*.mod.json", "META-INF/*mods.toml", "*.mixins.json"]) {

common/build.gradle

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
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 {
11+
// Mixin and MixinExtras
712
compileOnly("org.spongepowered:mixin:${mixin_version}")
8-
compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
13+
// compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
914

1015
// Cloth Config API
11-
api("me.shedaniel.cloth:cloth-config-neoforge:${clothconfig_version}")
16+
api("me.shedaniel.cloth:cloth-config-forge:${clothconfig_version}")
1217

1318
// ItemLocks
1419
implementation("maven.modrinth:tJzrFuyy:${itemlocks_version}")
1520
}
1621

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
22+
minecraft {
23+
version(minecraft_version)
24+
if (file("src/main/resources/${mod_id}.accesswidener").exists()) {
25+
accessWideners(file("src/main/resources/${mod_id}.accesswidener"))
2626
}
2727
}
2828

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

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -129,45 +129,6 @@ public enum ExtraSlotScope {
129129

130130
public static final boolean soundAllowOverlapDefault = true;
131131
public boolean soundAllowOverlap = soundAllowOverlapDefault;
132-
133-
// Legacy from pre v1.3.0
134-
135-
public static final HotbarMode hotbarModeDefault = HotbarMode.HARD;
136-
public HotbarMode hotbarMode = hotbarModeDefault;
137-
public enum HotbarMode {
138-
NONE,
139-
HARD,
140-
SOFT;
141-
142-
public HotbarScope update() {
143-
return switch(this) {
144-
case NONE -> HotbarScope.INVENTORY;
145-
case HARD -> HotbarScope.HOTBAR;
146-
case SOFT -> HotbarScope.NONE;
147-
};
148-
}
149-
}
150-
151-
public static final ExtraSlotMode extraSlotModeDefault = ExtraSlotMode.NONE;
152-
public ExtraSlotMode extraSlotMode = extraSlotModeDefault;
153-
public enum ExtraSlotMode {
154-
NONE,
155-
HOTBAR,
156-
INVENTORY;
157-
158-
public ExtraSlotScope update() {
159-
return switch(this) {
160-
case NONE -> ExtraSlotScope.NONE;
161-
case HOTBAR -> ExtraSlotScope.HOTBAR;
162-
case INVENTORY -> ExtraSlotScope.INVENTORY;
163-
};
164-
}
165-
}
166-
167-
public String sortModeStr = sortOrderDefault;
168-
public String shiftSortModeStr = shiftSortOrderDefault;
169-
public String ctrlSortModeStr = ctrlSortOrderDefault;
170-
public String altSortModeStr = altSortOrderDefault;
171132
}
172133

173134
// Validation
@@ -176,7 +137,6 @@ public ExtraSlotScope update() {
176137
* Ensures that all config values are valid.
177138
*/
178139
private void validate() {
179-
update();
180140
// interactionRateServer
181141
if (options.interactionRateServer < Options.interactionRateMin)
182142
options.interactionRateServer = Options.interactionRateMin;
@@ -211,36 +171,6 @@ private void validate() {
211171
if (options.soundVolume > Options.soundVolumeMax)
212172
options.soundVolume = Options.soundVolumeMax;
213173
}
214-
215-
/**
216-
* Updates legacy (pre v1.3.0) config values.
217-
*/
218-
private void update() {
219-
if (options.hotbarMode != Options.hotbarModeDefault) {
220-
options.hotbarScope = options.hotbarMode.update();
221-
options.hotbarMode = Options.hotbarModeDefault;
222-
}
223-
if (options.extraSlotMode != Options.extraSlotModeDefault) {
224-
options.extraSlotScope = options.extraSlotMode.update();
225-
options.extraSlotMode = Options.extraSlotModeDefault;
226-
}
227-
if (!Options.sortOrderDefault.equals(options.sortModeStr)) {
228-
options.sortOrderStr = options.sortModeStr;
229-
options.sortModeStr = Options.sortOrderDefault;
230-
}
231-
if (!Options.shiftSortOrderDefault.equals(options.shiftSortModeStr)) {
232-
options.shiftSortOrderStr = options.shiftSortModeStr;
233-
options.shiftSortModeStr = Options.shiftSortOrderDefault;
234-
}
235-
if (!Options.ctrlSortOrderDefault.equals(options.ctrlSortModeStr)) {
236-
options.ctrlSortOrderStr = options.ctrlSortModeStr;
237-
options.ctrlSortModeStr = Options.ctrlSortOrderDefault;
238-
}
239-
if (!Options.altSortOrderDefault.equals(options.altSortModeStr)) {
240-
options.altSortOrderStr = options.altSortModeStr;
241-
options.altSortModeStr = Options.altSortOrderDefault;
242-
}
243-
}
244174

245175
// Instance management
246176

common/src/main/java/dev/terminalmc/clientsort/inventory/sort/InventorySorter.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
import dev.terminalmc.clientsort.compat.itemlocks.ItemLocksWrapper;
2121
import dev.terminalmc.clientsort.inventory.ContainerScreenHelper;
22-
import dev.terminalmc.clientsort.main.network.SortPayload;
22+
import dev.terminalmc.clientsort.main.network.ServerboundSortPacket;
2323
import dev.terminalmc.clientsort.network.InteractionManager;
2424
import dev.terminalmc.clientsort.platform.Services;
2525
import dev.terminalmc.clientsort.util.SoundManager;
@@ -95,7 +95,7 @@ private void combineStacks() {
9595
stack = stacks[i];
9696
if (stack.isEmpty()) continue;
9797
int stackSize = stack.getCount();
98-
if (stackSize >= stack.getItem().getDefaultMaxStackSize()) continue;
98+
if (stackSize >= stack.getItem().getMaxStackSize()) continue;
9999
// Partial stack found, pick it up
100100
clickEvents.add(screenHelper.createClickEvent(
101101
inventorySlots[i], 0, ClickType.PICKUP, false));
@@ -104,15 +104,15 @@ private void combineStacks() {
104104
for (int j = 0; j < i; j++) {
105105
ItemStack target = stacks[j];
106106
if (target.isEmpty()) continue;
107-
if (target.getCount() >= target.getItem().getDefaultMaxStackSize()) continue;
108-
if (ItemStack.isSameItemSameComponents(stack, target)) {
107+
if (target.getCount() >= target.getItem().getMaxStackSize()) continue;
108+
if (ItemStack.isSameItemSameTags(stack, target)) {
109109
// Matching partial stack found, click on it to place as
110110
// much of the carried stack as possible
111111
clickEvents.add(screenHelper.createClickEvent(
112112
inventorySlots[j], 0, ClickType.PICKUP, false));
113113
// Check how many items would be placed by the click, and
114114
// update logical record
115-
int delta = target.getItem().getDefaultMaxStackSize() - target.getCount();
115+
int delta = target.getItem().getMaxStackSize() - target.getCount();
116116
delta = Math.min(delta, stackSize);
117117
stackSize -= delta;
118118
target.setCount(target.getCount() + delta);
@@ -165,7 +165,8 @@ public void sort(SortOrder sortOrder) {
165165
SortContext context = new SortContext(containerScreen, Arrays.asList(inventorySlots));
166166
sortIds = sortOrder.sort(sortIds, stacks, context);
167167

168-
if (options().serverAcceleratedSorting && Services.PLATFORM.canSendToServer(SortPayload.TYPE)) {
168+
if (options().serverAcceleratedSorting
169+
&& Services.PLATFORM.canSendToServer(ServerboundSortPacket.ID)) {
169170
// Send the key off to the server
170171
sortOnServer(sortIds);
171172
} else {
@@ -192,8 +193,8 @@ protected void sortOnServer(int[] sortedIds) {
192193

193194
// Send the instructions to the server
194195
InteractionManager.push(() -> {
195-
Services.PLATFORM.sendToServer(
196-
new SortPayload(containerScreen.getMenu().containerId, slotMapping));
196+
Services.PLATFORM.sendToServer(ServerboundSortPacket.ID, new ServerboundSortPacket(
197+
containerScreen.getMenu().containerId, slotMapping));
197198
return InteractionManager.TICK_WAITER;
198199
});
199200
}
@@ -301,7 +302,7 @@ protected void sortOnClient(int[] sortedIds, boolean playSound) {
301302
if (
302303
stacks[id].getItem() == currentStack.getItem()
303304
&& !doneOrEmpty.get(slotCount + id)
304-
&& ItemStack.isSameItemSameComponents(stacks[id], currentStack)
305+
&& ItemStack.isSameItemSameTags(stacks[id], currentStack)
305306
) {
306307
// If the current stack and the target stack are completely
307308
// equal, then we can skip this step in the chain

common/src/main/java/dev/terminalmc/clientsort/main/network/LogicalServerNetworking.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,28 +31,34 @@
3131
import java.util.List;
3232

3333
/**
34-
* Handles sorting via a {@link SortPayload} on the logical server side.
34+
* Handles sorting via a {@link ServerboundSortPacket} on the logical server
35+
* side.
3536
*/
3637
public class LogicalServerNetworking {
3738
private LogicalServerNetworking() {}
3839

3940
/**
40-
* Handles a {@link SortPayload} sent by a client.
41+
* Handles a {@link ServerboundSortPacket} sent by a client.
4142
*/
42-
public static void onSortPayload(SortPayload payload, MinecraftServer server,
43+
public static void onSortPayload(ServerboundSortPacket packet, MinecraftServer server,
4344
ServerPlayer player) {
45+
if (packet == null) {
46+
MainSort.LOG.warn("Failed to read sort packet from player {}!", player);
47+
return;
48+
}
49+
4450
if (player.containerMenu == null) {
4551
MainSort.LOG.warn("Player {} tried to sort inventory without having an " +
4652
"open container!", player);
4753
return;
4854
}
4955

50-
if (payload.syncId() == player.inventoryMenu.containerId) {
56+
if (packet.syncId == player.inventoryMenu.containerId) {
5157
// Sort inventory
52-
server.execute(() -> sort(player, player.inventoryMenu, payload.slotMapping()));
53-
} else if (payload.syncId() == player.containerMenu.containerId) {
58+
server.execute(() -> sort(player, player.inventoryMenu, packet.slotMapping));
59+
} else if (packet.syncId == player.containerMenu.containerId) {
5460
// Sort container
55-
server.execute(() -> sort(player, player.containerMenu, payload.slotMapping()));
61+
server.execute(() -> sort(player, player.containerMenu, packet.slotMapping));
5662
}
5763
}
5864

0 commit comments

Comments
 (0)