From 6e3134161ad544fe79be5c0f0ce6bf861285448f Mon Sep 17 00:00:00 2001 From: TonimatasDEV Date: Tue, 21 Nov 2023 18:17:11 +0100 Subject: [PATCH] Forge 1.20.2 (#301) --- common/build.gradle | 2 +- .../forge/init/ModernFixClientForge.java | 19 ++++------ .../modernfix/forge/init/ModernFixForge.java | 3 +- .../forge/mixin/core/BootstrapMixin.java | 6 +-- .../forge/mixin/core/NetworkHooksMixin.java | 15 +++----- .../ForgeRegistryMixin.java | 32 ++++++++-------- .../modernfix/forge/packet/PacketHandler.java | 37 ++++++++----------- .../forge/ModernFixPlatformHooksImpl.java | 2 +- gradle.properties | 10 ++--- 9 files changed, 56 insertions(+), 70 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index 7f53ff75..a3e4f7ce 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -6,7 +6,7 @@ architectury { common(rootProject.enabled_platforms.split(",")) } -ext.jei_minecraft_version = "1.19.4" /* temporary, till 1.20 releases */ +ext.jei_minecraft_version = "1.20.2" /* temporary, till 1.20 releases */ dependencies { // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixClientForge.java b/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixClientForge.java index 1695d588..fa8ea134 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixClientForge.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixClientForge.java @@ -11,7 +11,6 @@ import net.minecraftforge.client.event.CustomizeGuiOverlayEvent; import net.minecraftforge.client.event.RecipesUpdatedEvent; import net.minecraftforge.client.event.RegisterClientCommandsEvent; import net.minecraftforge.client.event.RegisterKeyMappingsEvent; -import net.minecraftforge.client.gui.overlay.ForgeGui; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.event.TagsUpdatedEvent; import net.minecraftforge.event.TickEvent; @@ -19,12 +18,13 @@ import net.minecraftforge.event.level.LevelEvent; import net.minecraftforge.event.server.ServerStartedEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.*; +import net.minecraftforge.fml.ModLoader; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.ModLoadingStage; +import net.minecraftforge.fml.ModLoadingWarning; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import org.embeddedt.modernfix.ModernFixClient; -import org.embeddedt.modernfix.core.ModernFixMixinPlugin; import org.embeddedt.modernfix.forge.config.NightConfigFixer; import org.embeddedt.modernfix.screen.ModernFixConfigScreen; @@ -52,8 +52,7 @@ public class ModernFixClientForge { } private void onClientSetup(FMLClientSetupEvent event) { - if(false && ModernFixMixinPlugin.instance.isOptionEnabled("perf.dynamic_resources.ConnectednessCheck") - && ModList.get().isLoaded("connectedness")) { + if(false) { event.enqueueWork(() -> { ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.SIDED_SETUP, "modernfix.connectedness_dynresoruces")); }); @@ -80,7 +79,7 @@ public class ModernFixClientForge { @SubscribeEvent(priority = EventPriority.HIGHEST) public void onRenderOverlay(CustomizeGuiOverlayEvent.DebugText event) { - if(commonMod.brandingString != null && Minecraft.getInstance().options.renderDebug) { + if(commonMod.brandingString != null && Minecraft.getInstance().getDebugOverlay().showDebugScreen()) { if(brandingList.size() == 0) { brandingList.add(""); brandingList.add(commonMod.brandingString); @@ -103,10 +102,8 @@ public class ModernFixClientForge { @SubscribeEvent public void onDisconnect(LevelEvent.Unload event) { if(event.getLevel().isClientSide()) { - DebugScreenOverlay overlay = ObfuscationReflectionHelper.getPrivateValue(ForgeGui.class, (ForgeGui)Minecraft.getInstance().gui, "debugOverlay"); - if(overlay != null) { - Minecraft.getInstance().tell(overlay::clearChunkCache); - } + DebugScreenOverlay overlay = Minecraft.getInstance().getDebugOverlay(); + Minecraft.getInstance().tell(overlay::clearChunkCache); } } diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java b/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java index d732d0d9..d9780012 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java @@ -19,7 +19,6 @@ import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.loading.FMLLoader; -import net.minecraftforge.network.NetworkConstants; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.server.ServerLifecycleHooks; @@ -49,7 +48,7 @@ public class ModernFixForge { FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::registerItems); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> MinecraftForge.EVENT_BUS.register(new ModernFixClientForge())); - ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> NetworkConstants.IGNORESERVERONLY, (a, b) -> true)); + ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> IExtensionPoint.DisplayTest.IGNORESERVERONLY, (a, b) -> true)); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModernFixConfig.COMMON_CONFIG); PacketHandler.register(); ModFileScanDataDeduplicator.deduplicate(); diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapMixin.java index 86f648d8..e8dabfad 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapMixin.java @@ -1,10 +1,10 @@ package org.embeddedt.modernfix.forge.mixin.core; import net.minecraft.server.Bootstrap; -import net.minecraftforge.network.NetworkConstants; -import org.slf4j.Logger; +import net.minecraftforge.network.NetworkInitialization; import org.embeddedt.modernfix.forge.load.ModWorkManagerQueue; import org.embeddedt.modernfix.util.TimeFormatter; +import org.slf4j.Logger; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -31,6 +31,6 @@ public class BootstrapMixin { /* for https://github.com/MinecraftForge/MinecraftForge/issues/9505 */ @Inject(method = "bootStrap", at = @At("RETURN")) private static void doClassloadHack(CallbackInfo ci) { - NetworkConstants.init(); + NetworkInitialization.init(); } } diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/NetworkHooksMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/NetworkHooksMixin.java index 668870dd..b9e504be 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/NetworkHooksMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/NetworkHooksMixin.java @@ -1,22 +1,19 @@ package org.embeddedt.modernfix.forge.mixin.core; import net.minecraft.network.Connection; -import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.network.ConnectionType; +import net.minecraftforge.network.NetworkContext; import org.embeddedt.modernfix.forge.packet.NetworkUtils; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(NetworkHooks.class) +@Mixin(ForgeHooks.class) public abstract class NetworkHooksMixin { - @Shadow public static boolean isVanillaConnection(Connection manager) { - throw new AssertionError(); - } - - @Inject(method = "handleClientLoginSuccess", at = @At("RETURN"), remap = false) + @Inject(method = "handleClientConfigurationComplete", at = @At("RETURN"), remap = false) private static void setVanillaGlobalFlag(Connection manager, CallbackInfo ci) { - NetworkUtils.isCurrentlyVanilla = isVanillaConnection(manager); + NetworkUtils.isCurrentlyVanilla = NetworkContext.get(manager).getType() == ConnectionType.VANILLA; } } diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/fast_registry_validation/ForgeRegistryMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/fast_registry_validation/ForgeRegistryMixin.java index db3fc0c9..db49768f 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/fast_registry_validation/ForgeRegistryMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/fast_registry_validation/ForgeRegistryMixin.java @@ -1,6 +1,5 @@ package org.embeddedt.modernfix.forge.mixin.perf.fast_registry_validation; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import net.minecraftforge.registries.ForgeRegistry; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; @@ -10,26 +9,25 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.lang.reflect.Method; -import java.util.*; +import java.util.BitSet; @Mixin(value = ForgeRegistry.class, remap = false) public class ForgeRegistryMixin { - private static Method bitSetTrimMethod = null; - private static boolean bitSetTrimMethodRetrieved = false; + //private static Method bitSetTrimMethod = null; + //private static boolean bitSetTrimMethodRetrieved = false; - /** - * Cache the result of findMethod instead of running it multiple times. - * Null checks are not required as the surrounding code handles it already. - */ - @Redirect(method = "validateContent", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/util/ObfuscationReflectionHelper;findMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;")) - private Method skipMultipleRemap(Class clz, String methodName, Class[] params) { - if(!bitSetTrimMethodRetrieved) { - bitSetTrimMethodRetrieved = true; - bitSetTrimMethod = ObfuscationReflectionHelper.findMethod(clz, methodName, params); - } - return bitSetTrimMethod; - } + ///** + // * Cache the result of findMethod instead of running it multiple times. + // * Null checks are not required as the surrounding code handles it already. + // */ + //@Redirect(method = "validateContent", at = @At(value = "HEAD")) + //private Method skipMultipleRemap(Class clz, String methodName, Class[] params) { + // if(!bitSetTrimMethodRetrieved) { + // bitSetTrimMethodRetrieved = true; + // bitSetTrimMethod = ObfuscationReflectionHelper.findMethod(BitSet.class, methodName, params); + // } + // return bitSetTrimMethod; + //} private int expectedNextBit = -1; diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/packet/PacketHandler.java b/forge/src/main/java/org/embeddedt/modernfix/forge/packet/PacketHandler.java index e556618a..c6f50238 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/packet/PacketHandler.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/packet/PacketHandler.java @@ -1,35 +1,30 @@ package org.embeddedt.modernfix.forge.packet; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.network.NetworkEvent; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.network.Channel; +import net.minecraftforge.network.ChannelBuilder; +import net.minecraftforge.network.SimpleChannel; import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.ModernFixClient; import org.embeddedt.modernfix.packet.EntityIDSyncPacket; -import java.util.function.Supplier; - public class PacketHandler { - private static final String PROTOCOL_VERSION = "1"; - public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel( - new ResourceLocation(ModernFix.MODID, "main"), - () -> PROTOCOL_VERSION, - NetworkRegistry.acceptMissingOr(PROTOCOL_VERSION), - NetworkRegistry.acceptMissingOr(PROTOCOL_VERSION) - ); + private static final int PROTOCOL_VERSION = 1; + public static final SimpleChannel INSTANCE = ChannelBuilder + .named(new ResourceLocation(ModernFix.MODID, "main")) + .networkProtocolVersion(PROTOCOL_VERSION) + .serverAcceptedVersions(Channel.VersionTest.ACCEPT_MISSING.or(Channel.VersionTest.exact(PROTOCOL_VERSION))) + .clientAcceptedVersions(Channel.VersionTest.ACCEPT_MISSING.or(Channel.VersionTest.exact(PROTOCOL_VERSION))) + .simpleChannel(); public static void register() { - int id = 1; - INSTANCE.registerMessage(id++, EntityIDSyncPacket.class, EntityIDSyncPacket::serialize, EntityIDSyncPacket::deserialize, PacketHandler::handleSyncPacket); - } - - private static void handleSyncPacket(EntityIDSyncPacket packet, Supplier contextSupplier) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - contextSupplier.get().enqueueWork(() -> ModernFixClient.handleEntityIDSync(packet)); - contextSupplier.get().setPacketHandled(true); - }); + INSTANCE.messageBuilder(EntityIDSyncPacket.class).encoder(EntityIDSyncPacket::serialize).decoder(EntityIDSyncPacket::deserialize).consumerNetworkThread((msg, ctx) -> { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + ctx.enqueueWork(() -> ModernFixClient.handleEntityIDSync(msg)); + ctx.setPacketHandled(true); + }); + }).add(); } } diff --git a/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java b/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java index 9131b046..e42c150e 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java +++ b/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java @@ -90,7 +90,7 @@ public class ModernFixPlatformHooksImpl implements ModernFixPlatformHooks { } public void sendPacket(ServerPlayer player, Object packet) { - PacketHandler.INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), packet); + PacketHandler.INSTANCE.send(packet, PacketDistributor.PLAYER.with(player)); } public void injectPlatformSpecificHacks() { diff --git a/gradle.properties b/gradle.properties index 25d70633..d3b14649 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,12 +6,12 @@ mixinextras_version=0.2.0-beta.9 mod_id=modernfix minecraft_version=1.20.2 -enabled_platforms=fabric -forge_version=1.20.1-47.1.3 +enabled_platforms=fabric,forge +forge_version=1.20.2-48.0.40 # parchment_version=2023.07.09 refined_storage_version=4392788 -jei_version=13.1.0.2 -rei_version=11.0.597 +jei_version=16.0.0.28 +rei_version=13.0.678 ctm_version=1.20.1-1.1.8+4 kubejs_version=1902.6.0-build.142 rhino_version=1902.2.2-build.268 @@ -20,7 +20,7 @@ supported_minecraft_versions=1.20.2 fabric_loader_version=0.14.22 fabric_api_version=0.89.2+1.20.2 -continuity_version=3.0.0-beta.2+1.19.3 +continuity_version=3.0.0-beta.4+1.20.2 modmenu_version=7.0.0-beta.2 diagonal_fences_version=4558828