From 1dd1651e311ff4ac046eb141b49c30bf0eaaf03c Mon Sep 17 00:00:00 2001 From: Motschen Date: Mon, 4 Oct 2021 17:24:01 +0200 Subject: [PATCH] PictureSign 1.1.0 - Iris Compat & Sign render distance - Better Compatibility with Iris Shaders - Added sign render distance option (configurable in PictureSign config) --- gradle.properties | 2 +- .../picturesign/config/PictureSignConfig.java | 1 + .../mixin/MixinSignBlockEntityRenderer.java | 6 ++++ .../render/PictureSignRenderer.java | 30 ++++++++++++------- .../assets/picturesign/lang/en_us.json | 3 +- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3c25d4d..9b36e3b 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.11.7 # Mod Properties - mod_version = 1.0.0 + mod_version = 1.1.0 maven_group = eu.midnightdust archives_base_name = picturesign diff --git a/src/main/java/eu/midnightdust/picturesign/config/PictureSignConfig.java b/src/main/java/eu/midnightdust/picturesign/config/PictureSignConfig.java index 75d43fe..91a063f 100755 --- a/src/main/java/eu/midnightdust/picturesign/config/PictureSignConfig.java +++ b/src/main/java/eu/midnightdust/picturesign/config/PictureSignConfig.java @@ -6,4 +6,5 @@ public class PictureSignConfig extends MidnightConfig { @Entry public static boolean enabled = true; @Entry public static boolean debug = false; @Entry(min = 1, max = 10) public static int maxThreads = 4; + @Entry(min = 0, max = 1024) public static int signRenderDistance = 64; } diff --git a/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignBlockEntityRenderer.java b/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignBlockEntityRenderer.java index 9c8095b..fa4c960 100755 --- a/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignBlockEntityRenderer.java +++ b/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignBlockEntityRenderer.java @@ -8,6 +8,7 @@ import net.minecraft.client.render.block.entity.BlockEntityRenderer; import net.minecraft.client.render.block.entity.SignBlockEntityRenderer; import net.minecraft.client.util.math.MatrixStack; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -27,4 +28,9 @@ public abstract class MixinSignBlockEntityRenderer implements BlockEntityRendere private static void shouldRender(SignBlockEntity sign, int signColor, CallbackInfoReturnable cir) { if (PictureSignConfig.enabled && sign.getTextOnRow(0,false).getString().matches("(!PS:.*)")) cir.setReturnValue(true); } + @Unique + @Override + public int getRenderDistance() { + return PictureSignConfig.signRenderDistance; + } } diff --git a/src/main/java/eu/midnightdust/picturesign/render/PictureSignRenderer.java b/src/main/java/eu/midnightdust/picturesign/render/PictureSignRenderer.java index e5c1a27..d3be9ab 100755 --- a/src/main/java/eu/midnightdust/picturesign/render/PictureSignRenderer.java +++ b/src/main/java/eu/midnightdust/picturesign/render/PictureSignRenderer.java @@ -2,6 +2,8 @@ package eu.midnightdust.picturesign.render; import com.mojang.blaze3d.systems.RenderSystem; import eu.midnightdust.picturesign.PictureDownloader; +import net.coderbot.iris.Iris; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; @@ -87,7 +89,15 @@ public class PictureSignRenderer { matrixStack.push(); - RenderSystem.setShader(GameRenderer::getPositionTexShader); + int l; + if (FabricLoader.getInstance().isModLoaded("iris") && Iris.getIrisConfig().areShadersEnabled() && Iris.getCurrentPack().isPresent()) { + RenderSystem.setShader(GameRenderer::getRenderTypeCutoutShader); + l = 230; + } + else { + RenderSystem.setShader(GameRenderer::getPositionColorTexLightmapShader); + l = light; + } RenderSystem.setShaderTexture(0, data.identifier); RenderSystem.disableBlend(); @@ -98,19 +108,19 @@ public class PictureSignRenderer { matrixStack.multiply(yRotation); Matrix4f matrix4f = matrixStack.peek().getModel(); - buffer.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR); + buffer.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT); - buffer.vertex(matrix4f, width, 0.0F, 1.0F).texture(1.0F, 1.0F).color(255, 255, 255, 255) - .light(light).overlay(overlay).next(); + buffer.vertex(matrix4f, width, 0.0F, 1.0F).color(255, 255, 255, 255).texture(1.0F, 1.0F).light(l).overlay(overlay) + .next(); - buffer.vertex(matrix4f, width, height, 1.0F).texture(1.0F, 0.0F).color(255, 255, 255, 255) - .light(light).overlay(overlay).next(); + buffer.vertex(matrix4f, width, height, 1.0F).color(255, 255, 255, 255).texture(1.0F, 0.0F).light(l).overlay(overlay) + .next(); - buffer.vertex(matrix4f, 0.0F, height, 1.0F).texture(0.0F, 0.0F).color(255, 255, 255, 255) - .light(light).overlay(overlay).next(); + buffer.vertex(matrix4f, 0.0F, height, 1.0F).color(255, 255, 255, 255).texture(0.0F, 0.0F).light(l).overlay(overlay) + .next(); - buffer.vertex(matrix4f, 0.0F, 0.0F, 1.0F).texture(0.0F, 1.0F).color(255, 255, 255, 255) - .light(light).overlay(overlay).next(); + buffer.vertex(matrix4f, 0.0F, 0.0F, 1.0F).color(255, 255, 255, 255).texture(0.0F, 1.0F).light(l).overlay(overlay) + .next(); tessellator.draw(); matrixStack.pop(); diff --git a/src/main/resources/assets/picturesign/lang/en_us.json b/src/main/resources/assets/picturesign/lang/en_us.json index a1dd397..cb67da9 100755 --- a/src/main/resources/assets/picturesign/lang/en_us.json +++ b/src/main/resources/assets/picturesign/lang/en_us.json @@ -3,5 +3,6 @@ "picturesign.midnightconfig.enabled":"Enabled", "picturesign.midnightconfig.debug":"Send debug info", - "picturesign.midnightconfig.maxThreads":"Max download threads" + "picturesign.midnightconfig.maxThreads":"Max download threads", + "picturesign.midnightconfig.signRenderDistance":"Sign render distance" } \ No newline at end of file