From f6dc3b5c25c89291b6d236087603dc03a907b093 Mon Sep 17 00:00:00 2001
From: Finley Experience <62483793+phinner@users.noreply.github.com>
Date: Sat, 7 Mar 2026 01:53:11 +0100
Subject: [PATCH 01/15] chore: Use compact license header for ai agents
---
LICENSE_HEADER.md | 15 ---------------
.../imperium.base-conventions.gradle.kts | 2 +-
.../xpdustry/imperium/common/CommonModule.kt | 18 +-----------------
.../imperium/common/account/Account.kt | 18 +-----------------
.../imperium/common/account/AccountManager.kt | 18 +-----------------
.../imperium/common/account/AccountResult.kt | 18 +-----------------
.../imperium/common/account/AccountTable.kt | 18 +-----------------
.../imperium/common/account/Achievement.kt | 18 +-----------------
.../xpdustry/imperium/common/account/Rank.kt | 18 +-----------------
.../imperium/common/account/SessionKey.kt | 18 +-----------------
.../common/annotation/AnnotationScanner.kt | 18 +-----------------
.../application/BaseImperiumApplication.kt | 18 +-----------------
.../imperium/common/application/ExitStatus.kt | 18 +-----------------
.../common/application/ImperiumApplication.kt | 18 +-----------------
.../imperium/common/async/ImperiumScope.kt | 18 +-----------------
.../common/bridge/BridgeChatMessage.kt | 18 +-----------------
.../common/bridge/MindustryPlayerMessage.kt | 18 +-----------------
.../common/bridge/MindustryServerMessage.kt | 18 +-----------------
.../imperium/common/bridge/PlayerTracker.kt | 18 +-----------------
.../common/collection/EnumExtensions.kt | 18 +-----------------
.../imperium/common/collection/LimitedList.kt | 18 +-----------------
.../imperium/common/command/ImperiumCommand.kt | 18 +-----------------
.../imperium/common/command/Lowercase.kt | 18 +-----------------
.../imperium/common/config/ColorDecoder.kt | 18 +-----------------
.../imperium/common/config/ImperiumConfig.kt | 18 +-----------------
.../common/config/ImperiumConfigProvider.kt | 18 +-----------------
.../common/content/MapReloadMessage.kt | 18 +-----------------
.../common/content/MindustryGamemode.kt | 18 +-----------------
.../imperium/common/content/MindustryMap.kt | 18 +-----------------
.../common/content/MindustryMapManager.kt | 18 +-----------------
.../common/content/MindustryMapTable.kt | 18 +-----------------
.../common/control/RemoteActionMessage.kt | 18 +-----------------
.../common/database/IdentifierCodec.kt | 18 +-----------------
.../imperium/common/database/SQLDatabase.kt | 18 +-----------------
.../common/database/SQLDatabaseImpl.kt | 18 +-----------------
.../imperium/common/database/SQLProvider.kt | 18 +-----------------
.../common/functional/ImperiumResult.kt | 18 +-----------------
.../imperium/common/geometry/ClusterManager.kt | 18 +-----------------
.../common/history/HistoryRequestMessage.kt | 18 +-----------------
.../common/image/BufferedImageExtensions.kt | 18 +-----------------
.../imperium/common/inject/InstanceKey.kt | 18 +-----------------
.../imperium/common/inject/InstanceManager.kt | 18 +-----------------
.../imperium/common/inject/InstanceProvider.kt | 18 +-----------------
.../imperium/common/message/MessageService.kt | 18 +-----------------
.../imperium/common/message/Messenger.kt | 18 +-----------------
.../imperium/common/message/NoopMessenger.kt | 18 +-----------------
.../common/message/SQLMessageService.kt | 18 +-----------------
.../common/metrics/InfluxDBRegistry.kt | 18 +-----------------
.../xpdustry/imperium/common/metrics/Metric.kt | 18 +-----------------
.../common/metrics/MetricsCollector.kt | 18 +-----------------
.../imperium/common/metrics/MetricsRegistry.kt | 18 +-----------------
.../common/metrics/SystemMetricCollector.kt | 18 +-----------------
.../imperium/common/misc/CaffeineExtensions.kt | 18 +-----------------
.../imperium/common/misc/DiscordExtensions.kt | 18 +-----------------
.../imperium/common/misc/ExposedExtensions.kt | 18 +-----------------
.../imperium/common/misc/LoggerExtensions.kt | 18 +-----------------
.../common/misc/MindustryExtensions.kt | 18 +-----------------
.../imperium/common/misc/StringExtensions.kt | 18 +-----------------
.../imperium/common/network/Discovery.kt | 18 +-----------------
.../common/network/DiscoveryMessage.kt | 18 +-----------------
.../imperium/common/network/HttpExtensions.kt | 18 +-----------------
.../imperium/common/network/SimpleDiscovery.kt | 18 +-----------------
.../common/network/VpnApiIoDetection.kt | 18 +-----------------
.../imperium/common/network/VpnDetection.kt | 18 +-----------------
.../imperium/common/permission/Permission.kt | 18 +-----------------
.../common/security/AddressWhitelist.kt | 18 +-----------------
.../common/security/AddressWhitelistTable.kt | 18 +-----------------
.../imperium/common/security/Identity.kt | 18 +-----------------
.../common/security/PasswordRequirement.kt | 18 +-----------------
.../imperium/common/security/Punishment.kt | 18 +-----------------
.../common/security/PunishmentDuration.kt | 18 +-----------------
.../common/security/PunishmentManager.kt | 18 +-----------------
.../common/security/PunishmentTable.kt | 18 +-----------------
.../imperium/common/security/RateLimiter.kt | 18 +-----------------
.../imperium/common/security/ReportMessage.kt | 18 +-----------------
.../common/security/UsernameRequirement.kt | 18 +-----------------
.../common/security/VerificationMessage.kt | 18 +-----------------
.../serialization/ImperiumSerializers.kt | 18 +-----------------
.../imperium/common/string/Password.kt | 18 +-----------------
.../imperium/common/time/TimeExtensions.kt | 18 +-----------------
.../imperium/common/time/TimeRenderer.kt | 18 +-----------------
.../com/xpdustry/imperium/common/user/User.kt | 18 +-----------------
.../imperium/common/user/UserManager.kt | 18 +-----------------
.../xpdustry/imperium/common/user/UserTable.kt | 18 +-----------------
.../imperium/common/version/ImperiumVersion.kt | 18 +-----------------
.../common/version/MindustryVersion.kt | 18 +-----------------
.../imperium/common/webhook/WebhookChannel.kt | 18 +-----------------
.../imperium/common/webhook/WebhookMessage.kt | 18 +-----------------
.../common/webhook/WebhookMessageSender.kt | 18 +-----------------
.../common/account/SimpleAccountManagerTest.kt | 18 +-----------------
.../common/database/ImperiumC6B36CodecTest.kt | 18 +-----------------
.../common/geometry/ClusterManagerTest.kt | 18 +-----------------
.../common/inject/InstanceManagerTest.kt | 18 +-----------------
.../imperium/common/message/MessageTest.kt | 18 +-----------------
.../common/message/SQLMessageServiceTest.kt | 18 +-----------------
.../imperium/common/message/TestMessenger.kt | 18 +-----------------
.../misc/MindustryConfigExtensionsTest.kt | 18 +-----------------
.../common/security/SimpleRateLimiterTest.kt | 18 +-----------------
.../xpdustry/imperium/discord/DiscordModule.kt | 18 +-----------------
.../imperium/discord/ImperiumDiscord.kt | 18 +-----------------
.../discord/account/RoleSyncListener.kt | 18 +-----------------
.../discord/bridge/MindustryBridgeListener.kt | 18 +-----------------
.../imperium/discord/command/MenuCommand.kt | 18 +-----------------
.../discord/command/MenuCommandRegistry.kt | 18 +-----------------
.../imperium/discord/command/ModalCommand.kt | 18 +-----------------
.../discord/command/ModalCommandRegistry.kt | 18 +-----------------
.../discord/command/PermissionPredicate.kt | 18 +-----------------
.../discord/command/SlashCommandRegistry.kt | 18 +-----------------
.../discord/command/annotation/AlsoAllow.kt | 18 +-----------------
.../discord/command/annotation/Range.kt | 18 +-----------------
.../discord/commands/AccountCommand.kt | 18 +-----------------
.../discord/commands/HistoryCommand.kt | 18 +-----------------
.../imperium/discord/commands/MapCommand.kt | 18 +-----------------
.../discord/commands/MapSearchCommand.kt | 18 +-----------------
.../discord/commands/MapSubmitCommand.kt | 18 +-----------------
.../discord/commands/ModerationCommand.kt | 18 +-----------------
.../imperium/discord/commands/PingCommand.kt | 18 +-----------------
.../imperium/discord/commands/PlayerCommand.kt | 18 +-----------------
.../imperium/discord/commands/ServerCommand.kt | 18 +-----------------
.../imperium/discord/commands/VerifyCommand.kt | 18 +-----------------
.../discord/commands/WhitelistCommand.kt | 18 +-----------------
.../discord/content/MindustryContentHandler.kt | 18 +-----------------
.../content/MindustryContentListener.kt | 18 +-----------------
.../discord/content/MindustryImagePacker.kt | 18 +-----------------
.../discord/metrics/MetricsListener.kt | 18 +-----------------
.../imperium/discord/misc/ImperiumEmojis.kt | 18 +-----------------
.../imperium/discord/misc/JDAExtensions.kt | 18 +-----------------
.../discord/misc/TranslationExtensions.kt | 18 +-----------------
.../imperium/discord/rest/RestListener.kt | 18 +-----------------
.../discord/security/PunishmentListener.kt | 18 +-----------------
.../discord/security/ReportListener.kt | 18 +-----------------
.../imperium/discord/service/DiscordService.kt | 18 +-----------------
.../imperium/mindustry/ImperiumPlugin.kt | 18 +-----------------
.../imperium/mindustry/MindustryModule.kt | 18 +-----------------
.../mindustry/account/AccountCommand.kt | 18 +-----------------
.../imperium/mindustry/account/AccountEvent.kt | 18 +-----------------
.../mindustry/account/AccountListener.kt | 18 +-----------------
.../mindustry/account/AchievementCommand.kt | 18 +-----------------
.../mindustry/account/ChangePasswordWindow.kt | 18 +-----------------
.../imperium/mindustry/account/LoginWindow.kt | 18 +-----------------
.../mindustry/account/RegisterWindow.kt | 18 +-----------------
.../mindustry/account/SharedGuiExtensions.kt | 18 +-----------------
.../mindustry/account/UserSettingsCommand.kt | 18 +-----------------
.../mindustry/bridge/DiscordAudience.kt | 18 +-----------------
.../mindustry/bridge/MindustryPlayerTracker.kt | 18 +-----------------
.../chat/BridgeChatMessageListener.kt | 18 +-----------------
.../imperium/mindustry/chat/ChatCommand.kt | 18 +-----------------
.../imperium/mindustry/chat/FlexListener.kt | 18 +-----------------
.../imperium/mindustry/chat/HereCommand.kt | 18 +-----------------
.../chat/ImperiumPlaceholderProcessor.kt | 18 +-----------------
.../command/CommandAnnotationScanner.kt | 18 +-----------------
.../imperium/mindustry/command/HelpCommand.kt | 18 +-----------------
.../mindustry/command/annotation/Flag.kt | 18 +-----------------
.../command/annotation/RequireAchievement.kt | 18 +-----------------
.../mindustry/command/annotation/Scope.kt | 18 +-----------------
.../mindustry/command/annotation/Side.kt | 18 +-----------------
.../command/vote/AbstractVoteCommand.kt | 18 +-----------------
.../command/vote/SimpleVoteManager.kt | 18 +-----------------
.../imperium/mindustry/command/vote/Vote.kt | 18 +-----------------
.../mindustry/command/vote/VoteManager.kt | 18 +-----------------
.../mindustry/component/DurationComponent.kt | 18 +-----------------
.../ImperiumComponentRendererProvider.kt | 18 +-----------------
.../mindustry/config/ConventionListener.kt | 18 +-----------------
.../mindustry/control/ControlListener.kt | 18 +-----------------
.../mindustry/formation/FormationAI.kt | 18 +-----------------
.../mindustry/formation/FormationContext.kt | 18 +-----------------
.../mindustry/formation/FormationListener.kt | 18 +-----------------
.../mindustry/formation/FormationMember.kt | 18 +-----------------
.../mindustry/formation/FormationPattern.kt | 18 +-----------------
.../formation/SlotAssignmentStrategy.kt | 18 +-----------------
.../imperium/mindustry/game/AlertListener.kt | 18 +-----------------
.../mindustry/game/AntiGriefListener.kt | 18 +-----------------
.../mindustry/game/ChangelogCommand.kt | 18 +-----------------
.../imperium/mindustry/game/ClientDetector.kt | 18 +-----------------
.../mindustry/game/DayNightCycleListener.kt | 18 +-----------------
.../imperium/mindustry/game/GameListener.kt | 18 +-----------------
.../mindustry/game/ImperiumLogicListener.kt | 18 +-----------------
.../imperium/mindustry/game/LogicListener.kt | 18 +-----------------
.../imperium/mindustry/game/MenuToPlayEvent.kt | 18 +-----------------
.../imperium/mindustry/game/PauseListener.kt | 18 +-----------------
.../imperium/mindustry/game/RatingListener.kt | 18 +-----------------
.../imperium/mindustry/game/TeamCommand.kt | 18 +-----------------
.../imperium/mindustry/game/TipListener.kt | 18 +-----------------
.../mindustry/gui/TextFormWindowManager.kt | 18 +-----------------
.../imperium/mindustry/history/Historian.kt | 18 +-----------------
.../imperium/mindustry/history/HistoryActor.kt | 18 +-----------------
.../mindustry/history/HistoryCommand.kt | 18 +-----------------
.../imperium/mindustry/history/HistoryEntry.kt | 18 +-----------------
.../mindustry/history/HistoryRenderer.kt | 18 +-----------------
.../history/config/BaseBlockConfigProvider.kt | 18 +-----------------
.../mindustry/history/config/BlockConfig.kt | 18 +-----------------
.../config/LinkableBlockConfigProvider.kt | 18 +-----------------
.../config/LogicProcessorConfigProvider.kt | 18 +-----------------
.../history/config/StandardProviders.kt | 18 +-----------------
.../imperium/mindustry/map/MapLoader.kt | 18 +-----------------
.../mindustry/metrics/MetricsListener.kt | 18 +-----------------
.../mindustry/misc/DistributorExtensions.kt | 18 +-----------------
.../imperium/mindustry/misc/Entities.kt | 18 +-----------------
.../imperium/mindustry/misc/ImmutablePoint.kt | 18 +-----------------
.../mindustry/misc/MapMetadataHelper.kt | 18 +-----------------
.../mindustry/misc/MindustryExtensions.kt | 18 +-----------------
.../mindustry/misc/PlayerExtensions.kt | 18 +-----------------
.../imperium/mindustry/misc/PlayerMap.kt | 18 +-----------------
.../imperium/mindustry/misc/Rotation.kt | 18 +-----------------
.../permission/ImperiumPermissionListener.kt | 18 +-----------------
.../processing/AbstractProcessorPipeline.kt | 18 +-----------------
.../imperium/mindustry/processing/Processor.kt | 18 +-----------------
.../mindustry/processing/ProcessorPipeline.kt | 18 +-----------------
.../mindustry/security/AdminRequestListener.kt | 18 +-----------------
.../imperium/mindustry/security/AfkListener.kt | 18 +-----------------
.../mindustry/security/AntiEvadeListener.kt | 18 +-----------------
.../mindustry/security/BadWordDetector.kt | 18 +-----------------
.../security/CrackedClientGatekeeper.kt | 18 +-----------------
.../mindustry/security/DdosGatekeeper.kt | 18 +-----------------
.../mindustry/security/GatekeeperListener.kt | 18 +-----------------
.../mindustry/security/GatekeeperPipeline.kt | 18 +-----------------
.../mindustry/security/MarkedPlayerManager.kt | 18 +-----------------
.../mindustry/security/MindustryRules.kt | 18 +-----------------
.../mindustry/security/ModerationCommand.kt | 18 +-----------------
.../mindustry/security/NoHornyListener.kt | 18 +-----------------
.../mindustry/security/PunishmentListener.kt | 18 +-----------------
.../mindustry/security/ReportCommand.kt | 18 +-----------------
.../mindustry/security/VoteKickCommand.kt | 18 +-----------------
.../mindustry/security/VpnGatekeeper.kt | 18 +-----------------
.../mindustry/telemetry/DumpCommand.kt | 18 +-----------------
.../imperium/mindustry/translation/Messages.kt | 18 +-----------------
.../mindustry/world/CoreBlockListener.kt | 18 +-----------------
.../mindustry/world/ExcavateCommand.kt | 18 +-----------------
.../imperium/mindustry/world/HubListener.kt | 18 +-----------------
.../imperium/mindustry/world/ItemCommand.kt | 18 +-----------------
.../imperium/mindustry/world/KillAllCommand.kt | 18 +-----------------
.../imperium/mindustry/world/MapListener.kt | 18 +-----------------
.../mindustry/world/ResourceHudListener.kt | 18 +-----------------
.../mindustry/world/RockTheVoteCommand.kt | 18 +-----------------
.../imperium/mindustry/world/SaveCommand.kt | 18 +-----------------
.../imperium/mindustry/world/SpawnCommand.kt | 18 +-----------------
.../imperium/mindustry/world/SwitchCommand.kt | 18 +-----------------
.../imperium/mindustry/world/WaveCommand.kt | 18 +-----------------
.../mindustry/world/WelcomeListener.kt | 18 +-----------------
.../mindustry/world/WorldEditCommand.kt | 18 +-----------------
240 files changed, 239 insertions(+), 4062 deletions(-)
delete mode 100644 LICENSE_HEADER.md
diff --git a/LICENSE_HEADER.md b/LICENSE_HEADER.md
deleted file mode 100644
index 39efb63bc..000000000
--- a/LICENSE_HEADER.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Imperium, the software collection powering the Chaotic Neutral network.
-Copyright (C) 2024 Xpdustry
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
\ No newline at end of file
diff --git a/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts b/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts
index ca10484f7..f2fc1fb25 100644
--- a/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts
+++ b/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts
@@ -52,7 +52,7 @@ dependencies {
spotless {
kotlin {
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(120) }
- licenseHeader(toLongComment(rootProject.file("LICENSE_HEADER.md").readText()))
+ licenseHeader("// SPDX-License-Identifier: GPL-3.0-only")
trimTrailingWhitespace()
endWithNewline()
}
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/CommonModule.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/CommonModule.kt
index 6db8b4d27..3b4c23b9c 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/CommonModule.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/CommonModule.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common
import com.google.common.util.concurrent.MoreExecutors
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Account.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Account.kt
index a5d9d4816..8f71e72e8 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Account.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Account.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import java.time.Instant
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt
index 69b3fc623..bf5dc74bf 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountResult.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountResult.kt
index 5088615e2..901649a0d 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountResult.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountResult.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import com.xpdustry.imperium.common.security.PasswordRequirement
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt
index 2ef0f57c0..a39877d39 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import java.time.Duration
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Achievement.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Achievement.kt
index 6961cf6b3..9666bb444 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Achievement.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Achievement.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
enum class Achievement {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Rank.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Rank.kt
index bbab02cdc..1183b55af 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Rank.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/Rank.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/SessionKey.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/SessionKey.kt
index a19fada47..5ac134746 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/SessionKey.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/SessionKey.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import java.net.InetAddress
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/annotation/AnnotationScanner.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/annotation/AnnotationScanner.kt
index f38722185..4993ec572 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/annotation/AnnotationScanner.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/annotation/AnnotationScanner.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.annotation
interface AnnotationScanner {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/BaseImperiumApplication.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/BaseImperiumApplication.kt
index 544fd28a7..4df08f945 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/BaseImperiumApplication.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/BaseImperiumApplication.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.application
import com.xpdustry.imperium.common.inject.InstanceManager
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ExitStatus.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ExitStatus.kt
index 02af3c944..c8b2a6592 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ExitStatus.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ExitStatus.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.application
enum class ExitStatus {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ImperiumApplication.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ImperiumApplication.kt
index 1c025338d..388922270 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ImperiumApplication.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/application/ImperiumApplication.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.application
import com.xpdustry.imperium.common.inject.InstanceManager
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/async/ImperiumScope.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/async/ImperiumScope.kt
index 225f66753..2a581564a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/async/ImperiumScope.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/async/ImperiumScope.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.async
import kotlinx.coroutines.CoroutineScope
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/BridgeChatMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/BridgeChatMessage.kt
index 519e157e0..9b7cae977 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/BridgeChatMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/BridgeChatMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.bridge
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryPlayerMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryPlayerMessage.kt
index cb1c0fae8..bea09721a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryPlayerMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryPlayerMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.bridge
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryServerMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryServerMessage.kt
index f91f0df6f..d1174e28f 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryServerMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/MindustryServerMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.bridge
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/PlayerTracker.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/PlayerTracker.kt
index 6f595ce2d..0c569c5ff 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/PlayerTracker.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/bridge/PlayerTracker.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.bridge
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/EnumExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/EnumExtensions.kt
index 8c248c15d..56d914cf2 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/EnumExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/EnumExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.collection
import java.util.EnumSet
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/LimitedList.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/LimitedList.kt
index 55400c91f..277b95b66 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/LimitedList.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/collection/LimitedList.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.collection
import java.util.LinkedList
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/ImperiumCommand.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/ImperiumCommand.kt
index 2aa6019f6..201a5d9e5 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/ImperiumCommand.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/ImperiumCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.command
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/Lowercase.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/Lowercase.kt
index 77bddbc9a..5215b1d0f 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/Lowercase.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/command/Lowercase.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.command
@Target(AnnotationTarget.VALUE_PARAMETER) @Retention(AnnotationRetention.RUNTIME) annotation class Lowercase
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ColorDecoder.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ColorDecoder.kt
index 9914a13d7..80766e1be 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ColorDecoder.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ColorDecoder.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.config
import com.sksamuel.hoplite.ConfigFailure
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfig.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfig.kt
index d63fecd1f..9338ebdab 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfig.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfig.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.config
import com.google.common.net.InetAddresses
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfigProvider.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfigProvider.kt
index e4a3e824e..1dbbb0748 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfigProvider.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/config/ImperiumConfigProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.config
import com.sksamuel.hoplite.ConfigException
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MapReloadMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MapReloadMessage.kt
index 823cbba5d..6f1def308 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MapReloadMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MapReloadMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.content
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryGamemode.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryGamemode.kt
index 1d0012b73..faf898990 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryGamemode.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryGamemode.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.content
enum class MindustryGamemode(val pvp: Boolean = false) {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMap.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMap.kt
index 7c0fe4a73..76e48ded6 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMap.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMap.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.content
import java.time.Instant
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt
index 2fa210ae2..02eee64ac 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.content
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt
index 403132fc7..3cf9e1bed 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.content
import com.xpdustry.imperium.common.misc.mediumblob
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/control/RemoteActionMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/control/RemoteActionMessage.kt
index a11d29588..7a5036273 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/control/RemoteActionMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/control/RemoteActionMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.control
import com.xpdustry.imperium.common.application.ExitStatus
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/IdentifierCodec.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/IdentifierCodec.kt
index 5fe6b28af..b2acb3d1a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/IdentifierCodec.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/IdentifierCodec.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.database
interface IdentifierCodec {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabase.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabase.kt
index 58b8c84ca..1f126e02d 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabase.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabase.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.database
import java.time.Instant
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabaseImpl.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabaseImpl.kt
index 0ddf40a85..639a6fd53 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabaseImpl.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLDatabaseImpl.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.database
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt
index 91c26fa0a..75a0b5ecb 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.database
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/functional/ImperiumResult.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/functional/ImperiumResult.kt
index 4a101a5c2..bd4a219bb 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/functional/ImperiumResult.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/functional/ImperiumResult.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.functional
sealed interface ImperiumResult {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/geometry/ClusterManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/geometry/ClusterManager.kt
index 4288e0f41..e9c77a4b9 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/geometry/ClusterManager.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/geometry/ClusterManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.geometry
import java.util.LinkedList
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/history/HistoryRequestMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/history/HistoryRequestMessage.kt
index 43ff9e418..ff713b464 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/history/HistoryRequestMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/history/HistoryRequestMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.history
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/image/BufferedImageExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/image/BufferedImageExtensions.kt
index a1b90acf9..4b76767be 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/image/BufferedImageExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/image/BufferedImageExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.image
import java.awt.image.BufferedImage
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceKey.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceKey.kt
index 451dec339..2932f288c 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceKey.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceKey.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.inject
import kotlin.reflect.KClass
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceManager.kt
index c4a4f566a..1ee582fe2 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceManager.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.inject
import kotlin.reflect.KClass
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceProvider.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceProvider.kt
index 02730df01..8aedd1b17 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceProvider.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/inject/InstanceProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.inject
fun interface InstanceProvider {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/MessageService.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/MessageService.kt
index 5b064c631..a76d76e51 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/MessageService.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/MessageService.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import kotlin.reflect.KClass
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/Messenger.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/Messenger.kt
index d00e5bcd9..f5a8c839d 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/Messenger.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/Messenger.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import kotlin.reflect.KClass
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/NoopMessenger.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/NoopMessenger.kt
index bf744aee4..2829b5dab 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/NoopMessenger.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/NoopMessenger.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/SQLMessageService.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/SQLMessageService.kt
index e52b1daf5..36c3eae0f 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/SQLMessageService.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/message/SQLMessageService.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/InfluxDBRegistry.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/InfluxDBRegistry.kt
index fa8b8713d..42477002a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/InfluxDBRegistry.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/InfluxDBRegistry.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.metrics
import com.influxdb.client.InfluxDBClient
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/Metric.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/Metric.kt
index 5e3ea2f50..ccad61c29 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/Metric.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/Metric.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.metrics
const val NANOSECONDS_PER_MILLISECOND: Double = 1E6
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsCollector.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsCollector.kt
index aaad02095..6d9b0ffce 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsCollector.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsCollector.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.metrics
import com.xpdustry.imperium.common.misc.buildCache
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsRegistry.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsRegistry.kt
index b27d15a77..46746abcf 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsRegistry.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/MetricsRegistry.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.metrics
interface MetricsRegistry {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/SystemMetricCollector.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/SystemMetricCollector.kt
index d08a95994..40765fe1d 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/SystemMetricCollector.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/metrics/SystemMetricCollector.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.metrics
import com.sun.management.OperatingSystemMXBean as SunOperatingSystemMXBean
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/CaffeineExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/CaffeineExtensions.kt
index 9da280519..4edd99853 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/CaffeineExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/CaffeineExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import com.github.benmanes.caffeine.cache.AsyncCache
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/DiscordExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/DiscordExtensions.kt
index 2954add9c..8e34cdb09 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/DiscordExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/DiscordExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import java.awt.Color
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt
index 2f47eeb16..273b9e583 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import org.jetbrains.exposed.sql.BlobColumnType
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/LoggerExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/LoggerExtensions.kt
index f4b28a6ca..51e6118f4 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/LoggerExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/LoggerExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import kotlin.properties.ReadOnlyProperty
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/MindustryExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/MindustryExtensions.kt
index f371b398f..df72e1eb3 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/MindustryExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/MindustryExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import com.google.common.primitives.Longs
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/StringExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/StringExtensions.kt
index 5194f7f35..a5f844c6d 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/StringExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/StringExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import com.google.common.net.InetAddresses
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/Discovery.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/Discovery.kt
index 289c93fc5..f7d2e49a6 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/Discovery.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/Discovery.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.network
import com.xpdustry.imperium.common.serialization.SerializableInetAddress
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/DiscoveryMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/DiscoveryMessage.kt
index 316386288..8ce08b923 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/DiscoveryMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/DiscoveryMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.network
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/HttpExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/HttpExtensions.kt
index ae09a0c1d..4a367ac50 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/HttpExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/HttpExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.network
import java.io.IOException
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/SimpleDiscovery.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/SimpleDiscovery.kt
index a620d445b..0bce35086 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/SimpleDiscovery.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/SimpleDiscovery.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.network
import com.google.common.cache.Cache
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnApiIoDetection.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnApiIoDetection.kt
index 0d4d45540..2830fef3a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnApiIoDetection.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnApiIoDetection.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.network
import com.xpdustry.imperium.common.config.NetworkConfig
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnDetection.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnDetection.kt
index 21b308688..c15de7708 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnDetection.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/network/VpnDetection.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.network
import java.net.InetAddress
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/permission/Permission.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/permission/Permission.kt
index b4080cd1e..6563dfabb 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/permission/Permission.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/permission/Permission.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.permission
// TODO Migrate all commands to permissions, then refactor rank system to a role system
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt
index a3a6e7786..05cc7321e 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt
index 1bc7da6c1..e0e64fd6a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import org.jetbrains.exposed.sql.Column
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Identity.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Identity.kt
index e1db95d63..ca6f3a82a 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Identity.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Identity.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.serialization.SerializableInetAddress
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PasswordRequirement.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PasswordRequirement.kt
index 95c5bc1ed..c318f4ccd 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PasswordRequirement.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PasswordRequirement.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.string.Password
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Punishment.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Punishment.kt
index 4c2b78a09..901ec2b90 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Punishment.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/Punishment.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.misc.MindustryUUIDAsLong
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentDuration.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentDuration.kt
index 122a423d9..135f583f1 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentDuration.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentDuration.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import kotlin.time.Duration
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt
index a553851a8..f5f5ee95b 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt
index 1cec01db0..52e61c0b0 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.user.UserTable
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/RateLimiter.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/RateLimiter.kt
index c33dff236..961fe1d40 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/RateLimiter.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/RateLimiter.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.google.common.cache.CacheBuilder
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/ReportMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/ReportMessage.kt
index 918927966..8b71aacf1 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/ReportMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/ReportMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/UsernameRequirement.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/UsernameRequirement.kt
index 560c97f90..16ac511cf 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/UsernameRequirement.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/UsernameRequirement.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
sealed interface UsernameRequirement {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/VerificationMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/VerificationMessage.kt
index 856d9d42f..5fd20b0a3 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/VerificationMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/VerificationMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import com.xpdustry.imperium.common.message.Message
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/serialization/ImperiumSerializers.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/serialization/ImperiumSerializers.kt
index 435accdfd..3c5a1905b 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/serialization/ImperiumSerializers.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/serialization/ImperiumSerializers.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.serialization
import com.google.common.net.InetAddresses
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/string/Password.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/string/Password.kt
index b2aba515b..a5603bbb3 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/string/Password.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/string/Password.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.string
import java.security.SecureRandom
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeExtensions.kt
index 2c91e8f2c..4cfc53c24 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeExtensions.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.time
import java.time.temporal.TemporalUnit
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeRenderer.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeRenderer.kt
index 7453c0d43..2fff86a66 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeRenderer.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/time/TimeRenderer.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.time
import com.xpdustry.imperium.common.config.ImperiumConfig
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/User.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/User.kt
index c95162ebe..78cb6a0c6 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/User.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/User.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.user
import com.xpdustry.imperium.common.account.Achievement
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt
index 84d9e9be4..b606bf41b 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.user
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt
index c99707eb9..d7df580a2 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.user
import org.jetbrains.exposed.dao.id.IntIdTable
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/ImperiumVersion.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/ImperiumVersion.kt
index dd960f5fd..78b1ddf23 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/ImperiumVersion.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/ImperiumVersion.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.version
import kotlinx.serialization.Serializable
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/MindustryVersion.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/MindustryVersion.kt
index 605f4e827..7f1aa6a1b 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/MindustryVersion.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/version/MindustryVersion.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.version
import kotlinx.serialization.Serializable
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookChannel.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookChannel.kt
index 765dd82ae..9eeb278bb 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookChannel.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookChannel.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.webhook
enum class WebhookChannel {
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessage.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessage.kt
index f790fa959..af5895da6 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessage.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessage.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.webhook
import java.awt.Color
diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessageSender.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessageSender.kt
index 08345011b..6eedf224b 100644
--- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessageSender.kt
+++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/webhook/WebhookMessageSender.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.webhook
import com.xpdustry.imperium.common.async.ImperiumScope
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/account/SimpleAccountManagerTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/account/SimpleAccountManagerTest.kt
index 10537fd58..9706c0b10 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/account/SimpleAccountManagerTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/account/SimpleAccountManagerTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.account
import com.xpdustry.imperium.common.application.BaseImperiumApplication
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/database/ImperiumC6B36CodecTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/database/ImperiumC6B36CodecTest.kt
index 17bcc2fdb..967b9e2ff 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/database/ImperiumC6B36CodecTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/database/ImperiumC6B36CodecTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.database
import org.junit.jupiter.api.Assertions.assertEquals
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/geometry/ClusterManagerTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/geometry/ClusterManagerTest.kt
index ceb60e8fc..2233b1978 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/geometry/ClusterManagerTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/geometry/ClusterManagerTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.geometry
import org.junit.jupiter.api.Assertions
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/inject/InstanceManagerTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/inject/InstanceManagerTest.kt
index 3c361e976..8f33f5ff6 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/inject/InstanceManagerTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/inject/InstanceManagerTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.inject
import org.junit.jupiter.api.Assertions
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/MessageTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/MessageTest.kt
index 118f28e37..7614a1dc9 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/MessageTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/MessageTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import io.github.classgraph.ClassGraph
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/SQLMessageServiceTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/SQLMessageServiceTest.kt
index 4800867d7..baeebcebc 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/SQLMessageServiceTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/SQLMessageServiceTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import com.sksamuel.hoplite.Secret
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/TestMessenger.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/TestMessenger.kt
index e1a5f1bff..3c9503d90 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/TestMessenger.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/message/TestMessenger.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.message
import kotlin.reflect.KClass
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/misc/MindustryConfigExtensionsTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/misc/MindustryConfigExtensionsTest.kt
index ea4193962..b1cbcca07 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/misc/MindustryConfigExtensionsTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/misc/MindustryConfigExtensionsTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.misc
import org.junit.jupiter.api.Assertions
diff --git a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/security/SimpleRateLimiterTest.kt b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/security/SimpleRateLimiterTest.kt
index e60d777f4..5d7ab0253 100644
--- a/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/security/SimpleRateLimiterTest.kt
+++ b/imperium-common/src/test/kotlin/com/xpdustry/imperium/common/security/SimpleRateLimiterTest.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.common.security
import kotlin.time.Duration.Companion.seconds
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt
index da0316c77..43a0c2920 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord
import com.xpdustry.imperium.common.annotation.AnnotationScanner
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt
index e6ae01dea..29408ccec 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord
import com.xpdustry.imperium.common.annotation.AnnotationScanner
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/account/RoleSyncListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/account/RoleSyncListener.kt
index 87a910cf0..f9bbcb5c3 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/account/RoleSyncListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/account/RoleSyncListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.account
import com.xpdustry.imperium.common.account.AccountManager
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/bridge/MindustryBridgeListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/bridge/MindustryBridgeListener.kt
index 9feb8789c..3e1e2fc39 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/bridge/MindustryBridgeListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/bridge/MindustryBridgeListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.bridge
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommand.kt
index 24c731ead..08ba4cb2a 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt
index fa30614ac..7b557073e 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command
import com.xpdustry.imperium.common.annotation.AnnotationScanner
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommand.kt
index f29546086..fc36c9d1a 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command
@Target(AnnotationTarget.FUNCTION)
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt
index 4a643be69..776fe653a 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command
import com.xpdustry.imperium.common.annotation.AnnotationScanner
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/PermissionPredicate.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/PermissionPredicate.kt
index fb2449682..7eae0f3e4 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/PermissionPredicate.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/PermissionPredicate.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command
import net.dv8tion.jda.api.interactions.Interaction
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt
index e9f7a96bf..f233f83d5 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command
import com.xpdustry.imperium.common.account.Achievement
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/AlsoAllow.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/AlsoAllow.kt
index 994da91c5..69bdb0bbe 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/AlsoAllow.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/AlsoAllow.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command.annotation
import com.xpdustry.imperium.common.permission.Permission
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/Range.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/Range.kt
index f50528b78..81b4bccbc 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/Range.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/annotation/Range.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.command.annotation
// TODO
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/AccountCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/AccountCommand.kt
index b2bb99c4b..806781ffd 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/AccountCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/AccountCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.AccountManager
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/HistoryCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/HistoryCommand.kt
index fdc59dca2..e5b8381c5 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/HistoryCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/HistoryCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt
index 099381e14..4e89f774b 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt
index 518b9075b..23bcae1b9 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.github.benmanes.caffeine.cache.RemovalCause
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt
index aa0a5c0ef..ddf19c3f3 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ModerationCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ModerationCommand.kt
index 411ec1472..8d56f7cef 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ModerationCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ModerationCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PingCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PingCommand.kt
index ed9c5c2d7..e4b95a116 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PingCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PingCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PlayerCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PlayerCommand.kt
index eaaf6564b..a0d06b41e 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PlayerCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/PlayerCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ServerCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ServerCommand.kt
index d22097e99..60e9d145d 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ServerCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/ServerCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/VerifyCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/VerifyCommand.kt
index fe77260fb..7624a2163 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/VerifyCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/VerifyCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.AccountManager
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/WhitelistCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/WhitelistCommand.kt
index 0b598619a..9dc7c3c69 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/WhitelistCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/WhitelistCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.commands
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentHandler.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentHandler.kt
index 879dfec56..b25b6ddcd 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentHandler.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentHandler.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.content
import com.xpdustry.imperium.common.misc.stripMindustryColors
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentListener.kt
index 0c5bb6764..655a3a074 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryContentListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.content
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryImagePacker.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryImagePacker.kt
index bffe6e524..e3f8773a7 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryImagePacker.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/content/MindustryImagePacker.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.content
import arc.Core
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/metrics/MetricsListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/metrics/MetricsListener.kt
index 1b808ca82..5c0c145e8 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/metrics/MetricsListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/metrics/MetricsListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.metrics
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/ImperiumEmojis.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/ImperiumEmojis.kt
index 89592e28a..a6200eb79 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/ImperiumEmojis.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/ImperiumEmojis.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.misc
import net.dv8tion.jda.api.entities.emoji.Emoji
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt
index bdc84ab49..1f2ac514d 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.misc
import com.xpdustry.imperium.common.async.ImperiumScope
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/TranslationExtensions.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/TranslationExtensions.kt
index ea9b1a7ee..52161b589 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/TranslationExtensions.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/TranslationExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.misc
import java.util.Locale
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/rest/RestListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/rest/RestListener.kt
index 2653b6588..82b678930 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/rest/RestListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/rest/RestListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.rest
import com.sun.net.httpserver.HttpServer
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/PunishmentListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/PunishmentListener.kt
index 5a8cb26bf..6ab2ee3a0 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/PunishmentListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/PunishmentListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.security
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt
index 70a61ebd5..1cd28cc77 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.security
import com.xpdustry.imperium.common.account.Rank
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/service/DiscordService.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/service/DiscordService.kt
index 27e58091a..6ab37285f 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/service/DiscordService.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/service/DiscordService.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.discord.service
import com.xpdustry.imperium.common.account.AccountManager
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/ImperiumPlugin.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/ImperiumPlugin.kt
index a6c834122..760888ef3 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/ImperiumPlugin.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/ImperiumPlugin.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry
import arc.Application
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/MindustryModule.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/MindustryModule.kt
index 162c8b75a..39cb32fd4 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/MindustryModule.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/MindustryModule.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry
import arc.Core
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountCommand.kt
index 5f21f0cd0..fb4882ef7 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.account
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountEvent.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountEvent.kt
index 238a42763..48f1f4f63 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountEvent.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountEvent.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.account
import mindustry.gen.Player
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountListener.kt
index 91755d520..cf8204306 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AccountListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.account
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AchievementCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AchievementCommand.kt
index a5ed32174..4b65c5cc7 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AchievementCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/AchievementCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.account
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/ChangePasswordWindow.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/ChangePasswordWindow.kt
index dfaf140e8..ea3e6c221 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/ChangePasswordWindow.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/ChangePasswordWindow.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
@file:Suppress("FunctionName")
package com.xpdustry.imperium.mindustry.account
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/LoginWindow.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/LoginWindow.kt
index 0191a1981..1715d7878 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/LoginWindow.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/LoginWindow.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
@file:Suppress("FunctionName")
package com.xpdustry.imperium.mindustry.account
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/RegisterWindow.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/RegisterWindow.kt
index 53ce75389..a9f2756bf 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/RegisterWindow.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/RegisterWindow.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
@file:Suppress("FunctionName")
package com.xpdustry.imperium.mindustry.account
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/SharedGuiExtensions.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/SharedGuiExtensions.kt
index 5fc74df66..e403c78a3 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/SharedGuiExtensions.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/SharedGuiExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.account
import com.xpdustry.distributor.api.gui.Window
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/UserSettingsCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/UserSettingsCommand.kt
index 1ce47575b..923bfbc38 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/UserSettingsCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/account/UserSettingsCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.account
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/DiscordAudience.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/DiscordAudience.kt
index e75d86025..c97767ffb 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/DiscordAudience.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/DiscordAudience.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.bridge
import com.xpdustry.distributor.api.audience.Audience
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/MindustryPlayerTracker.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/MindustryPlayerTracker.kt
index 9625ebf25..fe92e6822 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/MindustryPlayerTracker.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/bridge/MindustryPlayerTracker.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.bridge
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/BridgeChatMessageListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/BridgeChatMessageListener.kt
index 98f4d3a67..1a4cb0081 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/BridgeChatMessageListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/BridgeChatMessageListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.chat
import arc.util.Strings
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ChatCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ChatCommand.kt
index 7b06e6643..fb0e79db2 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ChatCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ChatCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.chat
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/FlexListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/FlexListener.kt
index 13e0295b9..ac4e8811c 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/FlexListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/FlexListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.chat
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/HereCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/HereCommand.kt
index 189014d60..2be19f05f 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/HereCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/HereCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.chat
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ImperiumPlaceholderProcessor.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ImperiumPlaceholderProcessor.kt
index e1b522386..d53d9cbb1 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ImperiumPlaceholderProcessor.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/chat/ImperiumPlaceholderProcessor.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.chat
import arc.graphics.Color
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/CommandAnnotationScanner.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/CommandAnnotationScanner.kt
index cf40bd3ac..30d9b4ea6 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/CommandAnnotationScanner.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/CommandAnnotationScanner.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command
import arc.util.CommandHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/HelpCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/HelpCommand.kt
index 81a9d04a8..8ad4d5ddf 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/HelpCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/HelpCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command
import com.xpdustry.distributor.api.command.CommandElement
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Flag.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Flag.kt
index bd23c4770..af9bc24d1 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Flag.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Flag.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.annotation
@Target(AnnotationTarget.VALUE_PARAMETER)
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/RequireAchievement.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/RequireAchievement.kt
index 9cc714ed3..578dafcfd 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/RequireAchievement.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/RequireAchievement.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.annotation
import com.xpdustry.imperium.common.account.Achievement
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Scope.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Scope.kt
index 17d69402b..3c735b4a8 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Scope.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Scope.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.annotation
import com.xpdustry.imperium.common.content.MindustryGamemode
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Side.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Side.kt
index 22c0c7d72..ac438286f 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Side.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/annotation/Side.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.annotation
@Target(AnnotationTarget.FUNCTION) @Retention(AnnotationRetention.RUNTIME) annotation class ClientSide
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/AbstractVoteCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/AbstractVoteCommand.kt
index 98750ca5c..36c3c7d35 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/AbstractVoteCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/AbstractVoteCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.vote
import com.xpdustry.distributor.api.plugin.MindustryPlugin
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/SimpleVoteManager.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/SimpleVoteManager.kt
index a295093a3..5b3267099 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/SimpleVoteManager.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/SimpleVoteManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.vote
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/Vote.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/Vote.kt
index cd63ebc3d..9fd74d18a 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/Vote.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/Vote.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.vote
enum class Vote {
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/VoteManager.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/VoteManager.kt
index 2d9bdfad1..da1000030 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/VoteManager.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/command/vote/VoteManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.command.vote
import com.xpdustry.imperium.common.misc.MindustryUUID
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/DurationComponent.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/DurationComponent.kt
index 5547d9722..ad6b3431c 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/DurationComponent.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/DurationComponent.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.component
import com.xpdustry.distributor.api.component.Component
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/ImperiumComponentRendererProvider.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/ImperiumComponentRendererProvider.kt
index 1d32fab78..ce073a27f 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/ImperiumComponentRendererProvider.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/component/ImperiumComponentRendererProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.component
import com.xpdustry.distributor.api.component.Component
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/config/ConventionListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/config/ConventionListener.kt
index 94c5eb4a1..9098dc99c 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/config/ConventionListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/config/ConventionListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.config
import com.xpdustry.distributor.api.annotation.TaskHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/control/ControlListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/control/ControlListener.kt
index 4f3a92e3f..eb552dfd9 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/control/ControlListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/control/ControlListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.control
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationAI.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationAI.kt
index e3e621a8e..e2db2b115 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationAI.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationAI.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.formation
import arc.math.Mathf
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationContext.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationContext.kt
index 9711dda89..4efeab72f 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationContext.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationContext.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.formation
import mindustry.gen.Unit as MindustryUnit
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationListener.kt
index 74f1602fe..4a12e69a3 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.formation
import arc.math.Mathf
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationMember.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationMember.kt
index 6c8cae3e1..b24c0f271 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationMember.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationMember.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.formation
import arc.math.geom.Vec2
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationPattern.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationPattern.kt
index 599b065af..0b51f6684 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationPattern.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/FormationPattern.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.formation
import arc.math.Angles
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/SlotAssignmentStrategy.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/SlotAssignmentStrategy.kt
index c47ae82fa..c6b984654 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/SlotAssignmentStrategy.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/formation/SlotAssignmentStrategy.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.formation
import arc.math.Mathf
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AlertListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AlertListener.kt
index 9b71be6f3..3d397e9fb 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AlertListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AlertListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import arc.func.Cons
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AntiGriefListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AntiGriefListener.kt
index 77b216a9d..4e5ecdc1c 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AntiGriefListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/AntiGriefListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ChangelogCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ChangelogCommand.kt
index 5a9904054..587040586 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ChangelogCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ChangelogCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ClientDetector.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ClientDetector.kt
index ee2a6ec7c..ae5abcc51 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ClientDetector.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ClientDetector.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.plugin.MindustryPlugin
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/DayNightCycleListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/DayNightCycleListener.kt
index ca92a9225..d029458c6 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/DayNightCycleListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/DayNightCycleListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import arc.math.Interp
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/GameListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/GameListener.kt
index 19e2d4c1a..1cbb679bd 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/GameListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/GameListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ImperiumLogicListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ImperiumLogicListener.kt
index 814bd1766..f5b148156 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ImperiumLogicListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/ImperiumLogicListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/LogicListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/LogicListener.kt
index 72662ba5a..406bcae6a 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/LogicListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/LogicListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/MenuToPlayEvent.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/MenuToPlayEvent.kt
index 2098ffd40..d17964f11 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/MenuToPlayEvent.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/MenuToPlayEvent.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
/**
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/PauseListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/PauseListener.kt
index 7bec1436d..8411070ac 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/PauseListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/PauseListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/RatingListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/RatingListener.kt
index 22b1a587b..4636fdce8 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/RatingListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/RatingListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TeamCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TeamCommand.kt
index b82f5b0c0..b2f1ff814 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TeamCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TeamCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TipListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TipListener.kt
index 1eee410c4..0df956eb3 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TipListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/game/TipListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.game
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/gui/TextFormWindowManager.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/gui/TextFormWindowManager.kt
index fdac38ce8..9ac1a0fc1 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/gui/TextFormWindowManager.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/gui/TextFormWindowManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.gui
import com.xpdustry.distributor.api.component.ListComponent.components
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/Historian.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/Historian.kt
index 7f7190cf7..aae5b06ca 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/Historian.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/Historian.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history
import arc.math.geom.Point2
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryActor.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryActor.kt
index 5445da7e5..9f4fc9c1f 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryActor.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryActor.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history
import com.xpdustry.imperium.common.misc.MindustryUUID
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryCommand.kt
index 619f3f947..b4b71fe15 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history
import arc.graphics.Color
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryEntry.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryEntry.kt
index 1913fa645..8d3372951 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryEntry.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryEntry.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history
import com.xpdustry.imperium.mindustry.history.config.BlockConfig
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryRenderer.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryRenderer.kt
index 286822abc..7b3b0b541 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryRenderer.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/HistoryRenderer.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history
import com.xpdustry.distributor.api.component.Component
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BaseBlockConfigProvider.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BaseBlockConfigProvider.kt
index e3e300697..b2103a825 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BaseBlockConfigProvider.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BaseBlockConfigProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history.config
import com.xpdustry.imperium.mindustry.history.HistoryEntry
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BlockConfig.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BlockConfig.kt
index 2df9f7ef0..c53d2e527 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BlockConfig.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/BlockConfig.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history.config
import com.xpdustry.imperium.mindustry.history.HistoryEntry
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LinkableBlockConfigProvider.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LinkableBlockConfigProvider.kt
index 9a44ea27f..3aea80bfe 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LinkableBlockConfigProvider.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LinkableBlockConfigProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history.config
import arc.math.geom.Point2
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LogicProcessorConfigProvider.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LogicProcessorConfigProvider.kt
index a49612631..7723e029b 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LogicProcessorConfigProvider.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/LogicProcessorConfigProvider.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history.config
import com.xpdustry.imperium.mindustry.history.HistoryEntry
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/StandardProviders.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/StandardProviders.kt
index d22db2907..82cf494d8 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/StandardProviders.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/history/config/StandardProviders.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.history.config
import arc.math.geom.Point2
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/map/MapLoader.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/map/MapLoader.kt
index 13fd1c83a..3360d3be5 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/map/MapLoader.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/map/MapLoader.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.map
import arc.files.Fi
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/metrics/MetricsListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/metrics/MetricsListener.kt
index 97454d4ad..b2e8ed07e 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/metrics/MetricsListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/metrics/MetricsListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.metrics
import arc.Core
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/DistributorExtensions.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/DistributorExtensions.kt
index cc77afbf5..107e7a5c7 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/DistributorExtensions.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/DistributorExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
import arc.struct.ObjectMap
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Entities.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Entities.kt
index 23aa4d2ce..e41da547a 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Entities.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Entities.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
import mindustry.gen.Groups
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/ImmutablePoint.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/ImmutablePoint.kt
index a7a7b4f12..660fc3b04 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/ImmutablePoint.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/ImmutablePoint.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
data class ImmutablePoint(val x: Int, val y: Int)
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MapMetadataHelper.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MapMetadataHelper.kt
index 333184566..391ba28ac 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MapMetadataHelper.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MapMetadataHelper.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
import com.xpdustry.imperium.common.misc.LoggerDelegate
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MindustryExtensions.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MindustryExtensions.kt
index b39e90f9b..a274b0b09 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MindustryExtensions.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/MindustryExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
import arc.graphics.Color
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerExtensions.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerExtensions.kt
index 9fb26b87f..cd5e2e03b 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerExtensions.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerExtensions.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
import com.google.common.primitives.Longs
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerMap.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerMap.kt
index 78dab51c2..ed5818405 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerMap.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/PlayerMap.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Rotation.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Rotation.kt
index 2b77cc4ec..e9fb70bef 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Rotation.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/misc/Rotation.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.misc
enum class Rotation {
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/permission/ImperiumPermissionListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/permission/ImperiumPermissionListener.kt
index 0451f32be..29928c54d 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/permission/ImperiumPermissionListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/permission/ImperiumPermissionListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.permission
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/AbstractProcessorPipeline.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/AbstractProcessorPipeline.kt
index 3e0940fcd..5bebccf09 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/AbstractProcessorPipeline.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/AbstractProcessorPipeline.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.processing
import com.xpdustry.distributor.api.util.Priority
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/Processor.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/Processor.kt
index 986a9e4b6..99ba14e22 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/Processor.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/Processor.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.processing
import com.xpdustry.distributor.api.util.Priority
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/ProcessorPipeline.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/ProcessorPipeline.kt
index f0f7671f6..6ba501927 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/ProcessorPipeline.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/processing/ProcessorPipeline.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.processing
import com.xpdustry.distributor.api.util.Priority
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AdminRequestListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AdminRequestListener.kt
index c937eb78b..782ef008a 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AdminRequestListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AdminRequestListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import arc.Events
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AfkListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AfkListener.kt
index 61ac99a91..b3d3dab33 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AfkListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AfkListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AntiEvadeListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AntiEvadeListener.kt
index d94d01038..9eb250a7f 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AntiEvadeListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/AntiEvadeListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/BadWordDetector.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/BadWordDetector.kt
index 5a862c212..15334e693 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/BadWordDetector.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/BadWordDetector.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.imperium.common.application.ImperiumApplication
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/CrackedClientGatekeeper.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/CrackedClientGatekeeper.kt
index 9b76aa59a..a1027f619 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/CrackedClientGatekeeper.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/CrackedClientGatekeeper.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.imperium.mindustry.processing.Processor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/DdosGatekeeper.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/DdosGatekeeper.kt
index bb64e17c6..0a01e5ea9 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/DdosGatekeeper.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/DdosGatekeeper.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.google.common.collect.Range
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperListener.kt
index e7aee0a01..426cf61ec 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import arc.Events
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperPipeline.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperPipeline.kt
index b2daddc98..1cee3b72c 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperPipeline.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/GatekeeperPipeline.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MarkedPlayerManager.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MarkedPlayerManager.kt
index 69c3ae454..ca0f5b91a 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MarkedPlayerManager.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MarkedPlayerManager.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.plugin.MindustryPlugin
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MindustryRules.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MindustryRules.kt
index 1a4a6176b..30943a8c8 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MindustryRules.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/MindustryRules.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
enum class MindustryRules {
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ModerationCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ModerationCommand.kt
index 5d35123e0..2cdc3c5db 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ModerationCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ModerationCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/NoHornyListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/NoHornyListener.kt
index db324ed53..01f300a4c 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/NoHornyListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/NoHornyListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/PunishmentListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/PunishmentListener.kt
index 720fe5f02..d51dd7db6 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/PunishmentListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/PunishmentListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import arc.Events
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ReportCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ReportCommand.kt
index a7d819f07..70c48742d 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ReportCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/ReportCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VoteKickCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VoteKickCommand.kt
index 4b282c150..d2ca065ac 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VoteKickCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VoteKickCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VpnGatekeeper.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VpnGatekeeper.kt
index 46b879a71..3bfb4957d 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VpnGatekeeper.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/security/VpnGatekeeper.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.security
import com.xpdustry.imperium.common.misc.DISCORD_INVITATION_LINK
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/telemetry/DumpCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/telemetry/DumpCommand.kt
index 15f80f69a..047d93962 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/telemetry/DumpCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/telemetry/DumpCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.telemetry
import com.sun.management.HotSpotDiagnosticMXBean
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/translation/Messages.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/translation/Messages.kt
index 26cd42078..c28e311d9 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/translation/Messages.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/translation/Messages.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
@file:Suppress("FunctionName")
package com.xpdustry.imperium.mindustry.translation
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/CoreBlockListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/CoreBlockListener.kt
index 3f0394f7f..f17ea8ee1 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/CoreBlockListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/CoreBlockListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ExcavateCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ExcavateCommand.kt
index 2c6559e75..376f15d7b 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ExcavateCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ExcavateCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.graphics.Color
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/HubListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/HubListener.kt
index 9497c2c22..7834e45c1 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/HubListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/HubListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.Core
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ItemCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ItemCommand.kt
index 79d98995b..8a4d78699 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ItemCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ItemCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/KillAllCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/KillAllCommand.kt
index 7d2bcf026..deb124762 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/KillAllCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/KillAllCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/MapListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/MapListener.kt
index 90f271084..c43048e30 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/MapListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/MapListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.files.Fi
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ResourceHudListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ResourceHudListener.kt
index fe95f5bba..edc11b764 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ResourceHudListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/ResourceHudListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.Core
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/RockTheVoteCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/RockTheVoteCommand.kt
index 68227003a..8c870cdd8 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/RockTheVoteCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/RockTheVoteCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.Events
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SaveCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SaveCommand.kt
index a527d62f6..e1c9281ca 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SaveCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SaveCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.Core
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SpawnCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SpawnCommand.kt
index 098fbf843..75b117f40 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SpawnCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SpawnCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.math.geom.Vec2
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SwitchCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SwitchCommand.kt
index 5eb1ff787..f9d9eab8a 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SwitchCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/SwitchCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import com.xpdustry.distributor.api.Distributor
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WaveCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WaveCommand.kt
index 845faffb2..d13879020 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WaveCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WaveCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import com.xpdustry.distributor.api.command.CommandSender
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WelcomeListener.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WelcomeListener.kt
index c4e5ebce0..e7cf46d43 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WelcomeListener.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WelcomeListener.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import com.xpdustry.distributor.api.annotation.EventHandler
diff --git a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WorldEditCommand.kt b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WorldEditCommand.kt
index 2bf49d2b9..1ed761660 100644
--- a/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WorldEditCommand.kt
+++ b/imperium-mindustry/src/main/kotlin/com/xpdustry/imperium/mindustry/world/WorldEditCommand.kt
@@ -1,20 +1,4 @@
-/*
- * Imperium, the software collection powering the Chaotic Neutral network.
- * Copyright (C) 2024 Xpdustry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-License-Identifier: GPL-3.0-only
package com.xpdustry.imperium.mindustry.world
import arc.struct.Seq
From 32d6c467c19f239d16482d428bb8a607486e1ef8 Mon Sep 17 00:00:00 2001
From: Finley Experience <62483793+phinner@users.noreply.github.com>
Date: Sat, 7 Mar 2026 18:59:05 +0100
Subject: [PATCH 02/15] feat(discord): Migrate to jda 6
---
gradle/libs.versions.toml | 4 +-
.../imperium/discord/DiscordModule.kt | 10 +-
.../imperium/discord/ImperiumDiscord.kt | 15 +-
...egistry.kt => DiscordCommandDispatcher.kt} | 457 ++++++++++++------
.../discord/command/MenuCommandRegistry.kt | 118 -----
.../discord/command/ModalCommandRegistry.kt | 96 ----
.../imperium/discord/commands/MapCommand.kt | 4 +-
.../discord/commands/MapSearchCommand.kt | 8 +-
.../discord/commands/MapSubmitCommand.kt | 4 +-
.../imperium/discord/misc/JDAExtensions.kt | 39 +-
.../discord/security/ReportListener.kt | 4 +-
11 files changed, 343 insertions(+), 416 deletions(-)
rename imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/{SlashCommandRegistry.kt => DiscordCommandDispatcher.kt} (58%)
delete mode 100644 imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt
delete mode 100644 imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index bd5aa0f9a..d6687e49b 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -29,7 +29,7 @@ caffeine = "3.2.2"
prettytime = "5.0.9.Final"
time4j = "4.38"
nohorny = "3.0.3"
-jda = "5.6.1"
+jda = "6.3.1"
cloud-core = "2.0.0"
# cloud-translations = "1.0.0-SNAPSHOT"
ahocorasick = "0.6.3"
@@ -96,4 +96,4 @@ kotlin-plugin-serialization = { module = "org.jetbrains.kotlin:kotlin-serializat
[bundles]
cloud = [ "cloud-core"
# , "cloud-translations-core"
-]
\ No newline at end of file
+]
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt
index 43a0c2920..53d52d26c 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/DiscordModule.kt
@@ -7,9 +7,7 @@ import com.xpdustry.imperium.common.inject.get
import com.xpdustry.imperium.common.inject.provider
import com.xpdustry.imperium.common.network.Discovery
import com.xpdustry.imperium.common.version.ImperiumVersion
-import com.xpdustry.imperium.discord.command.MenuCommandRegistry
-import com.xpdustry.imperium.discord.command.ModalCommandRegistry
-import com.xpdustry.imperium.discord.command.SlashCommandRegistry
+import com.xpdustry.imperium.discord.command.DiscordCommandDispatcher
import com.xpdustry.imperium.discord.content.MindustryContentHandler
import com.xpdustry.imperium.discord.content.MindustryToolContentHandler
import com.xpdustry.imperium.discord.service.DiscordService
@@ -23,11 +21,7 @@ fun MutableInstanceManager.registerDiscordModule() {
provider("directory") { Path(".") }
- provider("slash") { SlashCommandRegistry(get(), get()) }
-
- provider("menu") { MenuCommandRegistry(get()) }
-
- provider("modal") { ModalCommandRegistry(get()) }
+ provider { DiscordCommandDispatcher(get(), get()) }
provider { MindustryToolContentHandler(get()) }
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt
index 29408ccec..3a80d357c 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/ImperiumDiscord.kt
@@ -70,22 +70,13 @@ fun main() {
.forEach(application::register)
application.init()
- val scanners =
- listOf(
- application.instances.get("slash"),
- application.instances.get("menu"),
- application.instances.get("modal"),
- )
+ val scanner = application.instances.get()
for (listener in application.listeners) {
- for (scanner in scanners) {
- scanner.scan(listener)
- }
+ scanner.scan(listener)
}
- for (scanner in scanners) {
- scanner.process()
- }
+ scanner.process()
LOGGER.info("Imperium loaded.")
}
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/DiscordCommandDispatcher.kt
similarity index 58%
rename from imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt
rename to imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/DiscordCommandDispatcher.kt
index f233f83d5..6eee000f7 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/SlashCommandRegistry.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/DiscordCommandDispatcher.kt
@@ -4,7 +4,6 @@ package com.xpdustry.imperium.discord.command
import com.xpdustry.imperium.common.account.Achievement
import com.xpdustry.imperium.common.account.Rank
import com.xpdustry.imperium.common.annotation.AnnotationScanner
-import com.xpdustry.imperium.common.application.ImperiumApplication
import com.xpdustry.imperium.common.async.ImperiumScope
import com.xpdustry.imperium.common.command.ImperiumCommand
import com.xpdustry.imperium.common.command.Lowercase
@@ -27,9 +26,11 @@ import kotlin.reflect.KClass
import kotlin.reflect.KClassifier
import kotlin.reflect.KFunction
import kotlin.reflect.KParameter
+import kotlin.reflect.full.callSuspend
import kotlin.reflect.full.callSuspendBy
import kotlin.reflect.full.findAnnotation
import kotlin.reflect.full.hasAnnotation
+import kotlin.reflect.full.isSubclassOf
import kotlin.reflect.full.memberFunctions
import kotlin.reflect.jvm.isAccessible
import kotlinx.coroutines.launch
@@ -37,10 +38,13 @@ import kotlinx.coroutines.runBlocking
import net.dv8tion.jda.api.entities.Message
import net.dv8tion.jda.api.entities.User as DiscordUser
import net.dv8tion.jda.api.entities.User
-import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel
+import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion
+import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent
+import net.dv8tion.jda.api.events.interaction.component.GenericComponentInteractionCreateEvent
import net.dv8tion.jda.api.interactions.DiscordLocale
import net.dv8tion.jda.api.interactions.Interaction
+import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback
import net.dv8tion.jda.api.interactions.commands.OptionMapping
import net.dv8tion.jda.api.interactions.commands.OptionType
import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction
@@ -49,15 +53,15 @@ import net.dv8tion.jda.api.interactions.commands.build.OptionData
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData
import net.dv8tion.jda.api.interactions.commands.build.SubcommandGroupData
+import net.dv8tion.jda.api.interactions.components.ComponentInteraction
+import net.dv8tion.jda.api.interactions.modals.ModalInteraction
-// TODO
-// - This is awful, rewrite it, eventually
-// - Arguments name are case insensitive, quite annoying
-class SlashCommandRegistry(private val discord: DiscordService, private val config: ImperiumConfig) :
- AnnotationScanner, ImperiumApplication.Listener {
- private val containers = mutableListOf()
- private val handlers = mutableMapOf, TypeHandler<*>>()
- private val tree = CommandNode("root", parent = null)
+class DiscordCommandDispatcher(private val discord: DiscordService, private val config: ImperiumConfig) :
+ AnnotationScanner {
+ private val typeHandlers = mutableMapOf, TypeHandler<*>>()
+ private val slashTree = CommandNode("root", parent = null)
+ private val menuHandlers = mutableMapOf>()
+ private val modalHandlers = mutableMapOf>()
init {
registerHandler(String::class, STRING_TYPE_HANDLER)
@@ -65,7 +69,7 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
registerHandler(Long::class, LONG_TYPE_HANDLER)
registerHandler(Boolean::class, BOOLEAN_TYPE_HANDLER)
registerHandler(DiscordUser::class, DISCORD_USER_TYPE_HANDLER)
- registerHandler(GuildChannel::class, CHANNEL_TYPE_HANDLER)
+ registerHandler(GuildChannelUnion::class, CHANNEL_TYPE_HANDLER)
registerHandler(Message.Attachment::class, ATTACHMENT_TYPE_HANDLER)
registerHandler(Duration::class, DURATION_TYPE_HANDLER)
registerHandler(PunishmentDuration::class, EnumTypeHandler(PunishmentDuration::class))
@@ -75,100 +79,52 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
registerHandler(RemoteActionMessage.Action::class, EnumTypeHandler(RemoteActionMessage.Action::class))
}
- override fun process() {
- containers.forEach(::register0)
- compile()
- discord.jda.addSuspendingEventListener { event ->
- val node = tree.resolve(event.interaction.fullCommandName.split(" "))
- val command = node.edge!!
- val arguments = mutableMapOf()
-
- if (!command.permission.test(event)) {
- event
- .deferReply(true)
- .await()
- .sendMessage(":warning: **You do not have permission to use this command.**")
- .await()
- return@addSuspendingEventListener
- }
-
- try {
- for (parameter in command.function.parameters) {
- if (parameter.index == 0) {
- arguments[parameter] = command.container
- continue
- }
-
- if (isSupportedActor(parameter.type.classifier!!)) {
- arguments[parameter] = event.interaction
- continue
- }
-
- val argument = command.arguments.find { it.name == parameter.name!! }!!
- val option =
- try {
- event.getOption(parameter.name!!)?.let { argument.handler.parse(it, parameter) }
- } catch (e: OptionParsingException) {
- event
- .deferReply(true)
- .await()
- .sendMessage(
- ":warning: Failed to parse the **${argument.name}** argument: ${e.message}"
- )
- .await()
- return@addSuspendingEventListener
- }
-
- if (option != null) {
- arguments[parameter] = option
- continue
- }
+ override fun scan(instance: Any) {
+ registerSlashCommands(instance)
+ registerMenuCommands(instance)
+ registerModalCommands(instance)
+ }
- if (!argument.optional) {
- throw IllegalArgumentException("Missing required parameter: ${parameter.name}")
- }
- }
- } catch (e: Exception) {
- LOGGER.error("Error while parsing arguments for command ${node.fullName}", e)
- event
- .deferReply(true)
- .await()
- .sendMessage(":warning: **An unexpected error occurred while parsing your command.**")
- .await()
- return@addSuspendingEventListener
- }
+ override fun process() {
+ compileSlashCommands()
- try {
- command.function.callSuspendBy(arguments)
- } catch (e: Exception) {
- LOGGER.error("Error while executing command ${node.fullName}", e)
- try {
- event.deferReply(true).await()
- } catch (_: Exception) {}
- event.hook
- .sendMessage(":warning: **An unexpected error occurred while executing your command.**")
- .await()
- }
+ discord.jda.addSuspendingEventListener { event ->
+ handleSlashCommand(event.interaction)
+ }
+
+ discord.jda.addSuspendingEventListener { event ->
+ handleInteraction(
+ id = event.componentId,
+ interaction = event.interaction,
+ handlers = menuHandlers,
+ missingMessage = "This interaction is no longer valid",
+ unexpectedMessage = "Unexpected interaction type, please report this to a moderator",
+ executionMessage = "**:warning: An unexpected error occurred while executing this interaction.**",
+ permissionMessage = ":warning: **You do not have permission to use this command.**",
+ )
+ }
+
+ discord.jda.addSuspendingEventListener { event ->
+ handleInteraction(
+ id = event.modalId,
+ interaction = event.interaction,
+ handlers = modalHandlers,
+ missingMessage = "This modal is no longer valid",
+ unexpectedMessage = "Unexpected modal type, please report this to a moderator",
+ executionMessage = "**:warning: An unexpected error occurred while handling this modal.**",
+ )
}
}
- override fun scan(instance: Any) {
- containers += instance
- }
-
- private fun register0(container: Any) {
+ private fun registerSlashCommands(container: Any) {
for (function in container::class.memberFunctions) {
val command = function.findAnnotation() ?: continue
command.validate()
+ requireSuspending(function)
- if (!function.isSuspend) {
- throw IllegalArgumentException("$function must be suspend")
- }
-
- val arguments = mutableListOf>()
+ val arguments = mutableListOf>()
var wasOptional = false
for (parameter in function.parameters) {
- // Skip "this"
if (parameter.index == 0) {
continue
}
@@ -178,8 +134,8 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
}
if (parameter.index == 1) {
- if (!isSupportedActor(parameter.type.classifier!!)) {
- throw IllegalArgumentException("$function first parameter is not a InteractionActor")
+ if (!isSupportedSlashActor(parameter.type.classifier!!)) {
+ throw IllegalArgumentException("$function first parameter is not a slash command interaction")
}
continue
}
@@ -193,49 +149,213 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
wasOptional = optional
val classifier = parameter.type.classifier
- if (classifier !is KClass<*> || classifier !in handlers) {
+ if (classifier !is KClass<*> || classifier !in typeHandlers) {
throw IllegalArgumentException("$function has unsupported parameter type $classifier")
}
- arguments += createCommandEdgeArgument(parameter, optional, classifier)
+ arguments += createSlashArgument(parameter, optional, classifier)
}
- var permission = PermissionPredicate { discord.isAllowed(it.user, command.rank) }
+ function.isAccessible = true
+ val permission = createPermission(function, command.rank)
+ slashTree.resolve(command.path.toList(), SlashCommandHandler(container, function, permission, arguments))
+ }
+ }
+
+ private fun registerMenuCommands(container: Any) {
+ for (function in container::class.memberFunctions) {
+ val command = function.findAnnotation() ?: continue
+ registerInteractionHandler(
+ container = container,
+ function = function,
+ name = command.name,
+ expectedType = ComponentInteraction::class,
+ permission = createPermission(function, command.rank),
+ handlers = menuHandlers,
+ kind = "interaction",
+ )
+ }
+ }
+
+ private fun registerModalCommands(container: Any) {
+ for (function in container::class.memberFunctions) {
+ val command = function.findAnnotation() ?: continue
+ registerInteractionHandler(
+ container = container,
+ function = function,
+ name = command.name,
+ expectedType = ModalInteraction::class,
+ permission = ALLOW_ALL,
+ handlers = modalHandlers,
+ kind = "modal",
+ )
+ }
+ }
+
+ private fun registerInteractionHandler(
+ container: Any,
+ function: KFunction<*>,
+ name: String,
+ expectedType: KClass,
+ permission: PermissionPredicate,
+ handlers: MutableMap>,
+ kind: String,
+ ) {
+ validateInteractionName(name, function, kind)
+ requireSuspending(function)
+
+ if (function.parameters.size != 2) {
+ throw IllegalArgumentException("$function $kind must have exactly one interaction parameter")
+ }
- val allow = function.findAnnotation()
- if (allow != null) {
- val previous = permission
- permission = PermissionPredicate { previous.test(it) or discord.isAllowed(it.user, allow.permission) }
+ val classifier = function.parameters[1].type.classifier
+ val parameterType =
+ classifier as? KClass<*> ?: throw IllegalArgumentException("$function has no concrete interaction type")
+ if (!parameterType.isSubclassOf(expectedType)) {
+ throw IllegalArgumentException("$function $kind parameter must extend ${expectedType.simpleName}")
+ }
+
+ if (name in handlers) {
+ throw IllegalArgumentException("$function $kind $name is already registered")
+ }
+
+ function.isAccessible = true
+ handlers[name] = InteractionHandler(container, permission, function, parameterType)
+ }
+
+ @Suppress("UNCHECKED_CAST")
+ private suspend fun handleSlashCommand(interaction: SlashCommandInteraction) {
+ val node =
+ try {
+ slashTree.resolve(interaction.fullCommandName.split(" "))
+ } catch (e: Exception) {
+ LOGGER.error("Unknown slash command {}", interaction.fullCommandName, e)
+ interaction.deferReply(true).await().sendMessage(UNKNOWN_COMMAND_MESSAGE).await()
+ return
}
- function.isAccessible = true
- tree.resolve(path = command.path.toList(), edge = CommandEdge(container, function, permission, arguments))
+ val command = node.edge
+ if (command == null) {
+ LOGGER.error("Resolved slash command {} has no handler", interaction.fullCommandName)
+ interaction.deferReply(true).await().sendMessage(UNKNOWN_COMMAND_MESSAGE).await()
+ return
+ }
+
+ if (!command.permission.test(interaction)) {
+ interaction.deferReply(true).await().sendMessage(PERMISSION_DENIED_MESSAGE).await()
+ return
+ }
+
+ val arguments = mutableMapOf()
+ try {
+ for (parameter in command.function.parameters) {
+ if (parameter.index == 0) {
+ arguments[parameter] = command.container
+ continue
+ }
+
+ if (isSupportedSlashActor(parameter.type.classifier!!)) {
+ arguments[parameter] = interaction
+ continue
+ }
+
+ val argument = command.argumentsByName[parameter.name!!]!!
+ val parsed =
+ try {
+ interaction.getOption(argument.name)?.let { option ->
+ argument.handler.parse(option, parameter)
+ }
+ } catch (e: OptionParsingException) {
+ interaction
+ .deferReply(true)
+ .await()
+ .sendMessage(":warning: Failed to parse the **${argument.name}** argument: ${e.message}")
+ .await()
+ return
+ }
+
+ if (parsed != null) {
+ arguments[parameter] = parsed
+ continue
+ }
+
+ if (!argument.optional) {
+ throw IllegalArgumentException("Missing required parameter: ${parameter.name}")
+ }
+ }
+ } catch (e: Exception) {
+ LOGGER.error("Error while parsing arguments for command ${node.fullName}", e)
+ interaction.deferReply(true).await().sendMessage(PARSE_ERROR_MESSAGE).await()
+ return
+ }
+
+ try {
+ command.function.callSuspendBy(arguments)
+ } catch (e: Exception) {
+ LOGGER.error("Error while executing command ${node.fullName}", e)
+ try {
+ interaction.deferReply(true).await()
+ } catch (_: Exception) {}
+ interaction.hook.sendMessage(EXECUTION_ERROR_MESSAGE).await()
}
}
@Suppress("UNCHECKED_CAST")
- private fun createCommandEdgeArgument(
- parameter: KParameter,
- optional: Boolean,
- klass: KClass,
- ): CommandEdge.Argument {
- val handler = handlers[klass] as TypeHandler? ?: throw IllegalArgumentException("Unsupported type $klass")
- return CommandEdge.Argument(parameter.name!!, optional, parameter, handler)
+ private suspend fun handleInteraction(
+ id: String,
+ interaction: T,
+ handlers: Map>,
+ missingMessage: String,
+ unexpectedMessage: String,
+ executionMessage: String,
+ permissionMessage: String? = null,
+ ) where T : Interaction, T : IReplyCallback {
+ val handler = handlers[id]
+ if (handler == null) {
+ interaction.deferReply(true).await().sendMessage(missingMessage).await()
+ return
+ }
+
+ if (!handler.type.isInstance(interaction)) {
+ LOGGER.error(
+ "Unexpected interaction type for {}, expected {}, got {}",
+ id,
+ handler.type,
+ interaction::class,
+ )
+ interaction.deferReply(true).await().sendMessage(unexpectedMessage).await()
+ return
+ }
+
+ if (permissionMessage != null && !handler.permission.test(interaction)) {
+ interaction.deferReply(true).await().sendMessage(permissionMessage).await()
+ return
+ }
+
+ try {
+ handler.function.callSuspend(handler.container, interaction)
+ } catch (e: Exception) {
+ LOGGER.error("Error while executing interaction {}", id, e)
+ try {
+ interaction.deferReply(true).await()
+ } catch (_: Exception) {}
+ interaction.hook.sendMessage(executionMessage).await()
+ }
}
- private fun compile() {
+ private fun compileSlashCommands() {
val compiled = mutableSetOf()
- for (entry in tree.children) {
+ for (entry in slashTree.children) {
val wrapper = SlashCommandNode.Slash(entry.key)
- compile(wrapper, entry.value)
+ compileSlashNode(wrapper, entry.value)
wrapper.applyBuilderTranslations()
- compiled.add(wrapper.delegate)
+ compiled += wrapper.delegate
}
runBlocking {
if (config.discord.globalCommands) {
discord.jda.updateCommands().addCommands(compiled).await()
- discord.getMainServer().retrieveCommands().await().map {
+ discord.getMainServer().retrieveCommands().await().forEach {
ImperiumScope.MAIN.launch { discord.getMainServer().deleteCommandById(it.idLong).await() }
}
} else {
@@ -244,7 +364,7 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
}
}
- private fun compile(parent: SlashCommandNode, node: CommandNode) {
+ private fun compileSlashNode(parent: SlashCommandNode, node: CommandNode) {
when (node.height) {
0 -> throw IllegalStateException("Root node cannot be compiled.")
1 -> {
@@ -256,42 +376,75 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
parent.addOptions(wrapper.delegate)
}
}
+
else -> {
for (child in node.children.values) {
when (child.height) {
1 -> {
val wrapper = SlashCommandNode.Subcommand(child.name, parent.path + child.name)
- compile(wrapper, child)
+ compileSlashNode(wrapper, child)
wrapper.applyBuilderTranslations()
parent.addSubcommands(wrapper.delegate)
}
+
2 -> {
val wrapper = SlashCommandNode.SubcommandGroup(child.name, parent.path + child.name)
- compile(wrapper, child)
+ compileSlashNode(wrapper, child)
+ wrapper.applyBuilderTranslations()
parent.addSubcommandGroups(wrapper.delegate)
}
- else -> error("How ?")
+
+ else -> error("The slash command tree is too deep")
}
}
}
}
}
- private fun registerHandler(klass: KClass, handler: TypeHandler) {
- handlers[klass] = handler
+ @Suppress("UNCHECKED_CAST")
+ private fun createSlashArgument(
+ parameter: KParameter,
+ optional: Boolean,
+ klass: KClass,
+ ): SlashCommandHandler.Argument {
+ val handler =
+ typeHandlers[klass] as TypeHandler? ?: throw IllegalArgumentException("Unsupported type $klass")
+ return SlashCommandHandler.Argument(parameter.name!!, optional, parameter, handler)
+ }
+
+ private fun createPermission(function: KFunction<*>, rank: Rank): PermissionPredicate {
+ var permission = PermissionPredicate { discord.isAllowed(it.user, rank) }
+ val allow = function.findAnnotation()
+ if (allow != null) {
+ val previous = permission
+ permission = PermissionPredicate { previous.test(it) || discord.isAllowed(it.user, allow.permission) }
+ }
+ return permission
}
- private fun isSupportedActor(classifier: KClassifier) =
+ private fun validateInteractionName(name: String, function: KFunction<*>, kind: String) {
+ if (!name.all { it.isLetterOrDigit() || it == '-' || it == ':' }) {
+ throw IllegalArgumentException("$function $kind name must be alphanumeric")
+ }
+ }
+
+ private fun requireSuspending(function: KFunction<*>) {
+ if (!function.isSuspend) {
+ throw IllegalArgumentException("$function must be suspend")
+ }
+ }
+
+ private fun isSupportedSlashActor(classifier: KClassifier) =
classifier == Interaction::class || classifier == SlashCommandInteraction::class
+ private fun registerHandler(klass: KClass, handler: TypeHandler) {
+ typeHandlers[klass] = handler
+ }
+
private fun SlashCommandNode.applyBuilderTranslations() {
var key = "imperium.command.[${path.joinToString(".")}]"
- key +=
- if (this is SlashCommandNode.Option) {
- ".argument.${delegate.name}.description"
- } else {
- ".description"
- }
+ key += if (this is SlashCommandNode.Option) ".argument.${delegate.name}.description" else ".description"
+
setDescription(getTranslatedTextOrNull(key, config.language) ?: NO_DESCRIPTION)
for (language in config.supportedLanguages) {
getTranslatedTextOrNull(key, language)?.let { description ->
@@ -304,28 +457,35 @@ class SlashCommandRegistry(private val discord: DiscordService, private val conf
private fun ImperiumCommand.validate() {
if (path.isEmpty()) {
throw IllegalArgumentException("Command name cannot be empty")
- } else if (path.any { !it.matches(Regex("^[a-zA-Z](-?[a-zA-Z0-9])*$")) }) {
+ }
+ if (path.any { !it.matches(Regex("^[a-zA-Z](-?[a-zA-Z0-9])*$")) }) {
throw IllegalArgumentException("Command name must be alphanumeric and start with a letter")
}
}
companion object {
private val LOGGER by LoggerDelegate()
+ private val ALLOW_ALL = PermissionPredicate { true }
}
}
private const val NO_DESCRIPTION = "No description."
+private const val UNKNOWN_COMMAND_MESSAGE = ":warning: **This command is no longer available.**"
+private const val PERMISSION_DENIED_MESSAGE = ":warning: **You do not have permission to use this command.**"
+private const val PARSE_ERROR_MESSAGE = ":warning: **An unexpected error occurred while parsing your command.**"
+private const val EXECUTION_ERROR_MESSAGE = ":warning: **An unexpected error occurred while executing your command.**"
private data class CommandNode(val name: String, val parent: CommandNode?) {
val children = mutableMapOf()
- var edge: CommandEdge? = null
+ var edge: SlashCommandHandler? = null
+
val fullName: String
get() = if (parent == null) name else "${parent.fullName}.$name"
val depth: Int
get() {
var count = 0
- var node: CommandNode? = this.parent
+ var node: CommandNode? = parent
while (node != null) {
count++
node = node.parent
@@ -336,7 +496,7 @@ private data class CommandNode(val name: String, val parent: CommandNode?) {
val height: Int
get() = 1 + (children.maxOfOrNull { it.value.height } ?: 0)
- fun resolve(path: List, edge: CommandEdge? = null): CommandNode {
+ fun resolve(path: List, edge: SlashCommandHandler? = null): CommandNode {
if (depth > 3) {
throw IllegalArgumentException("The command tree is too deep: $path")
}
@@ -364,12 +524,14 @@ private data class CommandNode(val name: String, val parent: CommandNode?) {
}
}
-private data class CommandEdge(
+private data class SlashCommandHandler(
val container: Any,
val function: KFunction<*>,
val permission: PermissionPredicate,
val arguments: List>,
) {
+ val argumentsByName = arguments.associateBy(Argument<*>::name)
+
data class Argument(
val name: String,
val optional: Boolean,
@@ -378,6 +540,13 @@ private data class CommandEdge(
)
}
+private data class InteractionHandler(
+ val container: Any,
+ val permission: PermissionPredicate,
+ val function: KFunction<*>,
+ val type: KClass<*>,
+)
+
abstract class TypeHandler(val type: OptionType) {
abstract fun parse(option: OptionMapping, annotations: KAnnotatedElement): T?
@@ -419,7 +588,7 @@ private val LONG_TYPE_HANDLER =
override fun apply(builder: OptionData, annotation: KAnnotatedElement, optional: Boolean) {
annotation.findAnnotation()?.apply {
if (min.isNotEmpty()) builder.setMinValue(min.toLong())
- if (max.isNotEmpty()) builder.setMinValue(max.toLong())
+ if (max.isNotEmpty()) builder.setMaxValue(max.toLong())
}
}
}
@@ -435,7 +604,7 @@ private val DISCORD_USER_TYPE_HANDLER =
}
private val CHANNEL_TYPE_HANDLER =
- object : TypeHandler(OptionType.CHANNEL) {
+ object : TypeHandler(OptionType.CHANNEL) {
override fun parse(option: OptionMapping, annotations: KAnnotatedElement) = option.asChannel
}
@@ -444,13 +613,12 @@ private val ATTACHMENT_TYPE_HANDLER =
override fun parse(option: OptionMapping, annotations: KAnnotatedElement) = option.asAttachment
}
-// https://github.com/Incendo/cloud/blob/fda52448c20f5537c8f03aaf6a3b844119c20463/cloud-core/src/main/java/cloud/commandframework/arguments/standard/DurationArgument.java
private val DURATION_TYPE_HANDLER =
object : TypeHandler(OptionType.STRING) {
- private val DURATION_PATTERN = Pattern.compile("(([1-9][0-9]+|[1-9])[dhms])")
+ private val durationPattern = Pattern.compile("(([1-9][0-9]+|[1-9])[dhms])")
- override fun parse(option: OptionMapping, annotations: KAnnotatedElement): Duration? {
- val matcher = DURATION_PATTERN.matcher(option.asString)
+ override fun parse(option: OptionMapping, annotations: KAnnotatedElement): Duration {
+ val matcher = durationPattern.matcher(option.asString)
var duration = Duration.ZERO
while (matcher.find()) {
@@ -486,11 +654,7 @@ private class EnumTypeHandler>(
}
override fun apply(builder: OptionData, annotation: KAnnotatedElement, optional: Boolean) {
- klass.java.enumConstants.forEach {
- if (optional && it.name == "none") error("Can't have a none enum value if the argument is optional")
- val choice = it as T
- builder.addChoice(renderer(choice), choice.name)
- }
+ klass.java.enumConstants.forEach { builder.addChoice(renderer(it), it.name) }
if (optional) {
builder.addChoice("none", "none")
}
@@ -500,7 +664,6 @@ private class EnumTypeHandler>(
private class OptionParsingException(message: String) : Exception(message)
private sealed class SlashCommandNode(val path: List) {
-
abstract fun addOptions(vararg options: OptionData)
abstract fun addSubcommandGroups(vararg subcommandGroups: SubcommandGroupData)
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt
deleted file mode 100644
index 7b557073e..000000000
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/MenuCommandRegistry.kt
+++ /dev/null
@@ -1,118 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-only
-package com.xpdustry.imperium.discord.command
-
-import com.xpdustry.imperium.common.annotation.AnnotationScanner
-import com.xpdustry.imperium.common.application.ImperiumApplication
-import com.xpdustry.imperium.common.misc.LoggerDelegate
-import com.xpdustry.imperium.discord.command.annotation.AlsoAllow
-import com.xpdustry.imperium.discord.misc.addSuspendingEventListener
-import com.xpdustry.imperium.discord.misc.await
-import com.xpdustry.imperium.discord.service.DiscordService
-import kotlin.reflect.KClass
-import kotlin.reflect.KClassifier
-import kotlin.reflect.KFunction
-import kotlin.reflect.full.callSuspend
-import kotlin.reflect.full.createType
-import kotlin.reflect.full.findAnnotation
-import kotlin.reflect.full.isSubclassOf
-import kotlin.reflect.full.memberFunctions
-import kotlin.reflect.jvm.isAccessible
-import kotlin.reflect.jvm.jvmErasure
-import net.dv8tion.jda.api.events.interaction.component.GenericComponentInteractionCreateEvent
-import net.dv8tion.jda.api.interactions.Interaction
-import net.dv8tion.jda.api.interactions.components.ComponentInteraction
-
-class MenuCommandRegistry(private val discord: DiscordService) : AnnotationScanner, ImperiumApplication.Listener {
- private val handlers = mutableMapOf()
-
- override fun onImperiumInit() {
- discord.jda.addSuspendingEventListener { event ->
- val handler = handlers[event.componentId]
- if (handler == null) {
- event.deferReply(true).await().sendMessage("This interaction is no longer valid").await()
- return@addSuspendingEventListener
- }
-
- @Suppress("UNCHECKED_CAST")
- val expected = handler.function.parameters[1].type.classifier as KClass
- if (!isSupportedInteraction(event.interaction::class)) {
- logger.error(
- "Unexpected interaction type for {}, expected {}, got {}",
- event.componentId,
- expected,
- event.interaction::class,
- )
- event
- .deferReply(true)
- .await()
- .sendMessage("Unexpected interaction type, please report this to a moderator")
- .await()
- return@addSuspendingEventListener
- }
-
- if (!handler.permission.test(event)) {
- event
- .deferReply(true)
- .await()
- .sendMessage(":warning: **You do not have permission to use this command.**")
- .await()
- return@addSuspendingEventListener
- }
-
- try {
- handler.function.callSuspend(handler.container, event.interaction)
- } catch (e: Exception) {
- logger.error("Error while executing interaction ${event.componentId}", e)
- try {
- event.deferReply(true).await()
- } catch (_: Exception) {}
- event.hook
- .sendMessage("**:warning: An unexpected error occurred while executing this interaction.**")
- .await()
- }
- }
- }
-
- override fun scan(instance: Any) {
- for (function in instance::class.memberFunctions) {
- val command = function.findAnnotation() ?: continue
- var permission = PermissionPredicate { discord.isAllowed(it.user, command.rank) }
-
- if (!command.name.all { it.isLetterOrDigit() || it == '-' || it == ':' }) {
- throw IllegalArgumentException("$function interaction name must be alphanumeric")
- }
-
- if (function.parameters.size != 2 || !isSupportedInteraction(function.parameters[1].type.classifier!!)) {
- throw IllegalArgumentException(
- "$function interaction must have exactly one parameter of type InteractionActor"
- )
- }
-
- if (command.name in handlers) {
- throw IllegalArgumentException("$function interaction ${command.name} is already registered")
- }
-
- val allow = function.findAnnotation()
- if (allow != null) {
- val previous = permission
- permission = PermissionPredicate { previous.test(it) or discord.isAllowed(it.user, allow.permission) }
- }
-
- function.isAccessible = true
- handlers[command.name] = ButtonHandler(instance, permission, function)
- }
- }
-
- private fun isSupportedInteraction(classifier: KClassifier) =
- classifier.createType().jvmErasure.isSubclassOf(ComponentInteraction::class)
-
- companion object {
- private val logger by LoggerDelegate()
- }
-
- private data class ButtonHandler(
- val container: Any,
- val permission: PermissionPredicate,
- val function: KFunction<*>,
- )
-}
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt
deleted file mode 100644
index 776fe653a..000000000
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/command/ModalCommandRegistry.kt
+++ /dev/null
@@ -1,96 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-only
-package com.xpdustry.imperium.discord.command
-
-import com.xpdustry.imperium.common.annotation.AnnotationScanner
-import com.xpdustry.imperium.common.application.ImperiumApplication
-import com.xpdustry.imperium.common.misc.LoggerDelegate
-import com.xpdustry.imperium.discord.misc.addSuspendingEventListener
-import com.xpdustry.imperium.discord.misc.await
-import com.xpdustry.imperium.discord.service.DiscordService
-import kotlin.reflect.KClass
-import kotlin.reflect.KClassifier
-import kotlin.reflect.KFunction
-import kotlin.reflect.full.callSuspend
-import kotlin.reflect.full.createType
-import kotlin.reflect.full.findAnnotation
-import kotlin.reflect.full.isSubclassOf
-import kotlin.reflect.full.memberFunctions
-import kotlin.reflect.jvm.isAccessible
-import kotlin.reflect.jvm.jvmErasure
-import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent
-import net.dv8tion.jda.api.interactions.Interaction
-import net.dv8tion.jda.api.interactions.modals.ModalInteraction
-
-class ModalCommandRegistry(private val discord: DiscordService) : AnnotationScanner, ImperiumApplication.Listener {
-
- private val handlers = mutableMapOf()
-
- override fun onImperiumInit() {
- discord.jda.addSuspendingEventListener { event ->
- val handler = handlers[event.modalId]
- if (handler == null) {
- event.deferReply(true).await().sendMessage("This modal is no longer valid").await()
- return@addSuspendingEventListener
- }
-
- @Suppress("UNCHECKED_CAST")
- val expected = handler.function.parameters[1].type.classifier as KClass
- if (!isSupportedInteraction(event.interaction::class)) {
- logger.error(
- "Unexpected modal type for {}, expected {}, got {}",
- event.modalId,
- expected,
- event.interaction::class,
- )
- event
- .deferReply(true)
- .await()
- .sendMessage("Unexpected modal type, please report this to a moderator")
- .await()
- return@addSuspendingEventListener
- }
-
- try {
- handler.function.callSuspend(handler.container, event.interaction)
- } catch (e: Exception) {
- logger.error("Error while executing modal ${event.modalId}", e)
- try {
- event.deferReply(true).await()
- } catch (_: Exception) {}
- event.hook.sendMessage("**:warning: An unexpected error occurred while handling this modal.**").await()
- }
- }
- }
-
- override fun scan(instance: Any) {
- for (function in instance::class.memberFunctions) {
- val command = function.findAnnotation() ?: continue
-
- if (!command.name.all { it.isLetterOrDigit() || it == '-' || it == ':' }) {
- throw IllegalArgumentException("$function modal name must be alphanumeric")
- }
-
- if (function.parameters.size != 2 || !isSupportedInteraction(function.parameters[1].type.classifier!!)) {
- throw IllegalArgumentException(
- "$function button must have exactly one parameter of type ModalInteraction"
- )
- }
-
- if (command.name in handlers) {
- throw IllegalArgumentException("$function modal ${command.name} is already registered")
- }
-
- function.isAccessible = true
- handlers[command.name] = ModalHandler(instance, function)
- }
- }
-
- private fun isSupportedInteraction(classifier: KClassifier) =
- classifier.createType().jvmErasure.isSubclassOf(ModalInteraction::class)
-
- companion object {
- private val logger by LoggerDelegate()
- }
-
- private data class ModalHandler(val container: Any, val function: KFunction<*>)
-}
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt
index 4e89f774b..9828893f6 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapCommand.kt
@@ -27,10 +27,10 @@ import kotlin.io.path.outputStream
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.future.await
import kotlinx.coroutines.withContext
+import net.dv8tion.jda.api.components.actionrow.ActionRow
+import net.dv8tion.jda.api.components.buttons.Button
import net.dv8tion.jda.api.entities.MessageEmbed
import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction
-import net.dv8tion.jda.api.interactions.components.ActionRow
-import net.dv8tion.jda.api.interactions.components.buttons.Button
import net.dv8tion.jda.api.interactions.components.buttons.ButtonInteraction
import net.dv8tion.jda.api.utils.FileUpload
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt
index 23bcae1b9..e91047c7e 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSearchCommand.kt
@@ -24,14 +24,14 @@ import kotlin.math.ceil
import kotlin.time.Duration.Companion.minutes
import kotlin.time.toJavaDuration
import kotlinx.coroutines.launch
+import net.dv8tion.jda.api.components.actionrow.ActionRow
+import net.dv8tion.jda.api.components.buttons.Button
+import net.dv8tion.jda.api.components.selections.SelectOption
+import net.dv8tion.jda.api.components.selections.StringSelectMenu
import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction
-import net.dv8tion.jda.api.interactions.components.ActionRow
import net.dv8tion.jda.api.interactions.components.ComponentInteraction
-import net.dv8tion.jda.api.interactions.components.buttons.Button
import net.dv8tion.jda.api.interactions.components.buttons.ButtonInteraction
-import net.dv8tion.jda.api.interactions.components.selections.SelectOption
import net.dv8tion.jda.api.interactions.components.selections.StringSelectInteraction
-import net.dv8tion.jda.api.interactions.components.selections.StringSelectMenu
import net.dv8tion.jda.api.utils.messages.MessageEditData
class MapSearchCommand(instances: InstanceManager) : ImperiumApplication.Listener {
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt
index ddf19c3f3..0134dd8d7 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/commands/MapSubmitCommand.kt
@@ -33,12 +33,12 @@ import javax.imageio.ImageIO
import kotlin.io.path.createTempFile
import kotlin.io.path.deleteExisting
import kotlinx.coroutines.future.await
+import net.dv8tion.jda.api.components.actionrow.ActionRow
+import net.dv8tion.jda.api.components.buttons.Button
import net.dv8tion.jda.api.entities.Message
import net.dv8tion.jda.api.entities.MessageEmbed
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel
import net.dv8tion.jda.api.interactions.commands.SlashCommandInteraction
-import net.dv8tion.jda.api.interactions.components.ActionRow
-import net.dv8tion.jda.api.interactions.components.buttons.Button
import net.dv8tion.jda.api.interactions.components.buttons.ButtonInteraction
import net.dv8tion.jda.api.utils.FileUpload
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt
index 1f2ac514d..948d335af 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/misc/JDAExtensions.kt
@@ -10,6 +10,9 @@ import kotlinx.coroutines.future.await
import kotlinx.coroutines.launch
import net.dv8tion.jda.api.EmbedBuilder
import net.dv8tion.jda.api.JDA
+import net.dv8tion.jda.api.components.MessageTopLevelComponent
+import net.dv8tion.jda.api.components.actionrow.ActionRow
+import net.dv8tion.jda.api.components.actionrow.ActionRowChildComponent
import net.dv8tion.jda.api.entities.Guild
import net.dv8tion.jda.api.entities.Member
import net.dv8tion.jda.api.entities.Message
@@ -21,10 +24,6 @@ import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel
import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel
import net.dv8tion.jda.api.events.GenericEvent
import net.dv8tion.jda.api.hooks.EventListener
-import net.dv8tion.jda.api.interactions.components.ActionComponent
-import net.dv8tion.jda.api.interactions.components.ActionRow
-import net.dv8tion.jda.api.interactions.components.ItemComponent
-import net.dv8tion.jda.api.interactions.components.LayoutComponent
import net.dv8tion.jda.api.requests.RestAction
import net.dv8tion.jda.api.utils.AttachedFile
import net.dv8tion.jda.api.utils.FileUpload
@@ -50,15 +49,9 @@ suspend fun Message.disableComponents() {
editMessageComponents(components.map { it.disableComponent() }).await()
}
-private fun LayoutComponent.disableComponent(): ActionRow =
+private fun MessageTopLevelComponent.disableComponent(): MessageTopLevelComponent =
when (this) {
- is ActionRow -> ActionRow.of(components.map { it.disableComponent() })
- else -> error("Unsupported component type: ${this::class}")
- }
-
-private fun ItemComponent.disableComponent(): ItemComponent =
- when (this) {
- is ActionComponent -> asDisabled()
+ is ActionRow -> asDisabled()
else -> error("Unsupported component type: ${this::class}")
}
@@ -80,7 +73,7 @@ inline fun MessageCreateBuilder(
content: String = "",
embeds: Collection = emptyList(),
files: Collection = emptyList(),
- components: Collection = emptyList(),
+ components: Collection = emptyList(),
tts: Boolean = false,
mentions: Mentions = Mentions.default(),
builder: InlineMessage.() -> Unit = {},
@@ -102,7 +95,7 @@ inline fun MessageCreate(
content: String = "",
embeds: Collection = emptyList(),
files: Collection = emptyList(),
- components: Collection = emptyList(),
+ components: Collection = emptyList(),
tts: Boolean = false,
mentions: Mentions = Mentions.default(),
builder: InlineMessage.() -> Unit = {},
@@ -110,7 +103,7 @@ inline fun MessageCreate(
class InlineMessage(val builder: AbstractMessageBuilder) {
internal val configuredEmbeds = mutableListOf()
- internal val configuredComponents = mutableListOf()
+ internal val configuredComponents = mutableListOf()
internal val configuredFiles = mutableListOf()
internal var set = 0
@@ -147,11 +140,11 @@ class InlineMessage(val builder: AbstractMessageBuilder) {
val components = ComponentAccumulator(this.configuredComponents, this)
- fun actionRow(vararg components: ItemComponent) {
- this.components += ActionRow.of(*components)
+ fun actionRow(vararg components: ActionRowChildComponent) {
+ this.components += ActionRow.of(components.toList())
}
- fun actionRow(components: Collection) {
+ fun actionRow(components: Collection) {
this.components += ActionRow.of(components)
}
@@ -226,25 +219,25 @@ class EmbedAccumulator(private val builder: InlineMessage<*>) {
}
class ComponentAccumulator(
- private val config: MutableList,
+ private val config: MutableList,
private val builder: InlineMessage<*>? = null,
) {
- operator fun plusAssign(components: Collection) {
+ operator fun plusAssign(components: Collection) {
builder?.let { it.set = it.set or SetFlags.COMPONENTS }
config += components
}
- operator fun plusAssign(component: LayoutComponent) {
+ operator fun plusAssign(component: MessageTopLevelComponent) {
builder?.let { it.set = it.set or SetFlags.COMPONENTS }
config += component
}
- operator fun minusAssign(components: Collection) {
+ operator fun minusAssign(components: Collection) {
builder?.let { it.set = it.set or SetFlags.COMPONENTS }
config -= components.toSet()
}
- operator fun minusAssign(component: LayoutComponent) {
+ operator fun minusAssign(component: MessageTopLevelComponent) {
builder?.let { it.set = it.set or SetFlags.COMPONENTS }
config -= component
}
diff --git a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt
index 1cd28cc77..c6e7a7e03 100644
--- a/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt
+++ b/imperium-discord/src/main/kotlin/com/xpdustry/imperium/discord/security/ReportListener.kt
@@ -21,10 +21,10 @@ import com.xpdustry.imperium.discord.misc.await
import com.xpdustry.imperium.discord.misc.disableComponents
import com.xpdustry.imperium.discord.service.DiscordService
import java.awt.Color
+import net.dv8tion.jda.api.components.actionrow.ActionRow
+import net.dv8tion.jda.api.components.buttons.Button
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel
-import net.dv8tion.jda.api.interactions.components.ActionRow
-import net.dv8tion.jda.api.interactions.components.buttons.Button
import net.dv8tion.jda.api.interactions.components.buttons.ButtonInteraction
class ReportListener(instances: InstanceManager) : ImperiumApplication.Listener {
From 4d960cace006c1796d55e357fcbfd91786dcd774 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 19:01:43 +0100
Subject: [PATCH 03/15] chore(deps): Update dependency
com.squareup.okhttp3:okhttp to v5.3.2 (#474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d6687e49b..1d39dd855 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -18,7 +18,7 @@ slf4md = "1.2.0"
sql4md = "1.2.0"
rabbitmq-client = "5.26.0"
jsoup = "1.21.2"
-okhttp = "5.1.0"
+okhttp = "5.3.2"
classgraph = "4.8.181"
logback = "1.5.19"
hikari = "7.0.2"
From 96f3be1ffb5868ee83edfe1d7c2c126e3021941b Mon Sep 17 00:00:00 2001
From: Finley Experience <62483793+phinner@users.noreply.github.com>
Date: Sat, 7 Mar 2026 19:46:38 +0100
Subject: [PATCH 04/15] chore(deps): Removed rabbitmq
---
gradle/libs.versions.toml | 2 --
imperium-common/build.gradle.kts | 1 -
2 files changed, 3 deletions(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d6687e49b..4bb23525f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -16,7 +16,6 @@ hoplite = "2.9.0"
slf4j = "2.0.17"
slf4md = "1.2.0"
sql4md = "1.2.0"
-rabbitmq-client = "5.26.0"
jsoup = "1.21.2"
okhttp = "5.1.0"
classgraph = "4.8.181"
@@ -57,7 +56,6 @@ hoplite-core = { module = "com.sksamuel.hoplite:hoplite-core", version.ref = "ho
hoplite-yaml = { module = "com.sksamuel.hoplite:hoplite-yaml", version.ref = "hoplite" }
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
-rabbitmq-client = { module = "com.rabbitmq:amqp-client", version.ref = "rabbitmq-client" }
jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutine" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlin-coroutine" }
diff --git a/imperium-common/build.gradle.kts b/imperium-common/build.gradle.kts
index f801b8d6a..f4a30864f 100644
--- a/imperium-common/build.gradle.kts
+++ b/imperium-common/build.gradle.kts
@@ -9,7 +9,6 @@ dependencies {
api(libs.guava)
api(libs.hoplite.core)
api(libs.hoplite.yaml)
- api(libs.rabbitmq.client)
api(libs.okhttp)
api(libs.caffeine)
From 6e87ee7a1b5b7f4fb0ac0a9978d5eb4887180024 Mon Sep 17 00:00:00 2001
From: Finley Experience <62483793+phinner@users.noreply.github.com>
Date: Sat, 7 Mar 2026 19:49:28 +0100
Subject: [PATCH 05/15] chore(deps): Updated Kotlin
---
gradle/libs.versions.toml | 6 +++---
.../src/main/kotlin/imperium.base-conventions.gradle.kts | 1 -
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4bb23525f..f710b85d5 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,9 +1,9 @@
[versions]
# platforms
-kotlin-core = "2.3.0"
+kotlin-core = "2.3.10"
kotlin-coroutine = "1.10.2"
-kotlin-runtime = "4.3.3"
-kotlinx-serialization = "1.9.0"
+kotlin-runtime = "4.3.4"
+kotlinx-serialization = "1.10.0"
java = "25"
mindustry = "154.3"
diff --git a/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts b/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts
index f2fc1fb25..9b3c3a7e3 100644
--- a/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts
+++ b/imperium-build-logic/src/main/kotlin/imperium.base-conventions.gradle.kts
@@ -1,5 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
-import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
plugins {
org.jetbrains.kotlin.jvm
From a2d291625ee8fd873e4dde8951b1c48b13600bd1 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 19:52:04 +0100
Subject: [PATCH 06/15] chore(deps): Update dependency
io.github.classgraph:classgraph to v4.8.184 (#476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 7ba62f10b..e75b5ac52 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -18,7 +18,7 @@ slf4md = "1.2.0"
sql4md = "1.2.0"
jsoup = "1.21.2"
okhttp = "5.3.2"
-classgraph = "4.8.181"
+classgraph = "4.8.184"
logback = "1.5.19"
hikari = "7.0.2"
exposed = "0.61.0"
From c35fa16053d1053f6515eb34e3a414f77b9616dc Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 19:52:19 +0100
Subject: [PATCH 07/15] chore(deps): Update dependency
com.github.ben-manes.caffeine:caffeine to v3.2.3 (#488)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e75b5ac52..b2163d29d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -24,7 +24,7 @@ hikari = "7.0.2"
exposed = "0.61.0"
h2 = "2.4.240"
mariadb = "3.5.6"
-caffeine = "3.2.2"
+caffeine = "3.2.3"
prettytime = "5.0.9.Final"
time4j = "4.38"
nohorny = "3.0.3"
From a552487e4045c406a3fbf58e1d314830f9e64de6 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 19:52:35 +0100
Subject: [PATCH 08/15] chore(deps): Update junit-framework monorepo to v6.0.3
(#490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b2163d29d..1b3fba292 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -9,7 +9,7 @@ mindustry = "154.3"
# libraries
distributor = "4.2.0"
-junit = "6.0.0"
+junit = "6.0.3"
testcontainers = "2.0.3"
guava = "33.5.0-jre"
hoplite = "2.9.0"
From 5d0d20cf7c67edd1ca4f6d21e0c1e0a4f2ac72a6 Mon Sep 17 00:00:00 2001
From: Finley Experience <62483793+phinner@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:25:11 +0100
Subject: [PATCH 09/15] chore(deps): Updated Indra
---
gradle/libs.versions.toml | 3 +-
imperium-build-logic/build.gradle.kts | 1 -
.../main/kotlin/GenerateImperiumChangelog.kt | 36 +++++++++++++------
3 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1b3fba292..29559d5ca 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -37,7 +37,7 @@ influxdb = "7.3.0"
# gradle plugins
toxopid = "4.1.2"
-indra = "3.2.0"
+indra = "4.0.0"
spotless = "8.0.0"
shadow = "9.3.1"
@@ -85,7 +85,6 @@ influxdb = { module = "com.influxdb:influxdb-client-kotlin", version.ref = "infl
# gradle plugins
toxopid = { module = "com.xpdustry:toxopid", version.ref = "toxopid" }
indra-common = { module = "net.kyori:indra-common", version.ref = "indra" }
-indra-licenser-spotless = { module = "net.kyori:indra-licenser-spotless", version.ref = "indra" }
spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" }
shadow = { module = "com.gradleup.shadow:shadow-gradle-plugin", version.ref = "shadow" }
kotlin-plugin-core = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin-core" }
diff --git a/imperium-build-logic/build.gradle.kts b/imperium-build-logic/build.gradle.kts
index adba70645..089548b2e 100644
--- a/imperium-build-logic/build.gradle.kts
+++ b/imperium-build-logic/build.gradle.kts
@@ -7,7 +7,6 @@ repositories {
}
dependencies {
- implementation(libs.indra.licenser.spotless)
implementation(libs.indra.common)
implementation(libs.toxopid)
implementation(libs.spotless)
diff --git a/imperium-build-logic/src/main/kotlin/GenerateImperiumChangelog.kt b/imperium-build-logic/src/main/kotlin/GenerateImperiumChangelog.kt
index 56b5a04af..4e48f3831 100644
--- a/imperium-build-logic/src/main/kotlin/GenerateImperiumChangelog.kt
+++ b/imperium-build-logic/src/main/kotlin/GenerateImperiumChangelog.kt
@@ -1,18 +1,35 @@
-import java.util.regex.Pattern
-import net.kyori.indra.git.IndraGitExtension
-import org.eclipse.jgit.api.Git
+import net.kyori.indra.git.internal.IndraGitService
import org.eclipse.jgit.lib.Constants
import org.gradle.api.DefaultTask
-import org.gradle.api.Task
+import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Property
+import org.gradle.api.provider.Provider
+import org.gradle.api.services.ServiceReference
+import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
-import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.named
+import java.util.regex.Pattern
+
+abstract class GenerateImperiumChangelog : DefaultTask() {
+
+ @get:OutputFile
+ abstract val target: RegularFileProperty
-open class GenerateImperiumChangelog : DefaultTask() {
+ @get:ServiceReference(IndraGitService.SERVICE_NAME)
+ abstract val gitService: Property
- @OutputFile
- val target: RegularFileProperty = project.objects.fileProperty()
+ @get:Internal
+ abstract val projectDirectory: DirectoryProperty
+
+ @get:Internal
+ abstract val projectDisplayName: Property
+
+ init {
+ projectDirectory.fileValue(project.projectDir)
+ projectDisplayName.convention(project.displayName)
+ }
fun onlyIfHasUpstream() {
onlyIf("run only if upstream repo is available") { task ->
@@ -23,6 +40,7 @@ open class GenerateImperiumChangelog : DefaultTask() {
@TaskAction
fun generate() {
+ val git = gitService.get().git(projectDirectory.get().asFile, projectDisplayName.get())!!
val latest = git.repository.resolve("v" + project.rootProject.file("VERSION.txt").readText().trim())
?: error("The version in VERSION.txt is not available")
val head = git.repository.resolve(Constants.HEAD)!!
@@ -44,7 +62,5 @@ open class GenerateImperiumChangelog : DefaultTask() {
companion object {
private val ACCEPTED_SUFFIX =
Pattern.compile("^(?feat|fix)(\\((?mindustry|discord)\\))?:", Pattern.CASE_INSENSITIVE)
- private val Task.git: Git
- get() = project.rootProject.extensions.getByType().git()!!
}
}
\ No newline at end of file
From 18cd879a016066eabc799e8293ab1ca2baa1c088 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:25:45 +0100
Subject: [PATCH 10/15] chore(deps): Update dependency
com.gradleup.shadow:shadow-gradle-plugin to v9.3.2 (#496)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 29559d5ca..4593b2f02 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -39,7 +39,7 @@ influxdb = "7.3.0"
toxopid = "4.1.2"
indra = "4.0.0"
spotless = "8.0.0"
-shadow = "9.3.1"
+shadow = "9.3.2"
[libraries]
# libraries
From d4d1bdf415c15a35c9dae02ce603d019238e6469 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:25:56 +0100
Subject: [PATCH 11/15] chore(deps): Update dependency
ch.qos.logback:logback-classic to v1.5.32 (#482)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4593b2f02..c4c272a3d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -19,7 +19,7 @@ sql4md = "1.2.0"
jsoup = "1.21.2"
okhttp = "5.3.2"
classgraph = "4.8.184"
-logback = "1.5.19"
+logback = "1.5.32"
hikari = "7.0.2"
exposed = "0.61.0"
h2 = "2.4.240"
From 8ef3a94330e4e6743428ede6f5e52acba98a4d33 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:26:10 +0100
Subject: [PATCH 12/15] chore(deps): Update dependency
org.mariadb.jdbc:mariadb-java-client to v3.5.7 (#489)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c4c272a3d..5b132c32b 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -23,7 +23,7 @@ logback = "1.5.32"
hikari = "7.0.2"
exposed = "0.61.0"
h2 = "2.4.240"
-mariadb = "3.5.6"
+mariadb = "3.5.7"
caffeine = "3.2.3"
prettytime = "5.0.9.Final"
time4j = "4.38"
From 84dd7e91ea07b9c976a0b8376981b9c96773d13b Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:26:36 +0100
Subject: [PATCH 13/15] chore(deps): Update dependency
com.influxdb:influxdb-client-kotlin to v7.5.0 (#498)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 5b132c32b..1de06dfb0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -33,7 +33,7 @@ cloud-core = "2.0.0"
# cloud-translations = "1.0.0-SNAPSHOT"
ahocorasick = "0.6.3"
flex = "1.2.0"
-influxdb = "7.3.0"
+influxdb = "7.5.0"
# gradle plugins
toxopid = "4.1.2"
From cc147197e287d61db8b06e81e4ff21cc2ceaa683 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:26:45 +0100
Subject: [PATCH 14/15] chore(deps): Update dependency com.xpdustry:toxopid to
v4.2.0 (#499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1de06dfb0..ad42970b9 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -36,7 +36,7 @@ flex = "1.2.0"
influxdb = "7.5.0"
# gradle plugins
-toxopid = "4.1.2"
+toxopid = "4.2.0"
indra = "4.0.0"
spotless = "8.0.0"
shadow = "9.3.2"
From 776f2cf3bf719beaab45ae6d740769ffe0cbba93 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sat, 7 Mar 2026 20:26:55 +0100
Subject: [PATCH 15/15] chore(deps): Update dependency
com.diffplug.spotless:spotless-plugin-gradle to v8.3.0 (#497)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
gradle/libs.versions.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index ad42970b9..d6c351f39 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -38,7 +38,7 @@ influxdb = "7.5.0"
# gradle plugins
toxopid = "4.2.0"
indra = "4.0.0"
-spotless = "8.0.0"
+spotless = "8.3.0"
shadow = "9.3.2"
[libraries]