Some 1.20 portings
This commit is contained in:
parent
817630cb79
commit
8a0cfaa90d
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.client.render
|
||||
import com.google.common.collect.ImmutableList
|
||||
import com.mojang.blaze3d.vertex.BufferBuilder
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import com.mojang.blaze3d.vertex.VertexSorting
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
@ -62,7 +63,7 @@ private fun equals(existing: ImmutableList<RenderType>?, types: ImmutableList<Re
|
||||
*
|
||||
* Allows to batch OTM's geometry
|
||||
*/
|
||||
class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInitialBufferSize: Int = Int.MAX_VALUE) : MultiBufferSource {
|
||||
class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInitialBufferSize: Int = Int.MAX_VALUE, val vertexSorting: VertexSorting = VertexSorting.DISTANCE_TO_ORIGIN) : MultiBufferSource {
|
||||
init {
|
||||
require(minimalInitialBufferSize >= 0) { "Invalid minimal buffer size $minimalInitialBufferSize" }
|
||||
require(maximalInitialBufferSize >= minimalInitialBufferSize) { "Maximal buffer size $maximalInitialBufferSize must be greater or equal to minimal buffer size $minimalInitialBufferSize" }
|
||||
@ -142,13 +143,6 @@ class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInit
|
||||
it.add(next)
|
||||
next = State(RenderType.waterMask(), ImmutableList.of(next.type), true, false)
|
||||
it.add(next)
|
||||
|
||||
// TODO
|
||||
// it.add(State(AtlasMatterySprite.renderTypeDepth, ImmutableList.of(RenderType.waterMask()), true))
|
||||
// TODO
|
||||
// it.add(State(AtlasMatterySprite.renderTypeNoDepth, ImmutableList.of(RenderType.waterMask()), true))
|
||||
// TODO
|
||||
// it.add(State(AtlasMatterySprite.renderTypeWorld, ImmutableList.of(Sheets.signSheet()), true))
|
||||
}
|
||||
|
||||
private fun determineHeight(input: State, seen: MutableSet<State>) {
|
||||
@ -356,7 +350,7 @@ class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInit
|
||||
for (state in bufferList) {
|
||||
if (state.dirty) {
|
||||
state.dirty = false
|
||||
state.type.end(state.builder, 0, 0, 0)
|
||||
state.type.end(state.builder, vertexSorting)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -366,7 +360,7 @@ class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInit
|
||||
|
||||
if (state.dirty) {
|
||||
state.dirty = false
|
||||
type.end(state.builder, 0, 0, 0)
|
||||
type.end(state.builder, vertexSorting)
|
||||
}
|
||||
}
|
||||
|
||||
@ -375,7 +369,7 @@ class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInit
|
||||
|
||||
if (state.dirty) {
|
||||
state.dirty = false
|
||||
type.end(state.builder, 0, 0, 0)
|
||||
type.end(state.builder, vertexSorting)
|
||||
}
|
||||
|
||||
for (ustate in state.dependants) {
|
||||
@ -386,7 +380,7 @@ class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInit
|
||||
private fun endBatchChain(state: State) {
|
||||
if (state.dirty) {
|
||||
state.dirty = false
|
||||
state.type.end(state.builder, 0, 0, 0)
|
||||
state.type.end(state.builder, vertexSorting)
|
||||
}
|
||||
|
||||
for (ustate in state.dependants) {
|
||||
@ -395,7 +389,9 @@ class DynamicBufferSource(val minimalInitialBufferSize: Int = 0, val maximalInit
|
||||
}
|
||||
|
||||
companion object {
|
||||
val GUI = DynamicBufferSource(maximalInitialBufferSize = 2 shl 8)
|
||||
@JvmField
|
||||
val GUI = DynamicBufferSource(maximalInitialBufferSize = 2 shl 8, vertexSorting = VertexSorting.ORTHOGRAPHIC_Z)
|
||||
@JvmField
|
||||
val WORLD = DynamicBufferSource(minimalInitialBufferSize = 2 shl 12)
|
||||
|
||||
/**
|
||||
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.Tesselator
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import net.minecraft.client.gui.Font
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.core.Vec3i
|
||||
import net.minecraft.network.chat.Component
|
||||
@ -104,12 +105,7 @@ private fun Font.drawScaledDuckTyped(poseStack: PoseStack, buffer: MultiBufferSo
|
||||
}
|
||||
|
||||
private fun Font.drawDuckTyped(poseStack: PoseStack, text: Any, x: Float, y: Float, color: Int): Int {
|
||||
return when (text) {
|
||||
is Component -> draw(poseStack, text, x, y, color)
|
||||
is String -> draw(poseStack, text, x, y, color)
|
||||
is FormattedCharSequence -> draw(poseStack, text, x, y, color)
|
||||
else -> throw ClassCastException(text::class.qualifiedName)
|
||||
}
|
||||
return drawDuckTyped(poseStack, DynamicBufferSource.GUI, text, x, y, color)
|
||||
}
|
||||
|
||||
private fun Font.drawDuckTyped(
|
||||
@ -240,6 +236,35 @@ private fun Font.drawScaledAlignedDuckTyped(
|
||||
}
|
||||
}
|
||||
|
||||
private fun GuiGraphics.drawScaledAlignedDuckTyped(
|
||||
poseStack: PoseStack,
|
||||
buffer: MultiBufferSource,
|
||||
text: Any,
|
||||
scale: Float,
|
||||
align: TextAlign,
|
||||
x: Float,
|
||||
y: Float,
|
||||
color: Int,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0
|
||||
): Int {
|
||||
return when (align) {
|
||||
TextAlign.TOP_LEFT -> drawScaledDuckTyped(poseStack, buffer, text, scale, x, y, color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
TextAlign.TOP_CENTER -> drawScaledDuckTyped(poseStack, buffer, text, scale, (x - widthDuckTyped(text) * scale / 2f), y, color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
TextAlign.TOP_RIGHT -> drawScaledDuckTyped(poseStack, buffer, text, scale, (x - widthDuckTyped(text) * scale), y, color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
|
||||
TextAlign.CENTER_LEFT -> drawScaledDuckTyped(poseStack, buffer, text, scale, x, (y - lineHeight / 2f * scale), color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
TextAlign.CENTER_CENTER -> drawScaledDuckTyped(poseStack, buffer, text, scale, (x - widthDuckTyped(text) * scale / 2f), (y - lineHeight * scale / 2f), color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
TextAlign.CENTER_RIGHT -> drawScaledDuckTyped(poseStack, buffer, text, scale, (x - widthDuckTyped(text) * scale), (y - lineHeight * scale / 2f), color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
|
||||
TextAlign.BOTTOM_LEFT -> drawScaledDuckTyped(poseStack, buffer, text, scale, x, (y - lineHeight * scale), color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
TextAlign.BOTTOM_CENTER -> drawScaledDuckTyped(poseStack, buffer, text, scale, (x - widthDuckTyped(text) * scale / 2f), (y - lineHeight * scale), color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
TextAlign.BOTTOM_RIGHT -> drawScaledDuckTyped(poseStack, buffer, text, scale, (x - widthDuckTyped(text) * scale), (y - lineHeight * scale), color, drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
}
|
||||
}
|
||||
|
||||
fun Font.drawAligned(poseStack: PoseStack, text: String, align: TextAlign, x: Float, y: Float, color: Int) = drawAlignedDuckTyped(poseStack, text, align, x, y, color)
|
||||
fun Font.drawAligned(poseStack: PoseStack, text: Component, align: TextAlign, x: Float, y: Float, color: Int) = drawAlignedDuckTyped(poseStack, text, align, x, y, color)
|
||||
fun Font.drawAligned(poseStack: PoseStack, text: FormattedCharSequence, align: TextAlign, x: Float, y: Float, color: Int) = drawAlignedDuckTyped(poseStack, text, align, x, y, color)
|
||||
@ -271,3 +296,19 @@ fun Font.drawScaledAligned(poseStack: PoseStack, buffer: MultiBufferSource, text
|
||||
fun Font.drawScaledAligned(poseStack: PoseStack, buffer: MultiBufferSource, text: String, scale: Float, align: TextAlign, x: Float, y: Float, drawShadow: Boolean = false, displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL, packedLightCoords: Int = 15728880, effectColor: Int = 0, color: RGBAColor) = drawScaledAligned(poseStack, buffer, text, scale, align, x, y, color.toInt(), drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
fun Font.drawScaledAligned(poseStack: PoseStack, buffer: MultiBufferSource, text: Component, scale: Float, align: TextAlign, x: Float, y: Float, drawShadow: Boolean = false, displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL, packedLightCoords: Int = 15728880, effectColor: Int = 0, color: RGBAColor) = drawScaledAligned(poseStack, buffer, text, scale, align, x, y, color.toInt(), drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
fun Font.drawScaledAligned(poseStack: PoseStack, buffer: MultiBufferSource, text: FormattedCharSequence, scale: Float, align: TextAlign, x: Float, y: Float, drawShadow: Boolean = false, displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL, packedLightCoords: Int = 15728880, effectColor: Int = 0, color: RGBAColor) = drawScaledAligned(poseStack, buffer, text, scale, align, x, y, color.toInt(), drawShadow, displayMode, packedLightCoords, effectColor)
|
||||
|
||||
fun GuiGraphics.drawAligned(font: Font, text: String, align: TextAlign, x: Float, y: Float, color: Int) = drawAlignedDuckTyped(poseStack, text, align, x, y, color)
|
||||
fun GuiGraphics.drawAligned(font: Font, text: Component, align: TextAlign, x: Float, y: Float, color: Int) = drawAlignedDuckTyped(poseStack, text, align, x, y, color)
|
||||
fun GuiGraphics.drawAligned(font: Font, text: FormattedCharSequence, align: TextAlign, x: Float, y: Float, color: Int) = drawAlignedDuckTyped(poseStack, text, align, x, y, color)
|
||||
|
||||
fun GuiGraphics.drawAligned(font: Font, text: String, align: TextAlign, x: Float, y: Float, color: RGBAColor) = drawAligned(poseStack, text, align, x, y, color.toInt())
|
||||
fun GuiGraphics.drawAligned(font: Font, text: Component, align: TextAlign, x: Float, y: Float, color: RGBAColor) = drawAligned(poseStack, text, align, x, y, color.toInt())
|
||||
fun GuiGraphics.drawAligned(font: Font, text: FormattedCharSequence, align: TextAlign, x: Float, y: Float, color: RGBAColor) = drawAligned(poseStack, text, align, x, y, color.toInt())
|
||||
|
||||
fun GuiGraphics.drawScaledAligned(font: Font, text: String, scale: Float, align: TextAlign, x: Float, y: Float, color: Int) = drawScaledAlignedDuckTyped(poseStack, text, scale, align, x, y, color)
|
||||
fun GuiGraphics.drawScaledAligned(font: Font, text: Component, scale: Float, align: TextAlign, x: Float, y: Float, color: Int) = drawScaledAlignedDuckTyped(poseStack, text, scale, align, x, y, color)
|
||||
fun GuiGraphics.drawScaledAligned(font: Font, text: FormattedCharSequence, scale: Float, align: TextAlign, x: Float, y: Float, color: Int) = drawScaledAlignedDuckTyped(poseStack, text, scale, align, x, y, color)
|
||||
|
||||
fun GuiGraphics.drawScaledAligned(font: Font, text: String, scale: Float, align: TextAlign, x: Float, y: Float, color: RGBAColor) = drawScaledAligned(poseStack, text, scale, align, x, y, color.toInt())
|
||||
fun GuiGraphics.drawScaledAligned(font: Font, text: Component, scale: Float, align: TextAlign, x: Float, y: Float, color: RGBAColor) = drawScaledAligned(poseStack, text, scale, align, x, y, color.toInt())
|
||||
fun GuiGraphics.drawScaledAligned(font: Font, text: FormattedCharSequence, scale: Float, align: TextAlign, x: Float, y: Float, color: RGBAColor) = drawScaledAligned(poseStack, text, scale, align, x, y, color.toInt())
|
||||
|
@ -6,6 +6,7 @@ import com.mojang.blaze3d.vertex.PoseStack
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import net.minecraft.client.gui.ComponentPath
|
||||
import net.minecraft.client.gui.Font
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener
|
||||
import net.minecraft.client.gui.navigation.FocusNavigationEvent
|
||||
import net.minecraft.client.gui.navigation.ScreenRectangle
|
||||
@ -697,8 +698,8 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun innerRenderTooltips(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
protected open fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
@ -742,11 +743,13 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun render(poseStack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
fun render(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (!isVisible()) {
|
||||
return
|
||||
}
|
||||
|
||||
val poseStack = graphics.pose()
|
||||
|
||||
performLayoutIfNeeded()
|
||||
|
||||
val parent = this.parent
|
||||
@ -789,7 +792,7 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
poseStack.pushPose()
|
||||
poseStack.translate(absoluteX.toDouble(), absoluteY.toDouble(), 10.0)
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, if (isFlashFrameRecursive) 0.5f else 1f)
|
||||
innerRender(poseStack, mouseX, mouseY, partialTick)
|
||||
innerRender(graphics, mouseX, mouseY, partialTick)
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||
poseStack.popPose()
|
||||
}
|
||||
@ -798,7 +801,7 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
child.absoluteX = absoluteX + child.x + xOffset
|
||||
child.absoluteY = absoluteY + child.y + yOffset
|
||||
|
||||
child.render(poseStack, mouseX, mouseY, partialTick)
|
||||
child.render(graphics, mouseX, mouseY, partialTick)
|
||||
}
|
||||
|
||||
if (scissor) {
|
||||
@ -921,7 +924,7 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
return null to ItemStack.EMPTY
|
||||
}
|
||||
|
||||
fun renderTooltips(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
fun renderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (!isVisible()) {
|
||||
return false
|
||||
}
|
||||
@ -933,12 +936,12 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
for (child in visibleChildrenInternal) {
|
||||
if (child.renderTooltips(stack, mouseX, mouseY, partialTick)) {
|
||||
if (child.renderTooltips(graphics, mouseX, mouseY, partialTick)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
if (innerRenderTooltips(stack, mouseX, mouseY, partialTick)) {
|
||||
if (innerRenderTooltips(graphics, mouseX, mouseY, partialTick)) {
|
||||
return true
|
||||
}
|
||||
|
||||
@ -947,22 +950,20 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
val tooltipList = tooltipList
|
||||
|
||||
if (tooltip != null) {
|
||||
screen.renderComponentTooltip(
|
||||
stack,
|
||||
graphics.renderComponentTooltip(
|
||||
font,
|
||||
listOf(tooltip),
|
||||
mouseX.toInt(),
|
||||
mouseY.toInt(),
|
||||
font
|
||||
mouseY.toInt()
|
||||
)
|
||||
|
||||
return true
|
||||
} else if (tooltipList != null) {
|
||||
screen.renderComponentTooltip(
|
||||
stack,
|
||||
graphics.renderComponentTooltip(
|
||||
font,
|
||||
tooltipList,
|
||||
mouseX.toInt(),
|
||||
mouseY.toInt(),
|
||||
font
|
||||
)
|
||||
|
||||
return true
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
||||
import net.minecraft.client.gui.screens.inventory.InventoryScreen
|
||||
@ -89,7 +90,7 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (entity.isDeadOrDying) {
|
||||
return
|
||||
}
|
||||
@ -98,7 +99,7 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||
val renderY = (height * 0.9f).toInt()
|
||||
|
||||
InventoryScreen.renderEntityInInventoryFollowsMouse(
|
||||
stack,
|
||||
graphics,
|
||||
renderX,
|
||||
renderY,
|
||||
renderScale,
|
||||
@ -123,8 +124,8 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
ExoPackInventoryScreen.ENTITY_RECTANGLE.render(stack)
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
ExoPackInventoryScreen.ENTITY_RECTANGLE.render(graphics.pose())
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.narration.NarratableEntry
|
||||
import net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority
|
||||
import net.minecraft.client.gui.narration.NarrationElementOutput
|
||||
@ -50,7 +51,8 @@ open class FramePanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
val stack = graphics.pose()
|
||||
val width: Float
|
||||
val height: Float
|
||||
|
||||
@ -194,13 +196,13 @@ open class FramePanel<out S : Screen>(
|
||||
return super.keyPressedInternal(key, scancode, mods)
|
||||
}
|
||||
|
||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
RECTANGLE.render(stack, width = width, height = height)
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
RECTANGLE.render(graphics.pose(), width = width, height = height)
|
||||
|
||||
// title
|
||||
val title = title ?: return
|
||||
RenderSystem.depthFunc(GL30.GL_ALWAYS)
|
||||
font.draw(stack, title, 8f, 5f, 4210752)
|
||||
font.drawAligned(graphics.pose(), title, TextAlign.TOP_LEFT, 8f, 5f, 4210752)
|
||||
RenderSystem.depthFunc(GL30.GL_ALWAYS)
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.network.chat.Component
|
||||
import ru.dbotthepony.mc.otm.client.render.TextAlign
|
||||
@ -31,33 +31,33 @@ open class Label<out S : Screen> @JvmOverloads constructor(
|
||||
var color = RGBAColor.SLATE_GRAY
|
||||
var align = TextAlign.TOP_LEFT
|
||||
|
||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
clearDepth(stack)
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
clearDepth(graphics.pose())
|
||||
|
||||
if (shadow) {
|
||||
when (align) {
|
||||
TextAlign.TOP_LEFT -> font.drawAligned(stack, text, align, shadowX, shadowY, shadowColor.toInt())
|
||||
TextAlign.TOP_CENTER -> font.drawAligned(stack, text, align, shadowX + width / 2f, shadowY, shadowColor.toInt())
|
||||
TextAlign.TOP_RIGHT -> font.drawAligned(stack, text, align, shadowX + width, shadowY, shadowColor.toInt())
|
||||
TextAlign.CENTER_LEFT -> font.drawAligned(stack, text, align, shadowX, height / 2f + shadowY, shadowColor.toInt())
|
||||
TextAlign.CENTER_CENTER -> font.drawAligned(stack, text, align, shadowX + width / 2f, height / 2f + shadowY, shadowColor.toInt())
|
||||
TextAlign.CENTER_RIGHT -> font.drawAligned(stack, text, align, shadowX + width, height / 2f + shadowY, shadowColor.toInt())
|
||||
TextAlign.BOTTOM_LEFT -> font.drawAligned(stack, text, align, shadowX, height + shadowY, shadowColor.toInt())
|
||||
TextAlign.BOTTOM_CENTER -> font.drawAligned(stack, text, align, shadowX + width / 2f, height + shadowY, shadowColor.toInt())
|
||||
TextAlign.BOTTOM_RIGHT -> font.drawAligned(stack, text, align, shadowX + width, height + shadowY, shadowColor.toInt())
|
||||
TextAlign.TOP_LEFT -> font.drawAligned(graphics.pose(), text, align, shadowX, shadowY, shadowColor.toInt())
|
||||
TextAlign.TOP_CENTER -> font.drawAligned(graphics.pose(), text, align, shadowX + width / 2f, shadowY, shadowColor.toInt())
|
||||
TextAlign.TOP_RIGHT -> font.drawAligned(graphics.pose(), text, align, shadowX + width, shadowY, shadowColor.toInt())
|
||||
TextAlign.CENTER_LEFT -> font.drawAligned(graphics.pose(), text, align, shadowX, height / 2f + shadowY, shadowColor.toInt())
|
||||
TextAlign.CENTER_CENTER -> font.drawAligned(graphics.pose(), text, align, shadowX + width / 2f, height / 2f + shadowY, shadowColor.toInt())
|
||||
TextAlign.CENTER_RIGHT -> font.drawAligned(graphics.pose(), text, align, shadowX + width, height / 2f + shadowY, shadowColor.toInt())
|
||||
TextAlign.BOTTOM_LEFT -> font.drawAligned(graphics.pose(), text, align, shadowX, height + shadowY, shadowColor.toInt())
|
||||
TextAlign.BOTTOM_CENTER -> font.drawAligned(graphics.pose(), text, align, shadowX + width / 2f, height + shadowY, shadowColor.toInt())
|
||||
TextAlign.BOTTOM_RIGHT -> font.drawAligned(graphics.pose(), text, align, shadowX + width, height + shadowY, shadowColor.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
when (align) {
|
||||
TextAlign.TOP_LEFT -> font.drawAligned(stack, text, align, 0f, 0f, color.toInt())
|
||||
TextAlign.TOP_CENTER -> font.drawAligned(stack, text, align, width / 2f, 0f, color.toInt())
|
||||
TextAlign.TOP_RIGHT -> font.drawAligned(stack, text, align, width - (if (shadow) shadowX else 0f), 0f, color.toInt())
|
||||
TextAlign.CENTER_LEFT -> font.drawAligned(stack, text, align, 0f, height / 2f, color.toInt())
|
||||
TextAlign.CENTER_CENTER -> font.drawAligned(stack, text, align, width / 2f, height / 2f, color.toInt())
|
||||
TextAlign.CENTER_RIGHT -> font.drawAligned(stack, text, align, width - (if (shadow) shadowX else 0f), height / 2f, color.toInt())
|
||||
TextAlign.BOTTOM_LEFT -> font.drawAligned(stack, text, align, 0f, height, color.toInt())
|
||||
TextAlign.BOTTOM_CENTER -> font.drawAligned(stack, text, align, width / 2f, height, color.toInt())
|
||||
TextAlign.BOTTOM_RIGHT -> font.drawAligned(stack, text, align, width - (if (shadow) shadowX else 0f), height, color.toInt())
|
||||
TextAlign.TOP_LEFT -> font.drawAligned(graphics.pose(), text, align, 0f, 0f, color.toInt())
|
||||
TextAlign.TOP_CENTER -> font.drawAligned(graphics.pose(), text, align, width / 2f, 0f, color.toInt())
|
||||
TextAlign.TOP_RIGHT -> font.drawAligned(graphics.pose(), text, align, width - (if (shadow) shadowX else 0f), 0f, color.toInt())
|
||||
TextAlign.CENTER_LEFT -> font.drawAligned(graphics.pose(), text, align, 0f, height / 2f, color.toInt())
|
||||
TextAlign.CENTER_CENTER -> font.drawAligned(graphics.pose(), text, align, width / 2f, height / 2f, color.toInt())
|
||||
TextAlign.CENTER_RIGHT -> font.drawAligned(graphics.pose(), text, align, width - (if (shadow) shadowX else 0f), height / 2f, color.toInt())
|
||||
TextAlign.BOTTOM_LEFT -> font.drawAligned(graphics.pose(), text, align, 0f, height, color.toInt())
|
||||
TextAlign.BOTTOM_CENTER -> font.drawAligned(graphics.pose(), text, align, width / 2f, height, color.toInt())
|
||||
TextAlign.BOTTOM_RIGHT -> font.drawAligned(graphics.pose(), text, align, width - (if (shadow) shadowX else 0f), height, color.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.components.Renderable
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
@ -13,15 +13,15 @@ class Panel2Widget<out S: Screen, out P : EditablePanel<S>>(
|
||||
require(panel.parent == null) { "Widget wrapped panels can't have a parent ($panel has parent ${panel.parent})" }
|
||||
}
|
||||
|
||||
override fun render(poseStack: PoseStack, mouseX: Int, mouseY: Int, partialTick: Float) {
|
||||
override fun render(graphics: GuiGraphics, mouseX: Int, mouseY: Int, partialTick: Float) {
|
||||
panel.tick()
|
||||
|
||||
val xFloat = mouseX.toFloat()
|
||||
val yFloat = mouseY.toFloat()
|
||||
|
||||
panel.tickHover(xFloat, yFloat)
|
||||
panel.render(poseStack, xFloat, yFloat, partialTick)
|
||||
panel.renderTooltips(poseStack, xFloat, yFloat, partialTick)
|
||||
panel.render(graphics, xFloat, yFloat, partialTick)
|
||||
panel.renderTooltips(graphics, xFloat, yFloat, partialTick)
|
||||
}
|
||||
|
||||
override fun mouseMoved(mouseX: Double, mouseY: Double) {
|
||||
|
Loading…
Reference in New Issue
Block a user