From a81fd9a48345855c27301dff466de110e75da960 Mon Sep 17 00:00:00 2001 From: coolGi Date: Wed, 8 Jun 2022 18:53:28 +0930 Subject: [PATCH] Nearly everything for 1.19 is fixed (all that is left is generator & architectury) --- Readme.md | 6 ++++ build.gradle | 33 +++++++++---------- .../common/forge/LodForgeMethodCaller.java | 9 ++++- .../wrappers/block/BlockDetailWrapper.java | 5 +++ .../minecraft/MinecraftRenderWrapper.java | 4 +++ .../src/main/resources/1_19.lod.accesswidener | 10 +++--- fabric/build.gradle | 4 +-- .../lod/fabric/mixins/MixinFogRenderer.java | 6 +++- .../lod/fabric/mixins/MixinOptionsScreen.java | 6 ++++ forge/build.gradle | 2 +- .../java/com/seibel/lod/forge/ForgeMain.java | 9 +++++ .../lod/forge/mixins/MixinOptionsScreen.java | 6 ++++ .../networking/ClientConnectionMixin.java | 10 ++++++ 13 files changed, 83 insertions(+), 27 deletions(-) diff --git a/Readme.md b/Readme.md index 27b14048b..dd5420212 100644 --- a/Readme.md +++ b/Readme.md @@ -27,6 +27,12 @@ This branch is for these versions of Minecraft Architectury version: 3.4-SNAPSHOT\ Java Compiler plugin: Manifold Preprocessor +#### 1.19 mods +Forge version: 41.0.1\ +Fabric version: 0.14.6\ +Fabric API version: 0.55.1+1.19\ +Modmenu version: 4.0.0 + #### 1.18.2 mods Forge version: 40.0.18\ Fabric version: 0.13.3\ diff --git a/build.gradle b/build.gradle index 70f716b4c..9190c4b78 100644 --- a/build.gradle +++ b/build.gradle @@ -89,9 +89,9 @@ subprojects { p -> loom { silentMojangMappingsLicense() -// if (p != project(":core")) { -// accessWidenerPath.set(project(":common").file("src/main/resources/${acsessWidenerVersion}.lod.accesswidener")) -// } + if (p != project(":core")) { + accessWidenerPath.set(project(":common").file("src/main/resources/${acsessWidenerVersion}.lod.accesswidener")) + } } configurations { @@ -122,10 +122,10 @@ subprojects { p -> modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" } -// if (p != project(":core")) { -// common(project(":core")) { transitive false } -// shadowMe(project(":core")) { transitive false } -// } + if (p != project(":core")) { + common(project(":core")) { transitive false } + shadowMe(project(":core")) { transitive false } + } } // Allows the jar to run standalone @@ -239,10 +239,10 @@ allprojects { p -> rename "${rootProject.acsessWidenerVersion}.lod.accesswidener", "lod.accesswidener" } -// task copyCoreResources(type: Copy) { -// from fileTree(project(":core").file("src/main/resources")) -// into p.file("build/resources/main") -// } + task copyCoreResources(type: Copy) { + from fileTree(project(":core").file("src/main/resources")) + into p.file("build/resources/main") + } task copyCommonResources(type: Copy) { from fileTree(project(":common").file("src/main/resources")) @@ -277,12 +277,12 @@ allprojects { p -> // println options.compilerArgs // Set the java version -// if (p != project(":core")) { + if (p != project(":core")) { options.compilerArgs += ['-Xplugin:Manifold'] options.release = rootProject.java_version as Integer -// } else if (p == project(":core")) { -// options.release = 8; // Core should use Java 8 no matter what -// } + } else if (p == project(":core")) { + options.release = 8; // Core should use Java 8 no matter what + } // TODO: make everything use java 8 // options.release = 8 // Use Java 8 for everything so back porting is easier } @@ -292,8 +292,7 @@ allprojects { p -> } // Disable running the core and common -// if (p == project(":core") || p == project(":common")) { - if (p == project(":common")) { + if (p == project(":core") || p == project(":common")) { runClient.enabled = false runServer.enabled = false } diff --git a/common/src/main/java/com/seibel/lod/common/forge/LodForgeMethodCaller.java b/common/src/main/java/com/seibel/lod/common/forge/LodForgeMethodCaller.java index 0f392f478..81876733d 100644 --- a/common/src/main/java/com/seibel/lod/common/forge/LodForgeMethodCaller.java +++ b/common/src/main/java/com/seibel/lod/common/forge/LodForgeMethodCaller.java @@ -22,6 +22,9 @@ package com.seibel.lod.common.forge; import com.seibel.lod.common.wrappers.minecraft.MinecraftClientWrapper; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.Direction; +#if MC_1_19 +import net.minecraft.util.RandomSource; +#endif import net.minecraft.world.level.ColorResolver; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; @@ -36,7 +39,11 @@ import java.util.Random; * @author Ran */ public interface LodForgeMethodCaller { - List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, Random random); + #if PRE_MC_1_19 + List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, Random random); // FIXME: For 1.19 + #else + List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, RandomSource random); // FIXME: For 1.19 + #endif int colorResolverGetColor(ColorResolver resolver, Biome biome, double x, double z); } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockDetailWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockDetailWrapper.java index c7bc96b1f..dffb5358d 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockDetailWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockDetailWrapper.java @@ -50,6 +50,7 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Cursor3D; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.level.*; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; @@ -77,7 +78,11 @@ public class BlockDetailWrapper extends IBlockDetailWrapper public static final int FLOWER_COLOR_SCALE = 5; + #if PRE_MC_1_19 public static final Random random = new Random(0); + #else + public static final RandomSource random = RandomSource.create(); + #endif enum ColorMode { Default, diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java index 4475741f8..5dfdad34e 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -133,7 +133,11 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper @Override public double getGamma() { + #if PRE_MC_1_19 return MC.options.gamma; + #else + return MC.options.gamma().get(); + #endif } @Override diff --git a/common/src/main/resources/1_19.lod.accesswidener b/common/src/main/resources/1_19.lod.accesswidener index f5fbb63b0..44e22f66d 100644 --- a/common/src/main/resources/1_19.lod.accesswidener +++ b/common/src/main/resources/1_19.lod.accesswidener @@ -6,7 +6,7 @@ accessible field net/minecraft/world/level/storage/DimensionDataStorage dataFold # used when rendering accessible field com/mojang/blaze3d/vertex/VertexBuffer indexCount I -accessible field com/mojang/blaze3d/vertex/VertexBuffer vertextBufferId I +#accessible field com/mojang/blaze3d/vertex/VertexBuffer vertextBufferId I #FIXME (is it needed for 1.19?) accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecraft/client/Camera;FZ)D # used for grabbing vanilla rendered chunks @@ -24,15 +24,15 @@ accessible field net/minecraft/world/level/lighting/LevelLightEngine skyEngine L # world generation accessible method net/minecraft/world/level/levelgen/Heightmap setHeight (III)V accessible field net/minecraft/world/level/biome/Biome generationSettings Lnet/minecraft/world/level/biome/BiomeGenerationSettings; -accessible field net/minecraft/world/level/biome/Biome biomeCategory Lnet/minecraft/world/level/biome/Biome$BiomeCategory; +#accessible field net/minecraft/world/level/biome/Biome biomeCategory Lnet/minecraft/world/level/biome/Biome$BiomeCategory; #FIXME (is it needed for 1.19?) # accessible field net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator settings Lnet/minecraft/core/Holder; -accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doFill (Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;II)Lnet/minecraft/world/level/chunk/ChunkAccess; -#accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doCreateBiomes (Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;)V +#accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doFill (Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;II)Lnet/minecraft/world/level/chunk/ChunkAccess; #FIXME (is it needed for 1.19?) +#accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doCreateBiomes (Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;)V #FIXME (is it needed for 1.19?) accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V # lod generation from save file accessible field net/minecraft/server/level/ChunkMap mainThreadExecutor Lnet/minecraft/util/thread/BlockableEventLoop; -accessible method net/minecraft/server/level/ChunkMap readChunk (Lnet/minecraft/world/level/ChunkPos;)Lnet/minecraft/nbt/CompoundTag; +#accessible method net/minecraft/server/level/ChunkMap readChunk (Lnet/minecraft/world/level/ChunkPos;)Lnet/minecraft/nbt/CompoundTag; #FIXME (is it needed for 1.19?) # grabbing textures diff --git a/fabric/build.gradle b/fabric/build.gradle index ce0efe18b..7847249c1 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -100,13 +100,13 @@ task deleteResources(type: Delete) { } processResources { -// dependsOn(copyCoreResources) + dependsOn(copyCoreResources) dependsOn(copyCommonResources) dependsOn(copyAccessWidener) } runClient { -// dependsOn(copyCoreResources) + dependsOn(copyCoreResources) dependsOn(copyCommonResources) dependsOn(copyAccessWidener) jvmArgs "-XX:-OmitStackTraceInFastThrow" diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinFogRenderer.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinFogRenderer.java index cb60aa08c..b7f9f94bc 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinFogRenderer.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinFogRenderer.java @@ -48,8 +48,12 @@ public class MixinFogRenderer { private static final float A_REALLY_REALLY_BIG_VALUE = 420694206942069.F; private static final float A_EVEN_LARGER_VALUE = 42069420694206942069.F; - @Inject(at = @At("RETURN"), method = "setupFog(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/FogRenderer$FogMode;FZ)V") + @Inject(at = @At("RETURN"), method = "setupFog") + #if PRE_MC_1_19 private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, CallbackInfo callback) { + #else + private static void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float g, CallbackInfo callback) { + #endif #if PRE_MC_1_17_1 FluidState fluidState = camera.getFluidInCamera(); boolean cameraNotInFluid = fluidState.isEmpty(); diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java index f20fd6c9d..8d75caf11 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinOptionsScreen.java @@ -27,7 +27,9 @@ import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +#if PRE_MC_1_19 import net.minecraft.network.chat.TranslatableComponent; +#endif import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -67,6 +69,10 @@ public class MixinOptionsScreen extends Screen { // For now it goes to the client option by default (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(ConfigGui.getScreen(this, "client")), // Add a title to the screen + #if PRE_MC_1_19 new TranslatableComponent("text.autoconfig." + ModInfo.ID + ".title"))); + #else + Component.literal("text.autoconfig." + ModInfo.ID + ".title"))); + #endif } } diff --git a/forge/build.gradle b/forge/build.gradle index a297d842b..8f023fda4 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -58,7 +58,7 @@ dependencies { processResources { dependsOn(copyAccessWidener) -// dependsOn(copyCoreResources) + dependsOn(copyCoreResources) dependsOn(copyCommonResources) } diff --git a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java index a135c3ac3..90db49e2c 100644 --- a/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/lod/forge/ForgeMain.java @@ -35,6 +35,9 @@ import com.seibel.lod.forge.wrappers.modAccessor.OptifineAccessor; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.Direction; +#if MC_1_19 +import net.minecraft.util.RandomSource; +#endif import net.minecraft.world.level.ColorResolver; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; @@ -109,9 +112,15 @@ public class ForgeMain implements LodForgeMethodCaller private final ModelDataMap dataMap = new ModelDataMap.Builder().build(); @Override + #if PRE_MC_1_19 public List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, Random random) { return mc.getModelManager().getBlockModelShaper().getBlockModel(block.defaultBlockState()).getQuads(blockState, direction, random, dataMap); } + #else + public List getQuads(MinecraftClientWrapper mc, Block block, BlockState blockState, Direction direction, RandomSource random) { + return mc.getModelManager().getBlockModelShaper().getBlockModel(block.defaultBlockState()).getQuads(blockState, direction, random, dataMap); + } + #endif @Override public int colorResolverGetColor(ColorResolver resolver, Biome biome, double x, double z) { diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java index a176b10d0..a515d0d66 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinOptionsScreen.java @@ -27,7 +27,9 @@ import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; import net.minecraft.client.gui.screens.OptionsScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; +#if PRE_MC_1_19 import net.minecraft.network.chat.TranslatableComponent; +#endif import net.minecraft.resources.ResourceLocation; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -67,6 +69,10 @@ public class MixinOptionsScreen extends Screen { // For now it goes to the client option by default (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(ConfigGui.getScreen(this, "client")), // Add a title to the screen + #if PRE_MC_1_19 new TranslatableComponent("text.autoconfig." + ModInfo.ID + ".title"))); + #else + Component.literal("text.autoconfig." + ModInfo.ID + ".title"))); + #endif } } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/fabric/mixin/networking/ClientConnectionMixin.java b/forge/src/main/java/com/seibel/lod/forge/mixins/fabric/mixin/networking/ClientConnectionMixin.java index 5f2d74b1d..7c8754bf9 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/fabric/mixin/networking/ClientConnectionMixin.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/fabric/mixin/networking/ClientConnectionMixin.java @@ -37,7 +37,9 @@ import com.seibel.lod.forge.fabric.impl.networking.PacketCallbackListener; import net.minecraft.network.Connection; import net.minecraft.network.PacketListener; import net.minecraft.network.chat.Component; +#if PRE_MC_1_19 import net.minecraft.network.chat.TranslatableComponent; +#endif import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.PacketFlow; import net.minecraft.resources.ResourceLocation; @@ -67,11 +69,19 @@ abstract class ClientConnectionMixin implements ChannelInfoHolder { private void resendOnExceptionCaught(Connection self, Packet packet, GenericFutureListener> listener) { PacketListener handler = this.packetListener; + #if PRE_MC_1_19 if (handler instanceof DisconnectPacketSource) { this.send(((DisconnectPacketSource) handler).createDisconnectPacket(new TranslatableComponent("disconnect.genericReason")), listener); } else { this.disconnect(new TranslatableComponent("disconnect.genericReason")); // Don't send packet if we cannot send proper packets } + #else + if (handler instanceof DisconnectPacketSource) { + this.send(((DisconnectPacketSource) handler).createDisconnectPacket(Component.literal("disconnect.genericReason")), listener); + } else { + this.disconnect(Component.literal("disconnect.genericReason")); // Don't send packet if we cannot send proper packets + } + #endif } @Inject(method = "sendPacket", at = @At(value = "FIELD", target = "Lnet/minecraft/network/Connection;sentPackets:I"))