Files
SciFy/src/client/kotlin/chickenmanfy/scify/modules/Bars.kt
2024-08-17 10:59:09 -07:00

90 lines
4.6 KiB
Kotlin

package chickenmanfy.scify.modules
import com.mojang.blaze3d.systems.RenderSystem
import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback
import net.minecraft.client.MinecraftClient
import net.minecraft.client.gui.DrawContext
import net.minecraft.client.render.*
import net.minecraft.util.Identifier
import java.util.regex.Pattern
var barsToggle: Boolean = true
class Bars {
private var mana = 0
init {
ClientReceiveMessageEvents.GAME.register { actionbar, _ ->
val pattern: Pattern = Pattern.compile("\\[(\\d+)/(\\d+)]")
val matcher = pattern.matcher(actionbar.string)
var lastFirstNumber = 0
var lastSecondNumber = 0
while (matcher.find()) {
lastFirstNumber = matcher.group(1).toInt()
lastSecondNumber = matcher.group(2).toInt()
}
// Final mana value
if (lastSecondNumber != 0) {
val divided = lastSecondNumber.toFloat() / 20
val final = Math.round(lastFirstNumber.toFloat() / divided)
mana = if (final <= 20) final else 20
}
}
}
fun toggleBars() {
barsToggle = !barsToggle
}
fun bars() {
val width = 98f
val height = 18f
val xHealth = 5f
val yHealth = 5f
val xReality = 5f
val yReality = 10f + height
HudRenderCallback.EVENT.register(HudRenderCallback { drawContext: DrawContext, _: RenderTickCounter ->
val tessellator: Tessellator = Tessellator.getInstance()
val buffer: BufferBuilder = tessellator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR)
val positionMatrix = drawContext.matrices?.peek()?.positionMatrix
if (MinecraftClient.getInstance().networkHandler?.serverInfo?.address == "dungeonfy.minehut.gg" ||
MinecraftClient.getInstance().networkHandler?.serverInfo?.address == "51.222.121.148:25599" ||
MinecraftClient.getInstance().networkHandler?.serverInfo?.address == "minehut.com" ||
modDisableOverride) {
if (barsToggle) {
if (MinecraftClient.getInstance().networkHandler?.serverInfo?.address == "51.222.121.148:25599") {
buffer.vertex(positionMatrix, xReality, yReality, 0f).color(1f, 1f, 1f, 1f).texture(0f, 0f)
buffer.vertex(positionMatrix, xReality, yReality + height, 0f).color(1f, 1f, 1f, 1f).texture(0f, 1f)
buffer.vertex(positionMatrix, xReality + width, yReality + height, 0f).color(1f, 1f, 1f, 1f).texture(1f, 1f)
buffer.vertex(positionMatrix, xReality + width, yReality, 0f).color(1f, 1f, 1f, 1f).texture(1f, 0f)
RenderSystem.setShader { GameRenderer.getPositionTexColorProgram() }
RenderSystem.setShaderTexture(0, Identifier.of("scify", "healthmana/mana/mana_${mana}.png"))
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
BufferRenderer.drawWithGlobalProgram(buffer.end())
}
buffer.vertex(positionMatrix, xHealth, yHealth, 0f).color(1f, 1f, 1f, 1f).texture(0f, 0f)
buffer.vertex(positionMatrix, xHealth, yHealth+height, 0f).color(1f, 1f, 1f, 1f).texture(0f, 1f)
buffer.vertex(positionMatrix, xHealth+width, yHealth+height, 0f).color(1f, 1f, 1f, 1f).texture(1f, 1f)
buffer.vertex(positionMatrix, xHealth+width, yHealth, 0f).color(1f, 1f, 1f, 1f).texture(1f, 0f)
val maxHealthDivided = MinecraftClient.getInstance().player?.maxHealth?.div(20)?.toInt()
val health = if (MinecraftClient.getInstance().player?.health?.toInt()?.div(maxHealthDivided!!)!! <= 20) MinecraftClient.getInstance().player?.health?.toInt()?.div(maxHealthDivided!!) else 20
RenderSystem.setShader { GameRenderer.getPositionTexColorProgram() }
RenderSystem.setShaderTexture(0, Identifier.of("scify", "healthmana/health/health_${health}.png"))
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
BufferRenderer.drawWithGlobalProgram(buffer.end())
}
}
})
/*HudRenderCallback.EVENT.register(HudRenderCallback { drawContext: DrawContext, _: RenderTickCounter ->
val color = -0x10000 // Red
drawContext.fill(0, 0, 100, 100, 0, color)
})*/
}
}