diff --git a/src/main/java/me/cortex/voxy/client/core/RenderPipelineFactory.java b/src/main/java/me/cortex/voxy/client/core/RenderPipelineFactory.java index 3585bd9c..4058c9d0 100644 --- a/src/main/java/me/cortex/voxy/client/core/RenderPipelineFactory.java +++ b/src/main/java/me/cortex/voxy/client/core/RenderPipelineFactory.java @@ -7,6 +7,7 @@ import me.cortex.voxy.client.core.util.IrisUtil; import me.cortex.voxy.client.iris.IGetIrisVoxyPipelineData; import me.cortex.voxy.common.Logger; import net.irisshaders.iris.Iris; +import net.irisshaders.iris.api.v0.IrisApi; import java.util.function.BooleanSupplier; @@ -34,7 +35,13 @@ public class RenderPipelineFactory { return null; } Logger.info("Creating voxy iris render pipeline"); - return new IrisVoxyRenderPipeline(pipeData, nodeManager, nodeCleaner, traversal, frexSupplier); + try { + return new IrisVoxyRenderPipeline(pipeData, nodeManager, nodeCleaner, traversal, frexSupplier); + } catch (Exception e) { + Logger.error("Failed to create iris render pipeline", e); + IrisApi.getInstance().getConfig().setShadersEnabledAndApply(false); + return null; + } } return null; } diff --git a/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java b/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java index 510fd977..60d28d86 100644 --- a/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java +++ b/src/main/java/me/cortex/voxy/client/iris/IrisShaderPatch.java @@ -8,6 +8,7 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import me.cortex.voxy.common.Logger; +import net.irisshaders.iris.api.v0.IrisApi; import net.irisshaders.iris.shaderpack.ShaderPack; import net.irisshaders.iris.shaderpack.include.AbsolutePackPath; @@ -314,12 +315,14 @@ public class IrisShaderPatch { } catch (Exception e) { patchData = null; Logger.error("Failed to parse patch data gson",e); + IrisApi.getInstance().getConfig().setShadersEnabledAndApply(false);//Disable shaders } if (patchData == null) { return null; } if (patchData.version != VERSION) { Logger.error("Shader has voxy patch data, but patch version is incorrect. expected " + VERSION + " got "+patchData.version); + IrisApi.getInstance().getConfig().setShadersEnabledAndApply(false);//Disable shaders return null; } return new IrisShaderPatch(patchData, ipack); diff --git a/src/main/java/me/cortex/voxy/common/util/AllocationArena.java b/src/main/java/me/cortex/voxy/common/util/AllocationArena.java index e2b2ceec..4971c1e7 100644 --- a/src/main/java/me/cortex/voxy/common/util/AllocationArena.java +++ b/src/main/java/me/cortex/voxy/common/util/AllocationArena.java @@ -15,8 +15,8 @@ public class AllocationArena { private static final int SIZE_BITS = 64 - ADDR_BITS; private static final long SIZE_MSK = (1L<0&&iter.hasPrevious();index--){iter.previousLong();} + long slot = iter.previousLong(); + return (int) (slot>>ADDR_BITS); + } + /* public long allocFromLargest(int size) {//Allocates from the largest avalible block, this is useful for expanding later on