Started work on adding immersive portal support
This commit is contained in:
+16
-13
@@ -93,20 +93,23 @@ dependencies {
|
||||
addMod("io.vram:canvas-fabric-${project.canvas_version}", rootProject.enable_canvas)
|
||||
|
||||
// Immersive Portals
|
||||
/*
|
||||
modImplementation("com.github.qouteall.ImmersivePortalsMod:build:${rootProject.immersive_portals_version}") {
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
transitive(false)
|
||||
if (rootProject.enable_immersive_portals == "2") {
|
||||
modImplementation ("com.github.iPortalTeam.ImmersivePortalsMod:imm_ptl_core:${project.immersive_portals_version}"){
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
transitive(false)
|
||||
}
|
||||
modImplementation ("com.github.iPortalTeam.ImmersivePortalsMod:q_misc_util:${project.immersive_portals_version}"){
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
transitive(false)
|
||||
}
|
||||
modImplementation ("com.github.iPortalTeam.ImmersivePortalsMod:build:${project.immersive_portals_version}"){
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
transitive(false)
|
||||
}
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}")
|
||||
api("com.github.LlamaLad7:MixinExtras:0.2.0-beta.4")
|
||||
annotationProcessor("com.github.LlamaLad7:MixinExtras:0.2.0-beta.4")
|
||||
}
|
||||
modImplementation("com.github.qouteall.ImmersivePortalsMod:imm_ptl_core:${rootProject.immersive_portals_version}") {
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
transitive(false)
|
||||
}
|
||||
modImplementation("com.github.qouteall.ImmersivePortalsMod:q_misc_util:${rootProject.immersive_portals_version}") {
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
transitive(false)
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,9 @@ import com.seibel.lod.core.dependencyInjection.ModAccessorInjector;
|
||||
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
|
||||
import com.seibel.lod.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor;
|
||||
import com.seibel.lod.core.wrapperInterfaces.modAccessor.ISodiumAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.ImmersivePortalsAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.SodiumAccessor;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
@@ -170,9 +172,10 @@ public class FabricClientProxy
|
||||
|
||||
// RendererStartupEvent - Done in MixinGameRenderer
|
||||
// RendererShutdownEvent - Done in MixinGameRenderer
|
||||
|
||||
|
||||
SodiumAccessor sodiumAccessor = (SodiumAccessor) ModAccessorInjector.INSTANCE.get(ISodiumAccessor.class);
|
||||
|
||||
ImmersivePortalsAccessor immersiveAccessor = (ImmersivePortalsAccessor) ModAccessorInjector.INSTANCE.get(IImmersivePortalsAccessor.class);
|
||||
|
||||
// ClientRenderLevelTerrainEvent
|
||||
WorldRenderEvents.AFTER_SETUP.register((renderContext) ->
|
||||
{
|
||||
@@ -190,6 +193,11 @@ public class FabricClientProxy
|
||||
McObjectConverter.Convert(renderContext.projectionMatrix()),
|
||||
renderContext.tickDelta());
|
||||
}
|
||||
|
||||
if (immersiveAccessor != null)
|
||||
{
|
||||
immersiveAccessor.partialTicks = renderContext.tickDelta();
|
||||
}
|
||||
});
|
||||
|
||||
// Debug keyboard event
|
||||
|
||||
@@ -29,10 +29,7 @@ import com.seibel.lod.core.dependencyInjection.ModAccessorInjector;
|
||||
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
|
||||
import com.seibel.lod.core.logging.DhLoggerBuilder;
|
||||
import com.seibel.lod.core.wrapperInterfaces.modAccessor.*;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.BCLibAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.OptifineAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.SodiumAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.StarlightAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.*;
|
||||
import com.seibel.lod.fabric.wrappers.FabricDependencySetup;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -74,6 +71,9 @@ public class FabricMain
|
||||
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("sodium")) {
|
||||
ModAccessorInjector.INSTANCE.bind(ISodiumAccessor.class, new SodiumAccessor());
|
||||
}
|
||||
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("imm_ptl_core")) {
|
||||
ModAccessorInjector.INSTANCE.bind(IImmersivePortalsAccessor.class, new ImmersivePortalsAccessor());
|
||||
}
|
||||
if (SingletonInjector.INSTANCE.get(IModChecker.class).isModLoaded("starlight")) {
|
||||
ModAccessorInjector.INSTANCE.bind(IStarlightAccessor.class, new StarlightAccessor());
|
||||
}
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.seibel.lod.fabric.mixins.mods.imm_ptl_core;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.seibel.lod.common.wrappers.McObjectConverter;
|
||||
import com.seibel.lod.common.wrappers.world.ClientLevelWrapper;
|
||||
import com.seibel.lod.core.api.internal.ClientApi;
|
||||
import com.seibel.lod.core.dependencyInjection.ModAccessorInjector;
|
||||
import com.seibel.lod.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor;
|
||||
import com.seibel.lod.fabric.wrappers.modAccessor.ImmersivePortalsAccessor;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import qouteall.imm_ptl.core.render.MyGameRenderer;
|
||||
import qouteall.imm_ptl.core.render.context_management.WorldRenderInfo;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@Mixin(MyGameRenderer.class)
|
||||
public class MixinImmersivePortalsGameRenderer {
|
||||
// @Unique
|
||||
// static ImmersivePortalsAccessor accessor = null;
|
||||
@Inject(remap = false, method = "renderWorldNew", at = @At(value = "INVOKE", target = "Lqouteall/imm_ptl/core/render/MyGameRenderer;switchAndRenderTheWorld(Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;Ljava/util/function/Consumer;IZ)V", shift = At.Shift.AFTER))
|
||||
private static void injectDHLoDRendering(WorldRenderInfo worldRenderInfo, Consumer<Runnable> invokeWrapper, CallbackInfo ci) {
|
||||
// TODO: Move this out of the function to not run it every frame
|
||||
ImmersivePortalsAccessor accessor = null;
|
||||
|
||||
if (accessor == null) {
|
||||
accessor = (ImmersivePortalsAccessor) ModAccessorInjector.INSTANCE.get(IImmersivePortalsAccessor.class);
|
||||
}
|
||||
ClientApi.INSTANCE.renderLods(
|
||||
ClientLevelWrapper.getWrapper(worldRenderInfo.world),
|
||||
McObjectConverter.Convert(RenderSystem.getProjectionMatrix()),
|
||||
McObjectConverter.Convert(RenderSystem.getProjectionMatrix()),
|
||||
accessor.partialTicks
|
||||
);
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.seibel.lod.fabric.wrappers.modAccessor;
|
||||
|
||||
import com.seibel.lod.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor;
|
||||
|
||||
public class ImmersivePortalsAccessor implements IImmersivePortalsAccessor {
|
||||
@Override
|
||||
public String getModName() {
|
||||
return "ImmersivePortals-Fabric";
|
||||
}
|
||||
|
||||
public float partialTicks;
|
||||
}
|
||||
@@ -19,7 +19,8 @@
|
||||
"client.MixinOptionsScreen",
|
||||
"client.MixinMinecraft",
|
||||
"client.MixinTextureUtil",
|
||||
"mods.sodium.MixinSodiumChunkRenderer"
|
||||
"mods.sodium.MixinSodiumChunkRenderer",
|
||||
"mods.imm_ptl_core.MixinImmersivePortalsGameRenderer"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
||||
@@ -7,8 +7,8 @@ accessWidenerVersion=1_18
|
||||
builds_for=["fabric", "forge"]
|
||||
|
||||
# Fabric loader
|
||||
fabric_loader_version=0.14.14
|
||||
fabric_api_version=0.67.1+1.18.2
|
||||
fabric_loader_version=0.14.19
|
||||
fabric_api_version=0.76.0+1.18.2
|
||||
# Fabric mod versions
|
||||
modmenu_version=3.2.5
|
||||
#architectury_version=4.4.59
|
||||
@@ -18,7 +18,7 @@ fabric_api_version=0.67.1+1.18.2
|
||||
sodium_version=mc1.18.2-0.4.1
|
||||
iris_version=1.18.x-v1.2.5
|
||||
bclib_version=1.4.5
|
||||
immersive_portals_version = v1.4.9-1.18
|
||||
immersive_portals_version=v1.4.11-1.18
|
||||
canvas_version=mc118:1.0.2397
|
||||
|
||||
# Fabric mod run
|
||||
@@ -31,6 +31,7 @@ fabric_api_version=0.67.1+1.18.2
|
||||
enable_lithium=0
|
||||
enable_iris=0
|
||||
enable_bclib=1
|
||||
enable_immersive_portals=2
|
||||
enable_canvas=0
|
||||
|
||||
quilt_loader_version=0.19.0-beta.13
|
||||
|
||||
Reference in New Issue
Block a user