minecraft-src/net/minecraft/client/gui/screens/inventory/SignEditScreen.java
2025-07-04 02:00:41 +03:00

63 lines
2.3 KiB
Java

package net.minecraft.client.gui.screens.inventory;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.model.Model;
import net.minecraft.client.renderer.Sheets;
import net.minecraft.client.renderer.blockentity.SignRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.client.resources.model.Material;
import net.minecraft.world.level.block.StandingSignBlock;
import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;
import org.joml.Vector3f;
@Environment(EnvType.CLIENT)
public class SignEditScreen extends AbstractSignEditScreen {
public static final float MAGIC_SCALE_NUMBER = 62.500004F;
public static final float MAGIC_TEXT_SCALE = 0.9765628F;
private static final Vector3f TEXT_SCALE = new Vector3f(0.9765628F, 0.9765628F, 0.9765628F);
@Nullable
private Model signModel;
public SignEditScreen(SignBlockEntity signBlockEntity, boolean bl, boolean bl2) {
super(signBlockEntity, bl, bl2);
}
@Override
protected void init() {
super.init();
boolean bl = this.sign.getBlockState().getBlock() instanceof StandingSignBlock;
this.signModel = SignRenderer.createSignModel(this.minecraft.getEntityModels(), this.woodType, bl);
}
@Override
protected void offsetSign(GuiGraphics guiGraphics, BlockState state) {
super.offsetSign(guiGraphics, state);
boolean bl = state.getBlock() instanceof StandingSignBlock;
if (!bl) {
guiGraphics.pose().translate(0.0F, 35.0F, 0.0F);
}
}
@Override
protected void renderSignBackground(GuiGraphics guiGraphics) {
if (this.signModel != null) {
guiGraphics.pose().translate(0.0F, 31.0F, 0.0F);
guiGraphics.pose().scale(62.500004F, 62.500004F, -62.500004F);
guiGraphics.drawSpecial(multiBufferSource -> {
Material material = Sheets.getSignMaterial(this.woodType);
VertexConsumer vertexConsumer = material.buffer(multiBufferSource, this.signModel::renderType);
this.signModel.renderToBuffer(guiGraphics.pose(), vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY);
});
}
}
@Override
protected Vector3f getSignTextScale() {
return TEXT_SCALE;
}
}