Skip to content

Commit dfd71cf

Browse files
committed
Manager and Registry design
1 parent db6f814 commit dfd71cf

File tree

13 files changed

+81
-144
lines changed

13 files changed

+81
-144
lines changed

common/src/main/kotlin/com/lambda/command/CommandManager.kt

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.lambda.command
22

3-
import com.lambda.core.Loadable
43
import com.lambda.brigadier.CommandException
5-
import com.lambda.brigadier.register
6-
import com.lambda.config.Configurable
7-
import com.lambda.config.configurations.LambdaConfig
4+
import com.lambda.command.CommandRegistry.prefix
85
import com.lambda.context.SafeContext
96
import com.lambda.threading.runSafe
107
import com.lambda.util.Communication
@@ -13,26 +10,17 @@ import com.lambda.util.text.*
1310
import com.lambda.util.text.ClickEvents.suggestCommand
1411
import com.mojang.brigadier.CommandDispatcher
1512
import com.mojang.brigadier.StringReader
16-
import com.mojang.brigadier.builder.LiteralArgumentBuilder
1713
import com.mojang.brigadier.exceptions.CommandSyntaxException
1814
import net.minecraft.command.CommandSource
19-
import org.reflections.Reflections
20-
import org.reflections.scanners.Scanners
21-
import org.reflections.util.ClasspathHelper
22-
import org.reflections.util.ConfigurationBuilder
2315
import java.awt.Color
2416
import kotlin.math.max
2517
import kotlin.math.min
2618

2719

28-
object CommandManager : Configurable(LambdaConfig), Loadable {
29-
override val name = "command"
30-
31-
val prefix by setting("prefix", ';')
20+
object CommandManager {
21+
private const val ERROR_PADDING = 10
3222

33-
val commands = mutableSetOf<LambdaCommand>()
3423
val dispatcher by lazy { CommandDispatcher<CommandSource>() }
35-
private const val ERROR_PADDING = 10
3624

3725
fun executeCommand(command: String) {
3826
runSafe {
@@ -103,23 +91,4 @@ object CommandManager : Configurable(LambdaConfig), Loadable {
10391
}
10492
})
10593
}
106-
107-
override fun load(): String {
108-
Reflections(
109-
ConfigurationBuilder()
110-
.forPackage("com.lambda.command.commands")
111-
.setScanners(Scanners.SubTypes)
112-
).getSubTypesOf(LambdaCommand::class.java).forEach { commandClass ->
113-
commandClass.declaredFields.find {
114-
it.name == "INSTANCE"
115-
}?.apply {
116-
isAccessible = true
117-
(get(null) as? LambdaCommand)?.let { command ->
118-
commands.add(command)
119-
}
120-
}
121-
}
122-
123-
return "Registered ${commands.size} commands"
124-
}
12594
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.lambda.command
2+
3+
import com.lambda.config.Configurable
4+
import com.lambda.config.configurations.LambdaConfig
5+
import com.lambda.core.Loadable
6+
import org.reflections.Reflections
7+
import org.reflections.scanners.Scanners
8+
import org.reflections.util.ConfigurationBuilder
9+
10+
object CommandRegistry : Configurable(LambdaConfig), Loadable {
11+
override val name = "command"
12+
13+
val prefix by setting("prefix", ';')
14+
val commands = mutableSetOf<LambdaCommand>()
15+
16+
private val paths = mutableSetOf("com.lambda.command.commands")
17+
18+
fun injectPath(path: String) = paths.add(path)
19+
20+
override fun load(): String {
21+
Reflections(
22+
ConfigurationBuilder()
23+
.forPackages(*paths.toTypedArray())
24+
.setScanners(Scanners.SubTypes)
25+
).getSubTypesOf(LambdaCommand::class.java).forEach { commandClass ->
26+
commandClass.declaredFields.find {
27+
it.name == "INSTANCE"
28+
}?.apply {
29+
isAccessible = true
30+
(get(null) as? LambdaCommand)?.let { command ->
31+
commands.add(command)
32+
}
33+
}
34+
}
35+
36+
return "Registered ${commands.size} commands"
37+
}
38+
}

common/src/main/kotlin/com/lambda/command/commands/ConfigCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ object ConfigCommand : LambdaCommand(
2929
}
3030
}
3131
}
32-
}
32+
}

common/src/main/kotlin/com/lambda/command/commands/ModuleCommand.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ import com.lambda.brigadier.argument.boolean
66
import com.lambda.brigadier.argument.string
77
import com.lambda.brigadier.argument.value
88
import com.lambda.brigadier.executeWithResult
9-
import com.lambda.brigadier.get
109
import com.lambda.brigadier.optional
1110
import com.lambda.brigadier.required
12-
import com.lambda.command.CommandManager.prefix
11+
import com.lambda.command.CommandRegistry.prefix
1312
import com.lambda.command.LambdaCommand
1413
import com.lambda.module.ModuleRegistry
1514
import com.lambda.threading.runSafe
@@ -131,4 +130,4 @@ object ModuleCommand : LambdaCommand(
131130
}
132131
}
133132
}
134-
}
133+
}

