Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Reverse Party Transfer #1712

Merged
merged 25 commits into from
Aug 31, 2024
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4bebbe6
Add Royal Pigeon Ability Cooldown
invalid-email-address May 5, 2024
170a4f1
Add the ability to transfer party back to previous leader via command…
invalid-email-address May 5, 2024
af74ee5
Merge branch 'hannibal002:beta' into reverse-transfer
Jordyrat May 5, 2024
4aae29c
Cleanup message parsing for clickable message.
invalid-email-address May 6, 2024
bcf0d1f
Merge remote-tracking branch 'origin/reverse-transfer' into reverse-t…
invalid-email-address May 6, 2024
6b15545
Adds the option for a configurable party message after reverse party …
invalid-email-address May 6, 2024
404e7c9
Merge branch 'refs/heads/beta' into reverse-transfer
invalid-email-address May 6, 2024
b1cc055
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat May 26, 2024
6048e4c
Update from deprecated .matches
Jordyrat May 26, 2024
67644db
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 1, 2024
1bf3e13
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 2, 2024
749dc37
Merge branch 'refs/heads/beta' into fork/Jordyrat/reverse-transfer
CalMWolfs Jun 6, 2024
45c5171
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 8, 2024
221b05a
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 9, 2024
d92acc4
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 13, 2024
738d495
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 17, 2024
dc72a9a
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 23, 2024
ad9ce3e
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jun 30, 2024
a8c85fd
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jul 7, 2024
5f9b6f6
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jul 17, 2024
4de3cef
Merge branch 'refs/heads/beta' into reverse-transfer
Jordyrat Jul 26, 2024
cb79568
Merge branch 'refs/heads/beta' into fork/Jordyrat/reverse-transfer
hannibal002 Aug 31, 2024
96064b9
code cleanup
hannibal002 Aug 31, 2024
03506f3
code cleanup
hannibal002 Aug 31, 2024
f5adfd3
formatting
hannibal002 Aug 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,7 @@ object Commands {
registerCommand("pt", "Transfer the party to another party member") { PartyCommands.transfer(it) }
registerCommand("pp", "Promote a specific party member") { PartyCommands.promote(it) }
registerCommand("pd", "Disbands the party") { PartyCommands.disband() }
registerCommand("rpt", "Transfer party to the previous leader") { PartyCommands.reverseTransfer() }
}

