diff --git a/src/main/java/com/minelittlepony/unicopia/Config.java b/src/main/java/com/minelittlepony/unicopia/Config.java index c0f86374..3a128a0e 100644 --- a/src/main/java/com/minelittlepony/unicopia/Config.java +++ b/src/main/java/com/minelittlepony/unicopia/Config.java @@ -45,6 +45,16 @@ public class Config extends com.minelittlepony.common.util.settings.Config { .addComment("Removes butterflies from spawning in your world") .addComment("Turn this ON if you have another mod that adds butterflies."); + public final Setting simplifiedPortals = value("compatibility", "simplifiedPortals", false) + .addComment("Disables dynamic portal rendering"); + + public final Setting fancyPortalRefreshRate = value("client", "fancyPortalRefreshRate", -1L) + .addComment("Sets the refresh rate of portals when using fancy portal rendering") + .addComment("Set to -1 (default) for unlimited"); + + public final Setting maxPortalRecursion = value("client", "maxPortalRecursion", 2) + .addComment("Sets the maximum depth to reach when rendering portals through portals"); + public Config() { super(new HeirarchicalJsonConfigAdapter(new GsonBuilder() .registerTypeAdapter(Race.class, RegistryTypeAdapter.of(Race.REGISTRY)) diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalFrameBuffer.java b/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalFrameBuffer.java index 161d667e..823220f5 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalFrameBuffer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalFrameBuffer.java @@ -11,6 +11,7 @@ import org.joml.Matrix4f; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.ability.magic.Caster; import com.minelittlepony.unicopia.ability.magic.spell.effect.PortalSpell; import com.minelittlepony.unicopia.client.render.RenderLayers; @@ -115,11 +116,12 @@ class PortalFrameBuffer implements AutoCloseable { public void build(PortalSpell spell, Caster caster, EntityReference.EntityValues target) { - if (framebuffer != null && System.currentTimeMillis() % 1 != 0) { + long refreshRate = Unicopia.getConfig().fancyPortalRefreshRate.get(); + if (refreshRate > 0 && framebuffer != null && System.currentTimeMillis() % refreshRate != 0) { return; } - if (pendingDraw && recursionCount > 2) { + if (pendingDraw && recursionCount > Math.max(0, Unicopia.getConfig().maxPortalRecursion.get())) { innerBuild(spell, caster, target); return; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalSpellRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalSpellRenderer.java index a509d1fc..8881834e 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalSpellRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/spell/PortalSpellRenderer.java @@ -1,5 +1,6 @@ package com.minelittlepony.unicopia.client.render.spell; +import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.ability.magic.Caster; import com.minelittlepony.unicopia.ability.magic.spell.effect.PortalSpell; import com.minelittlepony.unicopia.client.render.RenderLayers; @@ -14,8 +15,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.math.RotationAxis; public class PortalSpellRenderer extends SpellRenderer { - static boolean FANCY_PORTAlS = true; - @Override public boolean shouldRenderEffectPass(int pass) { return pass == 0; @@ -32,7 +31,7 @@ public class PortalSpellRenderer extends SpellRenderer { SphereModel.DISK.render(matrices, buff, light, 0, 2F * strength, 1, 1, 1, 1); matrices.pop(); - if (!FANCY_PORTAlS || !spell.isLinked()) { + if (Unicopia.getConfig().simplifiedPortals.get() || !spell.isLinked()) { matrices.push(); matrices.translate(0, -0.02, 0); matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(180));