diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/makamys/neodymium/config/Config.java | 2 | ||||
-rw-r--r-- | src/main/java/makamys/neodymium/mixin/MixinTessellator.java | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/makamys/neodymium/config/Config.java b/src/main/java/makamys/neodymium/config/Config.java index 5b110fd..a8ea60e 100644 --- a/src/main/java/makamys/neodymium/config/Config.java +++ b/src/main/java/makamys/neodymium/config/Config.java @@ -80,6 +80,8 @@ public class Config { public static boolean showDebugInfo; @ConfigBoolean(cat="debug", def=false) public static boolean wireframe; + @ConfigBoolean(cat="debug", def=false, com="Enable building of vanilla chunk meshes. Makes it possible to switch to the vanilla renderer on the fly, at the cost of reducing chunk update performance.") + public static boolean enableVanillaChunkMeshes; private static Configuration config; private static File configFile = new File(Launch.minecraftHome, "config/" + MODID + ".cfg"); diff --git a/src/main/java/makamys/neodymium/mixin/MixinTessellator.java b/src/main/java/makamys/neodymium/mixin/MixinTessellator.java index 15f71da..cdd4ffe 100644 --- a/src/main/java/makamys/neodymium/mixin/MixinTessellator.java +++ b/src/main/java/makamys/neodymium/mixin/MixinTessellator.java @@ -1,10 +1,12 @@ package makamys.neodymium.mixin; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import makamys.neodymium.config.Config; import makamys.neodymium.ducks.ITessellator; import makamys.neodymium.renderer.ChunkMesh; import net.minecraft.client.renderer.Tessellator; @@ -14,10 +16,20 @@ abstract class MixinTessellator implements ITessellator { private boolean nd$captureMeshes; - @Inject(method = "draw", at = @At(value = "HEAD")) + @Shadow protected abstract void reset(); + + @Shadow private boolean isDrawing; + + @Inject(method = "draw", at = @At(value = "HEAD"), cancellable = true) private void preDraw(CallbackInfoReturnable<Integer> cir) { if(nd$captureMeshes) { ChunkMesh.preTessellatorDraw((Tessellator)(Object)this); + + if(Config.enabled && !Config.enableVanillaChunkMeshes) { + isDrawing = false; + reset(); + cir.setReturnValue(0); + } } } |