Skip to content

Commit

Permalink
feat: Implemented team specific votekick + Fix bugs in vote based com…
Browse files Browse the repository at this point in the history
…mands
  • Loading branch information
phinner committed Oct 18, 2023
1 parent ad5e2e4 commit fe6683b
Show file tree
Hide file tree
Showing 27 changed files with 812 additions and 658 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
*/
package com.xpdustry.imperium.common.collection

import java.util.function.Predicate

fun <T : Any> List<T>.findMostCommon(): T? {
val map = mutableMapOf<T, Int>()
var max: T? = null
Expand All @@ -30,3 +32,12 @@ fun <T : Any> List<T>.findMostCommon(): T? {
}
return max
}

fun <T> Iterable<T>.isPresent(predicate: Predicate<T>): Boolean {
for (element in this) {
if (predicate.test(element)) {
return true
}
}
return false
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import com.xpdustry.imperium.mindustry.chat.ChatMessageListener
import com.xpdustry.imperium.mindustry.chat.ChatTranslatorListener
import com.xpdustry.imperium.mindustry.command.HelpCommand
import com.xpdustry.imperium.mindustry.config.ConventionListener
import com.xpdustry.imperium.mindustry.game.KillCommand
import com.xpdustry.imperium.mindustry.game.KillAllCommand
import com.xpdustry.imperium.mindustry.game.WaveCommand
import com.xpdustry.imperium.mindustry.history.HistoryCommand
import com.xpdustry.imperium.mindustry.security.AdminRequestListener
Expand Down Expand Up @@ -96,7 +96,7 @@ class ImperiumPlugin : AbstractMindustryPlugin() {
CoreBlockListener::class,
HelpCommand::class,
WaveCommand::class,
KillCommand::class,
KillAllCommand::class,
)) {
application.register(listener)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import com.xpdustry.imperium.mindustry.chat.SimpleChatMessagePipeline
import com.xpdustry.imperium.mindustry.command.MindustryCommandRegistry
import com.xpdustry.imperium.mindustry.history.BlockHistory
import com.xpdustry.imperium.mindustry.history.SimpleBlockHistory
import com.xpdustry.imperium.mindustry.misc.Entities
import com.xpdustry.imperium.mindustry.placeholder.PlaceholderPipeline
import com.xpdustry.imperium.mindustry.placeholder.SimplePlaceholderManager
import com.xpdustry.imperium.mindustry.security.GatekeeperPipeline
Expand All @@ -44,7 +45,6 @@ import java.util.function.Supplier
import mindustry.Vars
import mindustry.core.Version
import mindustry.game.Gamemode
import mindustry.gen.Groups
import mindustry.net.Administration

fun mindustryModule(plugin: ImperiumPlugin) =
Expand Down Expand Up @@ -89,7 +89,7 @@ private fun getMindustryServerInfo(config: ImperiumConfig): MindustryServerInfo?
Vars.state.map.name(),
Administration.Config.desc.string(),
Vars.state.wave,
Groups.player.size(),
Entities.PLAYERS.size,
Vars.netServer.admins.playerLimit,
getVersion(),
getGameMode(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import com.xpdustry.imperium.common.message.subscribe
import com.xpdustry.imperium.common.misc.logger
import com.xpdustry.imperium.common.security.VerificationMessage
import com.xpdustry.imperium.mindustry.command.annotation.ClientSide
import com.xpdustry.imperium.mindustry.misc.Entities
import com.xpdustry.imperium.mindustry.misc.identity
import com.xpdustry.imperium.mindustry.misc.runMindustryThread
import com.xpdustry.imperium.mindustry.misc.showInfoMessage
Expand All @@ -48,7 +49,6 @@ import kotlin.time.toJavaDuration
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import mindustry.gen.Groups
import mindustry.gen.Player
import org.bson.types.ObjectId

Expand Down Expand Up @@ -164,8 +164,7 @@ class AccountCommand(instances: InstanceManager) : ImperiumApplication.Listener
ImperiumScope.MAIN.launch {
manager.updateById(message.account) { account -> account.verified = true }
runMindustryThread {
Groups.player
.find { it.uuid() == message.uuid }
Entities.PLAYERS.find { it.uuid() == message.uuid }
?.showInfoMessage("You have been verified!")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.xpdustry.imperium.common.inject.InstanceManager
import com.xpdustry.imperium.common.inject.get
import com.xpdustry.imperium.common.misc.toInetAddress
import com.xpdustry.imperium.common.security.Identity
import com.xpdustry.imperium.mindustry.misc.Entities
import com.xpdustry.imperium.mindustry.misc.identity
import com.xpdustry.imperium.mindustry.security.GatekeeperPipeline
import com.xpdustry.imperium.mindustry.security.GatekeeperResult
Expand All @@ -35,7 +36,6 @@ import java.time.Instant
import java.util.concurrent.ConcurrentHashMap
import kotlinx.coroutines.launch
import mindustry.game.EventType
import mindustry.gen.Groups
import mindustry.gen.Player

class AccountListener(instances: InstanceManager) : ImperiumApplication.Listener {
Expand Down Expand Up @@ -70,7 +70,7 @@ class AccountListener(instances: InstanceManager) : ImperiumApplication.Listener

@EventHandler
fun onGameOver(event: EventType.GameOverEvent) {
Groups.player.forEach { player ->
Entities.PLAYERS.forEach { player ->
ImperiumScope.MAIN.launch {
accounts.updateByIdentity(player.identity) { account -> account.games++ }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import com.xpdustry.imperium.common.misc.toInetAddress
import com.xpdustry.imperium.common.security.Punishment
import com.xpdustry.imperium.common.security.PunishmentManager
import com.xpdustry.imperium.mindustry.command.annotation.ClientSide
import com.xpdustry.imperium.mindustry.misc.Entities
import com.xpdustry.imperium.mindustry.misc.runMindustryThread
import com.xpdustry.imperium.mindustry.misc.showInfoMessage
import fr.xpdustry.distributor.api.DistributorProvider
Expand All @@ -42,7 +43,6 @@ import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.launch
import mindustry.Vars
import mindustry.game.EventType.PlayerChatEvent
import mindustry.gen.Groups
import mindustry.gen.Player
import mindustry.gen.SendChatMessageCallPacket
import mindustry.net.Administration
Expand Down Expand Up @@ -98,7 +98,7 @@ class ChatMessageListener(instances: InstanceManager) : ImperiumApplication.List
@Command(["t"])
@ClientSide
private suspend fun onTeamChatCommand(sender: CommandSender, @Greedy message: String) {
for (target in Groups.player.toList()) {
for (target in Entities.PLAYERS) {
if (sender.player.team() != target.team()) continue
val filtered = pipeline.pump(ChatMessageContext(sender.player, target, message))
if (filtered.isBlank()) continue
Expand Down Expand Up @@ -170,7 +170,7 @@ private fun interceptChatMessage(sender: Player, message: String, pipeline: Chat
}

// The null target represents the server, for logging and event purposes
(Groups.player.toList() + listOf(null)).forEach { target ->
(Entities.PLAYERS + listOf(null)).forEach { target ->
ImperiumScope.MAIN.launch {
val result = pipeline.pump(ChatMessageContext(sender, target, escaped))
if (result.isBlank()) return@launch
Expand Down

This file was deleted.

Loading

0 comments on commit fe6683b

Please sign in to comment.