mirror of
https://github.com/TeamMidnightDust/PictureSign.git
synced 2025-12-15 21:55:09 +01:00
- 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
42 lines
2.0 KiB
Java
Executable File
42 lines
2.0 KiB
Java
Executable File
package eu.midnightdust.picturesign.mixin;
|
|
|
|
import eu.midnightdust.picturesign.config.PictureSignConfig;
|
|
import eu.midnightdust.picturesign.render.PictureSignRenderer;
|
|
import net.minecraft.block.entity.SignBlockEntity;
|
|
import net.minecraft.client.render.*;
|
|
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;
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
|
|
@Mixin(SignBlockEntityRenderer.class)
|
|
public abstract class MixinSignBlockEntityRenderer implements BlockEntityRenderer<SignBlockEntity> {
|
|
PictureSignRenderer psRenderer = new PictureSignRenderer();
|
|
|
|
@Inject(at = @At("HEAD"), method = "render")
|
|
public void ps$onRender(SignBlockEntity signBlockEntity, float f, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, int overlay, CallbackInfo ci) {
|
|
if (PictureSignConfig.enabled && signBlockEntity.getTextOnRow(0,false).getString().matches("(!PS:.*)")) {
|
|
psRenderer.render(signBlockEntity, matrixStack, light, overlay);
|
|
}
|
|
}
|
|
@Inject(at = @At("HEAD"), method = "shouldRender", cancellable = true)
|
|
private static void shouldRender(SignBlockEntity sign, int signColor, CallbackInfoReturnable<Boolean> cir) {
|
|
if (PictureSignConfig.enabled && sign.getTextOnRow(0,false).getString().matches("(!PS:.*)")) cir.setReturnValue(true);
|
|
}
|
|
@Unique
|
|
@Override
|
|
public int getRenderDistance() {
|
|
return PictureSignConfig.signRenderDistance;
|
|
}
|
|
@Unique
|
|
@Override
|
|
public boolean rendersOutsideBoundingBox(SignBlockEntity sign) {
|
|
return PictureSignConfig.enabled && sign.getTextOnRow(0, false).getString().matches("(!PS:.*)");
|
|
}
|
|
}
|