Merge branch 'master' into 1.20.1
This commit is contained in:
commit
108b49bedb
@ -1,9 +1,9 @@
|
||||
package ru.dbotthepony.mc.otm.android
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.multiplayer.ClientLevel
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
@ -47,7 +47,7 @@ abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: Ma
|
||||
|
||||
// TODO: GuiGraphics is stripped from server dist
|
||||
// but it doesn't seem to cause issues?
|
||||
abstract fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor = RGBAColor.WHITE)
|
||||
abstract fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor = RGBAColor.WHITE)
|
||||
|
||||
override fun serializeNBT(): CompoundTag {
|
||||
return super.serializeNBT().also {
|
||||
|
@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.android.feature
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.Camera
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.renderer.LevelRenderer
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
@ -30,6 +29,7 @@ import ru.dbotthepony.mc.otm.android.AndroidActiveFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.client.render.linesIgnoreZRenderType
|
||||
@ -373,7 +373,7 @@ class EnderTeleporterFeature(capability: MatteryPlayerCapability) : AndroidActiv
|
||||
}
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
if (cooldown > 0) {
|
||||
RenderSystem.setShaderColor(1f, 0.4f, 0.4f, 1f)
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.multiplayer.ClientLevel
|
||||
import net.minecraft.network.FriendlyByteBuf
|
||||
import net.minecraft.world.entity.Entity
|
||||
@ -9,6 +8,7 @@ import ru.dbotthepony.mc.otm.config.AndroidConfig
|
||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||
@ -119,7 +119,7 @@ class ItemMagnetFeature(capability: MatteryPlayerCapability) : AndroidSwitchable
|
||||
}
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
ResearchIcons.ICON_ITEM_MAGNET.render(graphics, x, y, width, height, color = color)
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.FriendlyByteBuf
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.sounds.SoundSource
|
||||
@ -8,6 +7,7 @@ import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.config.AndroidConfig
|
||||
import ru.dbotthepony.mc.otm.config.ClientConfig
|
||||
@ -96,7 +96,7 @@ class JumpBoostFeature(capability: MatteryPlayerCapability) : AndroidSwitchableF
|
||||
}
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
ResearchIcons.ICON_JUMP_BOOST.render(graphics, x, y, width, height, color = if (cooldown > 0) color * RGBAColor.REDDISH else color)
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.world.effect.MobEffectInstance
|
||||
import net.minecraft.world.effect.MobEffects
|
||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.config.AndroidConfig
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
@ -33,7 +33,7 @@ class NightVisionFeature(android: MatteryPlayerCapability) : AndroidSwitchableFe
|
||||
}
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
ResearchIcons.ICON_NIGHT_VISION.render(graphics, x, y, width, height, color = color)
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.FriendlyByteBuf
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.sounds.SoundSource
|
||||
@ -12,6 +11,7 @@ import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.energy.extractEnergyExact
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.config.AndroidConfig
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
@ -225,7 +225,7 @@ class ShockwaveFeature(capability: MatteryPlayerCapability) : AndroidSwitchableF
|
||||
ticker(false)
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
ResearchIcons.ICON_SHOCKWAVE.render(graphics, x, y, width, height, color = if (isOnCooldown) color * RGBAColor.REDDISH else color)
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,10 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier
|
||||
import net.minecraftforge.common.ForgeMod
|
||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
@ -55,7 +54,7 @@ class StepAssistFeature(android: MatteryPlayerCapability) : AndroidSwitchableFea
|
||||
sharedTick()
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
ResearchIcons.ICON_STEP_ASSIST.render(graphics, x, y, width, height, color = color)
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
package ru.dbotthepony.mc.otm.android.feature
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier
|
||||
import net.minecraftforge.common.ForgeMod
|
||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ResearchIcons
|
||||
import ru.dbotthepony.mc.otm.config.AndroidConfig
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
@ -29,7 +29,7 @@ class SwimBoostersFeature(android: MatteryPlayerCapability) : AndroidSwitchableF
|
||||
ply.getAttribute(ForgeMod.SWIM_SPEED.get())?.removeModifier(MODIFIER_ID)
|
||||
}
|
||||
|
||||
override fun renderIcon(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
override fun renderIcon(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, color: RGBAColor) {
|
||||
ResearchIcons.ICON_LIMB_OVERCLOCKING.render(graphics, x, y, width, height, color = color)
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.client
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import net.minecraft.client.KeyMapping
|
||||
import net.minecraftforge.client.event.RegisterKeyMappingsEvent
|
||||
import net.minecraftforge.client.event.RenderGuiEvent
|
||||
@ -10,8 +9,8 @@ import net.minecraftforge.client.settings.KeyConflictContext
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.android.AndroidActiveFeature
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.render.is3DContext
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.network.ActivateAndroidFeaturePacket
|
||||
@ -57,18 +56,19 @@ object AndroidAbilityKeyMapping : KeyMapping("key.otm.android_ability", KeyConfl
|
||||
|
||||
val x = minecraft.window.guiScaledWidth.toFloat() * .5f + iconSize / 2f
|
||||
val y = minecraft.window.guiScaledHeight.toFloat() * .5f - iconSize / 2f
|
||||
val wrap = MGUIGraphics(event.guiGraphics)
|
||||
|
||||
feature.renderIcon(event.guiGraphics, x, y, iconSize, iconSize)
|
||||
feature.renderIcon(wrap, x, y, iconSize, iconSize)
|
||||
|
||||
if (feature.isOnCooldown) {
|
||||
val cooldownPct = feature.cooldownPercent
|
||||
|
||||
if (cooldownPct > 0.0f) {
|
||||
val nodrawpixels = (iconSize * (1 - cooldownPct)).roundToInt().toFloat()
|
||||
event.guiGraphics.renderRect(x, y + nodrawpixels, iconSize, iconSize - nodrawpixels, color = RGBAColor.HALF_TRANSPARENT)
|
||||
wrap.renderRect(x, y + nodrawpixels, iconSize, iconSize - nodrawpixels, color = RGBAColor.HALF_TRANSPARENT)
|
||||
}
|
||||
|
||||
Widgets18.COOLDOWN.render(event.guiGraphics, x, y + iconSize, iconSize, iconSize)
|
||||
Widgets18.COOLDOWN.render(wrap, x, y + iconSize, iconSize, iconSize)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,10 +13,9 @@ import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.android.AndroidFeature
|
||||
import ru.dbotthepony.mc.otm.android.AndroidSwitchableFeature
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.render.drawArc
|
||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.angleDifference
|
||||
import ru.dbotthepony.mc.otm.core.math.normalizeAngle
|
||||
@ -156,9 +155,9 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
||||
RenderSystem.setShaderColor(0f, 0f, 0f, 0.6f)
|
||||
|
||||
val size = minecraft.window.guiScaledHeight.coerceAtMost(minecraft.window.guiScaledWidth).toFloat() * 0.35f
|
||||
val wrap = MGUIGraphics(event.guiGraphics)
|
||||
|
||||
drawArc(
|
||||
event.guiGraphics,
|
||||
wrap.drawArc(
|
||||
minecraft.window.guiScaledWidth / 2f,
|
||||
minecraft.window.guiScaledHeight / 2f,
|
||||
size,
|
||||
@ -227,8 +226,7 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
||||
if (lastSelectedDegree != null && lastSelectedFeature != null) {
|
||||
RenderSystem.setShaderColor(85 / 255f, 197 / 255f, 255 / 255f, 0.3f * lastSelectProgressGlobal)
|
||||
|
||||
drawArc(
|
||||
event.guiGraphics,
|
||||
wrap.drawArc(
|
||||
minecraft.window.guiScaledWidth / 2f,
|
||||
minecraft.window.guiScaledHeight / 2f,
|
||||
ru.dbotthepony.mc.otm.core.math.linearInterpolation(lastSelectProgressGlobal, size, size * 1.2f),
|
||||
@ -257,17 +255,17 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
||||
}
|
||||
|
||||
val shift = size * 0.6f
|
||||
feature.renderIcon(event.guiGraphics, -iconSize / 2f + shift * cos, -shift * sin - iconSize / 2f, iconSize, iconSize)
|
||||
feature.renderIcon(wrap, -iconSize / 2f + shift * cos, -shift * sin - iconSize / 2f, iconSize, iconSize)
|
||||
|
||||
event.guiGraphics.draw(minecraft.font, feature.type.displayName, shift * cos + 1f, -shift * sin - iconSize / 1.5f + 1f, color = RGBAColor.BLACK, gravity = RenderGravity.CENTER_CENTER)
|
||||
event.guiGraphics.draw(minecraft.font, feature.type.displayName, shift * cos, -shift * sin - iconSize / 1.5f, color = if (feature.isActive) RGBAColor.DARK_GREEN else RGBAColor.DARK_RED, gravity = RenderGravity.CENTER_CENTER)
|
||||
wrap.draw(feature.type.displayName, shift * cos + 1f, -shift * sin - iconSize / 1.5f + 1f, color = RGBAColor.BLACK, gravity = RenderGravity.CENTER_CENTER)
|
||||
wrap.draw(feature.type.displayName, shift * cos, -shift * sin - iconSize / 1.5f, color = if (feature.isActive) RGBAColor.DARK_GREEN else RGBAColor.DARK_RED, gravity = RenderGravity.CENTER_CENTER)
|
||||
|
||||
if (feature.isOnCooldown && feature.cooldownPercent > 0.0f) {
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 0.5f)
|
||||
drawArc(event.guiGraphics, shift * cos, -shift * sin, iconSize / 2f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * feature.cooldownPercent.toDouble())
|
||||
wrap.drawArc(shift * cos, -shift * sin, iconSize / 2f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * feature.cooldownPercent.toDouble())
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||
|
||||
event.guiGraphics.draw(minecraft.font, formatTickDuration(feature.cooldown), shift * cos, -shift * sin + iconSize / 1.5f, color = RGBAColor.WHITE, gravity = RenderGravity.CENTER_CENTER)
|
||||
wrap.draw(formatTickDuration(feature.cooldown), shift * cos, -shift * sin + iconSize / 1.5f, color = RGBAColor.WHITE, gravity = RenderGravity.CENTER_CENTER)
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,15 +294,16 @@ object AndroidMenuKeyMapping : KeyMapping("key.otm.android_menu", KeyConflictCon
|
||||
|
||||
val y = minecraft.window.guiScaledHeight * 0.2f
|
||||
var x = minecraft.window.guiScaledWidth * 0.5f - (features.size.toFloat() * COOLDOWN_ICON_SIZE / 2f + (features.size - 1).toFloat() * (COOLDOWN_ICON_MARGIN / 2f))
|
||||
val wrap = MGUIGraphics(event.guiGraphics)
|
||||
|
||||
for (feature in features) {
|
||||
feature.renderIcon(event.guiGraphics, x, y, COOLDOWN_ICON_SIZE, COOLDOWN_ICON_SIZE)
|
||||
feature.renderIcon(wrap, x, y, COOLDOWN_ICON_SIZE, COOLDOWN_ICON_SIZE)
|
||||
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 0.5f)
|
||||
drawArc(event.guiGraphics, x, y, COOLDOWN_ICON_SIZE / 2f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * feature.cooldownPercent, alignAtCenter = false)
|
||||
wrap.drawArc(x, y, COOLDOWN_ICON_SIZE / 2f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * feature.cooldownPercent, alignAtCenter = false)
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||
|
||||
event.guiGraphics.draw(font, formatTickDuration(feature.cooldown), x + COOLDOWN_ICON_SIZE / 2f, y + COOLDOWN_ICON_SIZE + 1f, color = RGBAColor.WHITE, gravity = RenderGravity.TOP_CENTER)
|
||||
wrap.draw(formatTickDuration(feature.cooldown), x + COOLDOWN_ICON_SIZE / 2f, y + COOLDOWN_ICON_SIZE + 1f, color = RGBAColor.WHITE, gravity = RenderGravity.TOP_CENTER)
|
||||
|
||||
x += COOLDOWN_ICON_SIZE + COOLDOWN_ICON_MARGIN
|
||||
}
|
||||
|
@ -141,7 +141,8 @@ object MatteryGUI {
|
||||
return
|
||||
}
|
||||
|
||||
val stack = event.guiGraphics.pose()
|
||||
val guiGraphics = MGUIGraphics(event.guiGraphics)
|
||||
val stack = guiGraphics.pose
|
||||
val window = event.window
|
||||
|
||||
stack.pushPose()
|
||||
@ -164,7 +165,7 @@ object MatteryGUI {
|
||||
|
||||
pushScissorRect(0, (scissorBase + scissorHeight * (1f - progress)).toInt(), window.width, (scissorHeight * progress * 2f).toInt())
|
||||
|
||||
event.guiGraphics.renderRect(
|
||||
guiGraphics.renderRect(
|
||||
0f,
|
||||
y - 12f,
|
||||
window.guiScaledWidth.toFloat(),
|
||||
@ -173,8 +174,8 @@ object MatteryGUI {
|
||||
|
||||
val text = TranslatableComponent("otm.iteration", iteration)
|
||||
|
||||
event.guiGraphics.draw(minecraft.font, text, x + 1f, y + 1f, color = RGBAColor.BLACK, gravity = RenderGravity.CENTER_CENTER)
|
||||
event.guiGraphics.draw(minecraft.font, text, x, y, color = RGBAColor.WHITE, gravity = RenderGravity.CENTER_CENTER)
|
||||
guiGraphics.draw(text, x + 1f, y + 1f, color = RGBAColor.BLACK, gravity = RenderGravity.CENTER_CENTER)
|
||||
guiGraphics.draw(text, x, y, color = RGBAColor.WHITE, gravity = RenderGravity.CENTER_CENTER)
|
||||
|
||||
stack.scale(0.35f, 0.35f, 0.35f)
|
||||
|
||||
@ -190,8 +191,8 @@ object MatteryGUI {
|
||||
|
||||
for (i in deathLog.indices.reversed()) {
|
||||
val component = deathLog[i]
|
||||
event.guiGraphics.draw(minecraft.font, component.second, x + 1f, y + 1f, color = RGBAColor.BLACK, gravity = RenderGravity.CENTER_CENTER)
|
||||
event.guiGraphics.draw(minecraft.font, component.second, x, y, color = RGBAColor(color, color, color), gravity = RenderGravity.CENTER_CENTER)
|
||||
guiGraphics.draw(component.second, x + 1f, y + 1f, color = RGBAColor.BLACK, gravity = RenderGravity.CENTER_CENTER)
|
||||
guiGraphics.draw(component.second, x, y, color = RGBAColor(color, color, color), gravity = RenderGravity.CENTER_CENTER)
|
||||
|
||||
y += minecraft.font.lineHeight
|
||||
color = (color - 0x20).coerceAtLeast(0x0)
|
||||
@ -252,18 +253,20 @@ object MatteryGUI {
|
||||
|
||||
val leftPadding = ceil(level * 80f - 0.5f)
|
||||
|
||||
val guiGraphics = MGUIGraphics(event.guiGraphics)
|
||||
|
||||
if (ply.hasEffect(MobEffects.HUNGER)) {
|
||||
CHARGE_HUNGER_BG.render(event.guiGraphics, left.toFloat(), top.toFloat())
|
||||
CHARGE_HUNGER.renderPartial(event.guiGraphics, left.toFloat() - leftPadding + 80f, top.toFloat(), width = leftPadding)
|
||||
CHARGE_HUNGER_BG.render(guiGraphics, left.toFloat(), top.toFloat())
|
||||
CHARGE_HUNGER.renderPartial(guiGraphics, left.toFloat() - leftPadding + 80f, top.toFloat(), width = leftPadding)
|
||||
} else {
|
||||
CHARGE_BG.render(event.guiGraphics, left.toFloat(), top.toFloat())
|
||||
CHARGE.renderPartial(event.guiGraphics, left.toFloat() - leftPadding + 80f, top.toFloat(), width = leftPadding)
|
||||
CHARGE_BG.render(guiGraphics, left.toFloat(), top.toFloat())
|
||||
CHARGE.renderPartial(guiGraphics, left.toFloat() - leftPadding + 80f, top.toFloat(), width = leftPadding)
|
||||
}
|
||||
|
||||
val formattedPower = mattery.androidEnergy.batteryLevel.formatPower()
|
||||
|
||||
val scale = ClientConfig.HUD.BAR_TEXT_SCALE.toFloat()
|
||||
event.guiGraphics.draw(gui.font, formattedPower, left + CHARGE_BG.width + 2f + scale, top + CHARGE_BG.height / 2f + scale, scale = scale, gravity = RenderGravity.CENTER_LEFT, color = RGBAColor.YELLOW, drawOutline = true)
|
||||
guiGraphics.draw(formattedPower, left + CHARGE_BG.width + 2f + scale, top + CHARGE_BG.height / 2f + scale, font = gui.font, scale = scale, gravity = RenderGravity.CENTER_LEFT, color = RGBAColor.YELLOW, drawOutline = true)
|
||||
}
|
||||
}
|
||||
|
||||
@ -320,18 +323,20 @@ object MatteryGUI {
|
||||
val top: Int = height - gui.leftHeight
|
||||
gui.leftHeight += 10
|
||||
|
||||
HEALTH_BG.render(event.guiGraphics, left.toFloat(), top.toFloat())
|
||||
val guiGraphics = MGUIGraphics(event.guiGraphics)
|
||||
|
||||
HEALTH_BG.render(guiGraphics, left.toFloat(), top.toFloat())
|
||||
|
||||
if (mattery.hasFeature(AndroidFeatures.NANOBOTS_ARMOR)) {
|
||||
val featArmor = mattery.getFeature(AndroidFeatures.NANOBOTS_ARMOR) as NanobotsArmorFeature
|
||||
val levelArmor: Float = (featArmor.layers.toFloat() / (featArmor.strength + 1).toFloat()).coerceIn(0.0f, 1.0f)
|
||||
|
||||
HEALTH_BG_NANOBOTS.renderPartial(event.guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelArmor * 81f))
|
||||
HEALTH_BG_NANOBOTS.renderPartial(guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelArmor * 81f))
|
||||
}
|
||||
|
||||
getSpriteForPlayer(ply).renderPartial(event.guiGraphics, left.toFloat(), top.toFloat(), width = ceil(level * 80f - 0.5f))
|
||||
getSpriteForPlayer(ply).renderPartial(guiGraphics, left.toFloat(), top.toFloat(), width = ceil(level * 80f - 0.5f))
|
||||
if (levelAbsorb > 0) {
|
||||
HEALTH_ABSORB.renderPartial(event.guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelAbsorb * 80f - 0.5f))
|
||||
HEALTH_ABSORB.renderPartial(guiGraphics, left.toFloat(), top.toFloat(), width = ceil(levelAbsorb * 80f - 0.5f))
|
||||
}
|
||||
|
||||
var formattedHealth = TextComponent("%d/%d".format(ply.health.toInt(), ply.maxHealth.toInt()))
|
||||
@ -340,7 +345,7 @@ object MatteryGUI {
|
||||
formattedHealth = TextComponent("%d+%d/%d".format(ply.health.toInt(), ply.absorptionAmount.toInt(), ply.maxHealth.toInt()))
|
||||
|
||||
val scale = ClientConfig.HUD.BAR_TEXT_SCALE.toFloat()
|
||||
event.guiGraphics.draw(minecraft.font, formattedHealth, left - 2f, top + HEALTH_BG.height / 2f + 1f * scale, scale = scale, gravity = RenderGravity.CENTER_RIGHT, color = getHealthColorForPlayer(ply), drawOutline = true)
|
||||
guiGraphics.draw(formattedHealth, left - 2f, top + HEALTH_BG.height / 2f + 1f * scale, scale = scale, gravity = RenderGravity.CENTER_RIGHT, color = getHealthColorForPlayer(ply), drawOutline = true)
|
||||
}
|
||||
}
|
||||
|
||||
@ -364,7 +369,7 @@ object MatteryGUI {
|
||||
|
||||
val percent = ((stack.item.getUseDuration(stack) - ply.useItemRemainingTicks + minecraft.partialTick) / 5f).coerceIn(0f, 1f)
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 0.5f)
|
||||
drawArc(graphics, x + 8f, y + 8f, 8f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * percent, alignAtCenter = true)
|
||||
drawArc(graphics.pose(), x + 8f, y + 8f, 8f, 0f, PI / 2.0, PI / 2.0 + PI * 2.0 * percent, alignAtCenter = true)
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||
|
||||
return true
|
||||
|
@ -327,11 +327,12 @@ fun Font.draw(
|
||||
)
|
||||
}
|
||||
|
||||
fun GuiGraphics.draw(
|
||||
font: Font,
|
||||
text: Component,
|
||||
fun Font.draw(
|
||||
poseStack: PoseStack,
|
||||
text: FormattedCharSequence,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
buffer: MultiBufferSource = buffer(),
|
||||
gravity: RenderGravity = RenderGravity.TOP_LEFT,
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
@ -342,19 +343,19 @@ fun GuiGraphics.draw(
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
shadowX: Float = 1f,
|
||||
shadowY: Float = 1f,
|
||||
shadowZ: Float = -0.1f,
|
||||
shadowZ: Float = 0.1f,
|
||||
customShadow: Boolean = false,
|
||||
rounding: GravityRounding = if (scale == 1f) GravityRounding.DEFAULT else GravityRounding.NO,
|
||||
drawOutline: Boolean = false,
|
||||
outlineColor: RGBAColor = RGBAColor.BLACK,
|
||||
outlineZ: Float = -0.1f,
|
||||
outlineZ: Float = 0.1f,
|
||||
): Float {
|
||||
val width = font.draw(
|
||||
poseStack = pose(),
|
||||
return drawInternal(
|
||||
poseStack = poseStack,
|
||||
text = text,
|
||||
x = x,
|
||||
y = y,
|
||||
buffer = bufferSource(),
|
||||
buffer = buffer,
|
||||
gravity = gravity,
|
||||
scale = scale,
|
||||
color = color,
|
||||
@ -372,57 +373,4 @@ fun GuiGraphics.draw(
|
||||
outlineColor = outlineColor,
|
||||
outlineZ = outlineZ,
|
||||
)
|
||||
|
||||
flush()
|
||||
return width
|
||||
}
|
||||
|
||||
fun GuiGraphics.draw(
|
||||
font: Font,
|
||||
text: String,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
gravity: RenderGravity = RenderGravity.TOP_LEFT,
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
shadowX: Float = 1f,
|
||||
shadowY: Float = 1f,
|
||||
shadowZ: Float = -0.1f,
|
||||
customShadow: Boolean = false,
|
||||
rounding: GravityRounding = if (scale == 1f) GravityRounding.DEFAULT else GravityRounding.NO,
|
||||
drawOutline: Boolean = false,
|
||||
outlineColor: RGBAColor = RGBAColor.BLACK,
|
||||
outlineZ: Float = -0.1f,
|
||||
): Float {
|
||||
val width = font.draw(
|
||||
poseStack = pose(),
|
||||
text = text,
|
||||
x = x,
|
||||
y = y,
|
||||
buffer = bufferSource(),
|
||||
gravity = gravity,
|
||||
scale = scale,
|
||||
color = color,
|
||||
drawShadow = drawShadow,
|
||||
displayMode = displayMode,
|
||||
packedLightCoords = packedLightCoords,
|
||||
effectColor = effectColor,
|
||||
shadowColor = shadowColor,
|
||||
shadowX = shadowX,
|
||||
shadowY = shadowY,
|
||||
shadowZ = shadowZ,
|
||||
customShadow = customShadow,
|
||||
rounding = rounding,
|
||||
drawOutline = drawOutline,
|
||||
outlineColor = outlineColor,
|
||||
outlineZ = outlineZ,
|
||||
)
|
||||
|
||||
flush()
|
||||
return width
|
||||
}
|
||||
|
@ -1,10 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.render
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.systemTime
|
||||
import kotlin.math.sin
|
||||
|
||||
interface IGUIRenderable {
|
||||
/**
|
||||
@ -23,7 +20,7 @@ interface IGUIRenderable {
|
||||
val winding: UVWindingOrder get() = UVWindingOrder.NORMAL
|
||||
|
||||
fun render(
|
||||
guiGraphics: GuiGraphics,
|
||||
guiGraphics: MGUIGraphics,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
gravity: RenderGravity = RenderGravity.TOP_LEFT,
|
||||
@ -37,7 +34,7 @@ interface IGUIRenderable {
|
||||
* Render at specified position [x], [y] with size of [width] x [height], optionally with UV [winding], if we are rendering flat texture/sprite
|
||||
*/
|
||||
fun render(
|
||||
guiGraphics: GuiGraphics,
|
||||
guiGraphics: MGUIGraphics,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float = this.width,
|
||||
@ -53,7 +50,7 @@ interface IGUIRenderable {
|
||||
override val height: Float
|
||||
get() = this@IGUIRenderable.height.coerceAtLeast(other.height)
|
||||
|
||||
override fun render(guiGraphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
override fun render(guiGraphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
this@IGUIRenderable.render(guiGraphics, x, y, width, height, winding, color)
|
||||
other.render(guiGraphics, x, y, width, height, winding, color)
|
||||
}
|
||||
@ -71,7 +68,7 @@ interface IGUIRenderable {
|
||||
override val height: Float
|
||||
get() = this@IGUIRenderable.height
|
||||
|
||||
override fun render(guiGraphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
override fun render(guiGraphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
this@IGUIRenderable.render(guiGraphics, x + left, y + top, width + right + left, height + bottom + top, winding, color)
|
||||
}
|
||||
}
|
||||
@ -94,7 +91,7 @@ interface IGUIRenderable {
|
||||
override val height: Float
|
||||
get() = this@IGUIRenderable.height
|
||||
|
||||
override fun render(guiGraphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
override fun render(guiGraphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
var realX = x
|
||||
var realY = y
|
||||
|
||||
@ -123,8 +120,8 @@ interface IGUIRenderable {
|
||||
}
|
||||
|
||||
data class ItemStackIcon(private val itemStack: ItemStack, override val width: Float = 16f, override val height: Float = 16f) : IGUIRenderable {
|
||||
override fun render(guiGraphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
val pose = guiGraphics.pose()
|
||||
override fun render(guiGraphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
val pose = guiGraphics.pose
|
||||
|
||||
pose.pushPose()
|
||||
pose.translate(x, y, 0f)
|
||||
@ -140,7 +137,7 @@ data class ItemStackIcon(private val itemStack: ItemStack, override val width: F
|
||||
}
|
||||
|
||||
data class FlatRectangleIcon(override val width: Float = 1f, override val height: Float = 1f, val color: RGBAColor) : IGUIRenderable {
|
||||
override fun render(guiGraphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
override fun render(guiGraphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, winding: UVWindingOrder, color: RGBAColor) {
|
||||
guiGraphics.renderRect(x, y, width, height, color = this.color)
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,267 @@
|
||||
package ru.dbotthepony.mc.otm.client.render
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.Font
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.util.FormattedCharSequence
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import kotlin.math.PI
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
// polyfill class for 1.19.4 and older
|
||||
class MGUIGraphics(val parent: GuiGraphics) {
|
||||
val pose: PoseStack get() = parent.pose()
|
||||
val bufferSource: MultiBufferSource.BufferSource get() = parent.bufferSource()
|
||||
val width get() = parent.guiWidth()
|
||||
val height get() = parent.guiHeight()
|
||||
val font: Font get() = minecraft.font
|
||||
|
||||
fun setColor(red: Float, green: Float, blue: Float, alpha: Float) {
|
||||
parent.setColor(red, green, blue, alpha)
|
||||
}
|
||||
|
||||
fun renderFakeItem(itemStack: ItemStack, x: Int, y: Int) {
|
||||
parent.renderFakeItem(itemStack, x, y)
|
||||
}
|
||||
|
||||
fun drawLine(
|
||||
startX: Float,
|
||||
startY: Float,
|
||||
endX: Float,
|
||||
endY: Float,
|
||||
width: Float,
|
||||
z: Float = 0f,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
drawLine(pose.last().pose(), startX, startY, endX, endY, width, z, color)
|
||||
}
|
||||
|
||||
fun renderRect(
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
height: Float,
|
||||
z: Float = 0f,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
renderRect(pose.last().pose(), x, y, width, height, z, color)
|
||||
}
|
||||
|
||||
fun renderTexturedRect(
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
height: Float,
|
||||
z: Float = 0f,
|
||||
uv: IUVCoords = defaultUV,
|
||||
uvWinding: UVWindingOrder = UVWindingOrder.NORMAL,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
texture: ResourceLocation? = null
|
||||
) {
|
||||
renderTexturedRect(pose.last().pose(), x, y, width, height, z, uv, uvWinding, color, texture)
|
||||
}
|
||||
|
||||
fun renderCheckerboard(
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
height: Float,
|
||||
z: Float = 0f,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
renderCheckerboard(pose.last().pose(), x, y, width, height, z, color)
|
||||
}
|
||||
|
||||
fun renderComponentTooltip(font: Font, lines: MutableList<Component>, x: Int, y: Int, itemStack: ItemStack = ItemStack.EMPTY) {
|
||||
parent.renderComponentTooltip(font, lines, x, y, itemStack)
|
||||
}
|
||||
|
||||
fun flush() {
|
||||
parent.flush()
|
||||
}
|
||||
|
||||
fun draw(
|
||||
text: String,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
gravity: RenderGravity = RenderGravity.TOP_LEFT,
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
shadowX: Float = 1f,
|
||||
shadowY: Float = 1f,
|
||||
shadowZ: Float = -0.1f,
|
||||
customShadow: Boolean = false,
|
||||
rounding: GravityRounding = if (scale == 1f) GravityRounding.DEFAULT else GravityRounding.NO,
|
||||
drawOutline: Boolean = false,
|
||||
outlineColor: RGBAColor = RGBAColor.BLACK,
|
||||
outlineZ: Float = -0.1f,
|
||||
font: Font = this.font,
|
||||
): Float {
|
||||
val width = font.draw(
|
||||
poseStack = pose,
|
||||
text = text,
|
||||
x = x,
|
||||
y = y,
|
||||
buffer = bufferSource,
|
||||
gravity = gravity,
|
||||
scale = scale,
|
||||
color = color,
|
||||
drawShadow = drawShadow,
|
||||
displayMode = displayMode,
|
||||
packedLightCoords = packedLightCoords,
|
||||
effectColor = effectColor,
|
||||
shadowColor = shadowColor,
|
||||
shadowX = shadowX,
|
||||
shadowY = shadowY,
|
||||
shadowZ = shadowZ,
|
||||
customShadow = customShadow,
|
||||
rounding = rounding,
|
||||
drawOutline = drawOutline,
|
||||
outlineColor = outlineColor,
|
||||
outlineZ = outlineZ,
|
||||
)
|
||||
|
||||
flush()
|
||||
return width
|
||||
}
|
||||
|
||||
fun draw(
|
||||
text: Component,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
gravity: RenderGravity = RenderGravity.TOP_LEFT,
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
shadowX: Float = 1f,
|
||||
shadowY: Float = 1f,
|
||||
shadowZ: Float = -0.1f,
|
||||
customShadow: Boolean = false,
|
||||
rounding: GravityRounding = if (scale == 1f) GravityRounding.DEFAULT else GravityRounding.NO,
|
||||
drawOutline: Boolean = false,
|
||||
outlineColor: RGBAColor = RGBAColor.BLACK,
|
||||
outlineZ: Float = -0.1f,
|
||||
font: Font = this.font,
|
||||
): Float {
|
||||
val width = font.draw(
|
||||
poseStack = pose,
|
||||
text = text,
|
||||
x = x,
|
||||
y = y,
|
||||
buffer = bufferSource,
|
||||
gravity = gravity,
|
||||
scale = scale,
|
||||
color = color,
|
||||
drawShadow = drawShadow,
|
||||
displayMode = displayMode,
|
||||
packedLightCoords = packedLightCoords,
|
||||
effectColor = effectColor,
|
||||
shadowColor = shadowColor,
|
||||
shadowX = shadowX,
|
||||
shadowY = shadowY,
|
||||
shadowZ = shadowZ,
|
||||
customShadow = customShadow,
|
||||
rounding = rounding,
|
||||
drawOutline = drawOutline,
|
||||
outlineColor = outlineColor,
|
||||
outlineZ = outlineZ,
|
||||
)
|
||||
|
||||
flush()
|
||||
return width
|
||||
}
|
||||
|
||||
fun draw(
|
||||
text: FormattedCharSequence,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
gravity: RenderGravity = RenderGravity.TOP_LEFT,
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
shadowX: Float = 1f,
|
||||
shadowY: Float = 1f,
|
||||
shadowZ: Float = -0.1f,
|
||||
customShadow: Boolean = false,
|
||||
rounding: GravityRounding = if (scale == 1f) GravityRounding.DEFAULT else GravityRounding.NO,
|
||||
drawOutline: Boolean = false,
|
||||
outlineColor: RGBAColor = RGBAColor.BLACK,
|
||||
outlineZ: Float = -0.1f,
|
||||
font: Font = this.font,
|
||||
): Float {
|
||||
val width = font.draw(
|
||||
poseStack = pose,
|
||||
text = text,
|
||||
x = x,
|
||||
y = y,
|
||||
buffer = bufferSource,
|
||||
gravity = gravity,
|
||||
scale = scale,
|
||||
color = color,
|
||||
drawShadow = drawShadow,
|
||||
displayMode = displayMode,
|
||||
packedLightCoords = packedLightCoords,
|
||||
effectColor = effectColor,
|
||||
shadowColor = shadowColor,
|
||||
shadowX = shadowX,
|
||||
shadowY = shadowY,
|
||||
shadowZ = shadowZ,
|
||||
customShadow = customShadow,
|
||||
rounding = rounding,
|
||||
drawOutline = drawOutline,
|
||||
outlineColor = outlineColor,
|
||||
outlineZ = outlineZ,
|
||||
)
|
||||
|
||||
flush()
|
||||
return width
|
||||
}
|
||||
|
||||
fun renderSprite(
|
||||
sprite: TextureAtlasSprite, x: Float, y: Float,
|
||||
width: Float = sprite.contents().width().toFloat(),
|
||||
height: Float = sprite.contents().height().toFloat(),
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
renderTexturedRect(
|
||||
x, y, width, height,
|
||||
uv = UVCoords(sprite.u0, sprite.v0, sprite.u1, sprite.v1),
|
||||
texture = sprite.atlasLocation(),
|
||||
color = color
|
||||
)
|
||||
}
|
||||
|
||||
fun drawArc(
|
||||
x: Float,
|
||||
y: Float,
|
||||
outerRadius: Float,
|
||||
innerRadius: Float = 0f,
|
||||
startDegree: Double = 0.0,
|
||||
endDegree: Double = PI * 2.0,
|
||||
steps: Int = (outerRadius * (endDegree - startDegree) * 4.0).roundToInt().coerceAtLeast(12),
|
||||
alignAtCenter: Boolean = true
|
||||
) = drawArc(pose, x, y, outerRadius, innerRadius, startDegree, endDegree, steps, alignAtCenter)
|
||||
|
||||
companion object {
|
||||
private val defaultUV = UVCoords(0f, 0f, 1f, 1f)
|
||||
}
|
||||
}
|
@ -94,17 +94,6 @@ fun renderRect(
|
||||
tess.end()
|
||||
}
|
||||
|
||||
fun GuiGraphics.renderRect(
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
height: Float,
|
||||
z: Float = 0f,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
renderRect(pose().last().pose(), x, y, width, height, z, color)
|
||||
}
|
||||
|
||||
@Suppress("NAME_SHADOWING")
|
||||
fun renderCheckerboard(
|
||||
matrix: Matrix4f,
|
||||
@ -146,17 +135,6 @@ fun renderCheckerboard(
|
||||
tess.end()
|
||||
}
|
||||
|
||||
fun GuiGraphics.renderCheckerboard(
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
height: Float,
|
||||
z: Float = 0f,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
renderCheckerboard(pose().last().pose(), x, y, width, height, z, color)
|
||||
}
|
||||
|
||||
fun renderTexturedRect(
|
||||
matrix: Matrix4f,
|
||||
x: Float,
|
||||
@ -209,20 +187,6 @@ fun renderTexturedRect(
|
||||
BufferUploader.drawWithShader(builder.end())
|
||||
}
|
||||
|
||||
fun GuiGraphics.renderTexturedRect(
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
height: Float,
|
||||
z: Float = 0f,
|
||||
uv: IUVCoords = defaultUV,
|
||||
uvWinding: UVWindingOrder = UVWindingOrder.NORMAL,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
texture: ResourceLocation? = null
|
||||
) {
|
||||
renderTexturedRect(pose().last().pose(), x, y, width, height, z, uv, uvWinding, color, texture)
|
||||
}
|
||||
|
||||
fun renderColoredSphere(pose: PoseStack, radius: Float, color: RGBAColor = RGBAColor.WHITE) {
|
||||
val fragments = 32
|
||||
RenderSystem.enableBlend()
|
||||
@ -330,18 +294,6 @@ fun drawLine(
|
||||
tess.end()
|
||||
}
|
||||
|
||||
fun GuiGraphics.drawLine(
|
||||
startX: Float,
|
||||
startY: Float,
|
||||
endX: Float,
|
||||
endY: Float,
|
||||
width: Float,
|
||||
z: Float = 0f,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) {
|
||||
drawLine(pose().last().pose(), startX, startY, endX, endY, width, z, color)
|
||||
}
|
||||
|
||||
data class ScissorRect(val x: Int, val y: Int, val width: Int, val height: Int, val lock: Boolean = false) {
|
||||
fun withinBounds(x: Int, y: Int): Boolean {
|
||||
return (x in this.x .. this.x + width) && (y in this.y .. this.y + height)
|
||||
@ -429,32 +381,6 @@ fun popScissorRect() {
|
||||
|
||||
val currentScissorRect get() = scissorStack.lastOrNull()
|
||||
|
||||
fun TextureAtlasSprite.render(
|
||||
stack: PoseStack,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float,
|
||||
height: Float,
|
||||
winding: UVWindingOrder = UVWindingOrder.NORMAL
|
||||
) {
|
||||
RenderSystem.setShaderTexture(0, atlasLocation())
|
||||
|
||||
if (winding.isIdentity) {
|
||||
renderTexturedRect(stack.last().pose(), x, y, width, height, uv = UVCoords(u0, v0, u1, v1))
|
||||
} else {
|
||||
renderTexturedRect(stack.last().pose(), x, y, width, height, uv = winding.translate(u0, v0, u1, v1))
|
||||
}
|
||||
}
|
||||
|
||||
fun TextureAtlasSprite.render(
|
||||
graphics: GuiGraphics,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float,
|
||||
height: Float,
|
||||
winding: UVWindingOrder = UVWindingOrder.NORMAL
|
||||
) = render(graphics.pose(), x, y, width, height, winding)
|
||||
|
||||
fun determineTooltipPosition(x: Float, y: Float, width: Float, height: Float): Pair<Float, Float> {
|
||||
val windowWidth = minecraft.window.guiScaledWidth.toFloat()
|
||||
val windowHeight = minecraft.window.guiScaledHeight.toFloat()
|
||||
@ -513,7 +439,7 @@ fun clearDepth(stack: PoseStack, x: Float, y: Float, width: Float, height: Float
|
||||
}
|
||||
|
||||
@JvmOverloads
|
||||
fun clearDepth(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, depth: Float = -500f) = ru.dbotthepony.mc.otm.client.render.clearDepth(graphics.pose(), x, y, width, height, depth)
|
||||
fun clearDepth(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, depth: Float = -500f) = clearDepth(graphics.pose, x, y, width, height, depth)
|
||||
|
||||
fun drawArc(
|
||||
stack: PoseStack,
|
||||
@ -527,18 +453,6 @@ fun drawArc(
|
||||
alignAtCenter: Boolean = true
|
||||
) = drawArc(stack.last().pose(), x, y, outerRadius, innerRadius, startDegree, endDegree, steps, alignAtCenter)
|
||||
|
||||
fun drawArc(
|
||||
graphics: GuiGraphics,
|
||||
x: Float,
|
||||
y: Float,
|
||||
outerRadius: Float,
|
||||
innerRadius: Float = 0f,
|
||||
startDegree: Double = 0.0,
|
||||
endDegree: Double = PI * 2.0,
|
||||
steps: Int = (outerRadius * (endDegree - startDegree) * 4.0).roundToInt().coerceAtLeast(12),
|
||||
alignAtCenter: Boolean = true
|
||||
) = drawArc(graphics.pose(), x, y, outerRadius, innerRadius, startDegree, endDegree, steps, alignAtCenter)
|
||||
|
||||
fun uploadArc(
|
||||
matrix: Matrix4f,
|
||||
builder: VertexConsumer,
|
||||
|
@ -6,13 +6,13 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import com.mojang.blaze3d.vertex.VertexFormat
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.client.renderer.RenderStateShard
|
||||
import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.network.FriendlyByteBuf
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import org.lwjgl.opengl.GL11.GL_ALWAYS
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
|
||||
import ru.dbotthepony.mc.otm.client.render.IUVCoords
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
@ -51,7 +51,7 @@ sealed class AbstractMatterySprite : IGUIRenderable, IUVCoords {
|
||||
* See [ru.dbotthepony.mc.otm.client.render.clearDepth]
|
||||
*/
|
||||
fun clearDepth(
|
||||
graphics: GuiGraphics,
|
||||
graphics: MGUIGraphics,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float = this.width,
|
||||
@ -70,7 +70,7 @@ sealed class AbstractMatterySprite : IGUIRenderable, IUVCoords {
|
||||
}
|
||||
|
||||
override fun render(
|
||||
guiGraphics: GuiGraphics,
|
||||
guiGraphics: MGUIGraphics,
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float,
|
||||
@ -105,14 +105,14 @@ sealed class AbstractMatterySprite : IGUIRenderable, IUVCoords {
|
||||
}
|
||||
|
||||
fun renderPartial(
|
||||
graphics: GuiGraphics,
|
||||
graphics: MGUIGraphics,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float = this.width,
|
||||
height: Float = this.height,
|
||||
winding: UVWindingOrder = this.winding,
|
||||
color: RGBAColor = RGBAColor.WHITE
|
||||
) = renderPartial(graphics.pose(), x, y, width, height, winding, color)
|
||||
) = renderPartial(graphics.pose, x, y, width, height, winding, color)
|
||||
|
||||
protected fun uploadOnto(
|
||||
pose: PoseStack,
|
||||
|
@ -1,8 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.render.sprites
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.DockProperty
|
||||
|
||||
data class StretchingRectangleElement(
|
||||
@ -46,12 +46,12 @@ data class StretchingRectangleElement(
|
||||
|
||||
@JvmOverloads
|
||||
fun render(
|
||||
graphics: GuiGraphics,
|
||||
graphics: MGUIGraphics,
|
||||
x: Float = 0f,
|
||||
y: Float = 0f,
|
||||
width: Float,
|
||||
height: Float,
|
||||
) = render(graphics.pose(), x, y, width, height)
|
||||
) = render(graphics.pose, x, y, width, height)
|
||||
|
||||
companion object {
|
||||
fun square(
|
||||
|
@ -17,6 +17,7 @@ import net.minecraftforge.client.event.ContainerScreenEvent.Render.Foreground
|
||||
import net.minecraftforge.common.MinecraftForge
|
||||
import org.lwjgl.opengl.GL11
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.moveMousePosScaled
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
@ -86,13 +87,13 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
val quickCraftingType: Int get() = super.quickCraftingType
|
||||
val isQuickCrafting: Boolean get() = super.isQuickCrafting
|
||||
|
||||
fun renderItemStack(graphics: GuiGraphics, itemstack: ItemStack, countOverride: String? = null) {
|
||||
fun renderItemStack(graphics: MGUIGraphics, itemstack: ItemStack, countOverride: String? = null) {
|
||||
if (!itemstack.isEmpty) {
|
||||
RenderSystem.enableDepthTest()
|
||||
|
||||
val (x, y) = graphics.pose().translation()
|
||||
val (x, y) = graphics.pose.translation()
|
||||
|
||||
graphics.renderItem(
|
||||
graphics.parent.renderItem(
|
||||
requireNotNull(ru.dbotthepony.mc.otm.client.minecraft.player) { "yo, dude, what the fuck" },
|
||||
itemstack,
|
||||
1,
|
||||
@ -101,7 +102,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
)
|
||||
|
||||
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||
graphics.renderItemDecorations(
|
||||
graphics.parent.renderItemDecorations(
|
||||
super.font,
|
||||
itemstack,
|
||||
1,
|
||||
@ -643,6 +644,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
}
|
||||
|
||||
override fun render(graphics: GuiGraphics, mouseX: Int, mouseY: Int, partialTick: Float) {
|
||||
val wrap = MGUIGraphics(graphics)
|
||||
val mouseXf = mouseX.toFloat()
|
||||
val mouseYf = mouseY.toFloat()
|
||||
|
||||
@ -667,7 +669,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
for (panel in panels.asReversed()) {
|
||||
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||
panel.render(graphics, mouseXf, mouseYf, partialTick)
|
||||
panel.render(wrap, mouseXf, mouseYf, partialTick)
|
||||
}
|
||||
|
||||
RenderSystem.depthFunc(GL11.GL_LESS)
|
||||
@ -711,7 +713,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
for (panel in panels) {
|
||||
RenderSystem.disableDepthTest()
|
||||
|
||||
if (panel.renderTooltips(graphics, mouseXf, mouseYf, partialTick)) {
|
||||
if (panel.renderTooltips(wrap, mouseXf, mouseYf, partialTick)) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.decorative
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.util.RandomSource
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
@ -11,10 +10,9 @@ import net.minecraft.world.item.Items
|
||||
import net.minecraftforge.common.Tags
|
||||
import net.minecraftforge.registries.ForgeRegistries
|
||||
import ru.dbotthepony.mc.otm.block.entity.decorative.PainterBlockEntity
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.FlatRectangleIcon
|
||||
import ru.dbotthepony.mc.otm.client.render.ItemStackIcon
|
||||
import ru.dbotthepony.mc.otm.client.render.renderCheckerboard
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.Dock
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.DockResizeMode
|
||||
@ -50,7 +48,7 @@ class PainterScreen(menu: PainterMenu, inventory: Inventory, title: Component) :
|
||||
tooltips.add(TextComponent(""))
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
graphics.renderRect(0f, 0f, width, height, color = RGBAColor.DARK_GRAY)
|
||||
|
||||
val color = RGBAColor.rgb(dye?.textColor ?: DyeColor.LIGHT_BLUE.textColor)
|
||||
@ -157,7 +155,7 @@ class PainterScreen(menu: PainterMenu, inventory: Inventory, title: Component) :
|
||||
get() = !recipe.value.canCraft(menu.dyeStoredDirect)
|
||||
set(value) {}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
val list = getTooltipFromItem(minecraft!!, recipeOutput)
|
||||
|
||||
recipe.value.dyes.forEach {
|
||||
|
@ -1,12 +1,12 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.matter
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.capability.matter.PatternState
|
||||
import ru.dbotthepony.mc.otm.capability.matter.ReplicationTask
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.ShiftPressedCond
|
||||
import ru.dbotthepony.mc.otm.client.render.*
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
@ -205,14 +205,13 @@ class MatterPanelScreen(
|
||||
return list
|
||||
}
|
||||
|
||||
override fun renderRegular(graphics: GuiGraphics, itemstack: ItemStack, countOverride: String?) {
|
||||
override fun renderRegular(graphics: MGUIGraphics, itemstack: ItemStack, countOverride: String?) {
|
||||
if (isPatternView) {
|
||||
super.renderRegular(graphics, itemstack, "")
|
||||
|
||||
menu.patternsFiltered.getOrNull(index)?.let {
|
||||
if (it.researchPercent < 1f) {
|
||||
graphics.draw(
|
||||
font,
|
||||
TextComponent((it.researchPercent * 100.0).toInt().toString() + "%"),
|
||||
width - 1f, height - 1f, scale = 0.5f, gravity = RenderGravity.BOTTOM_RIGHT, drawShadow = true, color = RGBAColor.WHITE)
|
||||
}
|
||||
|
@ -3,17 +3,16 @@ package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.datafixers.util.Either
|
||||
import it.unimi.dsi.fastutil.floats.FloatConsumer
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.MatterySprite
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.AbstractButtonPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.input.TextInputPanel
|
||||
@ -47,7 +46,7 @@ open class ColorBoxPanel<out S : Screen>(
|
||||
var isPressed = false
|
||||
private set
|
||||
|
||||
override fun shouldRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun shouldRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
return super.shouldRenderTooltips(graphics, mouseX, mouseY, partialTick) || isPressed
|
||||
}
|
||||
|
||||
@ -103,7 +102,7 @@ open class ColorBoxPanel<out S : Screen>(
|
||||
return super.mouseReleasedInner(x, y, button)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
graphics.renderRect(0f, 0f, width, height, color = RGBAColor.WHITE)
|
||||
GRADIENT_LEFT.render(graphics, 0f, 0f, width, height, color = backgroundColor)
|
||||
GRADIENT_DOWN.render(graphics, 0f, 0f, width, height, color = RGBAColor.BLACK)
|
||||
@ -192,18 +191,18 @@ abstract class AbstractColorWangPanel<out S : Screen>(
|
||||
return super.mouseReleasedInner(x, y, button)
|
||||
}
|
||||
|
||||
protected fun renderGradients(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
protected fun renderGradients(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
ColorBoxPanel.GRADIENT_RIGHT.render(graphics, 0f, 0f, width, height, color = rightColor)
|
||||
ColorBoxPanel.GRADIENT_LEFT.render(graphics, 0f, 0f, width, height, color = leftColor)
|
||||
}
|
||||
|
||||
protected fun renderWang(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
protected fun renderWang(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (wangPosition in 0f .. 1f) {
|
||||
ColorBoxPanel.LINE_VERTICAL.render(graphics, x = wangPosition * width - 1f, height = height)
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
renderGradients(graphics, mouseX, mouseY, partialTick)
|
||||
renderWang(graphics, mouseX, mouseY, partialTick)
|
||||
}
|
||||
@ -334,7 +333,7 @@ open class HueWangPanel<out S : Screen>(
|
||||
hueCallback?.accept(newPosition * 360f)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
HSV_BAR.render(graphics, 0f, 0f, width, height)
|
||||
renderWang(graphics, mouseX, mouseY, partialTick)
|
||||
}
|
||||
@ -457,7 +456,7 @@ open class ColorPalettePanel<out S : Screen>(
|
||||
onColorChoose(color)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
graphics.renderRect(0f, 0f, width, height, color = RGBAColor.BLACK)
|
||||
graphics.renderRect(1f, 1f, width - 2f, height - 2f, color = color)
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import it.unimi.dsi.fastutil.ints.IntAVLTreeSet
|
||||
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
|
||||
@ -18,6 +17,7 @@ import net.minecraft.world.inventory.Slot
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.SystemTime
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.moveMousePosScaled
|
||||
import ru.dbotthepony.mc.otm.client.render.currentScissorRect
|
||||
@ -25,7 +25,6 @@ import ru.dbotthepony.mc.otm.client.render.popScissorRect
|
||||
import ru.dbotthepony.mc.otm.client.render.pushScissorRect
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.input.QueryUserPanel
|
||||
import ru.dbotthepony.mc.otm.core.collect.any
|
||||
import ru.dbotthepony.mc.otm.core.collect.concatIterators
|
||||
import ru.dbotthepony.mc.otm.core.collect.flatMap
|
||||
import java.util.*
|
||||
@ -786,14 +785,14 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun preRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun innerRenderPost(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
protected open fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun preRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun innerRenderPost(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
protected open fun shouldRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
protected open fun shouldRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
return isEverHovered || isGrabbingMouseInput()
|
||||
}
|
||||
|
||||
@ -840,14 +839,14 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun render(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
fun render(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
once = true
|
||||
|
||||
if (!isVisible()) {
|
||||
return
|
||||
}
|
||||
|
||||
val poseStack = graphics.pose()
|
||||
val poseStack = graphics.pose
|
||||
|
||||
performLayoutIfNeeded()
|
||||
|
||||
@ -1041,7 +1040,7 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
return null to ItemStack.EMPTY
|
||||
}
|
||||
|
||||
fun renderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
fun renderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (!isVisible()) {
|
||||
return false
|
||||
}
|
||||
@ -1829,7 +1828,7 @@ open class EditablePanel<out S : Screen> @JvmOverloads constructor(
|
||||
/**
|
||||
* See [ru.dbotthepony.mc.otm.client.render.clearDepth]
|
||||
*/
|
||||
fun clearDepth(graphics: GuiGraphics, x: Float = 0f, y: Float = 0f, width: Float = this.width, height: Float = this.height) = ru.dbotthepony.mc.otm.client.render.clearDepth(graphics, x, y, width, height)
|
||||
fun clearDepth(graphics: MGUIGraphics, x: Float = 0f, y: Float = 0f, width: Float = this.width, height: Float = this.height) = ru.dbotthepony.mc.otm.client.render.clearDepth(graphics, x, y, width, height)
|
||||
|
||||
fun queryUser(title: Component, text: Component, onConfirm: Runnable, onCancel: Runnable? = null): QueryUserPanel<S> {
|
||||
return QueryUserPanel(screen, title, listOf(text), onConfirm, onCancel).also { blockingWindow = it }
|
||||
|
@ -3,19 +3,16 @@ package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectFunction
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.effect.MobEffect
|
||||
import net.minecraft.world.effect.MobEffectInstance
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.determineTooltipPosition
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.sprite
|
||||
import ru.dbotthepony.mc.otm.client.render.render
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.DiscreteScrollBarPanel
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
@ -109,18 +106,18 @@ open class EffectListPanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
clearDepth(graphics)
|
||||
SQUARE_THIN.render(graphics, width = width, height = height)
|
||||
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 0.5f)
|
||||
minecraft.mobEffectTextures.get(effect.effect).render(graphics, x = 3f, y = 3f, width = width - 6f, height = height - 6f)
|
||||
graphics.renderSprite(minecraft.mobEffectTextures.get(effect.effect), x = 3f, y = 3f, width = width - 6f, height = height - 6f)
|
||||
|
||||
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||
graphics.draw(font, formatTickDuration(effect.duration), width / 2f, height / 2f, scale = 0.75f, gravity = RenderGravity.CENTER_CENTER, color = RGBAColor.WHITE)
|
||||
graphics.draw(formatTickDuration(effect.duration), width / 2f, height / 2f, scale = 0.75f, gravity = RenderGravity.CENTER_CENTER, color = RGBAColor.WHITE)
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
val (x, y) = determineTooltipPosition(mouseX + 4f, mouseY - 12f, BAR.width, BAR.height)
|
||||
|
||||
@ -130,8 +127,8 @@ open class EffectListPanel<out S : Screen> @JvmOverloads constructor(
|
||||
val renderWidth = 18f
|
||||
val renderHeight = 18f
|
||||
|
||||
minecraft.mobEffectTextures.get(effect.effect).render(
|
||||
graphics.pose(),
|
||||
graphics.renderSprite(
|
||||
minecraft.mobEffectTextures.get(effect.effect),
|
||||
x = x + 8f,
|
||||
y = y + BAR.height / 2f - renderHeight / 2f,
|
||||
width = renderWidth,
|
||||
@ -145,8 +142,8 @@ open class EffectListPanel<out S : Screen> @JvmOverloads constructor(
|
||||
name.append(" ${effect.amplifier + 1}")
|
||||
}
|
||||
|
||||
graphics.draw(font, name, x + renderWidth + 12f, y + 7f, gravity = RenderGravity.TOP_LEFT, color = RGBAColor.WHITE)
|
||||
graphics.draw(font, formatTickDuration(effect.duration, true), x + renderWidth + 12f, y + 7f + font.lineHeight + 2f, gravity = RenderGravity.TOP_LEFT, color = RGBAColor.LIGHT_GRAY)
|
||||
graphics.draw(name, x + renderWidth + 12f, y + 7f, gravity = RenderGravity.TOP_LEFT, color = RGBAColor.WHITE)
|
||||
graphics.draw(formatTickDuration(effect.duration, true), x + renderWidth + 12f, y + 7f + font.lineHeight + 2f, gravity = RenderGravity.TOP_LEFT, color = RGBAColor.LIGHT_GRAY)
|
||||
}
|
||||
|
||||
return isHovered
|
||||
|
@ -1,6 +1,5 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
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
|
||||
@ -8,6 +7,7 @@ import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets8
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.sprite
|
||||
import ru.dbotthepony.mc.otm.client.screen.ExopackInventoryScreen
|
||||
@ -165,7 +165,7 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (entity.isDeadOrDying) {
|
||||
return
|
||||
}
|
||||
@ -174,7 +174,7 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||
val renderY = (height * 0.9f).toInt()
|
||||
|
||||
InventoryScreen.renderEntityInInventoryFollowsMouse(
|
||||
graphics,
|
||||
graphics.parent,
|
||||
renderX,
|
||||
renderY,
|
||||
renderScale,
|
||||
@ -199,7 +199,7 @@ class EntityRendererPanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
ExopackInventoryScreen.ENTITY_RECTANGLE.render(graphics)
|
||||
}
|
||||
|
||||
|
@ -2,13 +2,13 @@ package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
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
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.network.chat.Component
|
||||
import org.lwjgl.opengl.GL30
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.*
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.StretchingRectangleElement
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.AbstractButtonPanel
|
||||
@ -76,7 +76,7 @@ open class FramePanel<out S : Screen>(
|
||||
return tabs.indexOf(this)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (isActive) {
|
||||
if (tabIndex() == 0) {
|
||||
if (isDisabled) {
|
||||
@ -167,7 +167,7 @@ open class FramePanel<out S : Screen>(
|
||||
close()
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (isPressed) {
|
||||
CLOSE_BUTTON_PRESSED.render(graphics, 0f, 0f, width, height)
|
||||
} else if (isHovered) {
|
||||
@ -193,7 +193,7 @@ open class FramePanel<out S : Screen>(
|
||||
isActive = !isActive
|
||||
}*/
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
/*if (isPressed) {
|
||||
HELP_BUTTON_PRESSED.render(graphics, 0f, 0f, width, height)
|
||||
} else*/ if (isHovered /*|| isActive */) {
|
||||
@ -364,13 +364,13 @@ open class FramePanel<out S : Screen>(
|
||||
return super.keyPressedInternal(key, scancode, mods)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
RECTANGLE.render(graphics, width = width, height = height)
|
||||
|
||||
// title
|
||||
val title = title ?: return
|
||||
RenderSystem.depthFunc(GL30.GL_ALWAYS)
|
||||
graphics.draw(font, title, 8f, 5f, color = titleColor)
|
||||
graphics.draw(title, 8f, 5f, color = titleColor)
|
||||
RenderSystem.depthFunc(GL30.GL_ALWAYS)
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,9 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
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.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
|
||||
@ -31,33 +30,33 @@ open class Label<out S : Screen> @JvmOverloads constructor(
|
||||
var color = RGBAColor.SLATE_GRAY
|
||||
var gravity = RenderGravity.TOP_LEFT
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
clearDepth(graphics)
|
||||
|
||||
if (shadow) {
|
||||
when (gravity) {
|
||||
RenderGravity.TOP_LEFT -> graphics.draw(font, text, shadowX, shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.TOP_CENTER -> graphics.draw(font, text, shadowX + width / 2f, shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.TOP_RIGHT -> graphics.draw(font, text, shadowX + width, shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.CENTER_LEFT -> graphics.draw(font, text, shadowX, height / 2f + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.CENTER_CENTER -> graphics.draw(font, text, shadowX + width / 2f, height / 2f + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.CENTER_RIGHT -> graphics.draw(font, text, shadowX + width, height / 2f + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.BOTTOM_LEFT -> graphics.draw(font, text, shadowX, height + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.BOTTOM_CENTER -> graphics.draw(font, text, shadowX + width / 2f, height + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.BOTTOM_RIGHT -> graphics.draw(font, text, shadowX + width, height + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.TOP_LEFT -> graphics.draw(text, shadowX, shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.TOP_CENTER -> graphics.draw(text, shadowX + width / 2f, shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.TOP_RIGHT -> graphics.draw(text, shadowX + width, shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.CENTER_LEFT -> graphics.draw(text, shadowX, height / 2f + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.CENTER_CENTER -> graphics.draw(text, shadowX + width / 2f, height / 2f + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.CENTER_RIGHT -> graphics.draw(text, shadowX + width, height / 2f + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.BOTTOM_LEFT -> graphics.draw(text, shadowX, height + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.BOTTOM_CENTER -> graphics.draw(text, shadowX + width / 2f, height + shadowY, color = shadowColor, gravity = gravity)
|
||||
RenderGravity.BOTTOM_RIGHT -> graphics.draw(text, shadowX + width, height + shadowY, color = shadowColor, gravity = gravity)
|
||||
}
|
||||
}
|
||||
|
||||
when (gravity) {
|
||||
RenderGravity.TOP_LEFT -> graphics.draw(font, text, 0f, 0f, color = color, gravity = gravity)
|
||||
RenderGravity.TOP_CENTER -> graphics.draw(font, text, width / 2f, 0f, color = color, gravity = gravity)
|
||||
RenderGravity.TOP_RIGHT -> graphics.draw(font, text, width - (if (shadow) shadowX else 0f), 0f, color = color, gravity = gravity)
|
||||
RenderGravity.CENTER_LEFT -> graphics.draw(font, text, 0f, height / 2f, color = color, gravity = gravity)
|
||||
RenderGravity.CENTER_CENTER -> graphics.draw(font, text, width / 2f, height / 2f, color = color, gravity = gravity)
|
||||
RenderGravity.CENTER_RIGHT -> graphics.draw(font, text, width - (if (shadow) shadowX else 0f), height / 2f, color = color, gravity = gravity)
|
||||
RenderGravity.BOTTOM_LEFT -> graphics.draw(font, text, 0f, height, color = color, gravity = gravity)
|
||||
RenderGravity.BOTTOM_CENTER -> graphics.draw(font, text, width / 2f, height, color = color, gravity = gravity)
|
||||
RenderGravity.BOTTOM_RIGHT -> graphics.draw(font, text, width - (if (shadow) shadowX else 0f), height, color = color, gravity = gravity)
|
||||
RenderGravity.TOP_LEFT -> graphics.draw(text, 0f, 0f, color = color, gravity = gravity)
|
||||
RenderGravity.TOP_CENTER -> graphics.draw(text, width / 2f, 0f, color = color, gravity = gravity)
|
||||
RenderGravity.TOP_RIGHT -> graphics.draw(text, width - (if (shadow) shadowX else 0f), 0f, color = color, gravity = gravity)
|
||||
RenderGravity.CENTER_LEFT -> graphics.draw(text, 0f, height / 2f, color = color, gravity = gravity)
|
||||
RenderGravity.CENTER_CENTER -> graphics.draw(text, width / 2f, height / 2f, color = color, gravity = gravity)
|
||||
RenderGravity.CENTER_RIGHT -> graphics.draw(text, width - (if (shadow) shadowX else 0f), height / 2f, color = color, gravity = gravity)
|
||||
RenderGravity.BOTTOM_LEFT -> graphics.draw(text, 0f, height, color = color, gravity = gravity)
|
||||
RenderGravity.BOTTOM_CENTER -> graphics.draw(text, width / 2f, height, color = color, gravity = gravity)
|
||||
RenderGravity.BOTTOM_RIGHT -> graphics.draw(text, width - (if (shadow) shadowX else 0f), height, color = color, gravity = gravity)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,17 +1,15 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.DiscreteScrollBarPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.GridPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.ScrollBarConstants
|
||||
import ru.dbotthepony.mc.otm.client.screen.storage.ItemMonitorScreen
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.integerDivisionDown
|
||||
import ru.dbotthepony.mc.otm.core.util.formatReadableNumber
|
||||
@ -79,13 +77,13 @@ open class NetworkedItemGridPanel<out S : MatteryScreen<*>>(
|
||||
return true
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
renderSlotBackground(graphics, mouseX, mouseY, partialTick)
|
||||
val itemStack = view.sortedView.getOrNull(index)?.stack ?: StorageStack.ITEMS.empty
|
||||
renderRegular(graphics, itemStack.toItemStack(), "")
|
||||
|
||||
if (!itemStack.isEmpty) {
|
||||
graphics.draw(font, itemStack.count.formatSiComponent(decimalPlaces = 1), x = width - 1f, y = height - 1f, gravity = RenderGravity.BOTTOM_RIGHT, scale = 0.75f, drawShadow = true)
|
||||
graphics.draw(itemStack.count.formatSiComponent(decimalPlaces = 1), x = width - 1f, y = height - 1f, gravity = RenderGravity.BOTTOM_RIGHT, scale = 0.75f, drawShadow = true)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ 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
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
|
||||
// before 1.19.3 Renderable was Widget
|
||||
class Panel2Widget<out S: Screen, out P : EditablePanel<S>>(
|
||||
@ -19,9 +20,11 @@ class Panel2Widget<out S: Screen, out P : EditablePanel<S>>(
|
||||
val xFloat = mouseX.toFloat()
|
||||
val yFloat = mouseY.toFloat()
|
||||
|
||||
val wrap = MGUIGraphics(graphics)
|
||||
|
||||
panel.tickHover(xFloat, yFloat)
|
||||
panel.render(graphics, xFloat, yFloat, partialTick)
|
||||
panel.renderTooltips(graphics, xFloat, yFloat, partialTick)
|
||||
panel.render(wrap, xFloat, yFloat, partialTick)
|
||||
panel.renderTooltips(wrap, xFloat, yFloat, partialTick)
|
||||
}
|
||||
|
||||
override fun mouseMoved(mouseX: Double, mouseY: Double) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
|
||||
@ -16,7 +16,7 @@ class SpritePanel<out S : Screen>(
|
||||
var winding: UVWindingOrder = sprite.winding,
|
||||
var centerSprite: Boolean = false
|
||||
) : EditablePanel<S>(screen, parent, x, y, width, height) {
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (centerSprite) {
|
||||
sprite.render(graphics, width / 2f - sprite.width / 2f, height / 2f - sprite.height / 2f, sprite.width, sprite.height, winding)
|
||||
} else {
|
||||
|
@ -1,11 +1,10 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.components.AbstractWidget
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import org.lwjgl.opengl.GL11
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
|
||||
abstract class Widget2Panel<out S : Screen, T : AbstractWidget>(
|
||||
screen: S,
|
||||
@ -90,9 +89,9 @@ abstract class Widget2Panel<out S : Screen, T : AbstractWidget>(
|
||||
return instance
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||
getOrCreateWidget().render(graphics, mouseX.toInt(), mouseY.toInt(), partialTick)
|
||||
getOrCreateWidget().render(graphics.parent, mouseX.toInt(), mouseY.toInt(), partialTick)
|
||||
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import java.util.function.IntPredicate
|
||||
@ -65,7 +65,7 @@ abstract class AbstractButtonPanel<out S : Screen>(
|
||||
return true
|
||||
}
|
||||
|
||||
override fun shouldRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun shouldRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
return super.shouldRenderTooltips(graphics, mouseX, mouseY, partialTick) || isPressed
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
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.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
@ -33,7 +33,7 @@ abstract class BooleanRectangleButtonPanel<out S : Screen>(
|
||||
onChange?.invoke(newValue)
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
val tooltipActive = tooltipActive
|
||||
val tooltipInactive = tooltipInactive
|
||||
@ -79,7 +79,7 @@ abstract class BooleanRectangleButtonPanel<out S : Screen>(
|
||||
}
|
||||
set(value) { super.isDisabled = value }
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
super.innerRender(graphics, mouseX, mouseY, partialTick)
|
||||
|
||||
if (prop.value) {
|
||||
|
@ -1,11 +1,10 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
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.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import java.util.function.IntConsumer
|
||||
@ -39,7 +38,7 @@ open class ButtonPanel<out S : Screen>(
|
||||
onPress?.accept(mouseButton)
|
||||
}
|
||||
|
||||
protected fun renderStretchableBackground(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
protected fun renderStretchableBackground(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (isDisabled) {
|
||||
Widgets18.BUTTON_DISABLED_STRETCHABLE.render(graphics, width = width, height = height)
|
||||
} else if (isPressed) {
|
||||
@ -51,9 +50,9 @@ open class ButtonPanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
renderStretchableBackground(graphics, mouseX, mouseY, partialTick)
|
||||
graphics.draw(font, label, width / 2f, height / 2f, color = textColor, gravity = RenderGravity.CENTER_CENTER)
|
||||
graphics.draw(label, width / 2f, height / 2f, color = textColor, gravity = RenderGravity.CENTER_CENTER)
|
||||
}
|
||||
|
||||
override fun sizeToContents(performLayout: Boolean) {
|
||||
|
@ -2,7 +2,6 @@ package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
@ -10,6 +9,7 @@ import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity
|
||||
import ru.dbotthepony.mc.otm.block.entity.RedstoneSetting
|
||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||
import ru.dbotthepony.mc.otm.capability.addUpgradeTooltipLines
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.isCtrlDown
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
@ -100,7 +100,7 @@ private class PullPushButton<out S : MatteryScreen<*>, T : Enum<T>>(
|
||||
sprites[State(pull, push, value)] = sprite
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
super.innerRender(graphics, mouseX, mouseY, partialTick)
|
||||
sprites[State(pullProp.value, pushProp.value, prop.get())]?.render(graphics, 0f, 0f, width, height)
|
||||
}
|
||||
@ -486,7 +486,7 @@ class DeviceControls<out S : MatteryScreen<*>>(
|
||||
tooltips.add(TranslatableComponent("otm.gui.upgrades"))
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
graphics.renderComponentTooltip(font, ArrayList<Component>().also {
|
||||
it.add(TranslatableComponent("otm.gui.upgrades"))
|
||||
it.add(TextComponent(""))
|
||||
@ -624,7 +624,7 @@ class DeviceControls<out S : MatteryScreen<*>>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun preRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun preRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (parent is FramePanel<*>) {
|
||||
x = parent!!.width + 3f
|
||||
y = dockTop
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
@ -25,7 +25,7 @@ open class CheckBoxPanel<out S : Screen>(
|
||||
open val DISABLED_UNCHECKED: AbstractMatterySprite = Companion.DISABLED_UNCHECKED
|
||||
open val DISABLED_CHECKED: AbstractMatterySprite = Companion.DISABLED_CHECKED
|
||||
|
||||
protected fun renderCheckboxBackground(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
protected fun renderCheckboxBackground(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (isDisabled) {
|
||||
if (isChecked.get()) {
|
||||
DISABLED_CHECKED.render(graphics, width = width, height = height)
|
||||
@ -55,7 +55,7 @@ open class CheckBoxPanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
renderCheckboxBackground(graphics, mouseX, mouseY, partialTick)
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,9 @@ package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import net.minecraft.ChatFormatting
|
||||
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.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
@ -70,7 +70,7 @@ abstract class EnumRectangleButtonPanel<out S : Screen, T : Enum<T>>(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
check(!isBuilding) { "Still building this button!" }
|
||||
super.innerRender(graphics, mouseX, mouseY, partialTick)
|
||||
val entry = enumMapping[prop.get()] ?: return
|
||||
@ -144,7 +144,7 @@ abstract class EnumRectangleButtonPanel<out S : Screen, T : Enum<T>>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (tooltips.isEmpty() && enumMapping.entries.none { predicate.test(it.key) && it.value.tooltip != null }) {
|
||||
return super.innerRenderTooltips(graphics, mouseX, mouseY, partialTick)
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
@ -26,7 +26,7 @@ open class LargeRectangleButtonPanel<out S : Screen>(
|
||||
final override val PRESSED = Widgets18.BUTTON_PRESSED
|
||||
final override val DISABLED = Widgets18.BUTTON_DISABLED
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
super.innerRender(graphics, mouseX, mouseY, partialTick)
|
||||
|
||||
val color = if (isDisabled || isPressed) RGBAColor.DARK_GRAY else RGBAColor.WHITE
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import java.util.function.IntConsumer
|
||||
@ -25,7 +25,7 @@ abstract class RectangleButtonPanel<out S : Screen>(
|
||||
onPress?.accept(mouseButton)
|
||||
}
|
||||
|
||||
protected fun renderSquareButton(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
protected fun renderSquareButton(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (isDisabled) {
|
||||
DISABLED.render(graphics, 0f, 0f, width, height)
|
||||
} else if (isPressed) {
|
||||
@ -37,7 +37,7 @@ abstract class RectangleButtonPanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
renderSquareButton(graphics, mouseX, mouseY, partialTick)
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.button
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.MatterySprite
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets8
|
||||
@ -23,7 +23,7 @@ open class SmallRectangleButtonPanel<out S : Screen>(
|
||||
final override val PRESSED = Widgets8.BUTTON_PRESSED
|
||||
final override val DISABLED = Widgets8.BUTTON_DISABLED
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
super.innerRender(graphics, mouseX, mouseY, partialTick)
|
||||
|
||||
if (skinElementWinding != null) {
|
||||
|
@ -9,19 +9,17 @@ import it.unimi.dsi.fastutil.chars.Char2IntOpenHashMap
|
||||
import it.unimi.dsi.fastutil.chars.CharOpenHashSet
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.network.chat.Component
|
||||
import org.joml.Vector2i
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.isCtrlDown
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.render.tesselator
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.DockProperty
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
@ -1117,7 +1115,7 @@ open class TextInputPanel<out S : Screen>(
|
||||
return accumulate
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (!backgroundColor.isFullyTransparent)
|
||||
graphics.renderRect(0f, 0f, width, height, color = backgroundColor)
|
||||
|
||||
@ -1153,7 +1151,7 @@ open class TextInputPanel<out S : Screen>(
|
||||
scrollPixels = 0f
|
||||
}
|
||||
|
||||
val stack = graphics.pose()
|
||||
val stack = graphics.pose
|
||||
|
||||
stack.pushPose()
|
||||
stack.translate(-scrollPixels, 0f, 0f)
|
||||
@ -1176,7 +1174,6 @@ open class TextInputPanel<out S : Screen>(
|
||||
val selection = selections[i]
|
||||
|
||||
graphics.draw(
|
||||
font = font,
|
||||
text = line,
|
||||
gravity = RenderGravity.TOP_LEFT,
|
||||
x = dockPadding.left,
|
||||
@ -1230,7 +1227,6 @@ open class TextInputPanel<out S : Screen>(
|
||||
|
||||
if (activeLine == null || cursorRow >= activeLine.length) {
|
||||
graphics.draw(
|
||||
font = font,
|
||||
text = "_",
|
||||
gravity = RenderGravity.TOP_LEFT,
|
||||
x = dockPadding.left + (if (activeLine == null) 0f else font.width(activeLine).toFloat()),
|
||||
@ -1239,7 +1235,6 @@ open class TextInputPanel<out S : Screen>(
|
||||
)
|
||||
} else {
|
||||
graphics.draw(
|
||||
font = font,
|
||||
text = "|",
|
||||
gravity = RenderGravity.TOP_LEFT,
|
||||
x = dockPadding.left + font.width(activeLine.substring(0, cursorRow)).toFloat() - 1f,
|
||||
@ -1253,7 +1248,6 @@ open class TextInputPanel<out S : Screen>(
|
||||
|
||||
if (debugDraw) {
|
||||
graphics.draw(
|
||||
font = font,
|
||||
text = cursorLine.toString(),
|
||||
gravity = RenderGravity.TOP_RIGHT,
|
||||
x = width,
|
||||
@ -1262,7 +1256,6 @@ open class TextInputPanel<out S : Screen>(
|
||||
)
|
||||
|
||||
graphics.draw(
|
||||
font = font,
|
||||
text = cursorRow.toString(),
|
||||
gravity = RenderGravity.TOP_RIGHT,
|
||||
x = width - dockPadding.right,
|
||||
@ -1271,7 +1264,6 @@ open class TextInputPanel<out S : Screen>(
|
||||
)
|
||||
|
||||
graphics.draw(
|
||||
font = font,
|
||||
text = lines.size.toString(),
|
||||
gravity = RenderGravity.TOP_RIGHT,
|
||||
x = width - dockPadding.right,
|
||||
|
@ -1,12 +1,12 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.slot
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen.getTooltipFromItem
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.*
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
@ -24,12 +24,12 @@ abstract class AbstractSlotPanel<out S : MatteryScreen<*>> @JvmOverloads constru
|
||||
open var slotBackground: IGUIRenderable? = null
|
||||
open var slotBackgroundEmpty: IGUIRenderable? = null
|
||||
|
||||
protected open fun renderSlotBackground(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
protected open fun renderSlotBackground(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
SLOT_BACKGROUND.render(graphics, width = width, height = height)
|
||||
slotBackground?.render(graphics, 0f, 0f, width, height)
|
||||
}
|
||||
|
||||
protected open fun renderRegular(graphics: GuiGraphics, itemstack: ItemStack, countOverride: String? = null) {
|
||||
protected open fun renderRegular(graphics: MGUIGraphics, itemstack: ItemStack, countOverride: String? = null) {
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader)
|
||||
|
||||
if (!itemstack.isEmpty) {
|
||||
@ -46,7 +46,7 @@ abstract class AbstractSlotPanel<out S : MatteryScreen<*>> @JvmOverloads constru
|
||||
return getTooltipFromItem(ru.dbotthepony.mc.otm.client.minecraft, stack)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
renderSlotBackground(graphics, mouseX, mouseY, partialTick)
|
||||
val itemStack = itemStack
|
||||
renderRegular(graphics, itemStack)
|
||||
@ -56,7 +56,7 @@ abstract class AbstractSlotPanel<out S : MatteryScreen<*>> @JvmOverloads constru
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
val itemstack = itemStack
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.slot
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.world.item.Item
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.isAltDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
@ -22,7 +22,7 @@ open class InventorySlotPanel<out S : MatteryScreen<*>, out T : MatteryMenu.Inve
|
||||
get() = slot.filter?.get()
|
||||
set(value) { slot.filter?.accept(value) }
|
||||
|
||||
override fun renderBackgroundBeforeFilter(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun renderBackgroundBeforeFilter(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (slot.chargeFlag?.get() == true) {
|
||||
Widgets18.CHARGE_SLOT_BACKGROUND.render(graphics, 0f, 0f, width, height)
|
||||
}
|
||||
|
@ -4,14 +4,13 @@ package ru.dbotthepony.mc.otm.client.screen.panels.slot
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||
import net.minecraft.world.inventory.Slot
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.ISlotPanel
|
||||
@ -52,7 +51,7 @@ open class SlotPanel<out S : MatteryScreen<*>, out T : Slot> @JvmOverloads const
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
slot.x = absoluteX.roundToInt() - screen.guiLeft
|
||||
slot.y = absoluteY.roundToInt() - screen.guiTop
|
||||
renderSlotBackground(graphics, mouseX, mouseY, partialTick)
|
||||
@ -99,7 +98,7 @@ open class SlotPanel<out S : MatteryScreen<*>, out T : Slot> @JvmOverloads const
|
||||
if (icon != null) {
|
||||
val texture = minecraft.getTextureAtlas(icon.first).apply(icon.second)
|
||||
RenderSystem.setShaderTexture(0, texture.atlasLocation())
|
||||
graphics.blit(1, 1, 0, 16, 16, texture)
|
||||
graphics.renderSprite(texture, 1f, 1f, 16f, 16f)
|
||||
} else {
|
||||
slotBackgroundEmpty?.render(graphics, 0f, 0f, width = width, height = height)
|
||||
}
|
||||
@ -112,7 +111,7 @@ open class SlotPanel<out S : MatteryScreen<*>, out T : Slot> @JvmOverloads const
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(@Nonnull graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(@Nonnull graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
// no op, screen does it for us (completely)
|
||||
return false
|
||||
}
|
||||
|
@ -2,17 +2,16 @@ package ru.dbotthepony.mc.otm.client.screen.panels.slot
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.inventory.Slot
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.isCtrlDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.core.GetterSetter
|
||||
@ -32,9 +31,9 @@ abstract class UserFilteredSlotPanel<out S : MatteryScreen<*>, out T : Slot>(
|
||||
) : SlotPanel<S, T>(screen, parent, slot, x, y, width, height) {
|
||||
abstract var slotFilter: Item?
|
||||
|
||||
protected open fun renderBackgroundBeforeFilter(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
protected open fun renderBackgroundBeforeFilter(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {}
|
||||
|
||||
override fun renderSlotBackground(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun renderSlotBackground(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
super.renderSlotBackground(graphics, mouseX, mouseY, partialTick)
|
||||
|
||||
renderBackgroundBeforeFilter(graphics, mouseX, mouseY, partialTick)
|
||||
@ -53,7 +52,7 @@ abstract class UserFilteredSlotPanel<out S : MatteryScreen<*>, out T : Slot>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered && slotFilter != null && slotFilter !== Items.AIR && itemStack.isEmpty) {
|
||||
val itemstack = ItemStack(slotFilter!!, 1)
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.util
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.core.math.linearInterpolation
|
||||
@ -27,7 +26,7 @@ open class AnalogScrollBarPanel<out S : Screen>(
|
||||
var isScrolling = false
|
||||
private set
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (this@AnalogScrollBarPanel.width == ScrollBarConstants.SLIM_WIDTH) {
|
||||
if (isScrolling) {
|
||||
ScrollBarConstants.SLIM_BUTTON_PRESS.render(graphics, width = width, height = height)
|
||||
@ -99,7 +98,7 @@ open class AnalogScrollBarPanel<out S : Screen>(
|
||||
|
||||
private var lastRender = milliTimeD
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (width == ScrollBarConstants.SLIM_WIDTH) {
|
||||
ScrollBarConstants.SLIM_BODY.render(graphics, y = 2f, height = height - 4f)
|
||||
ScrollBarConstants.SLIM_TOP.render(graphics)
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.util
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.StretchingRectangleElement
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.DockProperty
|
||||
@ -19,7 +19,7 @@ open class BackgroundPanel<out S : Screen>(
|
||||
dockPadding = DockProperty(3f, 3f, 3f, 3f)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
RECTANGLE.render(graphics, width = width, height = height)
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.panels.util
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@ -21,7 +20,7 @@ open class DiscreteScrollBarPanel<out S : Screen>(
|
||||
var isScrolling = false
|
||||
private set
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (this@DiscreteScrollBarPanel.width == ScrollBarConstants.SLIM_WIDTH) {
|
||||
if (isScrolling) {
|
||||
ScrollBarConstants.SLIM_BUTTON_PRESS.render(graphics, width = width, height = height)
|
||||
@ -91,7 +90,7 @@ open class DiscreteScrollBarPanel<out S : Screen>(
|
||||
|
||||
val scrollButton = Button()
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (width == ScrollBarConstants.SLIM_WIDTH) {
|
||||
ScrollBarConstants.SLIM_BODY.render(graphics, y = 2f, height = height - 4f)
|
||||
ScrollBarConstants.SLIM_TOP.render(graphics)
|
||||
|
@ -1,12 +1,11 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.storage
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.Dock
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.DockResizeMode
|
||||
@ -14,8 +13,6 @@ import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.NetworkedItemGridPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.DeviceControls
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.LargeBooleanRectangleButtonPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.LargeEnumRectangleButtonPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.SmallEnumRectangleButtonPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.BatterySlotPanel
|
||||
@ -24,7 +21,6 @@ import ru.dbotthepony.mc.otm.client.screen.panels.util.BackgroundPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.DiscreteScrollBarPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.util.GridPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.WidePowerGaugePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.WideProfiledPowerGaugePanel
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.asGetterSetter
|
||||
@ -73,7 +69,7 @@ class ItemMonitorScreen(menu: ItemMonitorMenu, inventory: Inventory, title: Comp
|
||||
}
|
||||
|
||||
val arrowAndButtons = object : EditablePanel<ItemMonitorScreen>(this@ItemMonitorScreen, bottomPanel, width = ProgressGaugePanel.GAUGE_BACKGROUND.width) {
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(graphics, y = height / 2f - ProgressGaugePanel.GAUGE_BACKGROUND.height / 2f)
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import net.minecraft.world.item.ItemStack
|
||||
@ -14,15 +13,13 @@ import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearch
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchManager
|
||||
import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.block.entity.tech.AndroidStationBlockEntity
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.drawLine
|
||||
import ru.dbotthepony.mc.otm.client.render.renderRect
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.*
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel
|
||||
@ -287,7 +284,7 @@ private class AndroidResearchButton(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
val hovered = screen.hoveredResearch
|
||||
|
||||
val isBlockedByHovered = hovered != null && node.type in hovered.type.allBlocking
|
||||
@ -314,7 +311,7 @@ private class AndroidResearchButton(
|
||||
} else if (itemIcon != null) {
|
||||
val itemstack = ItemStack(itemIcon, 1)
|
||||
|
||||
val stack = graphics.pose()
|
||||
val stack = graphics.pose
|
||||
stack.pushPose()
|
||||
stack.translate(1f, 1f, 0f)
|
||||
screen.renderItemStack(graphics, itemstack)
|
||||
@ -334,7 +331,7 @@ private class AndroidResearchButton(
|
||||
val text = node.type.iconText
|
||||
|
||||
if (text != null) {
|
||||
graphics.drawString(font, text.visualOrderText, width - font.width(text), height - font.lineHeight, -0x1, true)
|
||||
graphics.draw(text.visualOrderText, width - font.width(text), height - font.lineHeight, color = RGBAColor.WHITE, drawShadow = true)
|
||||
}
|
||||
|
||||
for (line in lines) {
|
||||
@ -408,7 +405,7 @@ private class AndroidResearchButton(
|
||||
return true
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
val list = ArrayList<Component>().also { it.addAll(node.screenTooltipLines) }
|
||||
|
||||
@ -501,7 +498,7 @@ class AndroidStationScreen constructor(p_97741_: AndroidStationMenu, p_97742_: I
|
||||
private var scroller: PreviewScrollers = PreviewScrollers.values().let { it[random.nextInt(it.size)] }
|
||||
private var firstTick = false
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
graphics.renderRect(0f, 0f, width, height, color = RGBAColor.BLACK)
|
||||
}
|
||||
|
||||
@ -648,7 +645,7 @@ class AndroidStationScreen constructor(p_97741_: AndroidStationMenu, p_97742_: I
|
||||
gravity = RenderGravity.TOP_RIGHT
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (menu.energyWidget.level >= MachinesConfig.AndroidStation.ENERGY_PER_RESEARCH) {
|
||||
text = POWER_OK
|
||||
color = RGBAColor.LIGHT_GREEN
|
||||
|
@ -1,8 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.tech
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.BatterySlotPanel
|
||||
@ -61,7 +61,7 @@ class EnergyServoScreen(menu: EnergyServoMenu, inventory: Inventory, title: Comp
|
||||
width = ProgressGaugePanel.GAUGE_BACKGROUND.width
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(graphics)
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.tech
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.entity.player.Inventory
|
||||
import net.minecraft.world.item.enchantment.Enchantments
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.MatteryAtlas
|
||||
@ -57,7 +57,7 @@ class EssenceStorageScreen(menu: EssenceStorageMenu, inventory: Inventory, title
|
||||
dockMargin = DockProperty(bottom = 3f)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
BAR_BACKGROUND.render(graphics, width = width, height = height)
|
||||
val level = getLevelFromXp(menu.experienceStored)
|
||||
val progress = (menu.experienceStored - getTotalXpRequiredForLevel(level)).toDouble() / getXpRequiredForLevelUp(level).toDouble()
|
||||
|
@ -3,7 +3,6 @@ package ru.dbotthepony.mc.otm.client.screen.widget
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||
import com.mojang.blaze3d.vertex.VertexFormat
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.network.chat.Component
|
||||
@ -12,6 +11,7 @@ import net.minecraft.world.inventory.InventoryMenu
|
||||
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions
|
||||
import org.lwjgl.opengl.GL11
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.ShiftPressedCond
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.MatterySprite
|
||||
@ -43,7 +43,7 @@ open class FluidGaugePanel<out S : Screen>(
|
||||
)
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
graphics.renderComponentTooltip(font, makeTooltip(), mouseX.toInt(), mouseY.toInt())
|
||||
return true
|
||||
@ -52,7 +52,7 @@ open class FluidGaugePanel<out S : Screen>(
|
||||
return false
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (widget.percentage > 0.01f && widget.fluid.isNotEmpty) {
|
||||
val data = IClientFluidTypeExtensions.of(widget.fluid.fluid)
|
||||
val texture = data.stillTexture!!
|
||||
@ -61,7 +61,7 @@ open class FluidGaugePanel<out S : Screen>(
|
||||
var height = (height * widget.percentage) / 16f
|
||||
var bottom = this.height
|
||||
|
||||
val matrix = graphics.pose().last().pose()
|
||||
val matrix = graphics.pose.last().pose()
|
||||
val builder = tesselator.builder
|
||||
|
||||
builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX)
|
||||
|
@ -1,14 +1,14 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.widget
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||
|
||||
private fun PowerGaugePanel<*>.doRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float, flop: Boolean) {
|
||||
private fun PowerGaugePanel<*>.doRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float, flop: Boolean) {
|
||||
if (height >= 18f) {
|
||||
if (flop) {
|
||||
HorizontalPowerGaugePanel.GAUGE_BACKGROUND_TALL.render(graphics, height = height, width = this.width, winding = UVWindingOrder.U1_V0_U0_V1)
|
||||
@ -43,7 +43,7 @@ open class HorizontalPowerGaugePanel<out S : Screen>(
|
||||
) : PowerGaugePanel<S>(screen, parent, widget, x, y, width, height) {
|
||||
var flop = false
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
doRender(graphics, mouseX, mouseY, partialTick, flop)
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ open class HorizontalProfiledPowerGaugePanel<out S : Screen>(
|
||||
) : ProfiledPowerGaugePanel<S>(screen, parent, widget, x, y, width, height) {
|
||||
var flop = false
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
doRender(graphics, mouseX, mouseY, partialTick, flop)
|
||||
}
|
||||
}
|
||||
|
@ -3,17 +3,15 @@ package ru.dbotthepony.mc.otm.client.screen.widget
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.BufferUploader
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.VertexFormat
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.network.chat.Component
|
||||
import org.lwjgl.opengl.GL11
|
||||
import ru.dbotthepony.mc.otm.capability.AbstractProfiledStorage
|
||||
import ru.dbotthepony.mc.otm.capability.matter.ProfiledMatterStorage
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.ShiftPressedCond
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
@ -25,7 +23,6 @@ import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.util.formatMatter
|
||||
import ru.dbotthepony.mc.otm.core.util.formatMatterLevel
|
||||
import ru.dbotthepony.mc.otm.core.util.formatPower
|
||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||
import ru.dbotthepony.mc.otm.nanoTime
|
||||
@ -61,7 +58,7 @@ open class MatterGaugePanel<out S : Screen> @JvmOverloads constructor(
|
||||
)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (lastAbsoluteX == 0f && lastAbsoluteY == 0f) {
|
||||
lastAbsoluteX = absoluteX
|
||||
lastAbsoluteY = absoluteY
|
||||
@ -85,7 +82,7 @@ open class MatterGaugePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
graphics.renderComponentTooltip(font, makeTooltip(), mouseX.toInt(), mouseY.toInt())
|
||||
return true
|
||||
@ -98,9 +95,9 @@ open class MatterGaugePanel<out S : Screen> @JvmOverloads constructor(
|
||||
val GAUGE_BACKGROUND = WidgetLocation.VERTICAL_GAUGES.sprite(x = 18f, width = 9f)
|
||||
val GAUGE_FOREGROUND = WidgetLocation.VERTICAL_GAUGES.sprite(x = 27f, width = 9f)
|
||||
|
||||
fun renderLevel(graphics: GuiGraphics, x: Float, y: Float, width: Float, height: Float, percentage: Float, wavesStrength: Float = 0.5f) {
|
||||
graphics.pose().pushPose()
|
||||
graphics.pose().translate(x, y, 0f)
|
||||
fun renderLevel(graphics: MGUIGraphics, x: Float, y: Float, width: Float, height: Float, percentage: Float, wavesStrength: Float = 0.5f) {
|
||||
graphics.pose.pushPose()
|
||||
graphics.pose.translate(x, y, 0f)
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader)
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
@ -112,7 +109,7 @@ open class MatterGaugePanel<out S : Screen> @JvmOverloads constructor(
|
||||
val u1 = GAUGE_FOREGROUND.u1
|
||||
val v1 = GAUGE_FOREGROUND.v1
|
||||
|
||||
val matrix = graphics.pose().last().pose()
|
||||
val matrix = graphics.pose.last().pose()
|
||||
val builder = tesselator.builder
|
||||
|
||||
builder.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_TEX)
|
||||
@ -134,7 +131,7 @@ open class MatterGaugePanel<out S : Screen> @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
BufferUploader.drawWithShader(builder.end())
|
||||
graphics.pose().popPose()
|
||||
graphics.pose.popPose()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.client.screen.widget
|
||||
|
||||
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.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
@ -30,13 +29,13 @@ open class PatternGaugePanel<out S : Screen> @JvmOverloads constructor(
|
||||
)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
GAUGE_BACKGROUND.render(graphics)
|
||||
val height = this.height * widget.percentage
|
||||
GAUGE_FOREGROUND.renderPartial(graphics, y = this.height - height, height = height)
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
graphics.renderComponentTooltip(font, makeTooltip(), mouseX.toInt(), mouseY.toInt())
|
||||
return true
|
||||
|
@ -2,11 +2,10 @@ package ru.dbotthepony.mc.otm.client.screen.widget
|
||||
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.network.chat.Component
|
||||
import ru.dbotthepony.mc.otm.capability.AbstractProfiledStorage
|
||||
import ru.dbotthepony.mc.otm.capability.energy.ProfiledEnergyStorage
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.ShiftPressedCond
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
@ -15,7 +14,6 @@ import ru.dbotthepony.mc.otm.client.render.*
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.stream
|
||||
import ru.dbotthepony.mc.otm.core.util.formatPower
|
||||
import ru.dbotthepony.mc.otm.core.util.formatPowerLevel
|
||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||
@ -41,7 +39,7 @@ open class PowerGaugePanel<out S : Screen>(
|
||||
)
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
val height = this.height * widget.percentage
|
||||
|
||||
if (width >= 18f) {
|
||||
@ -63,7 +61,7 @@ open class PowerGaugePanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (isHovered) {
|
||||
graphics.renderComponentTooltip(font, makeTooltip(), mouseX.toInt(), mouseY.toInt())
|
||||
return true
|
||||
|
@ -2,12 +2,11 @@ package ru.dbotthepony.mc.otm.client.screen.widget
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import mezz.jei.api.recipe.RecipeType
|
||||
import net.minecraft.ChatFormatting
|
||||
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.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||
import ru.dbotthepony.mc.otm.client.render.WidgetLocation
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
@ -62,7 +61,7 @@ open class ProgressGaugePanel<out S : Screen>(
|
||||
return tooltip
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (widget.isStuck && tickCount % 40 <= 20) {
|
||||
RenderSystem.setShaderColor(0.75f, 0.4f, 0.4f, 1f)
|
||||
}
|
||||
@ -82,7 +81,7 @@ open class ProgressGaugePanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRenderTooltips(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
override fun innerRenderTooltips(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float): Boolean {
|
||||
if (shouldRenderTooltips(graphics, mouseX, mouseY, partialTick)) {
|
||||
graphics.renderComponentTooltip(font, makeTooltip(), mouseX.toInt(), mouseY.toInt())
|
||||
return true
|
||||
|
@ -5,7 +5,6 @@ import lain.mods.cos.impl.ModObjects
|
||||
import lain.mods.cos.impl.client.PlayerRenderHandler
|
||||
import lain.mods.cos.impl.client.gui.GuiCosArmorInventory
|
||||
import lain.mods.cos.impl.network.packet.PacketSetSkinArmor
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
@ -16,6 +15,7 @@ import net.minecraft.world.inventory.InventoryMenu
|
||||
import net.minecraft.world.inventory.Slot
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraftforge.fml.ModList
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.MatterySprite
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.sprite
|
||||
@ -175,7 +175,7 @@ class CosmeticToggleButton<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
val inv = ModObjects.invMan.getCosArmorInventoryClient(minecraft.player?.uuid ?: throw ConcurrentModificationException())
|
||||
|
||||
if (inv.isSkinArmor(index)) {
|
||||
@ -214,7 +214,7 @@ class CosmeticToggleRenderButton<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun innerRender(graphics: GuiGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||
if (PlayerRenderHandler.Disabled) {
|
||||
BUTTON_ACTIVE.render(graphics, width = width, height = height)
|
||||
} else {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.compat.jei
|
||||
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.ShiftPressedCond
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.MatterGaugePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
|
||||
@ -12,7 +12,7 @@ import ru.dbotthepony.mc.otm.core.util.formatPower
|
||||
import ru.dbotthepony.mc.otm.systemTime
|
||||
|
||||
fun renderMatterGauge(
|
||||
guiGraphics: GuiGraphics,
|
||||
guiGraphics: MGUIGraphics,
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float = MatterGaugePanel.GAUGE_BACKGROUND.width,
|
||||
@ -25,7 +25,7 @@ fun renderMatterGauge(
|
||||
}
|
||||
|
||||
fun renderEnergyGauge(
|
||||
guiGraphics: GuiGraphics,
|
||||
guiGraphics: MGUIGraphics,
|
||||
x: Float,
|
||||
y: Float,
|
||||
width: Float = PowerGaugePanel.GAUGE_BACKGROUND.width,
|
||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.compat.jei
|
||||
|
||||
import mezz.jei.api.gui.drawable.IDrawable
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.IGUIRenderable
|
||||
|
||||
class IGUIRenderable2IDrawable(val parent: IGUIRenderable) : IDrawable {
|
||||
@ -14,6 +15,6 @@ class IGUIRenderable2IDrawable(val parent: IGUIRenderable) : IDrawable {
|
||||
}
|
||||
|
||||
override fun draw(guiGraphics: GuiGraphics, xOffset: Int, yOffset: Int) {
|
||||
parent.render(guiGraphics, xOffset.toFloat(), yOffset.toFloat())
|
||||
parent.render(MGUIGraphics(guiGraphics), xOffset.toFloat(), yOffset.toFloat())
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,8 @@ import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ItemStackIcon
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||
@ -63,21 +62,25 @@ object MatterEntanglerRecipeCategory : IRecipeCategory<IMatterEntanglerRecipe>,
|
||||
}
|
||||
|
||||
override fun draw(guiGraphics: GuiGraphics, xOffset: Int, yOffset: Int) {
|
||||
val wrap = MGUIGraphics(guiGraphics)
|
||||
|
||||
for (x in 0 until 3) {
|
||||
for (y in 0 until 3) {
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(guiGraphics, xOffset + x * 18f + 29f, yOffset + y * 18f + 3f)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, xOffset + x * 18f + 29f, yOffset + y * 18f + 3f)
|
||||
}
|
||||
}
|
||||
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(guiGraphics, xOffset + 115f, yOffset + 18f + 3f)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(guiGraphics, xOffset + 89f, yOffset + 18f + 4f)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, xOffset + 115f, yOffset + 18f + 3f)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(wrap, xOffset + 89f, yOffset + 18f + 4f)
|
||||
}
|
||||
|
||||
override fun draw(recipe: IMatterEntanglerRecipe, recipeSlotsView: IRecipeSlotsView, guiGraphics: GuiGraphics, mouseX: Double, mouseY: Double) {
|
||||
renderMatterGauge(guiGraphics, 13f, 6f, drainSpeed = (recipe.matter / Decimal(300)).toFloat())
|
||||
renderEnergyGauge(guiGraphics, 4f, 6f, drainSpeed = (recipe.ticks / 2000.0).toFloat())
|
||||
val wrap = MGUIGraphics(guiGraphics)
|
||||
|
||||
guiGraphics.draw(minecraft.font, x = 85f, y = 45f, text = TranslatableComponent("otm.gui.recipe.ticks", recipe.ticks), drawShadow = true)
|
||||
renderMatterGauge(wrap, 13f, 6f, drainSpeed = (recipe.matter / Decimal(300)).toFloat())
|
||||
renderEnergyGauge(wrap, 4f, 6f, drainSpeed = (recipe.ticks / 2000.0).toFloat())
|
||||
|
||||
wrap.draw(x = 85f, y = 45f, text = TranslatableComponent("otm.gui.recipe.ticks", recipe.ticks), drawShadow = true)
|
||||
}
|
||||
|
||||
override fun getTooltipStrings(recipe: IMatterEntanglerRecipe, recipeSlotsView: IRecipeSlotsView, mouseX: Double, mouseY: Double): MutableList<Component> {
|
||||
|
@ -13,9 +13,9 @@ import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
@ -52,12 +52,14 @@ object MicrowaveRecipeCategory : IRecipeCategory<MicrowaveRecipe>, IDrawable {
|
||||
@Suppress("name_shadowing")
|
||||
val yOffset = yOffset.toFloat()
|
||||
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(graphics, X_INPUT + xOffset, Y_INPUT + yOffset)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(graphics, X_OUTPUT + xOffset, Y_OUTPUT + yOffset)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(graphics, X_ARROW + xOffset, Y_ARROW + yOffset)
|
||||
val wrap = MGUIGraphics(graphics)
|
||||
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, X_INPUT + xOffset, Y_INPUT + yOffset)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, X_OUTPUT + xOffset, Y_OUTPUT + yOffset)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(wrap, X_ARROW + xOffset, Y_ARROW + yOffset)
|
||||
|
||||
ProgressGaugePanel.GAUGE_FOREGROUND.renderPartial(
|
||||
graphics,
|
||||
wrap,
|
||||
X_ARROW + xOffset,
|
||||
Y_ARROW + yOffset,
|
||||
width = (((System.currentTimeMillis() % 4000L) / 4000f) * ProgressGaugePanel.GAUGE_FOREGROUND.width).roundToInt().toFloat())
|
||||
@ -70,12 +72,13 @@ object MicrowaveRecipeCategory : IRecipeCategory<MicrowaveRecipe>, IDrawable {
|
||||
mouseX: Double,
|
||||
mouseY: Double
|
||||
) {
|
||||
graphics.draw(minecraft.font, TranslatableComponent("otm.gui.recipe.ticks", recipe.workTime), 40f, 30f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
val wrap = MGUIGraphics(graphics)
|
||||
wrap.draw(TranslatableComponent("otm.gui.recipe.ticks", recipe.workTime), 40f, 30f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
|
||||
val average = recipe.experience.toString()
|
||||
|
||||
if (average != "0.0") {
|
||||
graphics.draw(minecraft.font, TranslatableComponent("gui.jei.category.smelting.experience", average), 40f, 1f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
wrap.draw(TranslatableComponent("gui.jei.category.smelting.experience", average), 40f, 1f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.ItemStackIcon
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||
@ -71,15 +72,17 @@ object PainterRecipeCategory : IRecipeCategory<PainterRecipe>, IDrawable {
|
||||
}
|
||||
|
||||
override fun draw(guiGraphics: GuiGraphics, xOffset: Int, yOffset: Int) {
|
||||
val wrap = MGUIGraphics(guiGraphics)
|
||||
|
||||
for (x in 0 .. 1) {
|
||||
for (y in 0 .. 2) {
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(guiGraphics, xOffset.toFloat() + x * 18f, yOffset.toFloat() + y * 18f)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, xOffset.toFloat() + x * 18f, yOffset.toFloat() + y * 18f)
|
||||
}
|
||||
}
|
||||
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(guiGraphics, xOffset.toFloat() + 49f, yOffset.toFloat() + 21f)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(guiGraphics, xOffset.toFloat() + 99f, yOffset.toFloat() + 21f)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, xOffset.toFloat() + 49f, yOffset.toFloat() + 21f)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, xOffset.toFloat() + 99f, yOffset.toFloat() + 21f)
|
||||
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(guiGraphics, xOffset.toFloat() + 73f, yOffset.toFloat() + 22f)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(wrap, xOffset.toFloat() + 73f, yOffset.toFloat() + 22f)
|
||||
}
|
||||
}
|
||||
|
@ -13,9 +13,9 @@ import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.draw
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
@ -52,12 +52,14 @@ object PlatePressRecipeCategory : IRecipeCategory<PlatePressRecipe>, IDrawable {
|
||||
@Suppress("name_shadowing")
|
||||
val yOffset = yOffset.toFloat()
|
||||
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(graphics, X_INPUT + xOffset, Y_INPUT + yOffset)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(graphics, X_OUTPUT + xOffset, Y_OUTPUT + yOffset)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(graphics, X_ARROW + xOffset, Y_ARROW + yOffset)
|
||||
val wrap = MGUIGraphics(graphics)
|
||||
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, X_INPUT + xOffset, Y_INPUT + yOffset)
|
||||
AbstractSlotPanel.SLOT_BACKGROUND.render(wrap, X_OUTPUT + xOffset, Y_OUTPUT + yOffset)
|
||||
ProgressGaugePanel.GAUGE_BACKGROUND.render(wrap, X_ARROW + xOffset, Y_ARROW + yOffset)
|
||||
|
||||
ProgressGaugePanel.GAUGE_FOREGROUND.renderPartial(
|
||||
graphics,
|
||||
wrap,
|
||||
X_ARROW + xOffset,
|
||||
Y_ARROW + yOffset,
|
||||
width = (((System.currentTimeMillis() % 4000L) / 4000f) * ProgressGaugePanel.GAUGE_FOREGROUND.width).roundToInt().toFloat())
|
||||
@ -70,12 +72,14 @@ object PlatePressRecipeCategory : IRecipeCategory<PlatePressRecipe>, IDrawable {
|
||||
mouseX: Double,
|
||||
mouseY: Double
|
||||
) {
|
||||
graphics.draw(minecraft.font, TranslatableComponent("otm.gui.recipe.ticks", recipe.workTime), 40f, 30f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
val wrap = MGUIGraphics(graphics)
|
||||
|
||||
wrap.draw(TranslatableComponent("otm.gui.recipe.ticks", recipe.workTime), 40f, 30f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
|
||||
val average = recipe.experience.toString()
|
||||
|
||||
if (average != "0.0") {
|
||||
graphics.draw(minecraft.font, TranslatableComponent("gui.jei.category.smelting.experience", average), 40f, 1f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
wrap.draw(TranslatableComponent("gui.jei.category.smelting.experience", average), 40f, 1f, gravity = RenderGravity.TOP_CENTER, color = RGBAColor.BLACK)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user