aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/PartyCommandsConfig.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/commands/PartyChatCommands.kt23
3 files changed, 32 insertions, 10 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/PartyCommandsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/PartyCommandsConfig.java
index fb28b6544..cee11c99b 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/misc/PartyCommandsConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/PartyCommandsConfig.java
@@ -23,6 +23,11 @@ public class PartyCommandsConfig {
@ConfigOption(name = "Party Warp", desc = "Automatically warp the party if someone types §b!warp")
public boolean warpCommand = false;
+ @Expose
+ @ConfigEditorBoolean
+ @ConfigOption(name = "Party All Invite", desc = "Automatically turn on allinvite if someone types §b!allinv")
+ public boolean allInviteCommand = false;
+
public enum TrustedUser {
BEST_FRIENDS("Best Friends"),
FRIENDS("Friends"),
diff --git a/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt
index 3bd3967be..10739720a 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt
@@ -168,19 +168,16 @@ object PartyAPI {
// party disbanded
disbandedPattern.matchMatcher(message) {
- partyMembers.clear()
- partyLeader = null
+ partyLeft()
}
kickedPattern.matchMatcher(message) {
- partyMembers.clear()
- partyLeader = null
+ partyLeft()
}
if (message == "§eYou left the party." ||
message == "§cThe party was disbanded because all invites expired and the party was empty." ||
message == "§cYou are not currently in a party."
) {
- partyMembers.clear()
- partyLeader = null
+ partyLeft()
}
// party list
@@ -206,4 +203,9 @@ object PartyAPI {
if (playerName == LorenzUtils.getPlayerName()) return
partyMembers.add(playerName)
}
+
+ private fun partyLeft() {
+ partyMembers.clear()
+ partyLeader = null
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/commands/PartyChatCommands.kt b/src/main/java/at/hannibal2/skyhanni/features/commands/PartyChatCommands.kt
index 2f53a232d..8bb8e46ea 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/commands/PartyChatCommands.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/commands/PartyChatCommands.kt
@@ -7,10 +7,14 @@ import at.hannibal2.skyhanni.data.PartyAPI
import at.hannibal2.skyhanni.data.hypixel.chat.event.PartyChatEvent
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.SimpleTimeMark
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import kotlin.time.Duration.Companion.seconds
object PartyChatCommands {
+ private val config get() = SkyHanniMod.feature.misc.partyCommands
+
data class PartyChatCommand(
val names: List<String>,
val isEnabled: () -> Boolean,
@@ -18,12 +22,13 @@ object PartyChatCommands {
val executable: (PartyChatEvent) -> Unit,
)
- private fun useConfig() = SkyHanniMod.feature.misc.partyCommands
+ private var lastWarp = SimpleTimeMark.farPast()
+ private var lastAllInvite = SimpleTimeMark.farPast()
private val allPartyCommands = listOf(
PartyChatCommand(
listOf("pt", "ptme", "transfer"),
- { useConfig().transferCommand },
+ { config.transferCommand },
requiresPartyLead = true,
executable = {
ChatUtils.sendCommandToServer("party transfer ${it.cleanedAuthor}")
@@ -31,12 +36,22 @@ object PartyChatCommands {
),
PartyChatCommand(
listOf("pw", "warp", "warpus"),
- { useConfig().warpCommand },
+ { config.warpCommand && lastWarp.passedSince() > 5.seconds },
requiresPartyLead = true,
executable = {
+ lastWarp = SimpleTimeMark.now()
ChatUtils.sendCommandToServer("party warp")
}
),
+ PartyChatCommand(
+ listOf("allinv", "allinvite"),
+ { config.allInviteCommand && lastAllInvite.passedSince() > 2.seconds },
+ requiresPartyLead = true,
+ executable = {
+ lastAllInvite = SimpleTimeMark.now()
+ ChatUtils.sendCommandToServer("party settings allinvite")
+ }
+ ),
)
private val indexedPartyChatCommands = buildMap {
@@ -49,7 +64,7 @@ object PartyChatCommands {
private fun isTrustedUser(name: String): Boolean {
val friend = FriendAPI.getAllFriends().find { it.name == name }
- return when (useConfig().defaultRequiredTrustLevel) {
+ return when (config.defaultRequiredTrustLevel) {
PartyCommandsConfig.TrustedUser.FRIENDS -> friend != null
PartyCommandsConfig.TrustedUser.BEST_FRIENDS -> friend?.bestFriend == true
PartyCommandsConfig.TrustedUser.ANYONE -> true