mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-10-25 02:47:39 +00:00
- Add lightmap parameters to the text, computer and printout renderers. - Printouts are always rendered using the current lightmap. When interacting with the GUI, we use the fullbright lightmap coordinate. - Pocket computers render their border using the lightmap. Terminal and light do not use the lightmap at all. There's some funkiness going on here with render types - it appears the "correct" position_color_tex_lightmap render type is actually one used for text. Fixes #919. This bug does occur on 1.16 too, but given how complex the rendering changes are between 1.16 and 1.17 I do /not/ want to have to implement this twice. Sorry.
86 lines
3.1 KiB
Java
86 lines
3.1 KiB
Java
/*
|
|
* This file is part of ComputerCraft - http://www.computercraft.info
|
|
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
|
* Send enquiries to dratcliffe@gmail.com
|
|
*/
|
|
package dan200.computercraft.client.gui;
|
|
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import dan200.computercraft.ComputerCraft;
|
|
import dan200.computercraft.client.gui.widgets.ComputerSidebar;
|
|
import dan200.computercraft.client.gui.widgets.WidgetTerminal;
|
|
import dan200.computercraft.client.render.ComputerBorderRenderer;
|
|
import dan200.computercraft.client.render.RenderTypes;
|
|
import dan200.computercraft.shared.computer.inventory.ContainerComputerBase;
|
|
import dan200.computercraft.shared.computer.inventory.ContainerViewComputer;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.world.entity.player.Inventory;
|
|
|
|
import javax.annotation.Nonnull;
|
|
|
|
import static dan200.computercraft.client.render.ComputerBorderRenderer.BORDER;
|
|
|
|
public final class GuiComputer<T extends ContainerComputerBase> extends ComputerScreenBase<T>
|
|
{
|
|
private final int termWidth;
|
|
private final int termHeight;
|
|
|
|
private GuiComputer(
|
|
T container, Inventory player, Component title, int termWidth, int termHeight
|
|
)
|
|
{
|
|
super( container, player, title, BORDER );
|
|
this.termWidth = termWidth;
|
|
this.termHeight = termHeight;
|
|
|
|
imageWidth = WidgetTerminal.getWidth( termWidth ) + BORDER * 2 + ComputerSidebar.WIDTH;
|
|
imageHeight = WidgetTerminal.getHeight( termHeight ) + BORDER * 2;
|
|
}
|
|
|
|
@Nonnull
|
|
public static GuiComputer<ContainerComputerBase> create( ContainerComputerBase container, Inventory inventory, Component component )
|
|
{
|
|
return new GuiComputer<>(
|
|
container, inventory, component,
|
|
ComputerCraft.computerTermWidth, ComputerCraft.computerTermHeight
|
|
);
|
|
}
|
|
|
|
@Nonnull
|
|
public static GuiComputer<ContainerComputerBase> createPocket( ContainerComputerBase container, Inventory inventory, Component component )
|
|
{
|
|
return new GuiComputer<>(
|
|
container, inventory, component,
|
|
ComputerCraft.pocketTermWidth, ComputerCraft.pocketTermHeight
|
|
);
|
|
}
|
|
|
|
@Nonnull
|
|
public static GuiComputer<ContainerViewComputer> createView( ContainerViewComputer container, Inventory inventory, Component component )
|
|
{
|
|
return new GuiComputer<>(
|
|
container, inventory, component,
|
|
container.getWidth(), container.getHeight()
|
|
);
|
|
}
|
|
|
|
@Override
|
|
protected WidgetTerminal createTerminal()
|
|
{
|
|
return new WidgetTerminal( computer,
|
|
leftPos + ComputerSidebar.WIDTH + BORDER, topPos + BORDER, termWidth, termHeight
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public void renderBg( @Nonnull PoseStack stack, float partialTicks, int mouseX, int mouseY )
|
|
{
|
|
// Draw a border around the terminal
|
|
ComputerBorderRenderer.render(
|
|
ComputerBorderRenderer.getTexture( family ), terminal.x, terminal.y, getBlitOffset(),
|
|
RenderTypes.FULL_BRIGHT_LIGHTMAP, terminal.getWidth(), terminal.getHeight()
|
|
);
|
|
ComputerSidebar.renderBackground( stack, leftPos, topPos + sidebarYOffset );
|
|
}
|
|
}
|