@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ public class CommandsConfig {
@Expose
public BetterWikiCommandConfig betterWiki = new BetterWikiCommandConfig();

@ConfigOption(name = "Reverse Party Transfer", desc = "")
@Accordion
@Expose
public ReversePartyTransferConfig reversePT = new ReversePartyTransferConfig();

@ConfigOption(name = "Party Commands", desc = "Shortens party commands and allows tab-completing for them. " +
"\n§eCommands: /pt /pp /pko /pk /pd §7SkyBlock command §e/pt §7to check the play time still works.")
@Expose
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package at.hannibal2.skyhanni.config.features.commands;

import at.hannibal2.skyhanni.config.FeatureToggle;
import com.google.gson.annotations.Expose;
import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean;
import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorText;
import io.github.notenoughupdates.moulconfig.annotations.ConfigOption;

public class ReversePartyTransferConfig {

@Expose
@ConfigOption(name = "Command", desc = "Adds §e/rpt §7to transfer a party back to its previous leader.")
@ConfigEditorBoolean
@FeatureToggle
public boolean command = true;

@Expose
@ConfigOption(name = "Clickable Message", desc = "Allows transfer message to be clicked to transfer a party back to its previous leader if it has been transferred to you.")
@ConfigEditorBoolean
@FeatureToggle
public boolean clickable = false;

@Expose
@ConfigOption(name = "Response Message", desc = "Sends a custom message to party chat when the party is reverse transferred.")
@ConfigEditorText
public String message = "Nuh Uh";
}
16 changes: 14 additions & 2 deletions src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ object PartyAPI {
"others.transfer.leave",
"The party was transferred to (?<newowner>.*) because (?<name>.*) left"
)
private val transferVoluntaryPattern by patternGroup.pattern(
val transferVoluntaryPattern by patternGroup.pattern(
"others.transfer.voluntary",
"The party was transferred to (?<newowner>.*) by .*"
"The party was transferred to (?<newowner>.*) by (?<name>.*)"
)
private val disbandedPattern by patternGroup.pattern(
"others.disband",
Expand Down Expand Up @@ -81,6 +81,7 @@ object PartyAPI {
val partyMembers = mutableListOf<String>()

var partyLeader: String? = null
var prevPartyLeader: String? = null

fun listMembers() {
val size = partyMembers.size
Expand Down Expand Up @@ -144,14 +145,23 @@ object PartyAPI {
otherLeftPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
partyMembers.remove(name)
if (name == prevPartyLeader) {
prevPartyLeader = null
}
}
otherKickedPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
partyMembers.remove(name)
if (name == prevPartyLeader) {
prevPartyLeader = null
}
}
otherOfflineKickedPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
partyMembers.remove(name)
if (name == prevPartyLeader) {
prevPartyLeader = null
}
}
otherDisconnectedPattern.matchMatcher(message) {
val name = group("name").cleanPlayerName()
Expand All @@ -164,6 +174,7 @@ object PartyAPI {
}
transferVoluntaryPattern.matchMatcher(message.removeColor()) {
partyLeader = group("newowner").cleanPlayerName()
prevPartyLeader = group("name").cleanPlayerName()
}

// party disbanded
Expand Down Expand Up @@ -207,5 +218,6 @@ object PartyAPI {
private fun partyLeft() {
partyMembers.clear()
partyLeader = null
prevPartyLeader = null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,19 @@ import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.data.FriendAPI
import at.hannibal2.skyhanni.data.PartyAPI
import at.hannibal2.skyhanni.data.PartyAPI.partyLeader
import at.hannibal2.skyhanni.data.PartyAPI.transferVoluntaryPattern
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.MessageSendToServerEvent
import at.hannibal2.skyhanni.features.misc.limbo.LimboTimeTracker
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.EntityUtils
import at.hannibal2.skyhanni.utils.HypixelCommands
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
import at.hannibal2.skyhanni.utils.StringUtils.trimWhiteSpace
import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent

object PartyCommands {
Expand Down Expand Up @@ -65,6 +74,17 @@ object PartyCommands {
HypixelCommands.partyPromote(args[0])
}

fun reverseTransfer() {
if (!config.reversePT.command) return
if (PartyAPI.partyMembers.isEmpty()) return
PartyAPI.prevPartyLeader?.let {
HypixelCommands.partyTransfer(it)
if (config.reversePT.message.isNotBlank()) {
HypixelCommands.partyChat(config.reversePT.message)
}
}
}

@SubscribeEvent
fun onMessageSendToServer(event: MessageSendToServerEvent) {
if (!config.partyKickReason) {
Expand Down Expand Up @@ -114,6 +134,29 @@ object PartyCommands {

event.move(31, "commands", "misc.commands")
}

@SubscribeEvent(priority = EventPriority.LOW)
fun onChat(event: LorenzChatEvent) {
if (!config.reversePT.clickable) return
if (transferVoluntaryPattern.matches(event.message.trimWhiteSpace().removeColor())) {
if (partyLeader != LorenzUtils.getPlayerName()) return

PartyAPI.prevPartyLeader?.let {
event.blockedReason = "replacing"

ChatUtils.clickableChat(
event.message,
onClick = {
HypixelCommands.partyTransfer(it)
if (config.reversePT.message.isNotBlank()) {
HypixelCommands.partyChat(config.reversePT.message)
}
},
prefix = false
)
}
}
}
}

private val otherPartyCommands = listOf(
Expand Down
Loading