Skip to content

Commit 734ac8c

Browse files
authored
Merge pull request #560 from rfresh2/hold-binds
Module Hold Binds
2 parents 9be0a79 + 222a478 commit 734ac8c

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/main/kotlin/com/lambda/client/module/AbstractModule.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,15 @@ import com.lambda.client.setting.settings.SettingRegister
1212
import com.lambda.client.setting.settings.impl.number.IntegerSetting
1313
import com.lambda.client.setting.settings.impl.other.BindSetting
1414
import com.lambda.client.setting.settings.impl.primitive.BooleanSetting
15+
import com.lambda.client.setting.settings.impl.primitive.EnumSetting
1516
import com.lambda.client.util.Bind
1617
import com.lambda.client.util.text.MessageSendHelper
18+
import com.lambda.client.util.threads.safeListener
1719
import net.minecraft.client.Minecraft
20+
import net.minecraftforge.fml.common.gameevent.TickEvent
21+
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent
22+
import org.lwjgl.input.Keyboard
23+
import org.lwjgl.input.Mouse
1824

1925
@Suppress("UNCHECKED_CAST")
2026
abstract class AbstractModule(
@@ -31,11 +37,15 @@ abstract class AbstractModule(
3137
) : Nameable, Alias, SettingRegister<Nameable> by config as NameableConfig<Nameable> {
3238

3339
val bind = BindSetting("Bind", Bind(), { !alwaysEnabled }).also(::addSetting)
40+
private val toggleMode = EnumSetting("Toggle Mode", ToggleMode.TOGGLE).also(::addSetting)
3441
private val enabled = BooleanSetting("Enabled", false, { false }).also(::addSetting)
3542
private val visible = BooleanSetting("Visible", showOnArray).also(::addSetting)
3643
private val default = BooleanSetting("Default", false, { settingList.isNotEmpty() }).also(::addSetting)
3744
val priorityForGui = IntegerSetting("Priority In GUI", 0, 0..1000, 50, { ClickGUI.sortBy.value == ClickGUI.SortByOptions.CUSTOM }, fineStep = 1).also(::addSetting)
3845
val clicks = IntegerSetting("Clicks", 0, 0..Int.MAX_VALUE, 1, { false }).also(::addSetting) // Not nice, however easiest way to save it.
46+
enum class ToggleMode {
47+
TOGGLE, HOLD
48+
}
3949

4050
val fullSettingList get() = (config as NameableConfig<Nameable>).getSettings(this)
4151
val settingList: List<AbstractSetting<*>> get() = fullSettingList.filter { it != bind && it != enabled && it != visible && it != default && it != clicks }
@@ -138,6 +148,15 @@ abstract class AbstractModule(
138148
priorityForGui.listeners.add { LambdaClickGui.reorderModules() }
139149

140150
// clicks is deliberately not re-organised when changed.
151+
152+
safeListener<ClientTickEvent> {
153+
if (it.phase != TickEvent.Phase.START || bind.value.isEmpty || toggleMode.value != ToggleMode.HOLD) return@safeListener
154+
bind.value.mouseKey?.let {
155+
if (!Mouse.isButtonDown(it-1)) toggle()
156+
} ?: run {
157+
if (!Keyboard.isKeyDown(bind.value.key)) toggle()
158+
}
159+
}
141160
}
142161

143162
protected companion object {

0 commit comments

Comments
 (0)