From d16c81267bc67cece9911e35069b50a919b7bdda Mon Sep 17 00:00:00 2001 From: Edouard127 <46357922+Edouard127@users.noreply.github.com> Date: Mon, 19 Aug 2024 18:31:13 -0400 Subject: [PATCH 1/2] moved folder to root utils --- .../main/kotlin/com/lambda/command/LambdaCommand.kt | 4 ++-- .../com/lambda/command/commands/ConfigCommand.kt | 2 +- .../com/lambda/command/commands/ModuleCommand.kt | 2 +- .../com/lambda/command/commands/ReplayCommand.kt | 2 +- .../com/lambda/command/commands/TransferCommand.kt | 4 ++-- .../kotlin/com/lambda/graphics/animation/Animation.kt | 2 +- .../com/lambda/graphics/renderer/esp/DynamicAABB.kt | 8 ++++---- .../renderer/esp/builders/DynamicESPBuilders.kt | 6 +++--- .../renderer/esp/builders/StaticESPBuilders.kt | 6 +++--- .../lambda/graphics/renderer/esp/impl/ESPRenderer.kt | 4 ++-- .../gui/impl/clickgui/buttons/setting/BindButton.kt | 4 ++-- .../gui/impl/clickgui/buttons/setting/EnumSlider.kt | 4 ++-- .../com/lambda/interaction/PlayerPacketManager.kt | 6 +++--- .../kotlin/com/lambda/interaction/RotationManager.kt | 4 ++-- .../com/lambda/interaction/construction/Blueprint.kt | 2 +- .../interaction/construction/DynamicBlueprint.kt | 4 ++-- .../lambda/interaction/construction/StaticBlueprint.kt | 4 ++-- .../lambda/interaction/visibilty/VisibilityChecker.kt | 2 +- .../com/lambda/module/modules/combat/Criticals.kt | 10 +++++----- .../com/lambda/module/modules/movement/NoFall.kt | 8 ++++---- .../kotlin/com/lambda/module/modules/movement/Speed.kt | 2 +- .../kotlin/com/lambda/module/modules/player/Freecam.kt | 6 +++--- .../com/lambda/module/modules/player/HighwayTools.kt | 4 ++-- .../kotlin/com/lambda/module/modules/player/Replay.kt | 2 +- .../com/lambda/module/modules/render/Particles.kt | 4 ++-- .../main/kotlin/com/lambda/task/tasks/BreakBlock.kt | 2 +- .../main/kotlin/com/lambda/task/tasks/InventoryTask.kt | 6 +++--- .../lambda/util/{primitives => }/extension/Aliases.kt | 4 ++-- .../com/lambda/util/{primitives => }/extension/Box.kt | 4 ++-- .../util/{primitives => }/extension/Components.kt | 4 ++-- .../lambda/util/{primitives => }/extension/Entity.kt | 4 ++-- .../com/lambda/util/{primitives => }/extension/Enum.kt | 4 ++-- .../lambda/util/{primitives => }/extension/Mixin.kt | 4 ++-- .../lambda/util/{primitives => }/extension/Screen.kt | 4 ++-- 34 files changed, 71 insertions(+), 71 deletions(-) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Aliases.kt (74%) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Box.kt (80%) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Components.kt (75%) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Entity.kt (90%) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Enum.kt (84%) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Mixin.kt (74%) rename common/src/main/kotlin/com/lambda/util/{primitives => }/extension/Screen.kt (88%) diff --git a/common/src/main/kotlin/com/lambda/command/LambdaCommand.kt b/common/src/main/kotlin/com/lambda/command/LambdaCommand.kt index 1daabcd88..96ba26a83 100644 --- a/common/src/main/kotlin/com/lambda/command/LambdaCommand.kt +++ b/common/src/main/kotlin/com/lambda/command/LambdaCommand.kt @@ -2,7 +2,7 @@ package com.lambda.command import com.lambda.command.CommandManager.dispatcher import com.lambda.util.Nameable -import com.lambda.util.primitives.extension.CommandBuilder +import com.lambda.util.extension.CommandBuilder import com.mojang.brigadier.builder.LiteralArgumentBuilder import net.minecraft.command.CommandRegistryAccess import net.minecraft.command.CommandSource @@ -29,4 +29,4 @@ abstract class LambdaCommand( } abstract fun CommandBuilder.create() -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/command/commands/ConfigCommand.kt b/common/src/main/kotlin/com/lambda/command/commands/ConfigCommand.kt index 494e53c4d..8cc1523b8 100644 --- a/common/src/main/kotlin/com/lambda/command/commands/ConfigCommand.kt +++ b/common/src/main/kotlin/com/lambda/command/commands/ConfigCommand.kt @@ -7,7 +7,7 @@ import com.lambda.brigadier.required import com.lambda.command.LambdaCommand import com.lambda.config.Configuration import com.lambda.util.Communication.info -import com.lambda.util.primitives.extension.CommandBuilder +import com.lambda.util.extension.CommandBuilder object ConfigCommand : LambdaCommand( name = "config", diff --git a/common/src/main/kotlin/com/lambda/command/commands/ModuleCommand.kt b/common/src/main/kotlin/com/lambda/command/commands/ModuleCommand.kt index c66436a13..3d19eebd0 100644 --- a/common/src/main/kotlin/com/lambda/command/commands/ModuleCommand.kt +++ b/common/src/main/kotlin/com/lambda/command/commands/ModuleCommand.kt @@ -16,7 +16,7 @@ import com.lambda.util.Communication.info import com.lambda.util.Communication.joinToText import com.lambda.util.Communication.warn import com.lambda.util.StringUtils -import com.lambda.util.primitives.extension.CommandBuilder +import com.lambda.util.extension.CommandBuilder import com.lambda.util.text.ClickEvents.suggestCommand import com.lambda.util.text.buildText import com.lambda.util.text.clickEvent diff --git a/common/src/main/kotlin/com/lambda/command/commands/ReplayCommand.kt b/common/src/main/kotlin/com/lambda/command/commands/ReplayCommand.kt index c2a4dc73c..e344f6313 100644 --- a/common/src/main/kotlin/com/lambda/command/commands/ReplayCommand.kt +++ b/common/src/main/kotlin/com/lambda/command/commands/ReplayCommand.kt @@ -12,7 +12,7 @@ import com.lambda.command.LambdaCommand import com.lambda.module.modules.player.Replay import com.lambda.util.FolderRegister import com.lambda.util.FolderRegister.listRecursive -import com.lambda.util.primitives.extension.CommandBuilder +import com.lambda.util.extension.CommandBuilder object ReplayCommand : LambdaCommand( name = "replay", diff --git a/common/src/main/kotlin/com/lambda/command/commands/TransferCommand.kt b/common/src/main/kotlin/com/lambda/command/commands/TransferCommand.kt index f134fbb46..d66f41e6b 100644 --- a/common/src/main/kotlin/com/lambda/command/commands/TransferCommand.kt +++ b/common/src/main/kotlin/com/lambda/command/commands/TransferCommand.kt @@ -11,7 +11,7 @@ import com.lambda.interaction.material.ContainerManager.containerMatchSelection import com.lambda.interaction.material.StackSelection.Companion.selectStack import com.lambda.interaction.material.transfer.TransferResult import com.lambda.util.Communication.info -import com.lambda.util.primitives.extension.CommandBuilder +import com.lambda.util.extension.CommandBuilder object TransferCommand : LambdaCommand( name = "transfer", @@ -105,4 +105,4 @@ object TransferCommand : LambdaCommand( } } } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/graphics/animation/Animation.kt b/common/src/main/kotlin/com/lambda/graphics/animation/Animation.kt index a49c554aa..5d9dfdacc 100644 --- a/common/src/main/kotlin/com/lambda/graphics/animation/Animation.kt +++ b/common/src/main/kotlin/com/lambda/graphics/animation/Animation.kt @@ -2,7 +2,7 @@ package com.lambda.graphics.animation import com.lambda.Lambda.mc import com.lambda.util.math.MathUtils.lerp -import com.lambda.util.primitives.extension.partialTicks +import com.lambda.util.extension.partialTicks import kotlin.math.abs import kotlin.reflect.KProperty diff --git a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/DynamicAABB.kt b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/DynamicAABB.kt index 852f78901..46d5a0cc3 100644 --- a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/DynamicAABB.kt +++ b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/DynamicAABB.kt @@ -2,9 +2,9 @@ package com.lambda.graphics.renderer.esp import com.lambda.util.math.VecUtils.minus import com.lambda.util.math.VecUtils.plus -import com.lambda.util.primitives.extension.max -import com.lambda.util.primitives.extension.min -import com.lambda.util.primitives.extension.prevPos +import com.lambda.util.extension.max +import com.lambda.util.extension.min +import com.lambda.util.extension.prevPos import net.minecraft.entity.Entity import net.minecraft.util.math.Box @@ -40,4 +40,4 @@ class DynamicAABB { update(boundingBox) } } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/DynamicESPBuilders.kt b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/DynamicESPBuilders.kt index 2d6ab1577..4c8a40355 100644 --- a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/DynamicESPBuilders.kt +++ b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/DynamicESPBuilders.kt @@ -4,8 +4,8 @@ import com.lambda.graphics.renderer.esp.DirectionMask import com.lambda.graphics.renderer.esp.DirectionMask.hasDirection import com.lambda.graphics.renderer.esp.DynamicAABB import com.lambda.graphics.renderer.esp.impl.DynamicESPRenderer -import com.lambda.util.primitives.extension.max -import com.lambda.util.primitives.extension.min +import com.lambda.util.extension.max +import com.lambda.util.extension.min import java.awt.Color fun DynamicESPRenderer.build( @@ -95,4 +95,4 @@ fun DynamicESPRenderer.buildOutline( if (outlineMode.check(hasNorth, hasEast)) putLine(trb, brb) if (outlineMode.check(hasEast, hasSouth)) putLine(trf, brf) if (outlineMode.check(hasSouth, hasWest)) putLine(tlf, blf) -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/StaticESPBuilders.kt b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/StaticESPBuilders.kt index b56836d01..a0a157e50 100644 --- a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/StaticESPBuilders.kt +++ b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/builders/StaticESPBuilders.kt @@ -4,8 +4,8 @@ import com.lambda.graphics.renderer.esp.DirectionMask import com.lambda.graphics.renderer.esp.DirectionMask.hasDirection import com.lambda.graphics.renderer.esp.impl.ESPRenderer import com.lambda.graphics.renderer.esp.impl.StaticESPRenderer -import com.lambda.util.primitives.extension.max -import com.lambda.util.primitives.extension.min +import com.lambda.util.extension.max +import com.lambda.util.extension.min import net.minecraft.util.math.Box import java.awt.Color @@ -107,4 +107,4 @@ fun StaticESPRenderer.buildOutline( if (outlineMode.check(hasSouth, hasWest)) putLine(tlf, blf) updateOutlines = true -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/impl/ESPRenderer.kt b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/impl/ESPRenderer.kt index df7091f5c..c35a4a2e5 100644 --- a/common/src/main/kotlin/com/lambda/graphics/renderer/esp/impl/ESPRenderer.kt +++ b/common/src/main/kotlin/com/lambda/graphics/renderer/esp/impl/ESPRenderer.kt @@ -9,7 +9,7 @@ import com.lambda.graphics.gl.GlStateUtils.withFaceCulling import com.lambda.graphics.gl.GlStateUtils.withLineWidth import com.lambda.graphics.shader.Shader import com.lambda.module.modules.client.RenderSettings -import com.lambda.util.primitives.extension.partialTicks +import com.lambda.util.extension.partialTicks abstract class ESPRenderer( usage: BufferUsage, @@ -57,4 +57,4 @@ abstract class ESPRenderer( "renderer/box_dynamic" ) to VertexAttrib.Group.DYNAMIC_RENDERER } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/BindButton.kt b/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/BindButton.kt index c86e0d533..6a071bd2b 100644 --- a/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/BindButton.kt +++ b/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/BindButton.kt @@ -9,7 +9,7 @@ import com.lambda.gui.impl.clickgui.buttons.ModuleButton import com.lambda.gui.impl.clickgui.buttons.SettingButton import com.lambda.util.KeyCode import com.lambda.util.math.ColorUtils.multAlpha -import com.lambda.util.primitives.extension.displayValue +import com.lambda.util.extension.displayValue class BindButton( setting: KeyBindSetting, @@ -44,4 +44,4 @@ class BindButton( if (!inputBar.isActive) (owner.gui as? AbstractClickGui)?.unfocusSettings() inputBar.toggle() } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/EnumSlider.kt b/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/EnumSlider.kt index d48710a47..bcdc653b8 100644 --- a/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/EnumSlider.kt +++ b/common/src/main/kotlin/com/lambda/gui/impl/clickgui/buttons/setting/EnumSlider.kt @@ -11,7 +11,7 @@ import com.lambda.util.math.MathUtils.floorToInt import com.lambda.util.math.MathUtils.lerp import com.lambda.util.math.Vec2d import com.lambda.util.math.transform -import com.lambda.util.primitives.extension.displayValue +import com.lambda.util.extension.displayValue import java.awt.Color class EnumSlider>( @@ -57,4 +57,4 @@ class EnumSlider>( playClickSound() setting.next() } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/interaction/PlayerPacketManager.kt b/common/src/main/kotlin/com/lambda/interaction/PlayerPacketManager.kt index 05f26ca5b..491ca07bb 100644 --- a/common/src/main/kotlin/com/lambda/interaction/PlayerPacketManager.kt +++ b/common/src/main/kotlin/com/lambda/interaction/PlayerPacketManager.kt @@ -11,9 +11,9 @@ import com.lambda.util.collections.LimitedOrderedSet import com.lambda.util.math.VecUtils.approximate import com.lambda.util.player.MovementUtils.motionX import com.lambda.util.player.MovementUtils.motionZ -import com.lambda.util.primitives.extension.component1 -import com.lambda.util.primitives.extension.component2 -import com.lambda.util.primitives.extension.component3 +import com.lambda.util.extension.component1 +import com.lambda.util.extension.component2 +import com.lambda.util.extension.component3 import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.* diff --git a/common/src/main/kotlin/com/lambda/interaction/RotationManager.kt b/common/src/main/kotlin/com/lambda/interaction/RotationManager.kt index 45a2c0d85..508d159b4 100644 --- a/common/src/main/kotlin/com/lambda/interaction/RotationManager.kt +++ b/common/src/main/kotlin/com/lambda/interaction/RotationManager.kt @@ -20,8 +20,8 @@ import com.lambda.threading.runSafe import com.lambda.util.math.MathUtils.lerp import com.lambda.util.math.MathUtils.toRadian import com.lambda.util.math.Vec2d -import com.lambda.util.primitives.extension.partialTicks -import com.lambda.util.primitives.extension.rotation +import com.lambda.util.extension.partialTicks +import com.lambda.util.extension.rotation import net.minecraft.client.input.Input import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket import kotlin.math.* diff --git a/common/src/main/kotlin/com/lambda/interaction/construction/Blueprint.kt b/common/src/main/kotlin/com/lambda/interaction/construction/Blueprint.kt index 87aacb975..8d9ca25e6 100644 --- a/common/src/main/kotlin/com/lambda/interaction/construction/Blueprint.kt +++ b/common/src/main/kotlin/com/lambda/interaction/construction/Blueprint.kt @@ -4,7 +4,7 @@ import com.lambda.context.SafeContext import com.lambda.interaction.construction.verify.TargetState import com.lambda.util.BlockUtils.blockPos import com.lambda.util.BlockUtils.blockState -import com.lambda.util.primitives.extension.Structure +import com.lambda.util.extension.Structure import net.minecraft.structure.StructureTemplate import net.minecraft.util.math.BlockBox import net.minecraft.util.math.BlockPos diff --git a/common/src/main/kotlin/com/lambda/interaction/construction/DynamicBlueprint.kt b/common/src/main/kotlin/com/lambda/interaction/construction/DynamicBlueprint.kt index 029537309..12227c181 100644 --- a/common/src/main/kotlin/com/lambda/interaction/construction/DynamicBlueprint.kt +++ b/common/src/main/kotlin/com/lambda/interaction/construction/DynamicBlueprint.kt @@ -1,7 +1,7 @@ package com.lambda.interaction.construction import com.lambda.context.SafeContext -import com.lambda.util.primitives.extension.Structure +import com.lambda.util.extension.Structure import net.minecraft.util.math.Vec3i data class DynamicBlueprint( @@ -35,4 +35,4 @@ data class DynamicBlueprint( onTick: SafeContext.(Structure) -> Structure ) = DynamicBlueprint(init = { emptyMap() }, update = onTick) } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/interaction/construction/StaticBlueprint.kt b/common/src/main/kotlin/com/lambda/interaction/construction/StaticBlueprint.kt index 35b4020da..87cdb9b24 100644 --- a/common/src/main/kotlin/com/lambda/interaction/construction/StaticBlueprint.kt +++ b/common/src/main/kotlin/com/lambda/interaction/construction/StaticBlueprint.kt @@ -1,6 +1,6 @@ package com.lambda.interaction.construction -import com.lambda.util.primitives.extension.Structure +import com.lambda.util.extension.Structure data class StaticBlueprint( override val structure: Structure @@ -8,4 +8,4 @@ data class StaticBlueprint( companion object { fun Structure.toBlueprint() = StaticBlueprint(this) } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/interaction/visibilty/VisibilityChecker.kt b/common/src/main/kotlin/com/lambda/interaction/visibilty/VisibilityChecker.kt index ae3f9f118..e10472668 100644 --- a/common/src/main/kotlin/com/lambda/interaction/visibilty/VisibilityChecker.kt +++ b/common/src/main/kotlin/com/lambda/interaction/visibilty/VisibilityChecker.kt @@ -10,7 +10,7 @@ import com.lambda.interaction.rotation.RotationContext import com.lambda.module.modules.client.TaskFlow import com.lambda.util.BlockUtils.blockState import com.lambda.util.math.VecUtils.distSq -import com.lambda.util.primitives.extension.component6 +import com.lambda.util.extension.component6 import com.lambda.util.world.raycast.RayCastUtils.blockResult import com.lambda.util.world.raycast.RayCastUtils.entityResult import net.minecraft.entity.Entity diff --git a/common/src/main/kotlin/com/lambda/module/modules/combat/Criticals.kt b/common/src/main/kotlin/com/lambda/module/modules/combat/Criticals.kt index 9dc83d2ab..73ce58192 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/combat/Criticals.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/combat/Criticals.kt @@ -7,10 +7,10 @@ import com.lambda.interaction.rotation.Rotation import com.lambda.interaction.rotation.Rotation.Companion.rotationTo import com.lambda.module.Module import com.lambda.module.tag.ModuleTag -import com.lambda.util.primitives.extension.component1 -import com.lambda.util.primitives.extension.component2 -import com.lambda.util.primitives.extension.component3 -import com.lambda.util.primitives.extension.rotation +import com.lambda.util.extension.component1 +import com.lambda.util.extension.component2 +import com.lambda.util.extension.component3 +import com.lambda.util.extension.rotation import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket @@ -52,4 +52,4 @@ object Criticals : Module( connection.sendPacket(packet) } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/module/modules/movement/NoFall.kt b/common/src/main/kotlin/com/lambda/module/modules/movement/NoFall.kt index 73f630a8f..843205e42 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/movement/NoFall.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/movement/NoFall.kt @@ -6,9 +6,9 @@ import com.lambda.module.Module import com.lambda.module.tag.ModuleTag import com.lambda.util.player.MovementUtils.motion import com.lambda.util.player.MovementUtils.motionY -import com.lambda.util.primitives.extension.component1 -import com.lambda.util.primitives.extension.component2 -import com.lambda.util.primitives.extension.component3 +import com.lambda.util.extension.component1 +import com.lambda.util.extension.component2 +import com.lambda.util.extension.component3 import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket @@ -46,4 +46,4 @@ object NoFall : Module( } } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/module/modules/movement/Speed.kt b/common/src/main/kotlin/com/lambda/module/modules/movement/Speed.kt index ea49516a9..318cc46ce 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/movement/Speed.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/movement/Speed.kt @@ -24,7 +24,7 @@ import com.lambda.util.player.MovementUtils.newMovementInput import com.lambda.util.player.MovementUtils.roundedForward import com.lambda.util.player.MovementUtils.roundedStrafing import com.lambda.util.player.MovementUtils.setSpeed -import com.lambda.util.primitives.extension.contains +import com.lambda.util.extension.contains import com.lambda.util.world.WorldUtils.getFastEntities import net.minecraft.entity.LivingEntity import net.minecraft.entity.decoration.ArmorStandEntity diff --git a/common/src/main/kotlin/com/lambda/module/modules/player/Freecam.kt b/common/src/main/kotlin/com/lambda/module/modules/player/Freecam.kt index 4c9aeb0cb..e75ced37b 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/player/Freecam.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/player/Freecam.kt @@ -21,9 +21,9 @@ import com.lambda.util.player.MovementUtils.newMovementInput import com.lambda.util.player.MovementUtils.roundedForward import com.lambda.util.player.MovementUtils.roundedStrafing import com.lambda.util.player.MovementUtils.verticalMovement -import com.lambda.util.primitives.extension.interpolate -import com.lambda.util.primitives.extension.partialTicks -import com.lambda.util.primitives.extension.rotation +import com.lambda.util.extension.interpolate +import com.lambda.util.extension.partialTicks +import com.lambda.util.extension.rotation import com.lambda.util.world.raycast.RayCastUtils.orMiss import com.lambda.util.world.raycast.RayCastUtils.orNull import net.minecraft.client.option.Perspective diff --git a/common/src/main/kotlin/com/lambda/module/modules/player/HighwayTools.kt b/common/src/main/kotlin/com/lambda/module/modules/player/HighwayTools.kt index 0f19ba304..13f430993 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/player/HighwayTools.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/player/HighwayTools.kt @@ -9,7 +9,7 @@ import com.lambda.task.tasks.BuildStructure.Companion.buildStructure import com.lambda.util.BaritoneUtils import com.lambda.util.Communication.info import com.lambda.util.player.MovementUtils.octant -import com.lambda.util.primitives.extension.Structure +import com.lambda.util.extension.Structure import com.lambda.util.world.StructureUtils.generateDirectionalTube import net.minecraft.block.Blocks import net.minecraft.util.math.BlockPos @@ -160,4 +160,4 @@ object HighwayTools : Module( return structure } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/module/modules/player/Replay.kt b/common/src/main/kotlin/com/lambda/module/modules/player/Replay.kt index a25bba4ec..19ad506af 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/player/Replay.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/player/Replay.kt @@ -27,7 +27,7 @@ import com.lambda.util.Formatting.asString import com.lambda.util.Formatting.getTime import com.lambda.util.KeyCode import com.lambda.util.StringUtils.sanitizeForFilename -import com.lambda.util.primitives.extension.rotation +import com.lambda.util.extension.rotation import com.lambda.util.text.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/common/src/main/kotlin/com/lambda/module/modules/render/Particles.kt b/common/src/main/kotlin/com/lambda/module/modules/render/Particles.kt index 7e23e5d65..6cc7cc3bf 100644 --- a/common/src/main/kotlin/com/lambda/module/modules/render/Particles.kt +++ b/common/src/main/kotlin/com/lambda/module/modules/render/Particles.kt @@ -29,7 +29,7 @@ import com.lambda.util.math.VecUtils.plus import com.lambda.util.math.VecUtils.times import com.lambda.util.math.transform import com.lambda.util.player.MovementUtils.moveDelta -import com.lambda.util.primitives.extension.partialTicks +import com.lambda.util.extension.partialTicks import com.lambda.util.world.raycast.RayCastMask import net.minecraft.entity.Entity import net.minecraft.util.math.Vec3d @@ -194,4 +194,4 @@ object Particles : Module( } } } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/task/tasks/BreakBlock.kt b/common/src/main/kotlin/com/lambda/task/tasks/BreakBlock.kt index cb10d5c8e..43e9416a0 100644 --- a/common/src/main/kotlin/com/lambda/task/tasks/BreakBlock.kt +++ b/common/src/main/kotlin/com/lambda/task/tasks/BreakBlock.kt @@ -17,7 +17,7 @@ import com.lambda.util.BlockUtils.blockState import com.lambda.util.item.ItemUtils.block import com.lambda.util.player.SlotUtils.clickSlot import com.lambda.util.player.SlotUtils.hotbarAndStorage -import com.lambda.util.primitives.extension.inventorySlots +import com.lambda.util.extension.inventorySlots import com.lambda.util.world.raycast.RayCastUtils.blockResult import net.minecraft.block.BlockState import net.minecraft.entity.ItemEntity diff --git a/common/src/main/kotlin/com/lambda/task/tasks/InventoryTask.kt b/common/src/main/kotlin/com/lambda/task/tasks/InventoryTask.kt index 86d6a4974..abbd6badd 100644 --- a/common/src/main/kotlin/com/lambda/task/tasks/InventoryTask.kt +++ b/common/src/main/kotlin/com/lambda/task/tasks/InventoryTask.kt @@ -9,8 +9,8 @@ import com.lambda.task.Task import com.lambda.util.item.ItemUtils.block import com.lambda.util.item.ItemUtils.defaultDisposables import com.lambda.util.player.SlotUtils.clickSlot -import com.lambda.util.primitives.extension.containerSlots -import com.lambda.util.primitives.extension.inventorySlots +import com.lambda.util.extension.containerSlots +import com.lambda.util.extension.inventorySlots import net.minecraft.item.ItemStack import net.minecraft.screen.ScreenHandler import net.minecraft.screen.slot.Slot @@ -81,4 +81,4 @@ class InventoryTask( inline fun deposit(screen: H, selection: StackSelection) = moveItems(screen, selection, screen.inventorySlots, screen.containerSlots) } -} \ No newline at end of file +} diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Aliases.kt b/common/src/main/kotlin/com/lambda/util/extension/Aliases.kt similarity index 74% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Aliases.kt rename to common/src/main/kotlin/com/lambda/util/extension/Aliases.kt index d59ea9904..db4b407a7 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Aliases.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Aliases.kt @@ -1,4 +1,4 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import com.lambda.interaction.construction.verify.TargetState import com.mojang.brigadier.builder.LiteralArgumentBuilder @@ -6,4 +6,4 @@ import net.minecraft.command.CommandSource import net.minecraft.util.math.BlockPos typealias CommandBuilder = LiteralArgumentBuilder -typealias Structure = Map \ No newline at end of file +typealias Structure = Map diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Box.kt b/common/src/main/kotlin/com/lambda/util/extension/Box.kt similarity index 80% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Box.kt rename to common/src/main/kotlin/com/lambda/util/extension/Box.kt index 6f4dc3f05..b78dfbd8a 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Box.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Box.kt @@ -1,4 +1,4 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import net.minecraft.util.math.Box import net.minecraft.util.math.Vec3d @@ -7,4 +7,4 @@ val Box.min get() = Vec3d(minX, minY, minZ) val Box.max get() = Vec3d(maxX, maxY, maxZ) -operator fun Box.contains(boundingBox: Box) = this.intersects(boundingBox) \ No newline at end of file +operator fun Box.contains(boundingBox: Box) = this.intersects(boundingBox) diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Components.kt b/common/src/main/kotlin/com/lambda/util/extension/Components.kt similarity index 75% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Components.kt rename to common/src/main/kotlin/com/lambda/util/extension/Components.kt index c0bfea405..28e403be9 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Components.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Components.kt @@ -1,4 +1,4 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import net.minecraft.util.math.Vec2f import net.minecraft.util.math.Vec3d @@ -8,4 +8,4 @@ operator fun Vec2f.component2() = this.y operator fun Vec3d.component1() = this.x operator fun Vec3d.component2() = this.y operator fun Vec3d.component3() = this.z -operator fun DoubleArray.component6() = this[5] \ No newline at end of file +operator fun DoubleArray.component6() = this[5] diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Entity.kt b/common/src/main/kotlin/com/lambda/util/extension/Entity.kt similarity index 90% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Entity.kt rename to common/src/main/kotlin/com/lambda/util/extension/Entity.kt index 06ac94ea9..8285498f3 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Entity.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Entity.kt @@ -1,4 +1,4 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import com.lambda.interaction.rotation.Rotation import com.lambda.util.math.MathUtils.lerp @@ -16,4 +16,4 @@ var LivingEntity.isElytraFlying get() = isFallFlying set(value) { setFlag(7, value) } -fun Vec3d.interpolate(other: Vec3d, t: Double) = lerp(this, other, t) \ No newline at end of file +fun Vec3d.interpolate(other: Vec3d, t: Double) = lerp(this, other, t) diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Enum.kt b/common/src/main/kotlin/com/lambda/util/extension/Enum.kt similarity index 84% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Enum.kt rename to common/src/main/kotlin/com/lambda/util/extension/Enum.kt index bcddbaf3f..94a6d2bec 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Enum.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Enum.kt @@ -1,4 +1,4 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import com.lambda.util.Nameable @@ -8,4 +8,4 @@ val Enum<*>.displayValue low.lowercase().replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() } - } \ No newline at end of file + } diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Mixin.kt b/common/src/main/kotlin/com/lambda/util/extension/Mixin.kt similarity index 74% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Mixin.kt rename to common/src/main/kotlin/com/lambda/util/extension/Mixin.kt index 7bf7e675d..3ced1b17a 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Mixin.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Mixin.kt @@ -1,6 +1,6 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import net.minecraft.client.MinecraftClient val MinecraftClient.partialTicks - get() = (if (paused) pausedTickDelta else tickDelta).toDouble() \ No newline at end of file + get() = (if (paused) pausedTickDelta else tickDelta).toDouble() diff --git a/common/src/main/kotlin/com/lambda/util/primitives/extension/Screen.kt b/common/src/main/kotlin/com/lambda/util/extension/Screen.kt similarity index 88% rename from common/src/main/kotlin/com/lambda/util/primitives/extension/Screen.kt rename to common/src/main/kotlin/com/lambda/util/extension/Screen.kt index 35e7b56aa..76c75294e 100644 --- a/common/src/main/kotlin/com/lambda/util/primitives/extension/Screen.kt +++ b/common/src/main/kotlin/com/lambda/util/extension/Screen.kt @@ -1,4 +1,4 @@ -package com.lambda.util.primitives.extension +package com.lambda.util.extension import net.minecraft.entity.player.PlayerInventory import net.minecraft.item.ItemStack @@ -9,4 +9,4 @@ val ScreenHandler.containerSlots: List get() = slots.filter { it.inventory val ScreenHandler.inventorySlots: List get() = slots.filter { it.inventory is PlayerInventory } val ScreenHandler.containerStacks: List get() = containerSlots.map { it.stack } -val ScreenHandler.inventoryStacks: List get() = inventorySlots.map { it.stack } \ No newline at end of file +val ScreenHandler.inventoryStacks: List get() = inventorySlots.map { it.stack } From f6c5212399b926a5d7632057d996fb048d030990 Mon Sep 17 00:00:00 2001 From: Edouard127 <46357922+Edouard127@users.noreply.github.com> Date: Mon, 19 Aug 2024 18:31:42 -0400 Subject: [PATCH 2/2] feat: reflections dsl --- .../com/lambda/command/CommandRegistry.kt | 19 +-- .../interaction/material/ContainerManager.kt | 20 ++- .../com/lambda/module/ModuleRegistry.kt | 18 +-- .../kotlin/com/lambda/util/extension/Other.kt | 7 + .../lambda/util/reflections/Reflections.kt | 76 +++++++++++ .../util/reflections/ReflectionsConfigDsl.kt | 122 ++++++++++++++++++ 6 files changed, 219 insertions(+), 43 deletions(-) create mode 100644 common/src/main/kotlin/com/lambda/util/extension/Other.kt create mode 100644 common/src/main/kotlin/com/lambda/util/reflections/Reflections.kt create mode 100644 common/src/main/kotlin/com/lambda/util/reflections/ReflectionsConfigDsl.kt diff --git a/common/src/main/kotlin/com/lambda/command/CommandRegistry.kt b/common/src/main/kotlin/com/lambda/command/CommandRegistry.kt index f3d3d98a0..37668cfe2 100644 --- a/common/src/main/kotlin/com/lambda/command/CommandRegistry.kt +++ b/common/src/main/kotlin/com/lambda/command/CommandRegistry.kt @@ -3,8 +3,10 @@ package com.lambda.command import com.lambda.config.Configurable import com.lambda.config.configurations.LambdaConfig import com.lambda.core.Loadable +import com.lambda.util.reflections.getInstances import org.reflections.Reflections import org.reflections.scanners.Scanners +import org.reflections.util.ClasspathHelper.forPackage import org.reflections.util.ConfigurationBuilder /** @@ -14,24 +16,9 @@ object CommandRegistry : Configurable(LambdaConfig), Loadable { override val name = "command" val prefix by setting("prefix", ';') - val commands = mutableSetOf() + val commands = getInstances { forPackages("com.lambda.command.commands") } override fun load(): String { - Reflections( - ConfigurationBuilder() - .forPackage("com.lambda.command.commands") - .setScanners(Scanners.SubTypes) - ).getSubTypesOf(LambdaCommand::class.java).forEach { commandClass -> - commandClass.declaredFields.find { - it.name == "INSTANCE" - }?.apply { - isAccessible = true - (get(null) as? LambdaCommand)?.let { command -> - commands.add(command) - } - } - } - return "Registered ${commands.size} commands" } } diff --git a/common/src/main/kotlin/com/lambda/interaction/material/ContainerManager.kt b/common/src/main/kotlin/com/lambda/interaction/material/ContainerManager.kt index bb09b9bf9..483f43f1f 100644 --- a/common/src/main/kotlin/com/lambda/interaction/material/ContainerManager.kt +++ b/common/src/main/kotlin/com/lambda/interaction/material/ContainerManager.kt @@ -9,7 +9,8 @@ import com.lambda.interaction.material.container.* import com.lambda.util.BlockUtils.blockEntity import com.lambda.util.Communication.info import com.lambda.util.item.ItemUtils -import com.lambda.util.primitives.extension.containerStacks +import com.lambda.util.extension.containerStacks +import com.lambda.util.reflections.getInstances import net.minecraft.block.BlockState import net.minecraft.block.entity.BlockEntity import net.minecraft.block.entity.ChestBlockEntity @@ -19,19 +20,16 @@ import net.minecraft.item.ItemStack import net.minecraft.screen.GenericContainerScreenHandler import net.minecraft.screen.ScreenHandler import net.minecraft.screen.ScreenHandlerType +import org.reflections.util.ClasspathHelper.forPackage import java.util.* // ToDo: Make this a Configurable to save container caches. Should use a cached region based storage system. object ContainerManager : Loadable { - // ToDo: Maybe use reflection to get all containers? - private val container = TreeSet().apply { - add(CreativeContainer) - add(EnderChestContainer) - add(HotbarContainer) - add(InventoryContainer) - add(MainHandContainer) - add(OffHandContainer) - } + private val container: List + get() = compileContainers + runtimeContainers + + private val compileContainers = getInstances { forPackages("com.lambda.interaction.material.container") } + private val runtimeContainers = mutableSetOf() private var lastInteractedBlockEntity: BlockEntity? = null @@ -64,7 +62,7 @@ object ContainerManager : Loadable { .filterIsInstance() .find { it.blockPos == block.pos - }?.update(stacks) ?: container.add(ChestContainer(stacks, block.pos)) + }?.update(stacks) ?: runtimeContainers.add(ChestContainer(stacks, block.pos)) } } lastInteractedBlockEntity = null diff --git a/common/src/main/kotlin/com/lambda/module/ModuleRegistry.kt b/common/src/main/kotlin/com/lambda/module/ModuleRegistry.kt index 5e49400e9..1d7d2a5a1 100644 --- a/common/src/main/kotlin/com/lambda/module/ModuleRegistry.kt +++ b/common/src/main/kotlin/com/lambda/module/ModuleRegistry.kt @@ -1,6 +1,7 @@ package com.lambda.module import com.lambda.core.Loadable +import com.lambda.util.reflections.getInstances import org.reflections.Reflections import org.reflections.scanners.Scanners import org.reflections.util.ConfigurationBuilder @@ -9,27 +10,12 @@ import org.reflections.util.ConfigurationBuilder * The [ModuleRegistry] object is responsible for managing all [Module] instances in the system. */ object ModuleRegistry : Loadable { - val modules = mutableSetOf() + val modules = getInstances { forPackages("com.lambda.module.modules") } val moduleNames: Set get() = modules.map { it.name }.toSet() override fun load(): String { - Reflections( - ConfigurationBuilder() - .forPackages("com.lambda.module.modules") - .addScanners(Scanners.SubTypes) - ).getSubTypesOf(Module::class.java).forEach { moduleClass -> - moduleClass.declaredFields.find { - it.name == "INSTANCE" - }?.apply { - isAccessible = true - (get(null) as? Module)?.let { module -> - modules.add(module) - } - } - } - return "Registered ${modules.size} modules with ${modules.sumOf { it.settings.size }} settings" } } diff --git a/common/src/main/kotlin/com/lambda/util/extension/Other.kt b/common/src/main/kotlin/com/lambda/util/extension/Other.kt new file mode 100644 index 000000000..2c826f6a1 --- /dev/null +++ b/common/src/main/kotlin/com/lambda/util/extension/Other.kt @@ -0,0 +1,7 @@ +package com.lambda.util.extension + +val Class<*>.isObject: Boolean + get() = declaredFields.any { it.name == "INSTANCE" } + +val Class<*>.objectInstance: Any + get() = declaredFields.first { it.name == "INSTANCE" }.apply { isAccessible = true }.get(null) diff --git a/common/src/main/kotlin/com/lambda/util/reflections/Reflections.kt b/common/src/main/kotlin/com/lambda/util/reflections/Reflections.kt new file mode 100644 index 000000000..01075422c --- /dev/null +++ b/common/src/main/kotlin/com/lambda/util/reflections/Reflections.kt @@ -0,0 +1,76 @@ +package com.lambda.util.reflections + +import com.lambda.Lambda.LOG +import com.lambda.util.extension.isObject +import com.lambda.util.extension.objectInstance +import org.reflections.Reflections +import org.reflections.util.ConfigurationBuilder +import java.lang.reflect.Modifier +import java.util.regex.Pattern + +/** + * Retrieves instances of objects of the specified type using a DSL configuration. + * + * @param T The type of objects to retrieve instances for. + * @param block A DSL block used to configure the [ReflectionConfigDsl]. + * @return A [List] of object instances of type [T], or null if no instances can be found. + */ +inline fun getInstances(block: ReflectionConfigDsl.() -> Unit): List = + getInstances(getConfiguration(block)) + +/** + * Retrieves instances of objects of the specified type using a provided configuration. + * + * @param T The type of objects to retrieve instances for. + * @param config A pre-configured [ConfigurationBuilder]. + * @return A [List] of object instances of type [T], or null if no instances can be found. + */ +inline fun getInstances(config: ConfigurationBuilder): List = + getSubTypesOf(config).mapNotNull { clazz: Class<*> -> + if (!clazz.isInterface + && !clazz.isEnum + && !clazz.isAnnotation + && !clazz.isObject + ) clazz.constructors.filter { !Modifier.isAbstract(clazz.modifiers) }.firstOrNull { it.parameterCount == 0 } + ?.newInstance() as? T + ?: null.also { LOG.debug("Could not find a proper no-arg constructor for the class ${clazz.simpleName}.") } + else clazz.objectInstance as? T + // We're doomed at this point, now I am become death, the destroyer of worlds + ?: null.also { + LOG.debug( + "No instance of type ${T::class.java.simpleName} could be found on the class ${clazz.simpleName}." + + " Ensure that the class has an INSTANCE field or a no-arg constructor." + ) + } + } + +/** + * Finds all subtypes of a specified class + * + * @param T The type for which to find subtypes. + * @param config A pre-configured [ConfigurationBuilder]. + * @return A [Set] of [Class] objects representing all subtypes of the specified type. + */ +inline fun getSubTypesOf(config: ConfigurationBuilder): Set> = + Reflections(config).getSubTypesOf(T::class.java) + + +/** + * Retrieves resources matching a specified pattern + * + * @param pattern The pattern to match resources against. + * @param config A pre-configured [ConfigurationBuilder]. + * @return A [Set] of [String] representing resources matching the specified pattern. + */ +fun getResources(pattern: String, config: ConfigurationBuilder): Set = + Reflections(config).getResources(pattern) + +/** + * Retrieves resources matching a specified [Pattern] + * + * @param pattern The [Pattern] to match resources against. + * @param block A DSL block used to configure the [ReflectionConfigDsl]. + * @return A [Set] of [String] representing resources matching the specified pattern. + */ +inline fun getResources(pattern: Pattern, block: ReflectionConfigDsl.() -> Unit): Set = + getResources(pattern.pattern(), config = getConfiguration(block)) diff --git a/common/src/main/kotlin/com/lambda/util/reflections/ReflectionsConfigDsl.kt b/common/src/main/kotlin/com/lambda/util/reflections/ReflectionsConfigDsl.kt new file mode 100644 index 000000000..08ea43364 --- /dev/null +++ b/common/src/main/kotlin/com/lambda/util/reflections/ReflectionsConfigDsl.kt @@ -0,0 +1,122 @@ +package com.lambda.util.reflections + +import org.reflections.scanners.Scanners +import org.reflections.util.ConfigurationBuilder +import java.net.URL + +@Target(AnnotationTarget.CLASS, AnnotationTarget.TYPE) +@DslMarker +annotation class ReflectionsDsl + +/** + * A DSL class to configure the Reflections library for runtime scanning. + * This class allows you to specify packages, scanners, URLs, filters, class loaders, and other options + * to build a Reflections configuration. + */ +@ReflectionsDsl +class ReflectionConfigDsl { + private val packages = mutableListOf() + private val scanners = mutableListOf() + private val urls = mutableListOf() + private var inputsFilter: (String) -> Boolean = { true } + private val classLoaders = mutableListOf() + private var parallel = false + private var shouldExpandSuperTypes = true + + /** + * Specifies the packages to be scanned. + * + * @param packages A vararg of package names to be included in the scanning process. + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun forPackages(vararg packages: String): ReflectionConfigDsl { + this.packages += packages + return this + } + + /** + * Adds scanners to the configuration. + * + * @param scanners A vararg of [Scanners] to be used for scanning classes, methods, etc. + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun addScanners(vararg scanners: Scanners): ReflectionConfigDsl { + this.scanners += scanners + return this + } + + /** + * Adds URLs to the configuration. + * + * @param urls A vararg of [URL] to be included in the scanning process. + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun addUrls(vararg urls: URL): ReflectionConfigDsl { + this.urls += urls + return this + } + + /** + * Sets a filter for input names. + * + * @param filter A lambda function that takes a [String] and returns a [Boolean], indicating whether the input should be included. + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun filterInputsBy(filter: (String) -> Boolean): ReflectionConfigDsl { + inputsFilter = filter + return this + } + + /** + * Adds class loaders to the configuration. + * + * @param classLoaders A vararg of [ClassLoader] to be used in the scanning process. + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun addClassLoaders(vararg classLoaders: ClassLoader): ReflectionConfigDsl { + this.classLoaders += classLoaders + return this + } + + /** + * Enables parallel scanning. + * + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun parallel(): ReflectionConfigDsl { + parallel = true + return this + } + + /** + * Sets whether to expand super types during scanning. + * + * @param value A [Boolean] indicating whether to expand super types. + * @return The current instance of [ReflectionConfigDsl] for method chaining. + */ + fun expandSuperTypes(value: Boolean): ReflectionConfigDsl { + shouldExpandSuperTypes = value + return this + } + + /** + * Builds a [ConfigurationBuilder] based on the current configuration. + * + * @return A [ConfigurationBuilder] configured with the specified packages, scanners, URLs, filters, and class loaders. + */ + fun build(): ConfigurationBuilder = ConfigurationBuilder() + .forPackages(*packages.toTypedArray()) + .addUrls(*urls.toTypedArray()) + .filterInputsBy(inputsFilter) + .addClassLoaders(*classLoaders.toTypedArray()) + .setExpandSuperTypes(shouldExpandSuperTypes) +} + +/** + * Configures and retrieves a [ConfigurationBuilder] + * + * @param block A DSL block used to configure the [ReflectionConfigDsl]. + * @return A [ConfigurationBuilder] configured with the specified options. + */ +inline fun getConfiguration(block: (@ReflectionsDsl ReflectionConfigDsl).() -> Unit): ConfigurationBuilder = + ReflectionConfigDsl().apply(block).build()