common/src/main/kotlin/com/lambda/core/Loader.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,25 @@ package com.lambda.core
22

33
import com.lambda.Lambda
44
import com.lambda.Lambda.LOG
5-
import com.lambda.command.CommandManager
5+
import com.lambda.command.CommandRegistry
6+
import com.lambda.friend.FriendRegistry
67
import com.lambda.graphics.renderer.gui.font.LambdaFont
78
import com.lambda.gui.impl.clickgui.GuiConfigurable
89
import com.lambda.interaction.PlayerPacketManager
910
import com.lambda.interaction.RotationManager
1011
import com.lambda.module.ModuleRegistry
11-
import com.lambda.plugin.PluginRegistry
1212
import com.lambda.util.Communication.ascii
1313
import kotlin.system.measureTimeMillis
1414

1515
object Loader {
1616
private val loadables = listOf(
1717
ModuleRegistry,
18-
CommandManager,
18+
CommandRegistry,
1919
RotationManager,
2020
PlayerPacketManager,
2121
LambdaFont.Loader,
22-
GuiConfigurable,
23-
FriendManager,
24-
PluginRegistry,
22+
GuiConfigurable, // TODO: Why is this a loadable ?
23+
FriendRegistry,
2524
)
2625

2726
fun initialize() {

common/src/main/kotlin/com/lambda/core/FriendManager.kt renamed to common/src/main/kotlin/com/lambda/friend/FriendManager.kt

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-
package com.lambda.core
1+
package com.lambda.friend
22

3-
import com.lambda.config.Configurable
4-
import com.lambda.config.configurations.FriendConfig
3+
import com.lambda.friend.FriendRegistry.friends
54
import com.mojang.authlib.GameProfile
65
import net.minecraft.server.network.ServerPlayerEntity
76
import java.util.UUID
87

9-
object FriendManager : Configurable(FriendConfig), Loadable {
10-
override val name = "FriendManager"
11-
12-
private var friends by setting("friends", listOf<GameProfile>())
13-
8+
object FriendManager {
149
fun add(profile: GameProfile) = friends.add(profile)
1510

1611
fun remove(profile: GameProfile) = friends.remove(profile)
@@ -29,10 +24,4 @@ object FriendManager : Configurable(FriendConfig), Loadable {
2924

3025
fun ServerPlayerEntity.befriend() = add(gameProfile)
3126
fun ServerPlayerEntity.unfriend() = remove(gameProfile)
32-
33-
override fun load(): String {
34-
if (friends.isEmpty()) return "No friends loaded, you don't have to be antisocial online too,"
35-
val word = if (friends.size == 1) "friend" else "friends"
36-
return "Loaded ${friends.size} $word."
37-
}
3827
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.lambda.friend
2+
3+
import com.lambda.config.Configurable
4+
import com.lambda.config.configurations.FriendConfig
5+
import com.lambda.core.Loadable
6+
import com.mojang.authlib.GameProfile
7+
8+
object FriendRegistry : Configurable(FriendConfig), Loadable {
9+
override val name = "friends"
10+
11+
val friends by setting("friends", listOf<GameProfile>())
12+
13+
override fun load(): String {
14+
return "Loaded ${friends.size} friends."
15+
}
16+
}

common/src/main/kotlin/com/lambda/module/ModuleRegistry.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import org.reflections.Reflections
66
import org.reflections.scanners.Scanners
77
import org.reflections.util.ConfigurationBuilder
88

9-
109
/**
1110
* The [ModuleRegistry] object is responsible for managing all [Module] instances in the system.
1211
*
@@ -18,10 +17,14 @@ object ModuleRegistry : Loadable {
1817
val moduleNames: Set<String>
1918
get() = modules.map { it.name }.toSet()
2019

20+
private val paths = mutableSetOf("com.lambda.module.modules")
21+
22+
fun injectPath(path: String) = paths.add(path)
23+
2124
override fun load(): String {
2225
Reflections(
2326
ConfigurationBuilder()
24-
.forPackage("com.lambda.module.modules")
27+
.forPackages(*paths.toTypedArray())
2528
.addScanners(Scanners.SubTypes)
2629
).getSubTypesOf(Module::class.java).forEach { moduleClass ->
2730
moduleClass.declaredFields.find {

common/src/main/kotlin/com/lambda/module/BaritoneTest.kt renamed to common/src/main/kotlin/com/lambda/module/modules/BaritoneTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
package com.lambda.module
1+
package com.lambda.module.modules
22

33
import baritone.api.BaritoneAPI
44
import baritone.api.pathing.goals.GoalXZ
55
import com.lambda.event.events.TickEvent
66
import com.lambda.event.listener.SafeListener.Companion.listener
7+
import com.lambda.module.Module
78

89
object BaritoneTest : Module(
910
name = "BaritoneTest",
@@ -14,4 +15,4 @@ object BaritoneTest : Module(
1415
BaritoneAPI.getProvider().primaryBaritone.customGoalProcess.setGoalAndPath(GoalXZ(0, 0))
1516
}
1617
}
17-
}
18+
}

common/src/main/kotlin/com/lambda/plugin/PluginRegistry.kt

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)