1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
package cc.woverflow.chatting.gui.components
import cc.polyfrost.oneconfig.renderer.TextRenderer
import cc.woverflow.chatting.Chatting
import cc.woverflow.chatting.config.ChattingConfig
import cc.woverflow.chatting.hook.GuiNewChatHook
import club.sk1er.patcher.config.PatcherConfig
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiButton
import net.minecraft.client.renderer.GlStateManager
/**
* Taken from ChatShortcuts under MIT License
* https://github.com/P0keDev/ChatShortcuts/blob/master/LICENSE
* @author P0keDev
*/
open class CleanButton(
buttonId: Int,
private val x: () -> Int,
private val y: () -> Int,
widthIn: Int,
heightIn: Int,
name: String,
private val renderType: () -> RenderType,
private val textColor: (packedFGColour: Int, enabled: Boolean, hovered: Boolean) -> Int = { packedFGColour: Int, enabled: Boolean, hovered: Boolean ->
var j = 14737632
if (packedFGColour != 0) {
j = packedFGColour
} else if (!enabled) {
j = 10526880
} else if (hovered) {
j = 16777120
}
j
},
) :
GuiButton(buttonId, x.invoke(), 0, widthIn, heightIn, name) {
open fun isEnabled(): Boolean {
return false
}
open fun onMousePress() {
}
override fun mousePressed(mc: Minecraft, mouseX: Int, mouseY: Int): Boolean {
val isPressed =
visible && mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height
if (isPressed) {
onMousePress()
}
return isPressed
}
override fun drawButton(mc: Minecraft, mouseX: Int, mouseY: Int) {
enabled = isEnabled()
xPosition = x()
yPosition = y()
if (visible) {
val fontrenderer = mc.fontRendererObj
GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f)
hovered =
mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height
if (!Chatting.isPatcher || !PatcherConfig.transparentChatInputField) {
drawRect(
xPosition,
yPosition,
xPosition + width,
yPosition + height,
getBackgroundColor(hovered)
)
}
mouseDragged(mc, mouseX, mouseY)
val j = textColor(packedFGColour, enabled, hovered)
when (renderType()) {
RenderType.NONE, RenderType.SHADOW -> {
drawCenteredString(
fontrenderer,
displayString,
xPosition + width / 2,
yPosition + (height - 8) / 2,
j
)
}
RenderType.FULL -> {
TextRenderer.drawBorderedText(
displayString,
((xPosition + width / 2) - (fontrenderer.getStringWidth(displayString) / 2)).toFloat(),
(yPosition + (height - 8) / 2).toFloat(),
j,
(Minecraft.getMinecraft().ingameGUI.chatGUI as GuiNewChatHook).textOpacity
)
}
}
}
}
private fun getBackgroundColor(hovered: Boolean) =
if (hovered) ChattingConfig.chatButtonHoveredBackgroundColor.rgb
else ChattingConfig.chatButtonBackgroundColor.rgb
}
|