Skip to content

Commit d1927f4

Browse files
author
tonimatasdev
committed
feat: Port 1.20.1
1 parent 89fde4b commit d1927f4

22 files changed

+236
-264
lines changed

build.gradle.kts

Lines changed: 62 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,122 @@
1+
import java.time.ZonedDateTime
2+
import java.time.format.DateTimeFormatter
3+
14
plugins {
5+
id("eclipse")
26
id("idea")
3-
id("java-library")
4-
id("net.neoforged.moddev") version "2.0.78"
5-
}
6-
7-
tasks.named<Wrapper>("wrapper").configure {
8-
distributionType = Wrapper.DistributionType.BIN
7+
id("net.minecraftforge.gradle") version "[6.0,6.2)"
8+
id("org.parchmentmc.librarian.forgegradle") version "1.+"
9+
id("org.spongepowered.mixin") version "0.7.+"
910
}
1011

1112
val modVersion: String by extra
12-
val neoVersion: String by extra
13+
val forgeVersion: String by extra
1314
val parchmentMappingsVersion: String by extra
14-
val parchmentMinecraftVersion: String by extra
1515
val minecraftVersion: String by extra
16-
val neoVersionRange: String by extra
16+
val forgeVersionRange: String by extra
1717
val loaderVersionRange: String by extra
1818
val mekanismVersion: String by extra
1919
val mekanismVersionRange: String by extra
2020
val curiosVersion: String by extra
2121
val curiosVersionRange: String by extra
2222

23-
version = modVersion
23+
version = "$minecraftVersion-$modVersion"
2424
group = "dev.tonimatas.mekanismcurios"
2525

2626
base {
2727
archivesName = "mekanismcurios"
2828
}
2929

30-
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
30+
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
3131

