PictureSign 1.2.0 - Safe-Mode, Redstone, Update MidnightLib

- Added Safe mode:
~ Only load images from imgur/imgbb
~ Enabled by default
- Initial Redstone functionality
~ If an unlit redstone torch is above or below the sign, the image will be hidden
~ Update MidnightLib to 0.2.9
This commit is contained in:
Motschen
2021-10-30 20:56:13 +02:00
parent 1dd1651e31
commit b3249b9664
8 changed files with 187 additions and 119 deletions

View File

@@ -6,5 +6,8 @@ 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;
@Entry(min = 0, max = 4096) public static int signRenderDistance = 64;
@Entry public static boolean safeMode = true;
@Comment public static Comment ebeWarning;
@Comment public static Comment ebeWarning2;
}

View File

@@ -33,4 +33,9 @@ public abstract class MixinSignBlockEntityRenderer implements BlockEntityRendere
public int getRenderDistance() {
return PictureSignConfig.signRenderDistance;
}
@Unique
@Override
public boolean rendersOutsideBoundingBox(SignBlockEntity sign) {
return PictureSignConfig.enabled && sign.getTextOnRow(0, false).getString().matches("(!PS:.*)");
}
}

View File

@@ -2,16 +2,16 @@ package eu.midnightdust.picturesign.render;
import com.mojang.blaze3d.systems.RenderSystem;
import eu.midnightdust.picturesign.PictureDownloader;
import eu.midnightdust.picturesign.config.PictureSignConfig;
import net.coderbot.iris.Iris;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.block.Blocks;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.state.property.Properties;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.math.Quaternion;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.*;
import net.minecraft.world.World;
import java.util.Arrays;
import java.util.List;
@@ -29,6 +29,13 @@ public class PictureSignRenderer {
url = "https://" + url;
}
if (!url.contains(".png") && !url.contains(".jpg") && !url.contains(".jpeg")) return;
if (PictureSignConfig.safeMode && !url.contains("//i.imgur.com/") && !url.contains("//i.ibb.co/")) return;
World world = signBlockEntity.getWorld();
BlockPos pos = signBlockEntity.getPos();
if (world != null && (world.getBlockState(pos.down()).getBlock().equals(Blocks.REDSTONE_TORCH) || world.getBlockState(pos.down()).getBlock().equals(Blocks.REDSTONE_WALL_TORCH)) && world.getBlockState(pos.down()).get(Properties.LIT).equals(false)) return;
if (world != null && (world.getBlockState(pos.up()).getBlock().equals(Blocks.REDSTONE_TORCH) || world.getBlockState(pos.up()).getBlock().equals(Blocks.REDSTONE_WALL_TORCH)) && world.getBlockState(pos.up()).get(Properties.LIT).equals(false)) return;
String lastLine = signBlockEntity.getTextOnRow(3, false).getString();
if (!lastLine.matches("(.*\\d:.*\\d:.*\\d:.*\\d:.*\\d)")) return;