Forge 1.20.2 (#301)

This commit is contained in:
TonimatasDEV 2023-11-21 18:17:11 +01:00 committed by GitHub
parent c672948d8c
commit 6e3134161a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 56 additions and 70 deletions

View File

@ -6,7 +6,7 @@ architectury {
common(rootProject.enabled_platforms.split(",")) 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 { dependencies {
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies // We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies

View File

@ -11,7 +11,6 @@ import net.minecraftforge.client.event.CustomizeGuiOverlayEvent;
import net.minecraftforge.client.event.RecipesUpdatedEvent; import net.minecraftforge.client.event.RecipesUpdatedEvent;
import net.minecraftforge.client.event.RegisterClientCommandsEvent; import net.minecraftforge.client.event.RegisterClientCommandsEvent;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent; import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.client.gui.overlay.ForgeGui;
import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyConflictContext;
import net.minecraftforge.event.TagsUpdatedEvent; import net.minecraftforge.event.TagsUpdatedEvent;
import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.TickEvent;
@ -19,12 +18,13 @@ import net.minecraftforge.event.level.LevelEvent;
import net.minecraftforge.event.server.ServerStartedEvent; import net.minecraftforge.event.server.ServerStartedEvent;
import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent; 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.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
import org.embeddedt.modernfix.ModernFixClient; import org.embeddedt.modernfix.ModernFixClient;
import org.embeddedt.modernfix.core.ModernFixMixinPlugin;
import org.embeddedt.modernfix.forge.config.NightConfigFixer; import org.embeddedt.modernfix.forge.config.NightConfigFixer;
import org.embeddedt.modernfix.screen.ModernFixConfigScreen; import org.embeddedt.modernfix.screen.ModernFixConfigScreen;
@ -52,8 +52,7 @@ public class ModernFixClientForge {
} }
private void onClientSetup(FMLClientSetupEvent event) { private void onClientSetup(FMLClientSetupEvent event) {
if(false && ModernFixMixinPlugin.instance.isOptionEnabled("perf.dynamic_resources.ConnectednessCheck") if(false) {
&& ModList.get().isLoaded("connectedness")) {
event.enqueueWork(() -> { event.enqueueWork(() -> {
ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.SIDED_SETUP, "modernfix.connectedness_dynresoruces")); 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) @SubscribeEvent(priority = EventPriority.HIGHEST)
public void onRenderOverlay(CustomizeGuiOverlayEvent.DebugText event) { 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) { if(brandingList.size() == 0) {
brandingList.add(""); brandingList.add("");
brandingList.add(commonMod.brandingString); brandingList.add(commonMod.brandingString);
@ -103,10 +102,8 @@ public class ModernFixClientForge {
@SubscribeEvent @SubscribeEvent
public void onDisconnect(LevelEvent.Unload event) { public void onDisconnect(LevelEvent.Unload event) {
if(event.getLevel().isClientSide()) { if(event.getLevel().isClientSide()) {
DebugScreenOverlay overlay = ObfuscationReflectionHelper.getPrivateValue(ForgeGui.class, (ForgeGui)Minecraft.getInstance().gui, "debugOverlay"); DebugScreenOverlay overlay = Minecraft.getInstance().getDebugOverlay();
if(overlay != null) { Minecraft.getInstance().tell(overlay::clearChunkCache);
Minecraft.getInstance().tell(overlay::clearChunkCache);
}
} }
} }

View File

@ -19,7 +19,6 @@ import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.fml.loading.FMLLoader;
import net.minecraftforge.network.NetworkConstants;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.registries.RegisterEvent;
import net.minecraftforge.server.ServerLifecycleHooks; import net.minecraftforge.server.ServerLifecycleHooks;
@ -49,7 +48,7 @@ public class ModernFixForge {
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::registerItems); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::registerItems);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> MinecraftForge.EVENT_BUS.register(new ModernFixClientForge())); 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); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModernFixConfig.COMMON_CONFIG);
PacketHandler.register(); PacketHandler.register();
ModFileScanDataDeduplicator.deduplicate(); ModFileScanDataDeduplicator.deduplicate();

View File

@ -1,10 +1,10 @@
package org.embeddedt.modernfix.forge.mixin.core; package org.embeddedt.modernfix.forge.mixin.core;
import net.minecraft.server.Bootstrap; import net.minecraft.server.Bootstrap;
import net.minecraftforge.network.NetworkConstants; import net.minecraftforge.network.NetworkInitialization;
import org.slf4j.Logger;
import org.embeddedt.modernfix.forge.load.ModWorkManagerQueue; import org.embeddedt.modernfix.forge.load.ModWorkManagerQueue;
import org.embeddedt.modernfix.util.TimeFormatter; import org.embeddedt.modernfix.util.TimeFormatter;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
@ -31,6 +31,6 @@ public class BootstrapMixin {
/* for https://github.com/MinecraftForge/MinecraftForge/issues/9505 */ /* for https://github.com/MinecraftForge/MinecraftForge/issues/9505 */
@Inject(method = "bootStrap", at = @At("RETURN")) @Inject(method = "bootStrap", at = @At("RETURN"))
private static void doClassloadHack(CallbackInfo ci) { private static void doClassloadHack(CallbackInfo ci) {
NetworkConstants.init(); NetworkInitialization.init();
} }
} }

View File

@ -1,22 +1,19 @@
package org.embeddedt.modernfix.forge.mixin.core; package org.embeddedt.modernfix.forge.mixin.core;
import net.minecraft.network.Connection; 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.embeddedt.modernfix.forge.packet.NetworkUtils;
import org.spongepowered.asm.mixin.Mixin; 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.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(NetworkHooks.class) @Mixin(ForgeHooks.class)
public abstract class NetworkHooksMixin { public abstract class NetworkHooksMixin {
@Shadow public static boolean isVanillaConnection(Connection manager) { @Inject(method = "handleClientConfigurationComplete", at = @At("RETURN"), remap = false)
throw new AssertionError();
}
@Inject(method = "handleClientLoginSuccess", at = @At("RETURN"), remap = false)
private static void setVanillaGlobalFlag(Connection manager, CallbackInfo ci) { private static void setVanillaGlobalFlag(Connection manager, CallbackInfo ci) {
NetworkUtils.isCurrentlyVanilla = isVanillaConnection(manager); NetworkUtils.isCurrentlyVanilla = NetworkContext.get(manager).getType() == ConnectionType.VANILLA;
} }
} }

View File

@ -1,6 +1,5 @@
package org.embeddedt.modernfix.forge.mixin.perf.fast_registry_validation; package org.embeddedt.modernfix.forge.mixin.perf.fast_registry_validation;
import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.ForgeRegistry;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Marker; 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.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.lang.reflect.Method; import java.util.BitSet;
import java.util.*;
@Mixin(value = ForgeRegistry.class, remap = false) @Mixin(value = ForgeRegistry.class, remap = false)
public class ForgeRegistryMixin<V> { public class ForgeRegistryMixin<V> {
private static Method bitSetTrimMethod = null; //private static Method bitSetTrimMethod = null;
private static boolean bitSetTrimMethodRetrieved = false; //private static boolean bitSetTrimMethodRetrieved = false;
/** ///**
* Cache the result of findMethod instead of running it multiple times. // * Cache the result of findMethod instead of running it multiple times.
* Null checks are not required as the surrounding code handles it already. // * 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;")) //@Redirect(method = "validateContent", at = @At(value = "HEAD"))
private Method skipMultipleRemap(Class<?> clz, String methodName, Class<?>[] params) { //private Method skipMultipleRemap(Class<?> clz, String methodName, Class<?>[] params) {
if(!bitSetTrimMethodRetrieved) { // if(!bitSetTrimMethodRetrieved) {
bitSetTrimMethodRetrieved = true; // bitSetTrimMethodRetrieved = true;
bitSetTrimMethod = ObfuscationReflectionHelper.findMethod(clz, methodName, params); // bitSetTrimMethod = ObfuscationReflectionHelper.findMethod(BitSet.class, methodName, params);
} // }
return bitSetTrimMethod; // return bitSetTrimMethod;
} //}
private int expectedNextBit = -1; private int expectedNextBit = -1;

View File

@ -1,35 +1,30 @@
package org.embeddedt.modernfix.forge.packet; package org.embeddedt.modernfix.forge.packet;
import net.minecraft.resources.ResourceLocation; 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.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor; 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.ModernFix;
import org.embeddedt.modernfix.ModernFixClient; import org.embeddedt.modernfix.ModernFixClient;
import org.embeddedt.modernfix.packet.EntityIDSyncPacket; import org.embeddedt.modernfix.packet.EntityIDSyncPacket;
import java.util.function.Supplier;
public class PacketHandler { public class PacketHandler {
private static final String PROTOCOL_VERSION = "1"; private static final int PROTOCOL_VERSION = 1;
public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel( public static final SimpleChannel INSTANCE = ChannelBuilder
new ResourceLocation(ModernFix.MODID, "main"), .named(new ResourceLocation(ModernFix.MODID, "main"))
() -> PROTOCOL_VERSION, .networkProtocolVersion(PROTOCOL_VERSION)
NetworkRegistry.acceptMissingOr(PROTOCOL_VERSION), .serverAcceptedVersions(Channel.VersionTest.ACCEPT_MISSING.or(Channel.VersionTest.exact(PROTOCOL_VERSION)))
NetworkRegistry.acceptMissingOr(PROTOCOL_VERSION) .clientAcceptedVersions(Channel.VersionTest.ACCEPT_MISSING.or(Channel.VersionTest.exact(PROTOCOL_VERSION)))
); .simpleChannel();
public static void register() { public static void register() {
int id = 1; INSTANCE.messageBuilder(EntityIDSyncPacket.class).encoder(EntityIDSyncPacket::serialize).decoder(EntityIDSyncPacket::deserialize).consumerNetworkThread((msg, ctx) -> {
INSTANCE.registerMessage(id++, EntityIDSyncPacket.class, EntityIDSyncPacket::serialize, EntityIDSyncPacket::deserialize, PacketHandler::handleSyncPacket); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
} ctx.enqueueWork(() -> ModernFixClient.handleEntityIDSync(msg));
ctx.setPacketHandled(true);
private static void handleSyncPacket(EntityIDSyncPacket packet, Supplier<NetworkEvent.Context> contextSupplier) { });
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { }).add();
contextSupplier.get().enqueueWork(() -> ModernFixClient.handleEntityIDSync(packet));
contextSupplier.get().setPacketHandled(true);
});
} }
} }

View File

@ -90,7 +90,7 @@ public class ModernFixPlatformHooksImpl implements ModernFixPlatformHooks {
} }
public void sendPacket(ServerPlayer player, Object packet) { 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() { public void injectPlatformSpecificHacks() {

View File

@ -6,12 +6,12 @@ mixinextras_version=0.2.0-beta.9
mod_id=modernfix mod_id=modernfix
minecraft_version=1.20.2 minecraft_version=1.20.2
enabled_platforms=fabric enabled_platforms=fabric,forge
forge_version=1.20.1-47.1.3 forge_version=1.20.2-48.0.40
# parchment_version=2023.07.09 # parchment_version=2023.07.09
refined_storage_version=4392788 refined_storage_version=4392788
jei_version=13.1.0.2 jei_version=16.0.0.28
rei_version=11.0.597 rei_version=13.0.678
ctm_version=1.20.1-1.1.8+4 ctm_version=1.20.1-1.1.8+4
kubejs_version=1902.6.0-build.142 kubejs_version=1902.6.0-build.142
rhino_version=1902.2.2-build.268 rhino_version=1902.2.2-build.268
@ -20,7 +20,7 @@ supported_minecraft_versions=1.20.2
fabric_loader_version=0.14.22 fabric_loader_version=0.14.22
fabric_api_version=0.89.2+1.20.2 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 modmenu_version=7.0.0-beta.2
diagonal_fences_version=4558828 diagonal_fences_version=4558828