/*
* Skytils - Hypixel Skyblock Quality of Life Mod
* Copyright (C) 2021 Skytils
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package skytils.skytilsmod.commands.impl
import gg.essential.universal.UChat
import net.minecraft.command.ICommandSender
import net.minecraft.command.WrongUsageException
import skytils.skytilsmod.Skytils
import skytils.skytilsmod.commands.BaseCommand
import skytils.skytilsmod.utils.Utils
object RepartyCommand : BaseCommand("skytilsreparty", listOf("reparty", "rp")) {
@JvmField
var gettingParty = false
@JvmField
var Delimiter = 0
@JvmField
var disbanding = false
@JvmField
var inviting = false
@JvmField
var failInviting = false
@JvmField
var party: MutableList = ArrayList()
@JvmField
var repartyFailList: MutableList = ArrayList()
@JvmField
var partyThread: Thread? = null
override fun processCommand(sender: ICommandSender, args: Array) {
if (!Utils.isOnHypixel) throw WrongUsageException("You must be on Hypixel to use this command.")
if (args.isNotEmpty() && (args[0].startsWith("fail") || args[0] == "f")) {
partyThread = Thread {
try {
Skytils.sendMessageQueue.add("/p ${repartyFailList.joinToString(" ")}")
val members = repartyFailList.joinToString(
separator = """
§f
- §e
""".trimIndent()
)
UChat.chat(
"""
§9§m-----------------------------
§aPartying:§f
- §e$members
§9§m-----------------------------
""".trimIndent()
)
failInviting = true
while (failInviting) {
Thread.sleep(10)
}
if (repartyFailList.size > 0) {
val repartyFails = repartyFailList.joinToString(
separator =
"""
- §c
""".trimIndent()
)
UChat.chat(
"""
§9§m-----------------------------
§aFailed to invite:§f
- §c$repartyFails
§9§m-----------------------------
""".trimIndent()
)
}
} catch (e: InterruptedException) {
e.printStackTrace()
}
}
partyThread!!.start()
return
}
party.clear()
repartyFailList.clear()
partyThread = Thread {
try {
Skytils.sendMessageQueue.add("/pl")
gettingParty = true
while (gettingParty) {
Thread.sleep(10)
}
if (party.size == 0) return@Thread
Skytils.sendMessageQueue.add("/p disband")
disbanding = true
while (disbanding) {
Thread.sleep(10)
}
val members = party.joinToString(
separator =
"""
§f
- §e
""".trimIndent()
)
UChat.chat(
"""
§9§m-----------------------------
§aRepartying:§f
- §e$members
§9§m-----------------------------
""".trimIndent()
)
repartyFailList = ArrayList(party)
for (invitee in party) {
Skytils.sendMessageQueue.add("/p $invitee")
inviting = true
while (inviting) {
Thread.sleep(10)
}
Thread.sleep(100)
}
while (inviting) {
Thread.sleep(10)
}
if (repartyFailList.size > 0) {
val repartyFails = repartyFailList.joinToString(
separator =
"""
- §c
""".trimIndent(),
)
UChat.chat(
"""
§9§m-----------------------------
§aFailed to invite:§f
- §c$repartyFails
§9§m-----------------------------
""".trimIndent()
)
}
} catch (e: InterruptedException) {
e.printStackTrace()
}
}
partyThread!!.start()
}
}