207 lines
9.6 KiB
Java
207 lines
9.6 KiB
Java
package com.dairymoose.modernlife.renderer.tileentity;
|
|
|
|
import com.dairymoose.modernlife.blocks.CanvasBlock;
|
|
import com.dairymoose.modernlife.core.CustomBlocks;
|
|
import com.dairymoose.modernlife.network.play.client.ServerboundPrintSizePacket;
|
|
import com.dairymoose.modernlife.tileentities.CanvasBlockEntity;
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
|
import com.mojang.math.Matrix4f;
|
|
import com.mojang.math.Vector3f;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.renderer.MultiBufferSource;
|
|
import net.minecraft.client.renderer.RenderType;
|
|
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
|
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
|
import net.minecraft.core.Direction;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
/* loaded from: outputsrg.jar:com/dairymoose/modernlife/renderer/tileentity/CanvasBlockEntityRenderer.class */
|
|
public class CanvasBlockEntityRenderer implements BlockEntityRenderer<CanvasBlockEntity> {
|
|
private static final Logger LOGGER = LogManager.getLogger();
|
|
|
|
public CanvasBlockEntityRenderer(BlockEntityRendererProvider.Context ctx) {
|
|
}
|
|
|
|
public boolean shouldRenderOffScreen(CanvasBlockEntity p_112306_) {
|
|
return false;
|
|
}
|
|
|
|
public boolean isSane(float blockWidth, float blockHeight, float xOffset, float yOffset) {
|
|
float after = ServerboundPrintSizePacket.sanitizeWidthHeight(blockWidth);
|
|
if (blockWidth != after) {
|
|
return false;
|
|
}
|
|
float after2 = ServerboundPrintSizePacket.sanitizeWidthHeight(blockHeight);
|
|
if (blockHeight != after2) {
|
|
return false;
|
|
}
|
|
float after3 = ServerboundPrintSizePacket.sanitizeOffset(xOffset);
|
|
if (xOffset != after3) {
|
|
return false;
|
|
}
|
|
float after4 = ServerboundPrintSizePacket.sanitizeOffset(yOffset);
|
|
if (yOffset != after4) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void render(CanvasBlockEntity tileEntity, float v, PoseStack matrixStack, MultiBufferSource iRenderTypeBuffer, int lightmap, int i1) {
|
|
int canvasSize = ((Integer) tileEntity.getBlockState().getValue(CanvasBlock.SIZE)).intValue();
|
|
Direction facing = tileEntity.getBlockState().getValue(CanvasBlock.FACING);
|
|
boolean saneCustomCanvas = false;
|
|
if (canvasSize == 0) {
|
|
saneCustomCanvas = isSane(tileEntity.blockWidth, tileEntity.blockHeight, tileEntity.xOffset, tileEntity.yOffset);
|
|
if (saneCustomCanvas) {
|
|
matrixStack.pushPose();
|
|
if (facing == Direction.EAST) {
|
|
matrixStack.translate(0.5d, 0.5d, 0.5d);
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(270.0f));
|
|
matrixStack.translate(-0.5d, -0.5d, -0.5d);
|
|
} else if (facing == Direction.SOUTH) {
|
|
matrixStack.translate(0.5d, 0.5d, 0.5d);
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(180.0f));
|
|
matrixStack.translate(-0.5d, -0.5d, -0.5d);
|
|
} else if (facing == Direction.WEST) {
|
|
matrixStack.translate(0.5d, 0.5d, 0.5d);
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(90.0f));
|
|
matrixStack.translate(-0.5d, -0.5d, -0.5d);
|
|
}
|
|
matrixStack.translate(-tileEntity.xOffset, tileEntity.yOffset, 0.0d);
|
|
float xDiff = tileEntity.blockWidth - 1.0f;
|
|
float yDiff = tileEntity.blockHeight - 1.0f;
|
|
matrixStack.translate((-xDiff) / 2.0f, (-yDiff) / 2.0f, 0.0d);
|
|
matrixStack.scale(tileEntity.blockWidth, tileEntity.blockHeight, 1.0f);
|
|
}
|
|
Minecraft.getInstance().getBlockRenderer().renderSingleBlock((BlockState) ((BlockState) CustomBlocks.BLOCK_FACELESS_CANVAS.get().defaultBlockState().setValue(CanvasBlock.SIZE, 1)).setValue(CanvasBlock.FACING, Direction.NORTH), matrixStack, iRenderTypeBuffer, lightmap, i1, EmptyModelData.INSTANCE);
|
|
if (saneCustomCanvas) {
|
|
matrixStack.popPose();
|
|
}
|
|
}
|
|
switch (C01421.$SwitchMap$net$minecraft$core$Direction[facing.ordinal()]) {
|
|
case 1:
|
|
if (Minecraft.getInstance().player.blockPosition().getX() < tileEntity.getBlockPos().getX()) {
|
|
return;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (Minecraft.getInstance().player.blockPosition().getX() > tileEntity.getBlockPos().getX()) {
|
|
return;
|
|
}
|
|
break;
|
|
case 3:
|
|
if (Minecraft.getInstance().player.blockPosition().getZ() > tileEntity.getBlockPos().getZ()) {
|
|
return;
|
|
}
|
|
break;
|
|
case 4:
|
|
if (Minecraft.getInstance().player.blockPosition().getZ() < tileEntity.getBlockPos().getZ()) {
|
|
return;
|
|
}
|
|
break;
|
|
}
|
|
tileEntity.initImage();
|
|
matrixStack.pushPose();
|
|
switch (C01421.$SwitchMap$net$minecraft$core$Direction[tileEntity.getBlockState().getValue(CanvasBlock.FACING).ordinal()]) {
|
|
case 1:
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(270.0f));
|
|
break;
|
|
case 2:
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(90.0f));
|
|
matrixStack.translate(-1.0d, 0.0d, 1.0d);
|
|
break;
|
|
case 3:
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(0.0f));
|
|
matrixStack.translate(0.0d, 0.0d, 1.0d);
|
|
break;
|
|
case 4:
|
|
matrixStack.mulPose(Vector3f.YP.rotationDegrees(180.0f));
|
|
matrixStack.translate(-1.0d, 0.0d, 0.0d);
|
|
break;
|
|
}
|
|
matrixStack.translate(0.0d, 0.0d, -0.0949999988079071d);
|
|
RenderType renderType = tileEntity.getDynamicRenderType();
|
|
if (renderType != null) {
|
|
VertexConsumer dynamicBuilder = iRenderTypeBuffer.getBuffer(tileEntity.getDynamicRenderType());
|
|
float mod = 0.0f;
|
|
float topMod = 0.0f;
|
|
float modWidth = 0.0f;
|
|
float modHeight = 0.0f;
|
|
if (canvasSize == 0) {
|
|
if (saneCustomCanvas) {
|
|
float sizeW = (tileEntity.blockWidth - 1.0f) / 2.0f;
|
|
float sizeH = (tileEntity.blockHeight - 1.0f) / 2.0f;
|
|
matrixStack.translate(-tileEntity.xOffset, tileEntity.yOffset, 0.0d);
|
|
matrixStack.translate(0.0d, -sizeH, 0.0d);
|
|
modWidth = sizeW;
|
|
modHeight = sizeH;
|
|
topMod = sizeH;
|
|
} else {
|
|
canvasSize = 1;
|
|
}
|
|
}
|
|
if (canvasSize == 4) {
|
|
mod = 1.0f;
|
|
} else if (canvasSize == 3) {
|
|
mod = 0.5f;
|
|
} else if (canvasSize == 2) {
|
|
mod = 0.25f;
|
|
} else if (canvasSize == 5) {
|
|
matrixStack.translate(0.0d, -0.3125d, 0.0d);
|
|
mod = 0.3125f;
|
|
topMod = 0.3125f;
|
|
} else if (canvasSize == 6) {
|
|
matrixStack.translate(0.0d, -0.625d, 0.0d);
|
|
mod = 0.625f;
|
|
topMod = 0.625f;
|
|
} else if (canvasSize == 7) {
|
|
matrixStack.translate(0.0d, -1.0d, 0.0d);
|
|
mod = 1.0f;
|
|
topMod = 1.0f;
|
|
}
|
|
if (canvasSize != 0) {
|
|
modWidth = mod;
|
|
modHeight = mod;
|
|
}
|
|
Matrix4f matrix4f = matrixStack.last().pose();
|
|
dynamicBuilder.vertex(matrix4f, 0.0f - modWidth, 1.0f + modHeight + topMod, 0.0f).color(255, 255, 255, 255).uv(0.0f, 1.0f).uv2(lightmap).endVertex();
|
|
dynamicBuilder.vertex(matrix4f, 1.0f + modWidth, 1.0f + modHeight + topMod, 0.0f).color(255, 255, 255, 255).uv(1.0f, 1.0f).uv2(lightmap).endVertex();
|
|
dynamicBuilder.vertex(matrix4f, 1.0f + modWidth, 0.0f, 0.0f).color(255, 255, 255, 255).uv(1.0f, 0.0f).uv2(lightmap).endVertex();
|
|
dynamicBuilder.vertex(matrix4f, 0.0f - modWidth, 0.0f, 0.0f).color(255, 255, 255, 255).uv(0.0f, 0.0f).uv2(lightmap).endVertex();
|
|
}
|
|
matrixStack.popPose();
|
|
}
|
|
|
|
/* renamed from: com.dairymoose.modernlife.renderer.tileentity.CanvasBlockEntityRenderer$1 */
|
|
/* loaded from: outputsrg.jar:com/dairymoose/modernlife/renderer/tileentity/CanvasBlockEntityRenderer$1.class */
|
|
public static /* synthetic */ class C01421 {
|
|
static final /* synthetic */ int[] $SwitchMap$net$minecraft$core$Direction = new int[Direction.values().length];
|
|
|
|
static {
|
|
try {
|
|
$SwitchMap$net$minecraft$core$Direction[Direction.EAST.ordinal()] = 1;
|
|
} catch (NoSuchFieldError e) {
|
|
}
|
|
try {
|
|
$SwitchMap$net$minecraft$core$Direction[Direction.WEST.ordinal()] = 2;
|
|
} catch (NoSuchFieldError e2) {
|
|
}
|
|
try {
|
|
$SwitchMap$net$minecraft$core$Direction[Direction.NORTH.ordinal()] = 3;
|
|
} catch (NoSuchFieldError e3) {
|
|
}
|
|
try {
|
|
$SwitchMap$net$minecraft$core$Direction[Direction.SOUTH.ordinal()] = 4;
|
|
} catch (NoSuchFieldError e4) {
|
|
}
|
|
}
|
|
}
|
|
}
|