32-
neoForge {
33-
version = neoVersion
32+
minecraft {
33+
mappings("parchment", "$parchmentMappingsVersion-$minecraftVersion")
3434

35-
parchment {
36-
mappingsVersion = parchmentMappingsVersion
37-
minecraftVersion = parchmentMinecraftVersion
38-
}
35+
copyIdeResources = true
3936

4037
runs {
4138
create("client") {
42-
client()
43-
systemProperty("neoforge.enabledGameTestNamespaces", "mekanismcurios")
39+
property("forge.enabledGameTestNamespaces", "mekanismcurios")
4440
}
4541

4642
create("server") {
47-
server()
48-
programArgument("--nogui")
49-
systemProperty("neoforge.enabledGameTestNamespaces", "mekanismcurios")
43+
property("forge.enabledGameTestNamespaces", "mekanismcurios")
44+
args("--nogui")
5045
}
5146

5247
create("data") {
53-
data()
54-
programArguments.addAll("--mod", "mekanismcurios", "--all", "--output", file("src/generated/resources/").absolutePath, "--existing", file("src/main/resources/").absolutePath)
48+
workingDirectory(project.file("run-data"))
49+
args("--mod", "mekanismcurios", "--all", "--output", file("src/generated/resources/").absolutePath, "--existing", file("src/main/resources/").absolutePath)
5550
}
5651

5752
configureEach {
58-
systemProperty("forge.logging.markers", "REGISTRIES")
59-
logLevel = org.slf4j.event.Level.DEBUG
60-
}
61-
}
62-
63-
mods {
64-
create("mekanismcurios") {
65-
sourceSet(sourceSets.main.get())
53+
workingDirectory(project.file("run"))
54+
property("forge.logging.markers", "REGISTRIES")
55+
property("forge.logging.console.level", "debug")
56+
property("mixin.env.remapRefMap", "true")
57+
property("mixin.env.refMapRemappingFile", "${projectDir}/build/createSrgToMcp/output.srg")
58+
59+
mods {
60+
create("mekanismcurios") {
61+
source(sourceSets.main.get())
62+
}
63+
}
6664
}
6765
}
6866
}
6967

7068
sourceSets.main.get().resources { srcDir("src/generated/resources") }
7169

72-
val localRuntime: Configuration by configurations.creating
73-
74-
configurations["runtimeClasspath"].extendsFrom(localRuntime)
70+
mixin {
71+
add(sourceSets.main.get(), "mekanismcurios.refmap.json")
72+
config("mekanismcurios.mixins.json")
73+
}
7574

7675
repositories {
7776
maven("https://modmaven.dev/")
7877
maven("https://maven.theillusivec4.top/")
7978
}
8079

8180
dependencies {
82-
compileOnly("mekanism:Mekanism:$minecraftVersion-$mekanismVersion:api")
83-
compileOnly("mekanism:Mekanism:$minecraftVersion-$mekanismVersion")
84-
compileOnly("top.theillusivec4.curios:curios-neoforge:$curiosVersion+$minecraftVersion:api")
85-
localRuntime("mekanism:Mekanism:$minecraftVersion-$mekanismVersion")
86-
runtimeOnly("top.theillusivec4.curios:curios-neoforge:$curiosVersion+$minecraftVersion")
81+
minecraft("net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}")
82+
annotationProcessor("org.spongepowered:mixin:0.8.5:processor")
83+
compileOnly(fg.deobf("mekanism:Mekanism:$minecraftVersion-$mekanismVersion:api"))
84+
compileOnly(fg.deobf("mekanism:Mekanism:$minecraftVersion-$mekanismVersion"))
85+
compileOnly(fg.deobf("top.theillusivec4.curios:curios-forge:$curiosVersion+$minecraftVersion:api"))
86+
runtimeOnly(fg.deobf("mekanism:Mekanism:$minecraftVersion-$mekanismVersion"))
87+
runtimeOnly(fg.deobf("top.theillusivec4.curios:curios-forge:$curiosVersion+$minecraftVersion"))
8788
}
8889

8990
tasks.processResources {
9091
var replaceProperties = mapOf("modVersion" to modVersion, "loaderVersionRange" to loaderVersionRange,
91-
"neoVersionRange" to neoVersionRange, "minecraftVersion" to minecraftVersion,
92+
"forgeVersionRange" to forgeVersionRange, "minecraftVersion" to minecraftVersion,
9293
"mekanismVersionRange" to mekanismVersionRange, "curiosVersionRange" to curiosVersionRange)
9394

9495
inputs.properties(replaceProperties)
95-
filesMatching("META-INF/neoforge.mods.toml") {
96+
filesMatching("META-INF/mods.toml") {
9697
expand(replaceProperties)
9798
}
9899
}
99100

100-
tasks.withType<JavaCompile> {
101-
options.encoding = "UTF-8"
101+
tasks.named<Jar>("jar") {
102+
manifest {
103+
attributes(
104+
mapOf(
105+
"Specification-Title" to "mekanismcurios",
106+
"Specification-Vendor" to "TonimatasDEV",
107+
"Specification-Version" to "1",
108+
"Implementation-Title" to "Mekanism Curios",
109+
"Implementation-Version" to project.tasks.jar.get().archiveVersion.get(),
110+
"Implementation-Vendor" to "TonimatasDEV",
111+
"Implementation-Timestamp" to ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")),
112+
"MixinConfigs" to "mekanismcurios.mixins.json"
113+
)
114+
)
115+
}
116+
117+
finalizedBy("reobfJar")
102118
}
103119

104-
idea {
105-
module {
106-
isDownloadSources = true
107-
isDownloadJavadoc = true
108-
}
120+
tasks.withType<JavaCompile> {
121+
options.encoding = "UTF-8"
109122
}

gradle.properties

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
11
# Gradle Properties
22
org.gradle.jvmargs=-Xmx5G
3-
org.gradle.daemon=true
4-
org.gradle.parallel=true
5-
org.gradle.caching=true
6-
org.gradle.configuration-cache=true
3+
org.gradle.daemon=false
74

85
# Minecraft Properties
9-
minecraftVersion=1.21.1
10-
parchmentMinecraftVersion=1.21.1
11-
parchmentMappingsVersion=2024.11.17
6+
minecraftVersion=1.20.1
7+
parchmentMappingsVersion=2023.09.03
128

13-
# NeoForge Properties
14-
neoVersion=21.1.159
15-
neoVersionRange=[21.1.0,)
16-
loaderVersionRange=[4,)
9+
# Forge Properties
10+
forgeVersion=47.4.0
11+
forgeVersionRange=[47,)
12+
loaderVersionRange=[47,)
1713

1814
## Mod Properties
1915
modVersion=1.0.0
20-
mekanismVersion=10.7.13.78
16+
mekanismVersion=10.4.15.75
2117
mekanismVersionRange=[10,)
22-
curiosVersion=9.4.2
23-
curiosVersionRange=[9,)
18+
curiosVersion=5.14.1
19+
curiosVersionRange=[5,)

settings.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ pluginManagement {
22
repositories {
33
mavenLocal()
44
gradlePluginPortal()
5-
maven("https://maven.neoforged.net/releases")
5+
maven("https://maven.minecraftforge.net/")
6+
maven("https://maven.parchmentmc.org/")
67
}
78
}
89

910
plugins {
10-
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
11+
id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0"
1112
}

src/main/java/dev/tonimatas/mekanismcurios/MekanismCurios.java

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,31 @@
11
package dev.tonimatas.mekanismcurios;
22

33
import com.mojang.logging.LogUtils;
4-
import dev.tonimatas.mekanismcurios.networking.OpenPortableQIOPacket;
5-
import mekanism.common.registries.MekanismItems;
4+
import dev.tonimatas.mekanismcurios.networking.ModMessages;
65
import net.minecraft.world.InteractionHand;
76
import net.minecraft.world.entity.player.Player;
87
import net.minecraft.world.item.ItemStack;
9-
import net.neoforged.bus.api.IEventBus;
10-
import net.neoforged.bus.api.SubscribeEvent;
11-
import net.neoforged.fml.common.Mod;
12-
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
13-
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
14-
import net.neoforged.neoforge.network.handling.MainThreadPayloadHandler;
15-
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
8+
import net.minecraftforge.fml.common.Mod;
9+
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
1610
import org.slf4j.Logger;
1711
import top.theillusivec4.curios.api.CuriosApi;
18-
import top.theillusivec4.curios.api.CuriosCapability;
1912

2013
@Mod(MekanismCurios.MODID)
2114
public class MekanismCurios {
2215
public static final String MODID = "mekanismcurios";
2316
public static final Logger LOGGER = LogUtils.getLogger();
2417

25-
public MekanismCurios(final IEventBus modBus) {
26-
modBus.addListener(this::registerCapabilities);
27-
modBus.addListener(this::registerNetworking);
28-
LOGGER.info("Mekanism Curios initialized successfully.");
29-
}
30-
31-
public void registerCapabilities(final RegisterCapabilitiesEvent event) {
32-
event.registerItem(CuriosCapability.ITEM, (stack, context) -> () -> stack, MekanismItems.PORTABLE_QIO_DASHBOARD.get());
33-
}
18+
public MekanismCurios(FMLJavaModLoadingContext context) {
19+
ModMessages.register();
3420

35-
@SubscribeEvent
36-
public void registerNetworking(final RegisterPayloadHandlersEvent event) {
37-
final PayloadRegistrar registrar = event.registrar("1");
38-
registrar.commonToServer(OpenPortableQIOPacket.TYPE, OpenPortableQIOPacket.STREAM_CODEC, new MainThreadPayloadHandler<>(OpenPortableQIOPacket::handle));
21+
LOGGER.info("Mekanism Curios initialized successfully.");
3922
}
4023

4124
public static ItemStack getQIO(Player player) {
4225
return CuriosApi.getCuriosInventory(player).map(iCuriosItemHandler ->
4326
iCuriosItemHandler.getCurios().get("qio").getStacks().getStackInSlot(0)).orElse(ItemStack.EMPTY);
4427
}
4528

46-
public static void setQIO(Player player, ItemStack stack) {
47-
CuriosApi.getCuriosInventory(player).ifPresent(curiosInventory ->
48-
curiosInventory.setEquippedCurio("qio", 0, stack));
49-
}
50-
5129
public static ItemStack getHandOrCuriosItem(Player player, InteractionHand hand) {
5230
if (hand == null) {
5331
return MekanismCurios.getQIO(player);

src/main/java/dev/tonimatas/mekanismcurios/MekanismCuriosClient.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
package dev.tonimatas.mekanismcurios;
22

3-
import dev.tonimatas.mekanismcurios.networking.OpenPortableQIOPacket;
3+
import dev.tonimatas.mekanismcurios.networking.ModMessages;
4+
import dev.tonimatas.mekanismcurios.networking.packet.OpenPortableQIOPacket;
45
import dev.tonimatas.mekanismcurios.util.KeyBinding;
5-
import net.neoforged.api.distmarker.Dist;
6-
import net.neoforged.bus.api.SubscribeEvent;
7-
import net.neoforged.fml.common.EventBusSubscriber;
8-
import net.neoforged.neoforge.client.event.ClientTickEvent;
9-
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
10-
import net.neoforged.neoforge.network.PacketDistributor;
6+
import net.minecraftforge.api.distmarker.Dist;
7+
import net.minecraftforge.client.event.InputEvent;
8+
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
9+
import net.minecraftforge.eventbus.api.SubscribeEvent;
10+
import net.minecraftforge.fml.common.Mod;
1111

1212
public class MekanismCuriosClient {
13-
@EventBusSubscriber(modid = MekanismCurios.MODID, value = Dist.CLIENT)
13+
@Mod.EventBusSubscriber(modid = MekanismCurios.MODID, value = Dist.CLIENT)
1414
public static class ClientForgeEvents {
1515
@SubscribeEvent
16-
public static void onClientTick(ClientTickEvent.Post event) {
16+
public static void onClientTick(InputEvent event) {
1717
while (KeyBinding.PORTABLE_QIO_MAPPING.get().consumeClick()) {
18-
PacketDistributor.sendToServer(new OpenPortableQIOPacket());
18+
ModMessages.sendToServer(new OpenPortableQIOPacket());
1919
}
2020
}
2121
}
2222

23-
@EventBusSubscriber(modid = MekanismCurios.MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD)
23+
@Mod.EventBusSubscriber(modid = MekanismCurios.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
2424
public static class ClientModBusEvents {
2525
@SubscribeEvent
2626
public static void onKeyRegister(RegisterKeyMappingsEvent event) {

src/main/java/dev/tonimatas/mekanismcurios/mixins/ContainerTypeRegistryObjectMixin.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22

33
import mekanism.common.registration.impl.ContainerTypeRegistryObject;
44
import net.minecraft.network.FriendlyByteBuf;
5-
import net.minecraft.network.RegistryFriendlyByteBuf;
65
import org.spongepowered.asm.mixin.Mixin;
76
import org.spongepowered.asm.mixin.injection.At;
87
import org.spongepowered.asm.mixin.injection.Redirect;
98

109
@Mixin(ContainerTypeRegistryObject.class)
1110
public class ContainerTypeRegistryObjectMixin {
12-
@Redirect(method = "lambda$tryOpenGui$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/RegistryFriendlyByteBuf;writeEnum(Ljava/lang/Enum;)Lnet/minecraft/network/FriendlyByteBuf;"))
13-
private static FriendlyByteBuf mci$tryOpenGui(RegistryFriendlyByteBuf instance, Enum<?> anEnum) {
14-
instance.writeNullable(anEnum, FriendlyByteBuf::writeEnum);
11+
@Redirect(method = "lambda$tryOpenGui$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/FriendlyByteBuf;writeEnum(Ljava/lang/Enum;)Lnet/minecraft/network/FriendlyByteBuf;"))
12+
private static FriendlyByteBuf mci$tryOpenGui(FriendlyByteBuf instance, Enum<?> pValue) {
13+
instance.writeNullable(pValue, FriendlyByteBuf::writeEnum);
1514
return instance;
1615
}
1716
}

src/main/java/dev/tonimatas/mekanismcurios/mixins/MekanismItemContainerMixin.java

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,14 @@
22

33
import dev.tonimatas.mekanismcurios.MekanismCurios;
44
import mekanism.common.inventory.container.item.MekanismItemContainer;
5-
import mekanism.common.inventory.container.sync.SyncableItemStack;
65
import net.minecraft.world.InteractionHand;
7-
import net.minecraft.world.entity.player.Inventory;
86
import net.minecraft.world.entity.player.Player;
97
import net.minecraft.world.item.ItemStack;
10-
import org.jetbrains.annotations.NotNull;
118
import org.spongepowered.asm.mixin.Final;
129
import org.spongepowered.asm.mixin.Mixin;
13-
import org.spongepowered.asm.mixin.Overwrite;
1410
import org.spongepowered.asm.mixin.Shadow;
1511
import org.spongepowered.asm.mixin.injection.At;
1612
import org.spongepowered.asm.mixin.injection.Inject;
17-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1813
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1914

2015
@Mixin(MekanismItemContainer.class)
@@ -23,6 +18,7 @@ public class MekanismItemContainerMixin {
2318
@Final
2419
protected InteractionHand hand;
2520

21+
@Final
2622
@Shadow protected ItemStack stack;
2723

2824
@Inject(method = "stillValid", at = @At("HEAD"), cancellable = true)
@@ -33,18 +29,4 @@ public class MekanismItemContainerMixin {
3329
cir.setReturnValue(validCurios);
3430
}
3531
}
36-
37-
@Inject(method = "addInventorySlots", at = @At(value = "INVOKE", target = "Lmekanism/common/inventory/container/MekanismContainer;addInventorySlots(Lnet/minecraft/world/entity/player/Inventory;)V", shift = At.Shift.AFTER), cancellable = true)
38-
private void mci$addInventorySlots(Inventory inventory, CallbackInfo ci) {
39-
if (this.hand == null) {
40-
for (int i = 0; i < Inventory.getSelectionSize(); i++) {
41-
if (i != inventory.selected) {
42-
int index = i;
43-
((MekanismItemContainer) (Object) this).track(SyncableItemStack.create(() -> inventory.getItem(index), item -> inventory.setItem(index, item)));
44-
}
45-
}
46-
47-
ci.cancel();
48-
}
49-
}
5032
}

0 commit comments

Comments
 (0)