blob: 22dfae308f48c6809d70c2851a45bef3f54b28a0 (
plain)
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
|
package at.hannibal2.skyhanni.features.misc
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.mixins.transformers.AccessorGuiEditSign
import at.hannibal2.skyhanni.utils.ClipboardUtils
import at.hannibal2.skyhanni.utils.KeyboardManager
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.OSUtils
import kotlinx.coroutines.launch
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiScreen
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class BetterSignEditing {
private var pasteLastClicked = false
private var copyLastClicked = false
private var deleteLastClicked = false
@SubscribeEvent
fun onTick(event: LorenzTickEvent) {
if (!LorenzUtils.onHypixel) return
if (!SkyHanniMod.feature.misc.betterSignEditing) return
val gui = Minecraft.getMinecraft().currentScreen
checkPaste()
checkCopying(gui)
checkDeleting(gui)
}
private fun checkDeleting(gui: GuiScreen?) {
val deleteClicked = KeyboardManager.isDeleteWordDown() || KeyboardManager.isDeleteLineDown()
if (!deleteLastClicked && deleteClicked && gui is AccessorGuiEditSign) {
SkyHanniMod.coroutineScope.launch {
val newLine = if (KeyboardManager.isDeleteLineDown()) ""
else if (KeyboardManager.isDeleteWordDown()) {
val currentLine = gui.tileSign.signText[gui.editLine].unformattedText
val lastSpaceIndex = currentLine.trimEnd().lastIndexOf(' ')
if (lastSpaceIndex >= 0) currentLine.substring(0, lastSpaceIndex + 2) else ""
} else return@launch
LorenzUtils.setTextIntoSign(newLine, gui.editLine)
}
}
deleteLastClicked = deleteClicked
}
private fun checkCopying(gui: GuiScreen?) {
val copyClicked = KeyboardManager.isCopyingKeysDown()
if (!copyLastClicked && copyClicked && gui is AccessorGuiEditSign) {
SkyHanniMod.coroutineScope.launch {
ClipboardUtils.copyToClipboard(gui.tileSign.signText[gui.editLine].unformattedText)
}
}
copyLastClicked = copyClicked
}
private fun checkPaste() {
val pasteClicked = KeyboardManager.isPastingKeysDown()
if (!pasteLastClicked && pasteClicked) {
SkyHanniMod.coroutineScope.launch {
OSUtils.readFromClipboard()?.let {
LorenzUtils.addTextIntoSign(it)
}
}
}
pasteLastClicked = pasteClicked
}
@SubscribeEvent
fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
event.move(16, "misc.pasteIntoSigns", "misc.betterSignEditing")
}
}
|