From 7d3e61c27663d7e78ff211224f6bac416465cd54 Mon Sep 17 00:00:00 2001 From: David Cole <40234707+DavidArthurCole@users.noreply.github.com> Date: Fri, 18 Oct 2024 19:33:52 -0400 Subject: Backend: Detekt Fixes Part 8 (#2734) Co-authored-by: Cal --- .github/workflows/build.yml | 34 +-- build.gradle.kts | 2 +- detekt/baseline.xml | 27 +-- .../java/at/hannibal2/skyhanni/api/ReforgeAPI.kt | 2 +- .../java/at/hannibal2/skyhanni/api/SkillAPI.kt | 1 - .../at/hannibal2/skyhanni/config/ConfigManager.kt | 2 +- .../skyhanni/config/ConfigUpdaterMigrator.kt | 10 +- .../config/commands/CommandRegistrationEvent.kt | 6 +- .../hannibal2/skyhanni/config/commands/Commands.kt | 4 +- .../skyhanni/config/core/elements/GuiElement.kt | 1 + .../java/at/hannibal2/skyhanni/data/BossbarData.kt | 2 +- .../hannibal2/skyhanni/data/EntityMovementData.kt | 2 +- .../at/hannibal2/skyhanni/data/EventCounter.kt | 2 +- .../data/GardenCropMilestonesCommunityFix.kt | 24 +- .../at/hannibal2/skyhanni/data/GuiEditManager.kt | 4 +- .../java/at/hannibal2/skyhanni/data/GuildAPI.kt | 2 +- .../java/at/hannibal2/skyhanni/data/HotmData.kt | 3 +- .../java/at/hannibal2/skyhanni/data/HypixelData.kt | 23 +- .../at/hannibal2/skyhanni/data/ItemAddManager.kt | 2 +- .../at/hannibal2/skyhanni/data/LocationFixData.kt | 2 +- .../java/at/hannibal2/skyhanni/data/MaxwellAPI.kt | 2 +- .../java/at/hannibal2/skyhanni/data/MayorAPI.kt | 2 +- .../java/at/hannibal2/skyhanni/data/SackAPI.kt | 9 +- .../at/hannibal2/skyhanni/data/ScoreboardData.kt | 5 +- .../java/at/hannibal2/skyhanni/data/SlayerAPI.kt | 6 +- .../data/jsonobjects/repo/RepoErrorData.kt | 4 +- .../data/jsonobjects/repo/neu/NeuReforgeJson.kt | 6 +- .../skyhanni/data/mob/IslandExceptions.kt | 2 +- .../at/hannibal2/skyhanni/data/mob/MobDebug.kt | 6 +- .../java/at/hannibal2/skyhanni/data/model/Graph.kt | 1 + .../hannibal2/skyhanni/data/model/SkyblockStat.kt | 7 +- .../at/hannibal2/skyhanni/data/model/TextInput.kt | 3 +- .../at/hannibal2/skyhanni/data/repo/RepoManager.kt | 17 +- .../hannibal2/skyhanni/events/DungeonEnterEvent.kt | 1 + .../hannibal2/skyhanni/events/DungeonStartEvent.kt | 1 + .../hannibal2/skyhanni/features/bingo/BingoAPI.kt | 2 +- .../skyhanni/features/bingo/MinionCraftHelper.kt | 25 +- .../features/bingo/card/BingoCardDisplay.kt | 3 +- .../card/nextstephelper/BingoNextStepHelper.kt | 3 +- .../hannibal2/skyhanni/features/chat/ChatFilter.kt | 11 +- .../features/chat/CompactSplashPotionMessage.kt | 2 +- .../skyhanni/features/chat/StashCompact.kt | 2 +- .../skyhanni/features/combat/ArmorStackDisplay.kt | 2 +- .../skyhanni/features/combat/BestiaryData.kt | 3 +- .../features/combat/BroodmotherFeatures.kt | 2 +- .../skyhanni/features/combat/FlareDisplay.kt | 2 +- .../damageindicator/DamageIndicatorManager.kt | 2 +- .../features/combat/damageindicator/MobFinder.kt | 1 + .../features/combat/ghostcounter/GhostCounter.kt | 8 +- .../skyhanni/features/commands/HelpCommand.kt | 5 +- .../commands/suggestions/SuggestionProvider.kt | 2 +- .../commands/tabcomplete/PlayerTabComplete.kt | 4 +- .../features/commands/tabcomplete/TabComplete.kt | 1 + .../features/cosmetics/CosmeticFollowingLine.kt | 24 +- .../skyhanni/features/dungeon/DungeonAPI.kt | 4 +- .../skyhanni/features/dungeon/DungeonBossAPI.kt | 5 +- .../skyhanni/features/dungeon/DungeonChatFilter.kt | 6 +- .../features/dungeon/DungeonFinderFeatures.kt | 4 +- .../features/dungeon/DungeonLividFinder.kt | 6 +- .../features/dungeon/DungeonRankTabListColor.kt | 4 +- .../skyhanni/features/dungeon/DungeonsRaceGuide.kt | 4 +- .../event/UniqueGiftingOpportunitiesFeatures.kt | 1 + .../skyhanni/features/event/diana/DianaFixChat.kt | 6 +- .../event/diana/InquisitorWaypointShare.kt | 1 + .../features/event/hoppity/HoppityEggLocations.kt | 6 +- .../event/hoppity/HoppityEggsCompactChat.kt | 4 +- .../event/hoppity/HoppityRabbitTheFishChecker.kt | 4 +- .../features/event/hoppity/NucleusBarriersBox.kt | 4 +- .../skyhanni/features/event/spook/TheGreatSpook.kt | 2 +- .../skyhanni/features/fame/CityProjectFeatures.kt | 5 +- .../skyhanni/features/fame/ReminderUtils.kt | 2 +- .../skyhanni/features/fame/UpgradeReminder.kt | 1 + .../fishing/tracker/FishingProfitTracker.kt | 5 +- .../features/fishing/trophy/GeyserFishing.kt | 4 +- .../features/fishing/trophy/TrophyFishAPI.kt | 2 +- .../features/garden/GardenNextJacobContest.kt | 8 +- .../skyhanni/features/garden/ToolTooltipTweaks.kt | 11 +- .../features/garden/composter/ComposterDisplay.kt | 2 +- .../features/garden/composter/ComposterOverlay.kt | 6 +- .../features/garden/farming/CropMoneyDisplay.kt | 2 +- .../garden/fortuneguide/CaptureFarmingGear.kt | 2 +- .../garden/fortuneguide/FortuneUpgrades.kt | 6 +- .../garden/fortuneguide/pages/OverviewPage.kt | 4 +- .../skyhanni/features/garden/pests/PestFinder.kt | 6 +- .../features/garden/pests/PestParticleLine.kt | 4 +- .../features/garden/pests/PestParticleWaypoint.kt | 6 +- .../skyhanni/features/garden/pests/SprayDisplay.kt | 2 +- .../garden/visitor/GardenVisitorFeatures.kt | 2 +- .../gui/customscoreboard/CustomScoreboardUtils.kt | 7 +- .../ScoreboardConfigEventElement.kt | 2 +- .../gui/customscoreboard/ScoreboardPattern.kt | 2 +- .../elements/ScoreboardElementBits.kt | 1 - .../elements/ScoreboardElementCopper.kt | 2 +- .../elements/ScoreboardElementLobbyCode.kt | 2 +- .../elements/ScoreboardElementPurse.kt | 2 +- .../elements/ScoreboardElementQuiver.kt | 3 +- .../skyhanni/features/inventory/ChestValue.kt | 1 - .../skyhanni/features/inventory/FocusMode.kt | 2 +- .../features/inventory/HideNotClickableItems.kt | 1 + .../inventory/ItemDisplayOverlayFeatures.kt | 10 +- .../skyhanni/features/inventory/ReforgeHelper.kt | 10 +- .../skyhanni/features/inventory/SackDisplay.kt | 11 +- .../bazaar/BazaarCancelledBuyOrderClipboard.kt | 1 + .../chocolatefactory/ChocolateFactoryStats.kt | 4 +- .../ChocolateFactoryStrayTracker.kt | 2 +- .../chocolatefactory/ChocolateShopPrice.kt | 2 +- .../experimentationtable/SuperpairDataDisplay.kt | 8 +- .../features/inventory/wardrobe/WardrobeAPI.kt | 4 +- .../skyhanni/features/mining/DeepCavernsGuide.kt | 6 +- .../skyhanni/features/mining/HotmFeatures.kt | 2 +- .../mining/MiningCommissionsBlocksColor.kt | 3 - .../features/mining/PrecisionMiningHighlight.kt | 7 +- .../skyhanni/features/mining/TunnelsMaps.kt | 6 +- .../mining/eventtracker/MiningEventDisplay.kt | 2 +- .../mining/eventtracker/MiningEventTracker.kt | 6 +- .../features/mining/powdertracker/PowderTracker.kt | 3 +- .../skyhanni/features/misc/IslandAreas.kt | 2 +- .../skyhanni/features/misc/UserLuckBreakdown.kt | 8 +- .../misc/compacttablist/AdvancedPlayerList.kt | 4 +- .../features/misc/discordrpc/DiscordStatus.kt | 14 +- .../misc/items/EstimatedItemValueCalculator.kt | 3 +- .../features/misc/items/enchants/Enchant.kt | 3 +- .../features/misc/items/enchants/EnchantParser.kt | 4 +- .../massconfiguration/DefaultConfigOptionGui.kt | 1 + .../skyhanni/features/misc/pets/PetNametag.kt | 4 +- .../features/misc/visualwords/VisualWordGui.kt | 2 +- .../skyhanni/features/nether/MatriarchHelper.kt | 4 +- .../skyhanni/features/nether/SulphurSkitterBox.kt | 6 +- .../features/nether/ashfang/AshfangHighlights.kt | 3 + .../features/nether/ashfang/AshfangManager.kt | 3 +- .../CrimsonIsleReputationHelper.kt | 3 - .../area/dreadfarm/RiftWiltedBerberisHelper.kt | 8 +- .../rift/area/mirrorverse/DanceRoomHelper.kt | 2 +- .../rift/area/stillgorechateau/SplatterHearts.kt | 4 +- .../rift/area/westvillage/VerminTracker.kt | 2 +- .../rift/area/westvillage/kloon/KloonHacking.kt | 2 +- .../rift/everywhere/motes/ShowMotesNpcSellPrice.kt | 6 +- .../features/skillprogress/SkillTooltip.kt | 6 +- .../slayer/blaze/BlazeSlayerDaggerHelper.kt | 2 +- .../features/slayer/blaze/FirePillarDisplay.kt | 2 +- .../mixins/hooks/BlockRendererDispatcherHook.kt | 1 + .../hooks/MixinPatcherFontRendererHookHook.kt | 40 ++-- .../skyhanni/test/ParkourWaypointSaver.kt | 4 +- .../test/SkyHanniConfigSearchResetCommand.kt | 9 +- .../java/at/hannibal2/skyhanni/test/WorldEdit.kt | 12 +- .../test/command/CopyNearbyEntitiesCommand.kt | 2 +- .../hannibal2/skyhanni/test/graph/GraphEditor.kt | 12 +- .../at/hannibal2/skyhanni/utils/CachedItemData.kt | 2 +- .../at/hannibal2/skyhanni/utils/ClipboardUtils.kt | 2 +- .../at/hannibal2/skyhanni/utils/CollectionUtils.kt | 2 +- .../at/hannibal2/skyhanni/utils/CombatUtils.kt | 3 + .../at/hannibal2/skyhanni/utils/EntityUtils.kt | 8 +- .../hannibal2/skyhanni/utils/EssenceItemUtils.kt | 4 +- .../at/hannibal2/skyhanni/utils/HypixelCommands.kt | 2 +- .../at/hannibal2/skyhanni/utils/InventoryUtils.kt | 4 +- .../java/at/hannibal2/skyhanni/utils/ItemUtils.kt | 3 + .../at/hannibal2/skyhanni/utils/KeyboardManager.kt | 10 +- .../java/at/hannibal2/skyhanni/utils/NEUItems.kt | 1 + .../at/hannibal2/skyhanni/utils/ParkourHelper.kt | 14 +- src/main/java/at/hannibal2/skyhanni/utils/Quad.kt | 5 + .../java/at/hannibal2/skyhanni/utils/RegexUtils.kt | 2 + .../at/hannibal2/skyhanni/utils/RenderUtils.kt | 13 +- .../at/hannibal2/skyhanni/utils/StringUtils.kt | 1 - .../at/hannibal2/skyhanni/utils/TabListData.kt | 4 +- .../at/hannibal2/skyhanni/utils/TimeLimitedSet.kt | 6 +- .../java/at/hannibal2/skyhanni/utils/TimeUtils.kt | 2 +- .../utils/repopatterns/RepoPatternManager.kt | 10 +- .../skyhanni/utils/shader/ShaderHelper.kt | 257 ++++++++++----------- .../at/hannibal2/skyhanni/utils/shader/Uniform.kt | 1 + .../utils/tracker/BucketedItemTrackerData.kt | 3 - .../skyhanni/utils/tracker/ItemTrackerData.kt | 3 - .../utils/tracker/SkyHanniBucketedItemTracker.kt | 8 +- .../skyhanni/utils/tracker/SkyHanniItemTracker.kt | 1 + .../skyhanni/utils/tracker/SkyHanniTracker.kt | 2 +- versions/1.8.9/detekt/baseline.xml | 27 +-- 175 files changed, 588 insertions(+), 574 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ab0e6c75..45d4ecaa9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,28 +36,30 @@ jobs: with: name: "Test Results" path: versions/1.8.9/build/reports/tests/test/ - #detekt: - # name: Run detekt - # runs-on: ubuntu-latest + detekt: + name: Run detekt + runs-on: ubuntu-latest - # steps: - # - name: Checkout code - # uses: actions/checkout@v4 - # - uses: ./.github/actions/setup-normal-workspace - # # detektMain is a LOT slower than detekt, but it does type analysis - # - name: Run detekt main (w/typing analysis) - # run: | - # ./gradlew detektMain --stacktrace - # - name: Annotate detekt failures - # if: ${{ !cancelled() }} - # run: | - # chmod +x .github/scripts/process_detekt_sarif.sh - # ./.github/scripts/process_detekt_sarif.sh versions/1.8.9/build/reports/detekt/main.sarif + steps: + - name: Checkout code + uses: actions/checkout@v4 + - uses: ./.github/actions/setup-normal-workspace + # detektMain is a LOT slower than detekt, but it does type analysis + - name: Run detekt main (w/typing analysis) + run: | + ./gradlew detektMain --stacktrace + - name: Annotate detekt failures + if: ${{ !cancelled() }} + run: | + chmod +x .github/scripts/process_detekt_sarif.sh + ./.github/scripts/process_detekt_sarif.sh versions/1.8.9/build/reports/detekt/main.sarif preprocess: runs-on: ubuntu-latest name: "Build multi version" + env: + SKIP_DETEKT: "true" steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/build.gradle.kts b/build.gradle.kts index 31aeef427..e412f9d92 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -375,7 +375,7 @@ detekt { tasks.withType().configureEach { onlyIf { - false // TODO: Remove onlyIf when we're ready to enforce + System.getenv("SKIP_DETEKT") != "true" } reports { diff --git a/detekt/baseline.xml b/detekt/baseline.xml index ac35c2f6d..c9151e8ae 100644 --- a/detekt/baseline.xml +++ b/detekt/baseline.xml @@ -2,8 +2,6 @@ - AnnotationOnSeparateLine:GraphEditor.kt$GraphEditor$@Suppress("MapGetWithNotNullAssertionOperator") node.neighbours.map { GraphingEdge( translation[node]!!, translation[it.key]!!, ) } - AnnotationOnSeparateLine:GraphEditor.kt$GraphEditor$@Suppress("MapGetWithNotNullAssertionOperator") nodes[indexedTable[otherNode.id]!!] ArrayPrimitive:CropMoneyDisplay.kt$CropMoneyDisplay$Array<Double> ArrayPrimitive:CropMoneyDisplay.kt$CropMoneyDisplay$arrayOf(npcPrice) ArrayPrimitive:CropMoneyDisplay.kt$CropMoneyDisplay$arrayOf(sellOffer) @@ -22,32 +20,28 @@ CyclomaticComplexMethod:GardenVisitorFeatures.kt$GardenVisitorFeatures$private fun readToolTip(visitor: VisitorAPI.Visitor, itemStack: ItemStack?, toolTip: MutableList<String>) CyclomaticComplexMethod:GhostCounter.kt$GhostCounter$private fun drawDisplay() CyclomaticComplexMethod:GraphEditor.kt$GraphEditor$private fun input() - CyclomaticComplexMethod:GraphEditorBugFinder.kt$GraphEditorBugFinder$private fun asyncTest() - CyclomaticComplexMethod:IslandAreas.kt$IslandAreas$private fun buildDisplay() CyclomaticComplexMethod:ItemDisplayOverlayFeatures.kt$ItemDisplayOverlayFeatures$private fun getStackTip(item: ItemStack): String? CyclomaticComplexMethod:ItemNameResolver.kt$ItemNameResolver$internal fun getInternalNameOrNull(itemName: String): NEUInternalName? CyclomaticComplexMethod:MinecraftConsoleFilter.kt$MinecraftConsoleFilter$override fun filter(event: LogEvent?): Filter.Result - CyclomaticComplexMethod:OverviewPage.kt$OverviewPage$private fun getPage(): Pair<List<List<Renderable>>, List<Renderable>> CyclomaticComplexMethod:PacketTest.kt$PacketTest$private fun Packet<*>.print() CyclomaticComplexMethod:ParkourHelper.kt$ParkourHelper$fun render(event: LorenzRenderWorldEvent) CyclomaticComplexMethod:Renderable.kt$Renderable.Companion$internal fun shouldAllowLink(debug: Boolean = false, bypassChecks: Boolean): Boolean CyclomaticComplexMethod:SkillProgress.kt$SkillProgress$private fun drawDisplay() CyclomaticComplexMethod:VampireSlayerFeatures.kt$VampireSlayerFeatures$private fun EntityOtherPlayerMP.process() CyclomaticComplexMethod:VisualWordGui.kt$VisualWordGui$override fun drawScreen(unusedX: Int, unusedY: Int, partialTicks: Float) - DestructuringDeclarationWithTooManyEntries:SackDisplay.kt$SackDisplay$val (internalName, rough, flawed, fine, roughPrice, flawedPrice, finePrice) = gem Filename:AreaChangeEvents.kt$at.hannibal2.skyhanni.events.skyblock.AreaChangeEvents.kt + ImportOrdering:DungeonLividFinder.kt$import at.hannibal2.skyhanni.events.CheckRenderEntityEvent import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent import at.hannibal2.skyhanni.mixins.hooks.RenderLivingEntityHelper import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.test.command.ErrorManager import at.hannibal2.skyhanni.utils.BlockUtils.getBlockStateAt import at.hannibal2.skyhanni.utils.ColorUtils.withAlpha import at.hannibal2.skyhanni.utils.EntityUtils import at.hannibal2.skyhanni.utils.LocationUtils.distanceSqToPlayer import at.hannibal2.skyhanni.utils.LorenzColor import at.hannibal2.skyhanni.utils.LorenzColor.Companion.toLorenzColor import at.hannibal2.skyhanni.utils.LorenzVec import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText import at.hannibal2.skyhanni.utils.RenderUtils.drawLineToEye import at.hannibal2.skyhanni.utils.RenderUtils.drawWaypointFilled import at.hannibal2.skyhanni.utils.RenderUtils.exactLocation import net.minecraft.block.BlockStainedGlass import net.minecraft.client.entity.EntityOtherPlayerMP import net.minecraft.client.entity.EntityPlayerSP import net.minecraft.client.Minecraft import net.minecraft.entity.item.EntityArmorStand import net.minecraft.potion.Potion import net.minecraft.util.AxisAlignedBB import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + ImportOrdering:EntityUtils.kt$import at.hannibal2.skyhanni.data.mob.MobFilter.isRealPlayer import at.hannibal2.skyhanni.events.SkyHanniRenderEntityEvent import at.hannibal2.skyhanni.features.dungeon.DungeonAPI import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.ItemUtils.getSkullTexture import at.hannibal2.skyhanni.utils.LocationUtils.canBeSeen import at.hannibal2.skyhanni.utils.LocationUtils.distanceTo import at.hannibal2.skyhanni.utils.LocationUtils.distanceToIgnoreY import at.hannibal2.skyhanni.utils.LorenzUtils.baseMaxHealth import at.hannibal2.skyhanni.utils.LorenzUtils.derpy import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.compat.getArmorOrFullInventory import at.hannibal2.skyhanni.utils.compat.getLoadedPlayers import at.hannibal2.skyhanni.utils.compat.getNameAsString import at.hannibal2.skyhanni.utils.compat.isOnMainThread import at.hannibal2.skyhanni.utils.compat.normalizeAsArray import net.minecraft.block.state.IBlockState import net.minecraft.client.Minecraft import net.minecraft.client.entity.EntityOtherPlayerMP import net.minecraft.client.multiplayer.WorldClient import net.minecraft.entity.Entity import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.item.EntityArmorStand import net.minecraft.entity.monster.EntityEnderman import net.minecraft.entity.player.EntityPlayer import net.minecraft.item.ItemStack import net.minecraft.potion.Potion import net.minecraft.tileentity.TileEntity import net.minecraft.util.AxisAlignedBB import net.minecraftforge.client.event.RenderLivingEvent //#if FORGE import net.minecraftforge.fml.common.eventhandler.Event import net.minecraftforge.fml.common.eventhandler.SubscribeEvent InjectDispatcher:ClipboardUtils.kt$ClipboardUtils$IO InjectDispatcher:GardenNextJacobContest.kt$GardenNextJacobContest$IO InjectDispatcher:HypixelBazaarFetcher.kt$HypixelBazaarFetcher$IO InjectDispatcher:MayorAPI.kt$MayorAPI$IO LongMethod:CopyNearbyEntitiesCommand.kt$CopyNearbyEntitiesCommand$fun command(args: Array<String>) LongMethod:CropMoneyDisplay.kt$CropMoneyDisplay$private fun drawDisplay(): List<List<Any>> - LongMethod:DefaultConfigOptionGui.kt$DefaultConfigOptionGui$override fun drawScreen(mouseX: Int, mouseY: Int, partialTicks: Float) LongMethod:GhostCounter.kt$GhostCounter$private fun drawDisplay() LongMethod:GraphEditor.kt$GraphEditor$private fun input() LongMethod:ItemDisplayOverlayFeatures.kt$ItemDisplayOverlayFeatures$private fun getStackTip(item: ItemStack): String? LongMethod:MinecraftConsoleFilter.kt$MinecraftConsoleFilter$override fun filter(event: LogEvent?): Filter.Result - LongMethod:OverviewPage.kt$OverviewPage$private fun getPage(): Pair<List<List<Renderable>>, List<Renderable>> LongMethod:RenderableTooltips.kt$RenderableTooltips$private fun drawHoveringText() LongMethod:TabListRenderer.kt$TabListRenderer$private fun drawTabList() LongMethod:VisualWordGui.kt$VisualWordGui$override fun drawScreen(unusedX: Int, unusedY: Int, partialTicks: Float) @@ -64,9 +58,7 @@ LoopWithTooManyJumpStatements:SuperpairsClicksAlert.kt$SuperpairsClicksAlert$for MapGetWithNotNullAssertionOperator:NavigationHelper.kt$NavigationHelper$distances[node]!! MatchingDeclarationName:AreaChangeEvents.kt$ScoreboardAreaChangeEvent : SkyHanniEvent - MaxLineLength:GraphEditor.kt$GraphEditor$@Suppress("MapGetWithNotNullAssertionOperator") nodes[indexedTable[otherNode.id]!!] to node.position.distance(otherNode.position) MemberNameEqualsClassName:CaptureFarmingGear.kt$CaptureFarmingGear$fun captureFarmingGear() - MemberNameEqualsClassName:Commands.kt$Commands$// command -> description private val commands = mutableListOf<CommandInfo>() MemberNameEqualsClassName:FameRanks.kt$FameRanks$var fameRanks = emptyMap<String, FameRank>() private set MemberNameEqualsClassName:FirstMinionTier.kt$FirstMinionTier$fun firstMinionTier( otherItems: Map<NEUInternalName, Int>, minions: MutableMap<String, NEUInternalName>, tierOneMinions: MutableList<NEUInternalName>, tierOneMinionsDone: MutableSet<NEUInternalName>, ) MemberNameEqualsClassName:LastServers.kt$LastServers$private val lastServers = mutableMapOf<String, SimpleTimeMark>() @@ -113,7 +105,6 @@ ReturnCount:GardenVisitorFeatures.kt$GardenVisitorFeatures$private fun showGui(): Boolean ReturnCount:GraphEditor.kt$GraphEditor$private fun input() ReturnCount:HideNotClickableItems.kt$HideNotClickableItems$private fun hideSalvage(chestName: String, stack: ItemStack): Boolean - ReturnCount:IslandGraphs.kt$IslandGraphs$private fun handleTick() ReturnCount:ItemDisplayOverlayFeatures.kt$ItemDisplayOverlayFeatures$private fun getStackTip(item: ItemStack): String? ReturnCount:ItemNameResolver.kt$ItemNameResolver$internal fun getInternalNameOrNull(itemName: String): NEUInternalName? ReturnCount:ItemPriceUtils.kt$ItemPriceUtils$fun NEUInternalName.getPriceOrNull( priceSource: ItemPriceSource = ItemPriceSource.BAZAAR_INSTANT_BUY, pastRecipes: List<PrimitiveRecipe> = emptyList(), ): Double? @@ -134,7 +125,6 @@ ReturnCount:ShowFishingItemName.kt$ShowFishingItemName$fun inCorrectArea(): Boolean ReturnCount:SkillAPI.kt$SkillAPI$fun onCommand(it: Array<String>) ReturnCount:SkyHanniConfigSearchResetCommand.kt$SkyHanniConfigSearchResetCommand$private suspend fun setCommand(args: Array<String>): String - ReturnCount:TabComplete.kt$TabComplete$private fun customTabComplete(command: String): List<String>? SpreadOperator:ItemUtils.kt$ItemUtils$(tag, displayName, *lore.toTypedArray()) SpreadOperator:LimboPlaytime.kt$LimboPlaytime$( itemID.getItemStack().item, ITEM_NAME, *createItemLore() ) SpreadOperator:Text.kt$Text$(*component.toTypedArray(), separator = separator) @@ -168,8 +158,6 @@ UnsafeCallOnNullableType:CompactBestiaryChatMessage.kt$CompactBestiaryChatMessage$it.groups[1]!! UnsafeCallOnNullableType:ConfigManager.kt$ConfigManager$file!! UnsafeCallOnNullableType:CorpseTracker.kt$CorpseTracker$applicableKeys.first().key!! - UnsafeCallOnNullableType:CosmeticFollowingLine.kt$CosmeticFollowingLine$latestLocations[b]!! - UnsafeCallOnNullableType:CosmeticFollowingLine.kt$CosmeticFollowingLine$locations[b]!! UnsafeCallOnNullableType:CropMoneyDisplay.kt$CropMoneyDisplay$cropNames[internalName]!! UnsafeCallOnNullableType:DailyMiniBossHelper.kt$DailyMiniBossHelper$getByDisplayName(name)!! UnsafeCallOnNullableType:DamageIndicatorManager.kt$DamageIndicatorManager$data.deathLocation!! @@ -196,8 +184,6 @@ UnsafeCallOnNullableType:FarmingWeightDisplay.kt$FarmingWeightDisplay$weightPerCrop[CropType.SUGAR_CANE]!! UnsafeCallOnNullableType:FeatureToggleProcessor.kt$FeatureToggleProcessor$latestCategory!! UnsafeCallOnNullableType:FeatureTogglesByDefaultAdapter.kt$FeatureTogglesByDefaultAdapter$gson!! - UnsafeCallOnNullableType:FishingProfitTracker.kt$FishingProfitTracker$itemCategories[currentCategory]!! - UnsafeCallOnNullableType:FishingProfitTracker.kt$FishingProfitTracker.Data$itemCategories["Trophy Fish"]!! UnsafeCallOnNullableType:FortuneUpgrades.kt$FortuneUpgrades$nextTalisman.upgradeCost?.first!! UnsafeCallOnNullableType:GardenComposterUpgradesData.kt$GardenComposterUpgradesData$ComposterUpgrade.getByName(name)!! UnsafeCallOnNullableType:GardenCropMilestoneDisplay.kt$GardenCropMilestoneDisplay$cultivatingData[crop]!! @@ -237,7 +223,6 @@ UnsafeCallOnNullableType:SackAPI.kt$SackAPI$match.groups[2]!! UnsafeCallOnNullableType:SackAPI.kt$SackAPI$match.groups[3]!! UnsafeCallOnNullableType:SackAPI.kt$SackAPI$oldData!! - UnsafeCallOnNullableType:SimpleCommand.kt$SimpleCommand$tabRunnable!! UnsafeCallOnNullableType:SkyHanniBucketedItemTracker.kt$SkyHanniBucketedItemTracker$it.get(DisplayMode.SESSION).getItemsProp()[internalName]!! UnsafeCallOnNullableType:SkyHanniBucketedItemTracker.kt$SkyHanniBucketedItemTracker$it.get(DisplayMode.TOTAL).getItemsProp()[internalName]!! UnsafeCallOnNullableType:SkyHanniMod.kt$SkyHanniMod.Companion$Loader.instance().indexedModList[MODID]!! @@ -267,12 +252,10 @@ VarCouldBeVal:CarnivalZombieShootout.kt$CarnivalZombieShootout$private var lastUpdate = Updates(SimpleTimeMark.farPast(), SimpleTimeMark.farPast()) VarCouldBeVal:ChocolateFactoryStrayTracker.kt$ChocolateFactoryStrayTracker$private var claimedStraysSlots = mutableListOf<Int>() VarCouldBeVal:CompactBestiaryChatMessage.kt$CompactBestiaryChatMessage$private var bestiaryDescription = mutableListOf<String>() - VarCouldBeVal:CompactExperimentRewards.kt$CompactExperimentRewards$private var gainedRewards = mutableListOf<String>() VarCouldBeVal:CraftRoomHolographicMob.kt$CraftRoomHolographicMob$private var entityToHolographicEntity = mapOf( EntityZombie::class.java to HolographicEntities.zombie, EntitySlime::class.java to HolographicEntities.slime, EntityCaveSpider::class.java to HolographicEntities.caveSpider, ) VarCouldBeVal:CustomWardrobe.kt$CustomWardrobe$private var guiName = "Custom Wardrobe" VarCouldBeVal:Enchant.kt$Enchant$@Expose private var goodLevel = 0 VarCouldBeVal:Enchant.kt$Enchant$@Expose private var maxLevel = 0 - VarCouldBeVal:Enchant.kt$Enchant.Stacking$@Expose @Suppress("unused") private var statLabel: String? = null VarCouldBeVal:Enchant.kt$Enchant.Stacking$@Expose private var nbtNum: String? = null VarCouldBeVal:Enchant.kt$Enchant.Stacking$@Expose private var stackLevel: TreeSet<Int>? = null VarCouldBeVal:ErrorManager.kt$ErrorManager$private var cache = TimeLimitedSet<Pair<String, Int>>(10.minutes) @@ -281,7 +264,6 @@ VarCouldBeVal:EstimatedItemValueCalculator.kt$EstimatedItemValueCalculator$var nameColor = if (!useless) "§9" else "§7" VarCouldBeVal:ExperimentsProfitTracker.kt$ExperimentsProfitTracker$private var currentBottlesInInventory = mutableMapOf<NEUInternalName, Int>() VarCouldBeVal:ExperimentsProfitTracker.kt$ExperimentsProfitTracker$private var lastBottlesInInventory = mutableMapOf<NEUInternalName, Int>() - VarCouldBeVal:ExperimentsProfitTracker.kt$ExperimentsProfitTracker$private var lastSplashes = mutableListOf<ItemStack>() VarCouldBeVal:FarmingWeightDisplay.kt$FarmingWeightDisplay$private var nextPlayers = mutableListOf<UpcomingLeaderboardPlayer>() VarCouldBeVal:FlareDisplay.kt$FlareDisplay$private var flares = mutableListOf<Flare>() VarCouldBeVal:FontRendererHook.kt$FontRendererHook$private var CHROMA_COLOR: Int = -0x1 @@ -321,13 +303,8 @@ VarCouldBeVal:SlayerItemsOnGround.kt$SlayerItemsOnGround$private var itemsOnGround = TimeLimitedCache<EntityItem, String>(2.seconds) VarCouldBeVal:SoopyGuessBurrow.kt$SoopyGuessBurrow$private var dingSlope = mutableListOf<Float>() VarCouldBeVal:SoopyGuessBurrow.kt$SoopyGuessBurrow$private var locations = mutableListOf<LorenzVec>() - VarCouldBeVal:SuperpairExperimentInformationDisplay.kt$SuperpairExperimentInformationDisplay$// TODO remove string. use enum instead! maybe even create new data type instead of map of pairs private var found = mutableMapOf<Pair<Item?, ItemPair?>, String>() - VarCouldBeVal:SuperpairExperimentInformationDisplay.kt$SuperpairExperimentInformationDisplay$private var lastClicked = mutableListOf<Pair<Int, Int>>() - VarCouldBeVal:SuperpairExperimentInformationDisplay.kt$SuperpairExperimentInformationDisplay$private var toCheck = mutableListOf<Pair<Int, Int>>() - VarCouldBeVal:SuperpairExperimentInformationDisplay.kt$SuperpairExperimentInformationDisplay$private var uncoveredItems = mutableListOf<Pair<Int, String>>() VarCouldBeVal:TiaRelayHelper.kt$TiaRelayHelper$private var resultDisplay = mutableMapOf<Int, Int>() VarCouldBeVal:TiaRelayHelper.kt$TiaRelayHelper$private var sounds = mutableMapOf<Int, Sound>() - VarCouldBeVal:Translator.kt$Translator$var lang = config.languageCode.get() VarCouldBeVal:TrevorFeatures.kt$TrevorFeatures$private var backupTrapperID: Int = 17 VarCouldBeVal:TrevorFeatures.kt$TrevorFeatures$private var trapperID: Int = 56 VarCouldBeVal:TrophyFishDisplay.kt$TrophyFishDisplay$private var recentlyDroppedTrophies = TimeLimitedCache<NEUInternalName, TrophyRarity>(5.seconds) diff --git a/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt b/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt index 534d38d47..46d941fe0 100644 --- a/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/api/ReforgeAPI.kt @@ -201,7 +201,7 @@ object ReforgeAPI { return Reforge( name = it.reforgeName, type = LorenzUtils.enumValueOf(type.first), - stats = it.reforgeStats ?: emptyMap(), + stats = it.reforgeStats.orEmpty(), reforgeStone = it.internalName, specialItems = type.second.takeIf { it.isNotEmpty() }, extraProperty = it.reforgeAbility, diff --git a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt index aa930adb1..1cb893dbc 100644 --- a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt @@ -437,7 +437,6 @@ object SkillAPI { val neededXp = levelingMap.filter { it.key < level }.values.sum().toLong() ChatUtils.chat("You need §b${neededXp.addSeparators()} §eXP to be level §b${level.toDouble()}") } else { - val base = levelingMap.values.sum().toLong() val neededXP = xpRequiredForLevel(level.toDouble()) ChatUtils.chat("You need §b${neededXP.addSeparators()} §eXP to be level §b${level.toDouble()}") } diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt index 24a3748c6..b82d4d8f9 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt @@ -153,7 +153,7 @@ class ConfigManager { println("") println( "This crash is here to remind you to fix the missing " + - "@ConfigLink annotation over your new config position config element." + "@ConfigLink annotation over your new config position config element." ) println("") println("Steps to fix:") diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt index 93c7d3407..f8afe645c 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt @@ -83,7 +83,7 @@ object ConfigUpdaterMigrator { if (newParentElement !is JsonObject) { logger.log( "Catastrophic: element at path $old could not be relocated to $new, " + - "since another element already inhabits that path" + "since another element already inhabits that path" ) return } @@ -128,13 +128,11 @@ object ConfigUpdaterMigrator { ?.flatMap { player -> player.value.asJsonObject["profiles"]?.asJsonObject?.entrySet()?.map { "storage.players.${player.key}.profiles.${it.key}" - } ?: listOf() - } - ?: listOf() + }.orEmpty() + }.orEmpty() ), "#player" to ( - storage?.get("players")?.asJsonObject?.entrySet()?.map { "storage.players.${it.key}" } - ?: listOf() + storage?.get("players")?.asJsonObject?.entrySet()?.map { "storage.players.${it.key}" }.orEmpty() ), ) val migration = ConfigFixEvent( diff --git a/src/main/java/at/hannibal2/skyhanni/config/commands/CommandRegistrationEvent.kt b/src/main/java/at/hannibal2/skyhanni/config/commands/CommandRegistrationEvent.kt index 5345b39ae..5c021a8d4 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/commands/CommandRegistrationEvent.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/commands/CommandRegistrationEvent.kt @@ -1,16 +1,16 @@ package at.hannibal2.skyhanni.config.commands import at.hannibal2.skyhanni.api.event.SkyHanniEvent -import at.hannibal2.skyhanni.config.commands.Commands.commands +import at.hannibal2.skyhanni.config.commands.Commands.commandList import net.minecraftforge.client.ClientCommandHandler object CommandRegistrationEvent : SkyHanniEvent() { fun register(name: String, block: CommandBuilder.() -> Unit) { val info = CommandBuilder(name).apply(block) - if (commands.any { it.name == name }) { + if (commandList.any { it.name == name }) { error("The command '$name is already registered!'") } ClientCommandHandler.instance.registerCommand(info.toSimpleCommand()) - commands.add(info) + commandList.add(info) } } diff --git a/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt b/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt index d6454b2b4..5ba6d3769 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/commands/Commands.kt @@ -105,9 +105,10 @@ import at.hannibal2.skyhanni.utils.chat.ChatClickActionManager import at.hannibal2.skyhanni.utils.repopatterns.RepoPatternGui @SkyHanniModule +@Suppress("LargeClass", "LongMethod") object Commands { - val commands = mutableListOf() + val commandList = mutableListOf() @HandleEvent fun onCommandRegistration(event: CommandRegistrationEvent) { @@ -298,6 +299,7 @@ object Commands { event.register("shcolors") { description = "Prints a list of all Minecraft color & formatting codes in chat." category = CommandCategory.USERS_ACTIVE + @Suppress("AvoidBritishSpelling") aliases = listOf("shcolor", "shcolours", "shcolour") callback { ColorFormattingHelper.printColorCodeList() } } diff --git a/src/main/java/at/hannibal2/skyhanni/config/core/elements/GuiElement.kt b/src/main/java/at/hannibal2/skyhanni/config/core/elements/GuiElement.kt index 6144dddf2..e823dc521 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/core/elements/GuiElement.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/core/elements/GuiElement.kt @@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.config.core.elements import net.minecraft.client.gui.Gui +@Suppress("EmptyFunctionBlock", "UnusedParameter") abstract class GuiElement : Gui() { abstract fun render(x: Int, y: Int) diff --git a/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt b/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt index 77daa2601..d63b2aefd 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/BossbarData.kt @@ -12,7 +12,7 @@ object BossbarData { private var bossbar: String? = null private var previousServerBossbar = "" - fun getBossbar() = bossbar ?: "" + fun getBossbar() = bossbar.orEmpty() @SubscribeEvent fun onWorldChange(event: LorenzWorldChangeEvent) { diff --git a/src/main/java/at/hannibal2/skyhanni/data/EntityMovementData.kt b/src/main/java/at/hannibal2/skyhanni/data/EntityMovementData.kt index db9044ef2..83fb0f8cf 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/EntityMovementData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/EntityMovementData.kt @@ -4,8 +4,8 @@ import at.hannibal2.skyhanni.events.EntityMoveEvent import at.hannibal2.skyhanni.events.IslandChangeEvent import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.LorenzTickEvent -import at.hannibal2.skyhanni.events.SkyHanniWarpEvent import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent +import at.hannibal2.skyhanni.events.SkyHanniWarpEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule import at.hannibal2.skyhanni.utils.DelayedRun import at.hannibal2.skyhanni.utils.LorenzUtils diff --git a/src/main/java/at/hannibal2/skyhanni/data/EventCounter.kt b/src/main/java/at/hannibal2/skyhanni/data/EventCounter.kt index 6e308c189..67aec45cb 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/EventCounter.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/EventCounter.kt @@ -15,7 +15,7 @@ object EventCounter { private val config get() = SkyHanniMod.feature.dev.debug - private var map = mutableMapOf() + private val map = mutableMapOf() private var lastUpdate = SimpleTimeMark.farPast() private var enabled = false diff --git a/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestonesCommunityFix.kt b/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestonesCommunityFix.kt index 691a3c8e2..4eaf3137e 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestonesCommunityFix.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/GardenCropMilestonesCommunityFix.kt @@ -87,39 +87,17 @@ object GardenCropMilestonesCommunityFix { val lore = stack.getLore() val next = lore.nextAfter({ GardenCropMilestones.totalPattern.matches(it) }, 3) ?: return - val total = lore.nextAfter({ GardenCropMilestones.totalPattern.matches(it) }, 6) ?: return - -// debug(" ") -// debug("crop: $crop") -// debug("realTier: $realTier") val guessNextMax = nextMax(realTier, crop) - // debug("guessNextMax: ${guessNextMax.addSeparators()}") val nextMax = amountPattern.matchMatcher(next) { group("max").formatLong() } ?: return -// debug("nextMax real: ${nextMax.addSeparators()}") + if (nextMax != guessNextMax) { -// debug("wrong, add to list") wrongData.add("$crop:$realTier:${nextMax.addSeparators()}") } - - val guessTotalMax = GardenCropMilestones.getCropsForTier(46, crop) // no need to overflow here -// println("guessTotalMax: ${guessTotalMax.addSeparators()}") - val totalMax = amountPattern.matchMatcher(total) { - group("max").formatLong() - } ?: return -// println("totalMax real: ${totalMax.addSeparators()}") - val totalOffBy = guessTotalMax - totalMax -// debug("$crop total offf by: ${totalOffBy.addSeparators()}") } - // fun debug(message: String) { -// if (SkyHanniMod.feature.dev.debug.enabled) { -// println(message) -// } -// } - /** * This helps to fix wrong crop milestone data * This command reads the clipboard content, diff --git a/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt b/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt index e6dfa7671..010267609 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt @@ -37,8 +37,8 @@ object GuiEditManager { private var lastHotkeyPressed = SimpleTimeMark.farPast() - private var currentPositions = TimeLimitedCache(15.seconds) - private var currentBorderSize = mutableMapOf>() + private val currentPositions = TimeLimitedCache(15.seconds) + private val currentBorderSize = mutableMapOf>() private var lastMovedGui: String? = null @SubscribeEvent diff --git a/src/main/java/at/hannibal2/skyhanni/data/GuildAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/GuildAPI.kt index 1e98b61e4..81d2da77f 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/GuildAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/GuildAPI.kt @@ -40,5 +40,5 @@ object GuildAPI { fun isInGuild(name: String) = name in getAllMembers() - fun getAllMembers() = ProfileStorageData.playerSpecific?.guildMembers ?: emptyList() + fun getAllMembers() = ProfileStorageData.playerSpecific?.guildMembers.orEmpty() } diff --git a/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt b/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt index 3137458c3..beb7581b0 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HotmData.kt @@ -447,6 +447,7 @@ enum class HotmData( "perk.enable", "§a§lENABLED|(§.)*SELECTED", ) + @Suppress("UnusedPrivateProperty") private val disabledPattern by patternGroup.pattern( "perk.disabled", "§c§lDISABLED|§7§eClick to select!", @@ -530,7 +531,7 @@ enum class HotmData( HotmAPI.MayhemPerk.entries.forEach { it.chatPattern } - (0..CORE_OF_THE_MOUNTAIN.maxLevel).forEach { level -> + for (level in 0..CORE_OF_THE_MOUNTAIN.maxLevel) { val map = mutableMapOf() if (level >= 1) map.addOrPut(HotmReward.EXTRA_TOKENS, 1.0) if (level >= 2) map.addOrPut(HotmReward.ABILITY_LEVEL, 1.0) diff --git a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt index 20ed57276..b17c23d4d 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt @@ -52,6 +52,7 @@ object HypixelData { "servername.scoreboard", "§e(?.+\\.)?hypixel\\.net", ) + @Suppress("UnusedPrivateProperty") private val islandNamePattern by patternGroup.pattern( "islandname", "(?:§.)*(Area|Dungeon): (?:§.)*(?.*)", @@ -139,7 +140,7 @@ object HypixelData { // Data from locraw var locrawData: JsonObject? = null - private var locraw: MutableMap = listOf( + private val locraw: MutableMap = listOf( "server", "gametype", "lobbyname", @@ -148,12 +149,12 @@ object HypixelData { "map", ).associateWith { "" }.toMutableMap() - val server get() = locraw["server"] ?: "" - val gameType get() = locraw["gametype"] ?: "" - val lobbyName get() = locraw["lobbyname"] ?: "" - val lobbyType get() = locraw["lobbytype"] ?: "" - val mode get() = locraw["mode"] ?: "" - val map get() = locraw["map"] ?: "" + val server get() = locraw["server"].orEmpty() + val gameType get() = locraw["gametype"].orEmpty() + val lobbyName get() = locraw["lobbyname"].orEmpty() + val lobbyType get() = locraw["lobbytype"].orEmpty() + val mode get() = locraw["mode"].orEmpty() + val map get() = locraw["map"].orEmpty() fun checkCurrentServerId() { if (!LorenzUtils.inSkyBlock) return @@ -267,7 +268,7 @@ object HypixelData { if (obj.has("server")) { locrawData = obj for (key in locraw.keys) { - locraw[key] = obj[key]?.asString ?: "" + locraw[key] = obj[key]?.asString.orEmpty() } inLimbo = locraw["server"] == "limbo" inLobby = locraw["lobbyname"] != "" @@ -286,7 +287,7 @@ object HypixelData { } } - private var loggerIslandChange = LorenzLogger("debug/island_change") + private val loggerIslandChange = LorenzLogger("debug/island_change") @SubscribeEvent fun onWorldChange(event: LorenzWorldChangeEvent) { @@ -442,7 +443,7 @@ object HypixelData { } } - serverNameConnectionPattern.matchMatcher(mc.currentServerData?.serverIP ?: "") { + serverNameConnectionPattern.matchMatcher(mc.currentServerData?.serverIP.orEmpty()) { hypixel = true if (group("prefix") == "alpha.") { hypixelAlpha = true @@ -497,7 +498,7 @@ object HypixelData { TabListData.fullyLoaded = true // Can not use color coding, because of the color effect (§f§lSKYB§6§lL§e§lOCK§A§L GUEST) val guesting = guestPattern.matches(ScoreboardData.objectiveTitle.removeColor()) - foundIsland = TabWidget.AREA.matchMatcherFirstLine { group("island").removeColor() } ?: "" + foundIsland = TabWidget.AREA.matchMatcherFirstLine { group("island").removeColor() }.orEmpty() newIsland = getIslandType(foundIsland, guesting) } diff --git a/src/main/java/at/hannibal2/skyhanni/data/ItemAddManager.kt b/src/main/java/at/hannibal2/skyhanni/data/ItemAddManager.kt index 4906f5f80..b72c38c7f 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ItemAddManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ItemAddManager.kt @@ -89,7 +89,7 @@ object ItemAddManager { } private var lastDiceRoll = SimpleTimeMark.farPast() - private var superCraftedItems = TimeLimitedSet(30.seconds) + private val superCraftedItems = TimeLimitedSet(30.seconds) @SubscribeEvent fun onChat(event: LorenzChatEvent) { diff --git a/src/main/java/at/hannibal2/skyhanni/data/LocationFixData.kt b/src/main/java/at/hannibal2/skyhanni/data/LocationFixData.kt index 20dfbb615..8ec067deb 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/LocationFixData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/LocationFixData.kt @@ -11,7 +11,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @SkyHanniModule object LocationFixData { - private var locationFixes = mutableMapOf>() + private val locationFixes = mutableMapOf>() private data class LocationFix(val area: AxisAlignedBB, val realLocation: String) diff --git a/src/main/java/at/hannibal2/skyhanni/data/MaxwellAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/MaxwellAPI.kt index 5fd644818..f94ab310d 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/MaxwellAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/MaxwellAPI.kt @@ -52,7 +52,7 @@ object MaxwellAPI { } var favoritePowers: List - get() = storage?.maxwell?.favoritePowers ?: listOf() + get() = storage?.maxwell?.favoritePowers.orEmpty() set(value) { storage?.maxwell?.favoritePowers = value } diff --git a/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt index 949e33146..1cb023ecd 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt @@ -96,7 +96,7 @@ object MayorAPI { private var lastJerryExtraMayorReminder = SimpleTimeMark.farPast() private var lastUpdate = SimpleTimeMark.farPast() - private var dispatcher = Dispatchers.IO + private val dispatcher = Dispatchers.IO private var rawMayorData: MayorJson? = null private var candidates = mapOf() diff --git a/src/main/java/at/hannibal2/skyhanni/data/SackAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/SackAPI.kt index 5235284ff..4978497cf 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/SackAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/SackAPI.kt @@ -233,12 +233,12 @@ object SackAPI { sibling.chatStyle?.chatHoverEvent?.value?.formattedText?.removeColor()?.takeIf { it.startsWith("Added") } - } ?: "" + }.orEmpty() val sackRemoveText = event.chatComponent.siblings.firstNotNullOfOrNull { sibling -> sibling.chatStyle?.chatHoverEvent?.value?.formattedText?.removeColor()?.takeIf { it.startsWith("Removed") } - } ?: "" + }.orEmpty() val sackChangeText = sackAddText + sackRemoveText if (sackChangeText.isEmpty()) return @@ -345,7 +345,10 @@ object SackAPI { var roughPrice: Long = 0, var flawedPrice: Long = 0, var finePrice: Long = 0, - ) : AbstractSackItem() + ) : AbstractSackItem() { + val priceSum: Long + get() = roughPrice + flawedPrice + finePrice + } data class SackRune( var stack: ItemStack? = null, diff --git a/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt b/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt index a8cafcf3d..42de7a75b 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt @@ -25,7 +25,8 @@ object ScoreboardData { private var sidebarLines: List = emptyList() // TODO rename to raw var sidebarLinesRaw: List = emptyList() // TODO delete - val objectiveTitle: String get() = Minecraft.getMinecraft().theWorld?.scoreboard?.getObjectiveInDisplaySlot(1)?.displayName ?: "" + val objectiveTitle: String get() = + Minecraft.getMinecraft().theWorld?.scoreboard?.getObjectiveInDisplaySlot(1)?.displayName.orEmpty() private var dirty = false @@ -48,7 +49,7 @@ object ScoreboardData { * - '§8- §c§6Flame Dr§6agon§a 460M§c❤' * ``` */ - val lastColor = start.lastColorCode() ?: "" + val lastColor = start.lastColorCode().orEmpty() // Generate the list of color suffixes val colorSuffixes = lastColor.chunked(2).toMutableList() diff --git a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt index 20dbcdfd1..aa9aa1f65 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt @@ -26,7 +26,7 @@ import kotlin.time.Duration.Companion.seconds @SkyHanniModule object SlayerAPI { - private var nameCache = TimeLimitedCache, Pair>(1.minutes) + private val nameCache = TimeLimitedCache, Pair>(1.minutes) var questStartTime = SimpleTimeMark.farPast() var isInCorrectArea = false @@ -108,14 +108,14 @@ object SlayerAPI { // wait with sending SlayerChangeEvent until profile is detected if (ProfileStorageData.profileSpecific == null) return - val slayerQuest = ScoreboardData.sidebarLinesFormatted.nextAfter("Slayer Quest") ?: "" + val slayerQuest = ScoreboardData.sidebarLinesFormatted.nextAfter("Slayer Quest").orEmpty() if (slayerQuest != latestSlayerCategory) { val old = latestSlayerCategory latestSlayerCategory = slayerQuest SlayerChangeEvent(old, latestSlayerCategory).postAndCatch() } - val slayerProgress = ScoreboardData.sidebarLinesFormatted.nextAfter("Slayer Quest", 2) ?: "" + val slayerProgress = ScoreboardData.sidebarLinesFormatted.nextAfter("Slayer Quest", 2).orEmpty() if (latestSlayerProgress != slayerProgress) { SlayerProgressChangeEvent(latestSlayerProgress, slayerProgress).postAndCatch() latestSlayerProgress = slayerProgress diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt index 41d0f701c..5ba59c148 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RepoErrorData.kt @@ -14,6 +14,6 @@ data class RepoErrorData( @Expose @SerializedName("custom_message") var customMessage: String?, @Expose @SerializedName("affected_versions") var affectedVersions: List = listOf(), ) { - val messageExact get() = rawMessageExact ?: emptyList() - val messageStartsWith get() = rawMessageStartsWith ?: emptyList() + val messageExact get() = rawMessageExact.orEmpty() + val messageStartsWith get() = rawMessageStartsWith.orEmpty() } diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt index a8c8f3fe4..bc92dc189 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt @@ -34,7 +34,7 @@ data class NeuReforgeJson( LorenzRarity.valueOf( it.key.uppercase().replace(" ", "_"), ) - } ?: emptyMap() + }.orEmpty() else -> emptyMap() } @@ -53,10 +53,10 @@ data class NeuReforgeJson( is Map<*, *> -> { val type = "SPECIAL_ITEMS" val map = any as? Map> ?: return type to emptyList() - val internalNames = map["internalName"]?.map { it.asInternalName() } ?: emptyList() + val internalNames = map["internalName"]?.map { it.asInternalName() }.orEmpty() val itemType = map["itemid"]?.map { NEUItems.getInternalNamesForItemId(Item.getByNameOrId(it)) - }?.flatten() ?: emptyList() + }?.flatten().orEmpty() type to (internalNames + itemType) } diff --git a/src/main/java/at/hannibal2/skyhanni/data/mob/IslandExceptions.kt b/src/main/java/at/hannibal2/skyhanni/data/mob/IslandExceptions.kt index eed2d5e70..428d18de8 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/mob/IslandExceptions.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/mob/IslandExceptions.kt @@ -82,7 +82,7 @@ object IslandExceptions { baseEntity.name.contains("Livid") -> MobUtils.getClosestArmorStandWithName(baseEntity, 6.0, "﴾ Livid") .makeMobResult { MobFactories.boss(baseEntity, it, overriddenName = "Real Livid") } - baseEntity is EntityIronGolem && MobFilter.wokeSleepingGolemPattern.matches(armorStand?.name ?: "") -> + baseEntity is EntityIronGolem && MobFilter.wokeSleepingGolemPattern.matches(armorStand?.name.orEmpty()) -> MobData.MobResult.found(Mob(baseEntity, Mob.Type.DUNGEON, armorStand, "Sleeping Golem")) // Consistency fix else -> null diff --git a/src/main/java/at/hannibal2/skyhanni/data/mob/MobDebug.kt b/src/main/java/at/hannibal2/skyhanni/data/mob/MobDebug.kt index d9cb34ed2..e1da962ff 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/mob/MobDebug.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/mob/MobDebug.kt @@ -10,7 +10,7 @@ import at.hannibal2.skyhanni.utils.LocationUtils.getTopCenter import at.hannibal2.skyhanni.utils.LorenzColor import at.hannibal2.skyhanni.utils.LorenzDebug import at.hannibal2.skyhanni.utils.MobUtils -import at.hannibal2.skyhanni.utils.RenderUtils.drawFilledBoundingBox_nea +import at.hannibal2.skyhanni.utils.RenderUtils.drawFilledBoundingBoxNea import at.hannibal2.skyhanni.utils.RenderUtils.drawString import at.hannibal2.skyhanni.utils.RenderUtils.expandBlock import net.minecraft.client.Minecraft @@ -34,7 +34,7 @@ object MobDebug { private fun MobData.MobSet.highlight(event: LorenzRenderWorldEvent, color: (Mob) -> (LorenzColor)) { for (mob in filter { it.isNotInvisible() }) { - event.drawFilledBoundingBox_nea(mob.boundingBox.expandBlock(), color.invoke(mob).toColor(), 0.3f) + event.drawFilledBoundingBoxNea(mob.boundingBox.expandBlock(), color.invoke(mob).toColor(), 0.3f) } } @@ -82,7 +82,7 @@ object MobDebug { } if (config.showRayHit) { lastRayHit?.let { - event.drawFilledBoundingBox_nea(it.boundingBox.expandBlock(), LorenzColor.GOLD.toColor(), 0.5f) + event.drawFilledBoundingBoxNea(it.boundingBox.expandBlock(), LorenzColor.GOLD.toColor(), 0.5f) } } } diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt b/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt index 6e1f1d07f..5eb71715f 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/model/Graph.kt @@ -194,6 +194,7 @@ data class DijkstraTree( val lastVisitedNode: GraphNode, ) +@Suppress("MapGetWithNotNullAssertionOperator") fun DijkstraTree.findPathToDestination(end: GraphNode): Pair { val distances = this val reversePath = buildList { diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt b/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt index d1c6dede0..3f5019509 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt @@ -18,12 +18,13 @@ import java.util.EnumMap import java.util.regex.Pattern import kotlin.math.roundToInt +@Suppress("MaxLineLength") enum class SkyblockStat( val icon: String, @Language("RegExp") tabListPatternS: String, @Language("RegExp") menuPatternS: String, ) { - DAMAGE("§c❁", "", ""), // Weapon only + DAMAGE("§c❁", "", ""), // Weapon only HEALTH("§c❤", " Health: §r§c❤(?.*)", " §c❤ Health §f(?.*)"), // TODO get from action bar DEFENSE("§a❈", " Defense: §r§a❈(?.*)", " §a❈ Defense §f(?.*)"), // TODO get from action bar STRENGTH("§c❁", " Strength: §r§c❁(?.*)", " §c❁ Strength §f(?.*)"), @@ -137,7 +138,7 @@ enum class SkyblockStat( private fun onSkyblockMenu(event: InventoryFullyOpenedEvent) { if (event.inventoryName != "SkyBlock Menu") return val list = event.inventoryItems[PLAYER_STATS_SLOT_INDEX]?.getLore() ?: return - DelayedRun.runNextTick { // Delayed to not impact opening time + DelayedRun.runNextTick { // Delayed to not impact opening time assignEntry(list, StatSourceType.SKYBLOCK_MENU) { it.menuPattern } } } @@ -148,7 +149,7 @@ enum class SkyblockStat( if (event.inventoryName != "Your Equipment and Stats") return val list = statsMenuRelevantSlotIndexes.mapNotNull { event.inventoryItems[it]?.getLore() }.flatten() if (list.isEmpty()) return - DelayedRun.runNextTick { // Delayed to not impact opening time + DelayedRun.runNextTick { // Delayed to not impact opening time assignEntry(list, StatSourceType.STATS_MENU) { it.menuPattern } } } diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt b/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt index 15fcbe8a9..9b8fc79ca 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt @@ -65,6 +65,7 @@ class TextInput { activeInstance = null } + @Suppress("UnusedParameter") fun onMinecraftInput(keyBinding: KeyBinding, cir: CallbackInfoReturnable) { if (activeInstance != null) { cir.returnValue = false @@ -92,7 +93,7 @@ class TextInput { } private var textBox - get() = activeInstance?.textBox ?: "" + get() = activeInstance?.textBox.orEmpty() set(value) { activeInstance?.textBox = value } diff --git a/src/main/java/at/hannibal2/skyhanni/data/repo/RepoManager.kt b/src/main/java/at/hannibal2/skyhanni/data/repo/RepoManager.kt index 3b5915fee..9434835de 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/repo/RepoManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/repo/RepoManager.kt @@ -61,11 +61,12 @@ class RepoManager(private val configLocation: File) { return "${config.location.user}/${config.location.name}/${config.location.branch}" } - private val defaultUser = "hannibal002" - private val defaultName = "SkyHanni-REPO" - private val defaultBranch = "main" + private const val DEFAULT_USER = "hannibal002" + private const val DEFAULT_NAME = "SkyHanni-REPO" + private const val DEFAULT_BRANCH = "main" - fun RepositoryConfig.RepositoryLocation.hasDefaultSettings() = user == defaultUser && name == defaultName && branch == defaultBranch + fun RepositoryConfig.RepositoryLocation.hasDefaultSettings() = + user == DEFAULT_USER && name == DEFAULT_NAME && branch == DEFAULT_BRANCH } fun loadRepoInformation() { @@ -246,7 +247,7 @@ class RepoManager(private val configLocation: File) { ).asComponent(), ) text.add("§7Repo Auto Update Value: §c${config.repoAutoUpdate}".asComponent()) - text.add("§7Backup Repo Value: §c${usingBackupRepo}".asComponent()) + text.add("§7Backup Repo Value: §c$usingBackupRepo".asComponent()) text.add("§7If you have Repo Auto Update turned off, please try turning that on.".asComponent()) text.add("§cUnsuccessful Constants §7(${unsuccessfulConstants.size}):".asComponent()) @@ -333,9 +334,9 @@ class RepoManager(private val configLocation: File) { return } - user = defaultUser - name = defaultName - branch = defaultBranch + user = DEFAULT_USER + name = DEFAULT_NAME + branch = DEFAULT_BRANCH if (manual) {