diff --git a/src/main/java/me/alexdevs/solstice/api/module/ModCommand.java b/src/main/java/me/alexdevs/solstice/api/module/ModCommand.java index e9a54d7..ec32ecf 100644 --- a/src/main/java/me/alexdevs/solstice/api/module/ModCommand.java +++ b/src/main/java/me/alexdevs/solstice/api/module/ModCommand.java @@ -36,14 +36,6 @@ public ModCommand(T module) { this.module = module; } - public static ModCommand init(Class> commandClass, T module) { - try { - return commandClass.getDeclaredConstructor(module.getClass()).newInstance(module); - } catch (Exception e) { - throw new RuntimeException("Failed to initialize ModCommand: " + commandClass.getSimpleName(), e); - } - } - public void register() { this.register(dispatcher, commandRegistry, environment); } diff --git a/src/main/java/me/alexdevs/solstice/api/module/ModuleBase.java b/src/main/java/me/alexdevs/solstice/api/module/ModuleBase.java index 1c619e1..030cf2f 100644 --- a/src/main/java/me/alexdevs/solstice/api/module/ModuleBase.java +++ b/src/main/java/me/alexdevs/solstice/api/module/ModuleBase.java @@ -2,12 +2,21 @@ import me.alexdevs.solstice.Solstice; +import java.util.Collection; + public abstract class ModuleBase { - public final String id; + protected final String id; + public ModuleBase(String id) { this.id = id; } + public abstract Collection> getCommands(); + + public String getId() { + return id; + } + public String getPermissionNode() { return Solstice.MOD_ID + "." + id; } diff --git a/src/main/java/me/alexdevs/solstice/modules/admin/AdminModule.java b/src/main/java/me/alexdevs/solstice/modules/admin/AdminModule.java index 618a46a..4f30338 100644 --- a/src/main/java/me/alexdevs/solstice/modules/admin/AdminModule.java +++ b/src/main/java/me/alexdevs/solstice/modules/admin/AdminModule.java @@ -4,13 +4,12 @@ import me.alexdevs.solstice.modules.admin.commands.*; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; -public class AdminModule extends ModuleBase { +public class AdminModule { public static final String ID = "admin"; public AdminModule() { - super(ID); + //super(ID); CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { - new BroadcastCommand(this); new DoAsCommand(dispatcher, registryAccess, environment); new ExtinguishCommand(dispatcher, registryAccess, environment); new FeedCommand(dispatcher, registryAccess, environment); diff --git a/src/main/java/me/alexdevs/solstice/modules/broadcast/BroadcastModule.java b/src/main/java/me/alexdevs/solstice/modules/broadcast/BroadcastModule.java new file mode 100644 index 0000000..8eeebce --- /dev/null +++ b/src/main/java/me/alexdevs/solstice/modules/broadcast/BroadcastModule.java @@ -0,0 +1,23 @@ +package me.alexdevs.solstice.modules.broadcast; + +import me.alexdevs.solstice.api.module.ModCommand; +import me.alexdevs.solstice.api.module.ModuleBase; +import me.alexdevs.solstice.modules.broadcast.commands.BroadcastCommand; + +import java.util.Collection; +import java.util.List; + +public class BroadcastModule extends ModuleBase { + private final Collection> commands; + + public BroadcastModule() { + super("broadcast"); + + commands = List.of(new BroadcastCommand(this)); + } + + @Override + public Collection> getCommands() { + return commands; + } +} diff --git a/src/main/java/me/alexdevs/solstice/modules/admin/commands/BroadcastCommand.java b/src/main/java/me/alexdevs/solstice/modules/broadcast/commands/BroadcastCommand.java similarity index 84% rename from src/main/java/me/alexdevs/solstice/modules/admin/commands/BroadcastCommand.java rename to src/main/java/me/alexdevs/solstice/modules/broadcast/commands/BroadcastCommand.java index 4bde40a..a30a4d0 100644 --- a/src/main/java/me/alexdevs/solstice/modules/admin/commands/BroadcastCommand.java +++ b/src/main/java/me/alexdevs/solstice/modules/broadcast/commands/BroadcastCommand.java @@ -1,12 +1,13 @@ -package me.alexdevs.solstice.modules.admin.commands; +package me.alexdevs.solstice.modules.broadcast.commands; +import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import eu.pb4.placeholders.api.PlaceholderContext; import me.alexdevs.solstice.Solstice; import me.alexdevs.solstice.api.module.ModCommand; import me.alexdevs.solstice.modules.admin.AdminModule; +import me.alexdevs.solstice.modules.broadcast.BroadcastModule; import me.alexdevs.solstice.util.Format; -import com.mojang.brigadier.arguments.StringArgumentType; -import eu.pb4.placeholders.api.PlaceholderContext; import net.minecraft.server.command.ServerCommandSource; import java.util.List; @@ -14,9 +15,9 @@ import static net.minecraft.server.command.CommandManager.argument; import static net.minecraft.server.command.CommandManager.literal; -public class BroadcastCommand extends ModCommand { +public class BroadcastCommand extends ModCommand { - public BroadcastCommand(AdminModule module) { + public BroadcastCommand(BroadcastModule module) { super(module); } diff --git a/src/main/java/me/alexdevs/solstice/modules/sudo/SudoModule.java b/src/main/java/me/alexdevs/solstice/modules/sudo/SudoModule.java new file mode 100644 index 0000000..540146c --- /dev/null +++ b/src/main/java/me/alexdevs/solstice/modules/sudo/SudoModule.java @@ -0,0 +1,18 @@ +package me.alexdevs.solstice.modules.sudo; + +import me.alexdevs.solstice.api.module.ModCommand; +import me.alexdevs.solstice.api.module.ModuleBase; + +import java.util.Collection; +import java.util.List; + +public class SudoModule extends ModuleBase { + public SudoModule(String id) { + super("sudo"); + } + + @Override + public Collection> getCommands() { + return List.of(); + } +}