Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/origin/Multiloader-1.19' into M…
Browse files Browse the repository at this point in the history
…ultiloader-1.18
  • Loading branch information
fayer3 committed Aug 5, 2023
2 parents 3105661 + 489947f commit b5637c1
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 17 deletions.
2 changes: 1 addition & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ dependencies {


// for iris compat
modCompileOnly "maven.modrinth:iris:1.5.2+1.18.2"
modCompileOnly "maven.modrinth:iris:1.6.5+1.18.2"

// for REI compat
modCompileOnly "me.shedaniel:RoughlyEnoughItems-fabric:8.3.618"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package org.vivecraft.mod_compat_vr.iris.mixin;

import net.coderbot.iris.Iris;
import net.coderbot.iris.pipeline.PipelineManager;
import net.coderbot.iris.pipeline.WorldRenderingPipeline;
import net.coderbot.iris.shaderpack.DimensionId;
import net.coderbot.iris.shaderpack.materialmap.NamespacedId;
import net.coderbot.iris.shadows.ShadowRenderTargets;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Desc;
import org.spongepowered.asm.mixin.injection.Group;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
Expand All @@ -31,7 +35,7 @@ private void resetTextureState(){}
private WorldRenderingPipeline pipeline;
@Shadow(remap = false)
@Final
private Function<DimensionId, WorldRenderingPipeline> pipelineFactory;
private Function<Object, WorldRenderingPipeline> pipelineFactory;

private ShadowRenderTargets shadowRenderTargets;
public ShadowRenderTargets getShadowRenderTargets() {
Expand All @@ -42,13 +46,13 @@ public void setShadowRenderTargets(ShadowRenderTargets targets) {
shadowRenderTargets = targets;
}

private final Map<DimensionId, Map<RenderPass, WorldRenderingPipeline>> vrPipelinesPerDimension = new HashMap<>();
private final Map<Object, Map<RenderPass, WorldRenderingPipeline>> vrPipelinesPerDimension = new HashMap<>();
private WorldRenderingPipeline vanillaPipeline;
private Map<RenderPass, WorldRenderingPipeline> vrPipelinesCurrentDimension;

private WorldRenderPass currentWorldRenderPass = null;
@Inject(method = "preparePipeline", at = @At(value = "INVOKE", target = "Ljava/util/function/Function;apply(Ljava/lang/Object;)Ljava/lang/Object;", shift = At.Shift.BEFORE), remap = false)
private void generateVanillaPipeline(DimensionId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {
private void generateVanillaPipeline(CallbackInfoReturnable<WorldRenderingPipeline> cir) {
// this also runs on game startup, when the renderpassManager isn't initialized yet
if (VRState.vrInitialized && RenderPassManager.INSTANCE != null) {
currentWorldRenderPass = RenderPassManager.wrp;
Expand All @@ -57,8 +61,21 @@ private void generateVanillaPipeline(DimensionId newDimension, CallbackInfoRetur
ClientDataHolderVR.getInstance().currentPass = currentRenderPass;
}
}
@Inject(method = "preparePipeline", at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", shift = At.Shift.AFTER), remap = false)
private void generateVRPipelines(DimensionId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {

@Group(name = "generateVRPipelines", min = 1, max = 1)
@Inject(target = @Desc(value = "preparePipeline", owner = PipelineManager.class, ret = WorldRenderingPipeline.class, args = DimensionId.class), at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", shift = At.Shift.AFTER), remap = false, expect = 0)
private void generateVRPipelines164(DimensionId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {
generateVRPipelines(newDimension);
}

@Group(name = "generateVRPipelines", min = 1, max = 1)
@Inject(target = @Desc(value = "preparePipeline", owner = PipelineManager.class, ret = WorldRenderingPipeline.class, args = NamespacedId.class), at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", shift = At.Shift.AFTER), remap = false, expect = 0)
private void generateVRPipelines165(NamespacedId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {
generateVRPipelines(newDimension);
}

@Unique
private void generateVRPipelines(Object newDimension) {
if (VRState.vrInitialized) {
vanillaPipeline = pipeline;
if (!this.vrPipelinesPerDimension.containsKey(newDimension)) {
Expand Down Expand Up @@ -113,14 +130,29 @@ private void generateVRPipelines(DimensionId newDimension, CallbackInfoReturnabl
}
}

@Inject(method = "preparePipeline", at = @At(value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;"), remap = false, cancellable = true)
private void returnCurrentVRPipeline(DimensionId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {
@Group(name = "returnCurrentVRPipeline", min = 1, max = 1)
@Inject(target = @Desc(value = "preparePipeline", owner = PipelineManager.class, ret = WorldRenderingPipeline.class, args = DimensionId.class), at = @At(value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;"), remap = false, cancellable = true, expect = 0)
private void returnCurrentVRPipeline164(DimensionId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {
if (!RenderPassType.isVanilla()) {
pipeline = getCurrentVRPipeline(newDimension);
cir.setReturnValue(pipeline);
}
}

@Group(name = "returnCurrentVRPipeline", min = 1, max = 1)
@Inject(target = @Desc(value = "preparePipeline", owner = PipelineManager.class, ret = WorldRenderingPipeline.class, args = NamespacedId.class), at = @At(value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;"), remap = false, cancellable = true, expect = 0)
private void returnCurrentVRPipeline165(NamespacedId newDimension, CallbackInfoReturnable<WorldRenderingPipeline> cir) {
if (!RenderPassType.isVanilla()) {
pipeline = vrPipelinesPerDimension.get(newDimension).get(ClientDataHolderVR.getInstance().currentPass);
pipeline = getCurrentVRPipeline(newDimension);
cir.setReturnValue(pipeline);
}
}

@Unique
private WorldRenderingPipeline getCurrentVRPipeline(Object key) {
return vrPipelinesPerDimension.get(key).get(ClientDataHolderVR.getInstance().currentPass);
}

@Inject(method = "destroyPipeline", at = @At(value = "INVOKE", target = "Ljava/util/Map;clear()V"), remap = false)
private void destroyVRPipelines(CallbackInfo ci) {
if (VRState.vrInitialized) {
Expand Down
15 changes: 8 additions & 7 deletions fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,24 @@ dependencies {
modApi("dev.architectury:architectury-fabric:${rootProject.architectury_version}")

// for sodium compat
modCompileOnly "maven.modrinth:sodium:mc1.18.2-0.4.1"
modRuntimeOnly "maven.modrinth:sodium:mc1.18.2-0.4.1"
modRuntimeOnly 'org.joml:joml:1.10.2' //temp sodium

// for iris compat
modCompileOnly "maven.modrinth:iris:1.5.2+1.18.2"
modRuntimeOnly "maven.modrinth:iris:1.6.5+1.18.2"
modRuntimeOnly 'org.anarres:jcpp:1.4.14' //temp iris
modRuntimeOnly 'io.github.douira:glsl-transformer:2.0.0-pre9' //temp iris
modRuntimeOnly 'io.github.douira:glsl-transformer:2.0.0-pre13' //temp iris

// for REI compat
modCompileOnly "me.shedaniel:RoughlyEnoughItems-fabric:8.3.618"
modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:8.3.618"

// for Pehkui compat
modCompileOnly("com.github.Virtuoel:Pehkui:3.7.1", { exclude group: "net.fabricmc.fabric-api" })
modRuntimeOnly("com.github.Virtuoel:Pehkui:3.7.7", { exclude group: "net.fabricmc.fabric-api" })

// other mods
// modRuntimeOnly("com.simibubi.create:create-fabric-1.18.2:0.5.0.i-1016+1.18.2")
modCompileOnly "maven.modrinth:lithium:mc1.18.2-0.10.3"
modCompileOnly "maven.modrinth:indium:1.0.7+mc1.18.2"
modRuntimeOnly "maven.modrinth:lithium:mc1.18.2-0.10.3"
modRuntimeOnly "maven.modrinth:indium:1.0.7+mc1.18.2"

/*
// for immersive portals compat
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ minecraft_version=1.18.2
enabled_platforms=fabric,forge

archives_base_name=vivecraft
mod_version=1.0.0
mod_version=1.0.1
maven_group=org.vivecraft

architectury_version=4.11.93
Expand Down

0 comments on commit b5637c1

Please sign in to comment.