Optifine compatibility for mixin
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
package mods.betterfoliage.mixin;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
|
import mods.betterfoliage.render.pipeline.RenderCtxBase;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.client.renderer.BlockRendererDispatcher;
|
||||||
|
import net.minecraft.client.renderer.RegionRenderCacheBuilder;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||||
|
import net.minecraft.client.renderer.chunk.VisGraph;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.IBlockDisplayReader;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Coerce;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Mixin(targets = "net.minecraft.client.renderer.chunk.ChunkRenderDispatcher$ChunkRender$RebuildTask")
|
||||||
|
public class MixinOptifineChunkRendererDispatcher {
|
||||||
|
|
||||||
|
private static final String compile = "Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$ChunkRender$RebuildTask;compile(FFFLnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$CompiledChunk;Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)Ljava/util/Set;";
|
||||||
|
private static final String getBlockStateMcp = "Lnet/optifine/override/ChunkCacheOF;getBlockState(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;";
|
||||||
|
private static final String getBlockStateSrg = "Lnet/optifine/override/ChunkCacheOF;func_180495_p(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;";
|
||||||
|
|
||||||
|
@Inject(method = compile, locals = LocalCapture.CAPTURE_FAILHARD, require = 1, at = {
|
||||||
|
@At(value = "INVOKE", target = getBlockStateMcp),
|
||||||
|
@At(value = "INVOKE", target = getBlockStateSrg),
|
||||||
|
})
|
||||||
|
void onStartBlockRender(
|
||||||
|
float xIn, float yIn, float zIn,
|
||||||
|
ChunkRenderDispatcher.CompiledChunk compiledChunkIn, RegionRenderCacheBuilder builderIn,
|
||||||
|
CallbackInfoReturnable<Set> cir,
|
||||||
|
int i, BlockPos blockpos, BlockPos blockpos1, VisGraph visgraph, Set set, MatrixStack matrixstack,
|
||||||
|
@Coerce IBlockDisplayReader chunkrendercache, RenderType[] singleLayer,
|
||||||
|
boolean shaders, boolean shadersMidBlock, Random random,
|
||||||
|
BlockRendererDispatcher blockrendererdispatcher, Iterator var18,
|
||||||
|
@Coerce BlockPos blockpos2
|
||||||
|
) {
|
||||||
|
RenderCtxBase.reset(chunkrendercache, blockrendererdispatcher, blockpos2, random);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Inject(method = compile, locals = LocalCapture.PRINT, require = 1, at = {
|
||||||
|
// @At(value = "INVOKE", target = getBlockStateMcp),
|
||||||
|
// @At(value = "INVOKE", target = getBlockStateSrg),
|
||||||
|
// })
|
||||||
|
// void printLocals(
|
||||||
|
// float p_228940_1_, float p_228940_2_, float p_228940_3_,
|
||||||
|
// ChunkRenderDispatcher.CompiledChunk p_228940_4_, RegionRenderCacheBuilder p_228940_5_,
|
||||||
|
// CallbackInfoReturnable<BlockState> ci) {
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -2,8 +2,6 @@ package mods.betterfoliage.mixin;
|
|||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import mods.betterfoliage.render.pipeline.RenderCtxBase;
|
import mods.betterfoliage.render.pipeline.RenderCtxBase;
|
||||||
import mods.betterfoliage.render.pipeline.RenderCtxForge;
|
|
||||||
import mods.betterfoliage.render.pipeline.RenderCtxVanilla;
|
|
||||||
import net.minecraft.client.renderer.BlockRendererDispatcher;
|
import net.minecraft.client.renderer.BlockRendererDispatcher;
|
||||||
import net.minecraft.client.renderer.RegionRenderCacheBuilder;
|
import net.minecraft.client.renderer.RegionRenderCacheBuilder;
|
||||||
import net.minecraft.client.renderer.chunk.ChunkRenderCache;
|
import net.minecraft.client.renderer.chunk.ChunkRenderCache;
|
||||||
@@ -13,7 +11,6 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
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.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
@@ -22,7 +19,7 @@ import java.util.Random;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@Mixin(targets = "net.minecraft.client.renderer.chunk.ChunkRenderDispatcher$ChunkRender$RebuildTask")
|
@Mixin(targets = "net.minecraft.client.renderer.chunk.ChunkRenderDispatcher$ChunkRender$RebuildTask")
|
||||||
public class MixinChunkRendererDispatcher {
|
public class MixinVanillaChunkRendererDispatcher {
|
||||||
|
|
||||||
private static final String compile = "Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$ChunkRender$RebuildTask;compile(FFFLnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$CompiledChunk;Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)Ljava/util/Set;";
|
private static final String compile = "Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$ChunkRender$RebuildTask;compile(FFFLnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$CompiledChunk;Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)Ljava/util/Set;";
|
||||||
private static final String getBlockState = "Lnet/minecraft/client/renderer/chunk/ChunkRenderCache;getBlockState(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;";
|
private static final String getBlockState = "Lnet/minecraft/client/renderer/chunk/ChunkRenderCache;getBlockState(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;";
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import net.minecraft.client.renderer.BlockRendererDispatcher
|
|||||||
import net.minecraft.client.renderer.chunk.ChunkRenderCache
|
import net.minecraft.client.renderer.chunk.ChunkRenderCache
|
||||||
import net.minecraft.util.Direction
|
import net.minecraft.util.Direction
|
||||||
import net.minecraft.util.math.BlockPos
|
import net.minecraft.util.math.BlockPos
|
||||||
|
import net.minecraft.world.IBlockDisplayReader
|
||||||
import net.minecraftforge.client.model.data.IModelData
|
import net.minecraftforge.client.model.data.IModelData
|
||||||
import java.util.Random
|
import java.util.Random
|
||||||
|
|
||||||
@@ -67,7 +68,7 @@ abstract class RenderCtxBase(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun reset(chunkRenderCache: ChunkRenderCache, blockRendererDispatcher: BlockRendererDispatcher, pos: BlockPos, random: Random) {
|
fun reset(chunkRenderCache: IBlockDisplayReader, blockRendererDispatcher: BlockRendererDispatcher, pos: BlockPos, random: Random) {
|
||||||
// prepare render data
|
// prepare render data
|
||||||
val blockCtx = BasicBlockCtx(chunkRenderCache, pos)
|
val blockCtx = BasicBlockCtx(chunkRenderCache, pos)
|
||||||
val model = blockRendererDispatcher.getBlockModel(blockCtx.state)
|
val model = blockRendererDispatcher.getBlockModel(blockCtx.state)
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
"MixinBlock",
|
"MixinBlock",
|
||||||
"MixinBlockState",
|
"MixinBlockState",
|
||||||
"MixinBlockModelRenderer",
|
"MixinBlockModelRenderer",
|
||||||
"MixinChunkRendererDispatcher",
|
|
||||||
"MixinClientWorld",
|
"MixinClientWorld",
|
||||||
"MixinModelBakery",
|
"MixinModelBakery",
|
||||||
"MixinForgeBlockModelRenderer",
|
"MixinForgeBlockModelRenderer",
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
"MixinOptifineBlockUtils"
|
"MixinOptifineBlockUtils",
|
||||||
|
"MixinOptifineChunkRendererDispatcher"
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
|
"MixinVanillaChunkRendererDispatcher"
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user