Replace sodium mixins with an Indium dependency

This commit is contained in:
James Seibel
2023-09-23 11:11:24 -05:00
parent e476b56ac1
commit e1907245e2
13 changed files with 47 additions and 35 deletions
+1
View File
@@ -398,6 +398,7 @@ subprojects { p ->
git_main_branch : git_main_branch,
fabric_incompatibility_list : fabric_incompatibility_list,
fabric_recommend_list : fabric_recommend_list,
]
// The left side is what gets replaced in the mod info and the right side is where to get it from in the gradle.properties
@@ -191,34 +191,24 @@ public class FabricClientProxy
// Client Render Level
WorldRenderEvents.AFTER_SETUP.register((renderContext) ->
{
if (sodiumAccessor != null)
this.clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()),
McObjectConverter.Convert(renderContext.matrixStack().last().pose()),
McObjectConverter.Convert(renderContext.projectionMatrix()),
renderContext.tickDelta());
// experimental proof-of-concept option
if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get())
{
sodiumAccessor.levelWrapper = ClientLevelWrapper.getWrapper(renderContext.world());
sodiumAccessor.mcModelViewMatrix = McObjectConverter.Convert(renderContext.matrixStack().last().pose());
sodiumAccessor.mcProjectionMatrix = McObjectConverter.Convert(renderContext.projectionMatrix());
sodiumAccessor.partialTicks = renderContext.tickDelta();
}
else
{
this.clientApi.renderLods(ClientLevelWrapper.getWrapper(renderContext.world()),
McObjectConverter.Convert(renderContext.matrixStack().last().pose()),
McObjectConverter.Convert(renderContext.projectionMatrix()),
renderContext.tickDelta());
float[] matrixFloatArray = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(renderContext.projectionMatrix(), renderContext.tickDelta());
// experimental proof-of-concept option
if (Config.Client.Advanced.Graphics.AdvancedGraphics.seamlessOverdraw.get())
{
float[] matrixFloatArray = SeamlessOverdraw.overwriteMinecraftNearFarClipPlanes(renderContext.projectionMatrix(), renderContext.tickDelta());
#if MC_1_16_5
SeamlessOverdraw.applyLegacyProjectionMatrix(matrixFloatArray);
#elif PRE_MC_1_19_4
renderContext.projectionMatrix().load(FloatBuffer.wrap(matrixFloatArray));
#else
renderContext.projectionMatrix().set(matrixFloatArray);
#endif
}
#if MC_1_16_5
SeamlessOverdraw.applyLegacyProjectionMatrix(matrixFloatArray);
#elif PRE_MC_1_19_4
renderContext.projectionMatrix().load(FloatBuffer.wrap(matrixFloatArray));
#else
renderContext.projectionMatrix().set(matrixFloatArray);
#endif
}
});
@@ -23,6 +23,7 @@ import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiAfterDh
import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiBeforeDhInitEvent;
import com.seibel.distanthorizons.core.config.ConfigBase;
import com.seibel.distanthorizons.core.jar.ModGitInfo;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.*;
import com.seibel.distanthorizons.common.LodCommonMain;
import com.seibel.distanthorizons.coreapi.ModInfo;
@@ -83,26 +84,36 @@ public class FabricMain
LOGGER.info("DH Commit: " + ModGitInfo.Git_Main_Commit);
LOGGER.info("DH-Core Commit: " + ModGitInfo.Git_Core_Commit);
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("sodium"))
IModChecker modChecker = SingletonInjector.INSTANCE.get(IModChecker.class);
if (modChecker.isModLoaded("sodium"))
{
ModAccessorInjector.INSTANCE.bind(ISodiumAccessor.class, new SodiumAccessor());
// If sodium is installed Indium is also necessary in order to use the Fabric rendering API
if (!modChecker.isModLoaded("indium"))
{
IMinecraftClientWrapper mc = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
String errorMessage = "loading Distant Horizons. Distant Horizons requires Indium in order to run with Sodium.";
String exceptionError = "Distant Horizons conditional mod Exception";
mc.crashMinecraft(errorMessage, new Exception(exceptionError));
}
}
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("starlight"))
if (modChecker.isModLoaded("starlight"))
{
ModAccessorInjector.INSTANCE.bind(IStarlightAccessor.class, new StarlightAccessor());
}
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("optifine"))
if (modChecker.isModLoaded("optifine"))
{
ModAccessorInjector.INSTANCE.bind(IOptifineAccessor.class, new OptifineAccessor());
}
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("bclib"))
if (modChecker.isModLoaded("bclib"))
{
ModAccessorInjector.INSTANCE.bind(IBCLibAccessor.class, new BCLibAccessor());
}
#if MC_1_16_5 || MC_1_18_2 || MC_1_19_2 || MC_1_19_4 || MC_1_20_1
// 1.17.1 won't support this since there isn't a matching Iris version
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("iris"))
if (modChecker.isModLoaded("iris"))
{
ModAccessorInjector.INSTANCE.bind(IIrisAccessor.class, new IrisAccessor());
}
@@ -1,5 +1,7 @@
package com.seibel.distanthorizons.fabric.mixins.mods.sodium;
/* Removed since DH now uses Indium so we can use the Fabric rendering API instead
#if POST_MC_1_20_1
// Sodium 0.5
import com.mojang.blaze3d.vertex.PoseStack;
@@ -139,3 +141,5 @@ public class MixinSodiumRenderer
}
#endif
*/
@@ -18,8 +18,7 @@
"client.MixinLightmap",
"client.MixinOptionsScreen",
"client.MixinMinecraft",
"client.MixinTextureUtil",
"mods.sodium.MixinSodiumRenderer"
"client.MixinTextureUtil"
],
"server": [],
"injectors": {
+2 -1
View File
@@ -56,5 +56,6 @@
"blendium": "*"
},
"breaks": $fabric_incompatibility_list
"breaks": $fabric_incompatibility_list,
"recommends": $fabric_recommend_list
}
+1
View File
@@ -21,6 +21,7 @@ fabric_api_version=0.42.0+1.16
canvas_version=
fabric_incompatibility_list={ }
fabric_recommend_list={ "indium": "*" }
# Fabric mod run
# 0 = Don't enable and don't run
+1
View File
@@ -21,6 +21,7 @@ fabric_api_version=0.46.1+1.17
canvas_version=
fabric_incompatibility_list={ }
fabric_recommend_list={ "indium": "*" }
# Fabric mod run
# 0 = Don't enable and don't run
+1
View File
@@ -22,6 +22,7 @@ fabric_api_version=0.76.0+1.18.2
canvas_version=mc118:1.0.2616
fabric_incompatibility_list={ }
fabric_recommend_list={ "indium": "*" }
# Fabric mod run
# 0 = Don't enable and don't run
+1
View File
@@ -21,6 +21,7 @@ fabric_api_version=0.76.0+1.19.2
canvas_version=mc119-1.0.2480
fabric_incompatibility_list={ }
fabric_recommend_list={ "indium": "*" }
# Fabric mod run
# 0 = Don't enable and don't run
+1
View File
@@ -21,6 +21,7 @@ fabric_api_version=0.83.0+1.19.4
canvas_version=
fabric_incompatibility_list={ }
fabric_recommend_list={ "indium": "*" }
# Fabric mod run
# 0 = Don't enable and don't run
+1
View File
@@ -21,6 +21,7 @@ fabric_api_version=0.85.0+1.20.1
canvas_version=
fabric_incompatibility_list={ "sodium": "<0.5.1" }
fabric_recommend_list={ "indium": "*" }
# Fabric mod run
# 0 = Don't enable and don't run