fix: shell screen layout

This commit is contained in:
xtex 2023-07-24 11:25:24 +08:00
parent d88f110fe5
commit 680d4d76e1
Signed by: xtex
GPG Key ID: B918086ED8045B91

View File

@ -1,11 +1,11 @@
package quaedam.shell package quaedam.shell
import dev.architectury.utils.GameInstance
import net.minecraft.client.gui.GuiGraphics import net.minecraft.client.gui.GuiGraphics
import net.minecraft.client.gui.components.Button import net.minecraft.client.gui.components.Button
import net.minecraft.client.gui.components.StringWidget import net.minecraft.client.gui.components.StringWidget
import net.minecraft.client.gui.layouts.GridLayout import net.minecraft.client.gui.layouts.GridLayout
import net.minecraft.client.gui.screens.Screen import net.minecraft.client.gui.screens.Screen
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
@ -14,10 +14,15 @@ import quaedam.shell.network.ServerboundPSHLockReleasePacket
class ProjectionShellScreen(val level: Level, val pos: BlockPos, val shell: ProjectionEffectShell) : class ProjectionShellScreen(val level: Level, val pos: BlockPos, val shell: ProjectionEffectShell) :
Screen(Component.translatable("quaedam.screen.projection_shell")) { Screen(Component.translatable("quaedam.screen.projection_shell")) {
val layout = GridLayout() companion object {
const val BORDER = 15
}
var layout = GridLayout()
override fun init() { override fun init() {
super.init() super.init()
layout = GridLayout()
layout.spacing(4) layout.spacing(4)
val rows = layout.createRowHelper(2) val rows = layout.createRowHelper(2)
val renderContext = ShellRenderContext(this) val renderContext = ShellRenderContext(this)
@ -32,17 +37,31 @@ class ProjectionShellScreen(val level: Level, val pos: BlockPos, val shell: Proj
if (block is ProjectionShellBlock) { if (block is ProjectionShellBlock) {
block.applyFromShell(level, pos, shell) block.applyFromShell(level, pos, shell)
} }
GameInstance.getClient().setScreen(null)
}.build()) }.build())
} }
layout.arrangeElements() layout.arrangeElements()
layout.x = (width - layout.width) / 2
layout.y = (height - layout.height) / 2
layout.visitWidgets(::addRenderableWidget) layout.visitWidgets(::addRenderableWidget)
} }
fun getFont() = font fun getFont() = font
override fun render(guiGraphics: GuiGraphics, mouseX: Int, mouseY: Int, partialTick: Float) {
renderBackground(guiGraphics)
super.render(guiGraphics, mouseX, mouseY, partialTick)
}
override fun renderBackground(guiGraphics: GuiGraphics) { override fun renderBackground(guiGraphics: GuiGraphics) {
super.renderBackground(guiGraphics) super.renderBackground(guiGraphics)
guiGraphics.blit(AbstractContainerScreen.INVENTORY_LOCATION, width / 2, height / 2, 0, 0, 176, 166) guiGraphics.fill(
layout.x - BORDER,
layout.y - BORDER,
layout.x + layout.width + BORDER,
layout.y + layout.height + BORDER,
0x11c6c6c6
)
} }
override fun removed() { override fun removed() {